内容
# 司法厅
**人工智能代理的身份提供者** — 中立、自主托管的记录系统,用于记录每个代理的身份、代理对象、功能和操作记录。
代理从司法厅获取身份,获取凭证(从不持有真实的密钥),并由司法厅记录所有操作 — 通过构建,而不是日志取证。路径强制执行:注册、范围、委托、撤销 — 立即,在身份或实例级别。审计仅作为元数据结构不变:提示和有效载荷从不存储。
单个Go二进制文件。Apache-2.0许可。优先支持MCP,然后是HTTP、Shell、浏览器。
试试60秒的故事:`make demo`。

**优先支持MCP,但不限于MCP。** 注册表、授权、策略、密封凭证和审计管理任何语言的代理(LangGraph、CrewAI、cron作业、Shell脚本),通过决策API —
参见 [管理任何代理](docs/governing-any-agent.md)。当前特定于MCP的是不可绕过的、路径上的强制执行(`mcp wrap`);对于其他运行时,您现在使用建议检查,并在这些PEP落地时切换到路径强制执行(HTTP → Shell → 浏览器),使用相同的授权。
**两个承诺** ([RFC-011](rfcs/011-open-core-boundary.md)):开放源代码的部分保持Apache-2.0许可 — 永远不会更改许可证;并且安全性从不付费 —
[安全.md](SECURITY.md)中的每个漏洞都在开放源代码中修复。边界测试:使单个信任域安全和可操作的内容是开放源代码的;只有在组织规模上存在价值的内容(SSO/SCIM、多租户、SIEM导出器、合规性包、HA编排)是企业级。
## 安装
```sh
brew install chanceryhq/tap/chancery # macOS / Linux
# 或:docker run --rm -v chancery:/data ghcr.io/chanceryhq/chancery --help
# 或:从发布页面下载签名二进制文件
# 或:从源代码构建:
go build -o chancery ./cmd/chancery
```
发布二进制文件和校验和由cosign签名(无密钥,通过GitHub OIDC),并附带SBOM;验证说明在每个发布的注释中。
## 试用(预发布)
```sh
./chancery init --trust-domain acme.com
./chancery agent register deploy-bot --owner user:you@acme.com \
--purpose "部署服务" --prompt ./prompt.md --model claude-fable-5
./chancery writ grant --for user:you@acme.com --to deploy-bot --cap "call:github/*"
./chancery writ delegate <writ-id> --to test-runner --caveat "call:github/get_*"
./chancery writ check <writ-id> --resource github/get_pull_request # 允许 + 谱系
./chancery writ revoke <writ-id>
./chancery writ check <writ-id> --resource github/get_pull_request # 拒绝:已撤销
./chancery audit # 时间线
```
每个操作都归因于特定的代理、版本和委托链 — 并且委托的授权只能缩小:块格式没有字段可以扩大。
在运行时创建代理的编排器**不需要管理员令牌**:生成本身受到授权管理([RFC-012](rfcs/012-dynamic-agent-creation.md))。人类锁定模板(能力上限 + 最大生命周期)一次;编排器的授权带有`admin:spawn/<template>`;每个生成的 worker 都注册,委托一个缩小的块,归因于所有者,并在其上过期:
```sh
./chancery template create researcher --purpose "读取github" \
--max-cap "call:github/get_*" --max-ttl 30m
./chancery writ grant --for user:you@acme.com --to orchestrator \
--cap "call:github/*" --cap "admin:spawn/researcher"
./chancery agent spawn worker-1 --writ <writ-id> --agent orchestrator \
--template researcher --ttl 10m # 或 POST /v1/spawn — 无管理员令牌
```
在任何stdio MCP服务器上强制执行(每次调用的策略,密封的密钥仅在服务器端注入,撤销在下一次调用时):
```sh
./chancery secret put github-token --from-file ./token
./chancery mcp wrap --agent deploy-bot --writ <writ-id> \
--secret GITHUB_TOKEN=github-token -- npx @yourorg/some-mcp-server
```
**浏览器代理** ([RFC-013](rfcs/013-browser-sessions-and-tokens.md)):人类的会话被密封和托管 — 代理从不持有cookie — 并且授予`net:…`能力范围每个导航按URL、路径、关闭失败:
```sh
./chancery secret put github-session --from-file storage-state.json
./chancery writ grant --for user:you@acme.com --to web-bot \
--cap "call:browser/*" --cap "net:github.com/*"
./chancery mcp wrap --agent web-bot --writ <writ-id> \
--secret-file STATE=github-session \
-- npx @playwright/mcp@latest --isolated --storage-state=chancery-file:STATE
# github.com/* 导航通过; mail.google.com 被拒绝 -32001;
# 实例撤销是会话杀死开关。参见 examples/browser-agent。
```
使用 `./chancery serve` 将控制平面作为HTTP API运行(REST/JSON位于 `/v1` 下;管理员令牌在 `init` 时打印一次)—
并打开 **http://127.0.0.1:7423/ui** 以获取嵌入式 **只读仪表盘** ([RFC-014](rfcs/014-read-only-dashboard.md)):带有永久完整性徽章的实时审计时间线、代理登记表带有生成出处,以及委托树以树形呈现。
写入(授权、撤销、密封)故意保留在CLI/API中。审计时间线是哈希链接的 — `./chancery audit verify` 检测任何编辑、删除或重新排序。已知MVP漏洞在[RFC-009 §5](rfcs/009-threat-model.md)中发布。


## 指南
- [**快速入门(MCP)**](QUICKSTART.md) — 在5分钟内管理真正的Filesystem MCP服务器
- [**管理任何代理**](docs/governing-any-agent.md) — 非MCP路径:身份、策略、撤销、审计适用于任何语言的任何作业
- [**测试演练**](docs/testing-playbook.md) — 一个有指导的、大约20分钟的演练,涵盖每个功能(001-014),每个步骤都有预期的输出
- [**自己验证每个声明**](docs/verify.md) — 动手、手动检查每个RFC所述的内容
- [概念](docs/concepts.md) — 代理、版本、实例、授权
- [**浏览器代理**](examples/browser-agent/README.md) — 受托会话 + 作用域导航适用于Playwright MCP
- [Claude Code / MCP客户端设置](examples/claude-code/README.md) — 插入 `.mcp.json`
- [Go SDK](sdk/) 和 [示例代理](examples/go-agent/) — 通过API进行建议的进程内检查
- [LangGraph / Python代理](examples/langgraph/README.md) — 部署形状的集成
SDK是**建议**的 — 客户端便利设施。强制执行边界始终是进程外的代理(`chancery mcp wrap`),提示注入的代理无法与其沟通。
## 从源代码构建和测试
```sh
git clone https://github.com/chanceryhq/chancery && cd chancery
make build # -> ./chancery (Go 1.26+,无CGO,单个静态二进制文件)
make test # go vet + 79个测试,跨10个包,数秒内完成
make demo # 60秒强制执行 + 审计弧线,端到端
```
参见 [CONTRIBUTING.md](CONTRIBUTING.md) 获取仓库布局,测试如何映射到每个RFC,以及如何提出更改。
## 设计RFC
设计作为一系列锁定决策,一次一个RFC([模板](rfcs/TEMPLATE.md))。
| RFC | 标题 | 状态 |
|-----|-------|--------|
| [000](rfcs/000-vision-and-plan.md) | 愿景和计划 | 审查中 |
| [001](rfcs/001-agent-identity-model.md) | 代理身份模型 | 审查中 |
| [002](rfcs/002-lineage-and-delegation.md) |