内容
="center">
<a href="https://gntai.dev">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="apps/web/public/brand/wordmark-dark-bg.svg">
<img src="apps/web/public/brand/wordmark.svg" alt="gnt" width="220">
</picture>
</a>
[](LICENSE) [](https://www.npmjs.com/package/@gnt-ai/cli) [](https://github.com/gnt-ai/gnt/actions/workflows/ci.yml)
</div>
运行以下设置一次,您的团队运行的每个代理都有一个**git 原生规则书**,它必须在执行前检查 **MCP**,并以与代码相同的批准方式获得批准:合并拉取请求。
- 规则以文件形式存放在您的存储库中,并通过正常的拉取请求进行发布,而不是通过仪表盘点击。
- 代理在执行任何风险操作(退款、删除、向客户发送消息)之前,通过 MCP 调用 `check_action`,并获得允许/阻止/升级的裁决。
- 每个规则都追溯到 git批准它的拉取请求,因此“代理为什么这样做”始终。
> 如果您不想自己运行任何操作?[gntaihttps://gntai.dev) 上的托管版本在建立 Postgres 实例的情况下执行。

*gnt 预先库,打开拉取请求,并将其合并。真实的终端会话,而不是模拟。*
## 开始使用(30 秒)
```bash
npm install -g @gnt-ai/cli
gnt login
gnt connect github
gnt prebrain
# 合并 GitHub 上打开的拉取请求。合并即是批准。
```
该合并会在您连接的存储库中添加一个规则文件,格式如下:
```
your-repo/
└── rules/
├── refund-reshold.md
└── contract-legal-cc.md
```
都是带有 YAML 前置信息的纯 Markdown:
```markdown: 未获得经理批准,不得退款超过 500 美元
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: jane@companyapproved_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
---
退款超过 500 美元需要经理签名确认...
```
## 查看实际操作
目前没有捕获的转录记录(参见本 README 底部的空白处 `check_action` 调用返回的实际响应形状,直接来自合约:
```json
{
"verdict": " "reason": "未获得经理批准,退款超过 500 美元(rules/refund-approval-threshold.md)",
"cited_rules": [
{ "id": "refund-approval-threshold", "title": "未获得经理批准,不得退款超过 500 美元" }
],
"rules_retrieved": 3
}
```
dict` 是 `allowed`、`blocked` 或 `needs_human` 之一。`needs_human`的封闭失败:没有批准的规则涵盖该操作,检索失败,或检查无法完成。
它永远不会猜测。
## 功能
一个 MCP 端点,五个工具:
| | 功能 |
| --- | --- |
| `check_action` | 在代理执行操作之前,根据已批准的规则检查描述返回 `allowed`、`blocked` 或 `needs_human并引用规则和原因。 |
| `search_rules` | 在组织的已批准规则上进行语义搜索,可选地按标签过滤。空列表表示没有已批准的规则涵盖查询。 |
| `get_rule` | 按 ID 获取已批准的规则及其出处(谁批准,何时,引用自哪里)。 |
| `list_skill_packs` | 列出组织的所有编译后的技能包版本,按最新版本优先。 |
| `get_skill_pack` | 按 ID 获取编译后的技能包的清单和文件列表。 |
## 先决条件
| 要求 | 检查 | 获取 |
| --- | --- | --- |
| Node >=22.13 | `node --version` | [nodejs.org](https://nodejs.org## 安装
| 方法 | 命令 |
| --- | --- curl | `curl -fsSL gntai.dev/install sh` |
| npm | `npm install -g @-ai/cli` |
> gnt 需要 Node >=22.13。如果 CLI 因版本错误而无法启动,请先更新 Node,然后使用 `node --version` 确认。
## 常用命令
```bash
gnt login # 登录,本地存储 API
gnt connect github # 连接存储库,规则拉取请求在此处打开
gnt prebrain # 扫描源,提取候选规则批量草稿拉取gnt review #待批准的规则
gnt status # 显示大脑状态nt pull # 下载包
gnt # 列出未覆盖的查询,没有已批准的规则## 配置
| 默认值 | 控制内容 |
| --- | --- | --- |
| `GNT_API_URL` | `https://api.gntai.dev` | CLI 和 MCP 调用的 API 端点 |
| `GNT_WEB_URL` | `https://gntai.dev` | `gnt login` 浏览器步骤使用的 Web 应用程序 |
| `GNT_CONFIG | `~/.gnt` | `credentials.json本地配置存储位置 |
## 隐私
- CLI 或 Web 应用程序中没有分析或遥测依赖。
- ` prebrain` 的默认是云端,而不是设备您的源文本直接发送到 Anthropic 的 API(或el AI Gateway,零数据保留,如果您配置它不会发送到 gnt服务器。完全在设备需要针对本地 Ollama使用 `--mode local- 提取的规则候选仍然发送到 gnt 的 API 以打开拉取请求源文本在云保留在 gnt 的生成的规则文本不会 规则存储在您连接Hub 存储库和 gnt 自己的数据库中。MCP 工具从 g存储中读取,而不是通过克隆您的存储库 自托管:`apps 仅在您自己设置 `SENTRY_DSN`将错误数据发送到保持未设置,什么发送。
## 团队- **谁编写规则**:通过 `gnt`(从真实源)或 `gnt(手动提出)具有的存储库访问任何人。
- **批准方式**:合并拉取请求即是批准。没有单独的发布步骤。
- **提交内容**:`rules/<>.md` 文件,带有上述前置信息和纯 Markdown 正文。
## 故障排除
> **自托管:`gnt login` 的浏览器步骤需要 `apps/web` 运行。** 默认情况下,基本自托管组合栈不启动它。单独运行 `apps/web`(其自己的 `pnpm dev` 或构建),以便 `/cli-login` 有地方可去,然后重试 `gnt login`。
> **`ValueError: 拒绝启动:这些设置仍保留其 .env.example 占位符值...`** `change-me-...` 字符串仍位于 `apps/api/.env` 中。错误会命名每个违规字段;为每个字段生成一个真实值,然后重试。
> **`store` 启动失败,提示 `GNT_STORE_INTERNAL_API_SECRET 未设置`。** `apps/store/.env` 未填写或未被读取。确认文件是否存在于确切的路径,而不是仍命名为 `.env.example`。
> **每个 store-to-api 调用都被 401 或 403 拒绝,即使两个服务都已启动。** `_API_SECRET` /PROVAL_SIGNING_SECRET` 在 `apps/api/.env` 中与 `GNT_STORE_INTERNAL_API_SECRET` / `GNT_APPROVAL_SIGNING_SECRET` 在 `apps/store/.env` 中不字节对字节匹配。出于设计,此操作会关闭。重新生成两个对,以便两个文件达成一致。
> **规则因嵌入或重新排序错误而。** `/.env` 缺ZEROENTROPY`,或仍为空。 从 zeroentropy.dev 获取一个真实的密钥。
## 完整命令参考
```
gnt login
gnt logout
gnt connect <app> slack, notion-mcp, monday-mcp, linear, jira-mcp,
sentry-mcp,-mcp, zoom-mcp, figma, dat gitlab-threads, hubspot, airtableclaw, hermes
disconnect <app>
gnt status
gnt billing review
gnt pull
gnt gaps
prebrain 扫描,提取候选规则,打开批量草稿
拉取请求(~60 个源路径和提取参见
`gnt prebrain --help`mode cloud|local,默认为 cloud)
gnt stale
gnt keys list|revoke|rotate
webhook list|createoke
gnt org show|rename|invite|remove
```
## 了解更多
- 自托管指南:[`docs/self-hosting/README.md/self-hosting/README.md)
- 自托管后生产:[`apps/api/.md`](apps/apiLOY.md)
- 安全策略:[`SECURITY.md`](SECURITY.md)
## 许可证
Copyright © 2026 gnt.ai. Licensed under FSL-1.1-Apache-2.0, source-available today. See [`LICENSE`](LICENSE) for the terms and [`NOTICE`](NOTICE) for the trademark rule on forks: two years after this repo went public it converts to Apache-2.0 in full.
## 贡献
参见 [`CONTRIBUTING.md`](CONTRIBUTING.md) 了解开发设置和如何打开拉取请求。每个提交都需要一个 `Signed-off-by` Trailer(`git commit -s`),[开发者起源证书](https://developercertificate.org/) 代替 CLA。无需单独的表单,只需标志。
<div align="center">
[](https://github.com/gnt-ai/gnt/discussions) [![问题](https://img.shields.io/github/issues/gnt-ai