mcpField
G
gnt

gnt

远程服务
gntai.devAI 与智能体306 天前更新

关于 gnt

gnt 是一个面向 AI Agent 的 Git 原生策略层。规则以 Markdown 文件存放在代码仓库中,通过合并 PR 获得批准,Agent 在执行操作前经由 MCP 调用 check_action 获取允许、阻止或需人工处理的判定。适合需要为 Agent 操作建立审计线索的团队。

主要功能

  1. 01Git 仓库中的规则文件,经 PR 审批后生效
  2. 02check_action 返回 allowed、blocked 或 needs_human 判定
  3. 03判定附带引用规则及一行原因说明
  4. 04规则可追溯到对应的 Git 文件和批准 PR
  5. 05未被批准规则覆盖时默认 fail-closed

适用场景

  1. 01在退款、删除数据或向客户发送消息前进行规则校验
  2. 02为 Agent 的操作记录可追溯的规则依据
  3. 03通过 gnt lint 与 CI 检查规则文件的 frontmatter

MCP 相关

gnt 作为 MCP 服务运行,提供 check_action、search_rules、get_rule、list_skill_packs 和 get_skill_pack 五个工具,供 MCP 客户端调用。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.gntai.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

只需运行以下设置一次,团队运行的每个 Agent 都会拥有一本基于 Git 的规则手册,并且必须在采取行动前通过 MCP 检查它;规则的审批方式与你们审批代码的方式相同:通过一个已合并的拉取请求。

  • 规则以文件形式存放在你的代码仓库中,通过常规 PR 发布,而不是点击仪表盘。
  • Agent 会在执行任何有风险的操作(退款、删除、向客户发送消息)之前,通过 MCP 调用 check_action,并获得允许/拦截/升级处理的判定。
  • 每条规则都能追溯到对应的 Git 文件和批准它的 PR,因此,“Agent 为什么这么做”始终有据可查。

不想自己运行这些服务?gntai.dev 上的托管版本也能完成相同的工作,无需你自行搭建 Postgres 实例。

开始使用(30 秒)

npm install -g @gnt-ai/cli
gnt login
gnt connect github
gnt prebrain
# merge the opened PR on GitHub. that merge is the approval
先用 Docker 试试

要在安装 Node 或 npm 之前查看真实的 check_action 响应,请克隆 代码仓库并运行仅使用 Docker 的演示:

./demo.sh

它会在隔离的 gnt-demo Compose 项目中构建完整的本地技术栈, 植入一条已批准的退款规则,调用 check_action,并打印一条可再次运行的 curl 命令。 如果没有 Anthropic 密钥,实际的默认拒绝路径会返回 needs_human;传入 GNT_DEMO_ANTHROPIC_API_KEY=sk-ant-... ./demo.sh 即可选择使用 模型给出的、基于事实的策略判定。演示使用确定性的本地嵌入和 仅用于 localhost 的临时密钥,因此不需要 ZeroEntropy 密钥。

gnt connect 的交互式选择器,以及 gnt prebrain 生成的草稿 PR 输出效果

还没有可供 gnt prebrain 扫描的内容?先运行 gnt init——它会在本地搭建 rules/ 并生成几个示例规则文件,供你查看和编辑;同时会引导你使用 gnt prebrain --starter-packs 获取精选规则包作为起点。

合并后,规则文件会进入你连接的代码仓库,格式如下:

your-repo/
└── rules/
    ├── refund-approval-threshold.md
    └── contract-legal-cc.md

每个文件都是带有 YAML frontmatter 的纯 Markdown:

---
title: Never refund over $500 without a manager
status: approved
confidence: 0.91
owner_id: finance-team
source_citations: [...]
source: slack
tags: [refunds, finance]
last_validated_at: 2026-07-20
version: 1
superseded_by: null
approved_by: [email protected]
approved_at: 2026-07-21T14:03:00Z
created_at: 2026-07-18T09:12:00Z
pr_number: 142
pr_url: https://github.com/your-org/your-repo/pull/142
---

Refunds over $500 need manager sign-off before they go out...

查看实际效果

目前还没有可展示的记录文本(请参阅本 README 末尾提到的缺失内容)。 以下是 check_action 调用实际返回的响应格式,直接取自该工具的 契约:

{
  "verdict": "blocked",
  "reason": "Refund exceeds the $500 threshold without manager sign-off (rules/refund-approval-threshold.md)",
  "cited_rules": [
    { "id": "refund-approval-threshold", "title": "Never refund over $500 without a manager" }
  ],
  "rules_retrieved": 3
}

verdict 的值为 allowed、blocked 或 needs_human。needs_human 是默认的失败关闭 状态:没有已批准的规则涵盖该操作、检索失败,或检查未能完成。 它绝不会猜测。

功能

一个 MCP 端点,五个工具:

工具功能
check_action在 Agent 采取行动前,根据已批准的规则检查所描述的操作。返回 allowed、blocked 或 needs_human,并附上引用的规则和一句话说明。
search_rules对组织已批准的规则进行语义搜索,可按标签筛选。空列表表示没有已批准的规则涵盖该查询。
get_rule按 ID 获取一条已批准的规则及其来源信息(批准人、批准时间、引用来源)。
list_skill_packs按时间倒序列出组织的所有已编译技能包版本。
get_skill_pack按 ID 获取已编译技能包的清单和文件列表。

前置条件

要求检查方式获取方式
Node >=22.13node --versionnodejs.org

安装

方式命令
curlcurl -fsSL gntai.dev/install.sh | sh
npmnpm install -g @gnt-ai/cli

gnt 需要 Node >=22.13。如果 CLI 因版本错误无法启动,请先更新 Node,并通过 node --version 确认。

常用命令

gnt login                # sign in, store an API key locally
gnt init                 # scaffold a local rules/ dir with example rule files
gnt connect github       # connect the repo your rules PRs open against
gnt prebrain             # scan sources, extract candidate rules, open PRs
gnt review               # review rules awaiting approval
gnt status               # show brain status
gnt pull                 # download the latest skill pack
gnt gaps                 # list uncovered queries with no approved rule

配置

变量默认值控制内容
GNT_API_URLhttps://api.gntai.devCLI 和 MCP 调用的 API 端点
GNT_WEB_URLhttps://gntai.devgnt login 浏览器步骤使用的 Web 应用
GNT_CONFIG_DIR~/.gntcredentials.json 和本地配置的存放位置

隐私

  • CLI 和 Web 应用均不依赖分析或遥测功能。
  • gnt prebrain 的默认提取模式是云端,而非设备本地:源文本会直接发送到 Anthropic 的 API(如果配置了 Vercel AI Gateway 并启用零数据保留,则发送到该网关),不会发送到 gnt 自己的服务。若要完全在设备本地提取,需使用 --mode local 连接本地 Ollama 守护进程。
  • 提取出的规则候选内容仍会发送到 gnt 的 API 以创建 PR。云端模式下,原始源文本不会存储在 gnt 的服务上,但生成的规则文本会。
  • 规则存储在已连接的 GitHub 仓库和 gnt 自己的数据库中。MCP 工具从 gnt 的存储中读取内容,而不是每次调用时都克隆你的仓库。
  • 自托管:只有在你自行设置 SENTRY_DSN 时,apps/api 才会向 Sentry 发送错误数据。若不设置,则不会发送任何数据。

团队设置

  • 谁来编写规则:任何有权访问已连接仓库的人都可以编写,通过 gnt prebrain 从真实来源批量提取,或通过 gnt review 手动提议。
  • 如何审批:合并 PR 即表示审批,无需单独发布。
  • 提交哪些内容:包含上述 frontmatter 和纯 Markdown 正文的 rules/<rule-id>.md 文件。
  • 如何在审查前发现格式错误的规则:gnt rules lint 会在本地检查规则文件的 frontmatter;gnt-ai/gnt/.github/actions/lint-rules 会在规则仓库自身的 PR 中执行相同检查,确保 frontmatter 有误时 PR 会失败,而不是等到审查时才发现。

故障排除

自托管:gnt login 的浏览器步骤没有可跳转的页面。 gnt login 会打开浏览器访问 /cli-login 页面,并轮询 API 获取生成的密钥。该页面由托管产品的 Web 应用提供,而此应用不在此仓库中。目前没有仅使用 CLI 的登录流程(无论是设备代码还是其他方式),也没有可手动设置密钥的 gnt 命令。目前自托管此技术栈意味着需要为该路由自行构建一个精简前端(只需完成登录流程并向 CLI 提供密钥)。这是自托管路径中确实存在的缺口,并非配置问题;要彻底解决,需要添加仅使用 CLI 的登录流程。

ValueError: refusing to start: these settings still have their .env.example placeholder value... apps/api/.env 中仍有 change-me-... 字符串。错误信息会列出所有不符合要求的字段;为每个字段生成真实值后重试。

store 因 GNT_STORE_INTERNAL_API_SECRET is not set 而无法启动。 apps/store/.env 尚未填写,或未被加载。请确认文件确实位于该路径,而不是仍命名为 .env.example。

两个服务都已启动,但所有从 store 到 api 的调用都因 401 或 403 被拒绝。 apps/api/.env 中的 STORE_INTERNAL_API_SECRET / APPROVAL_SIGNING_SECRET 与 apps/store/.env 中的 GNT_STORE_INTERNAL_API_SECRET / GNT_APPROVAL_SIGNING_SECRET 并非逐字节一致。这是有意设计的 fail-closed 行为。请重新生成这两组密钥,确保两个文件中的值一致。

规则因 embedding 或 rerank 错误而无法保存。 apps/store/.env 缺少 ZEROENTROPY_API_KEY,或者该值仍为空。请从 zeroentropy.dev 获取有效密钥。

完整命令参考

gnt login
gnt logout
gnt init                 scaffold a local rules/ dir with example rule files (--dir <path>)
gnt connect <app>        github, slack, notion-mcp, monday-mcp, linear-mcp, jira-mcp,
                          sentry-mcp, granola-mcp, zoom-mcp, figma, datadog,
                          gitlab-threads, hubspot, airtable, openclaw, hermes
gnt disconnect <app>
gnt status
gnt billing
gnt review
gnt pull
gnt gaps
gnt prebrain              scan local sources, extract candidate rules, open batched draft
                           PRs (~60 flags for source paths and extraction mode, see
                           `gnt prebrain --help`; --mode cloud|local, cloud is the default)
gnt stale
gnt keys list|create|revoke|rotate
gnt webhook list|create|revoke
gnt org show|rename|invite|remove
Shell 补全
# bash, add to ~/.bashrc
eval "$(gnt completion bash)"

# zsh, add to ~/.zshrc
eval "$(gnt completion zsh)"

# fish, add to ~/.config/fish/config.fish
gnt completion fish | source

了解更多

自托管是完全受支持的一等方案——从第一天起就采用 Apache-2.0 许可证;你可以用自己的密钥在自己的基础设施上运行,也可以使用托管版本 gntai.dev。主页常见问题和自托管文档都介绍了同一方案;没有“暂不支持”的附加条件。

许可证

版权所有 © 2026 gnt.ai。采用 Apache-2.0 许可证——许可条款请参阅 LICENSE,分支项目的商标规则请参阅 NOTICE。

为什么免费?

自托管 gnt 永远免费——克隆项目、运行 docker compose up,并使用你自己的密钥。我们收费的是自托管无法提供的部分:gntai.dev 托管服务、托管式 OAuth 连接器(GitHub、Slack、Linear、Notion、Zendesk——你无需申请应用审批),以及按使用量计费的 AI 功能。如果你更愿意自行运行,我们会完全支持这条完全免费的路径,它不是对真正产品功能有限的试用版。

贡献

有关开发环境设置和如何提交 PR,请参阅 CONTRIBUTING.md。每次提交都必须附带 Signed-off-by 尾注(git commit -s),使用开发者原创证书而非 CLA。无需单独填写表单,只需使用该标记。

感谢所有提交 PR 的人:

gnt 贡献者

讨论 问题 行为准则

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。