关于 gnt
gnt 是一个面向 AI Agent 的 Git 原生策略层。规则以 Markdown 文件存放在代码仓库中,通过合并 PR 获得批准,Agent 在执行操作前经由 MCP 调用 check_action 获取允许、阻止或需人工处理的判定。适合需要为 Agent 操作建立审计线索的团队。
主要功能
- 01Git 仓库中的规则文件,经 PR 审批后生效
- 02check_action 返回 allowed、blocked 或 needs_human 判定
- 03判定附带引用规则及一行原因说明
- 04规则可追溯到对应的 Git 文件和批准 PR
- 05未被批准规则覆盖时默认 fail-closed
适用场景
- 01在退款、删除数据或向客户发送消息前进行规则校验
- 02为 Agent 的操作记录可追溯的规则依据
- 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/mcpclaude mcp add --transport http gnt-ai-gnt https://api.gntai.dev/mcp{"mcpServers":{"gnt-ai-gnt":{"type":"http","url":"https://api.gntai.dev/mcp"}}}在 Cursor 中打开{"servers":{"gnt-ai-gnt":{"type":"http","url":"https://api.gntai.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"gnt-ai-gnt":{"type":"http","url":"https://api.gntai.dev/mcp"}}}{"mcpServers":{"gnt-ai-gnt":{"serverUrl":"https://api.gntai.dev/mcp"}}}命令在终端中运行;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 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.13 | node --version | nodejs.org |
安装
| 方式 | 命令 |
|---|---|
| curl | curl -fsSL gntai.dev/install.sh | sh |
| npm | npm 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_URL | https://api.gntai.dev | CLI 和 MCP 调用的 API 端点 |
GNT_WEB_URL | https://gntai.dev | gnt login 浏览器步骤使用的 Web 应用 |
GNT_CONFIG_DIR | ~/.gnt | credentials.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
了解更多
- 自托管指南,包括生产环境加固流程:
docs/self-hosting/README.md - 安全政策:
SECURITY.md
自托管是完全受支持的一等方案——从第一天起就采用 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 的人:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。