Mandare 是面向 AI 智能体机群的问责技术栈,核心目标是让智能体的预算限制无法通过“说服”绕过,并为其行为提供防篡改的可验证记录。
用途
Mandare 用于对 AI 智能体机群进行身份、权限、预算和行为的闭环管理。它提供签名身份(Passport)、机器可读的签名授权(Mandate)、防篡改账本(Ledger)以及离线终止开关,并通过外部见证与公共锚定,使账本历史无法被截断或改写而不被检测到。其设计遵循本地优先原则:原始活动数据永远不会离开你的机器。
主要能力
- 签名身份(Passport):为智能体签发可验证的凭据与密钥。
- 签名授权(Mandate):以机器可读的签名形式规定智能体的权限和预算。
- 防篡改账本(Ledger):记录智能体的实际行为,包括拒绝记录,支持 SQLite 和 Postgres。
- 离线终止开关:不依赖任何远程组件即可终止智能体。
- 外部见证与公共锚定:通过独立基础设施上的见证者,防止账本被截断或重写;即使操作者也无法在不被检测的情况下篡改。
- 本地 CLI 与 MCP 服务器:提供命令行工具和 MCP 服务器,用于验证、签发、终止等操作。
- 证明而非数据:跨信任边界的只有证明(如加盐树头、完整性证书、撤销位串),原始提示和响应不离开本机。
使用方式
快速开始(Docker)
需要 Docker 与 Compose v2(up --wait 需要 v2.1.1+)。首次运行会在本地构建镜像,耗时几分钟。演示会针对你的网关释放一个失控的智能体循环,使用内置的模拟提供者定价:强制执行是真实的,但资金是模拟的。€20/天的授权会在运行中终止它:23 次调用结算 €19.17,第 24 次调用的预留将超过 €20,被拒绝并返回 403 PER_DAY_EXCEEDED,拒绝本身也是一条账本记录,mandare verify 会证明链有效、计数器等于账本重放、被见证的头历史覆盖该链。仪表板位于 http://127.0.0.1:8788。真实提供者需在 .env 中放入密钥。
无 Docker 方式(Node ≥ 22.13 和 pnpm 10)
若缺少 pnpm,install.sh 会运行 corepack enable(全局更改)。pnpm demo 运行更便宜的模型,并提高网关默认的 60 次调用/分钟速度限制,使预算成为唯一限制:71 次调用,第 72 次调用在同样的 €20 上限被拒绝。注意:pnpm demo 在没有见证者的情况下运行,因此 mandare verify 无法看到从账本末尾丢弃的条目(包括拒绝),除非传入保存的 --prev-head。Docker 栈运行见证者,pnpm demo:witness 展示其捕获该情况。
从 npm 安装(CLI + MCP 服务器)
无需检出代码;MCP 服务器读取位于 MANDARE_LEDGER_DB 的账本,默认 ./mandare-ledger.db。
状态位置
CLI 的 vault(./mandare-vault.db,用于 passport issue 和 vault …)默认将主密钥保存在操作系统钥匙串中;passport issue 默认将智能体凭据和密钥写入 ~/.mandare/agents/;除非 MANDARE_VAULT=1,门的私钥位于账本旁边(<ledger>.doorkey.pem,权限 0600)。
五个演示
五个演示是验收测试(CI 运行全部)。每个演示在 examples/ 中也有独立的、带叙述的场景——故事、真实捕获的输出和接下来要阅读的代码。
适用场景
- 需要为 AI 智能体设定硬性预算并强制执行的组织。
- 需要对智能体行为进行防篡改审计的合规场景。
- 需要离线终止能力,不依赖远程控制的环境。
- 需要外部见证和公共锚定以增强可验证性的多智能体系统。
- 本地优先、数据不出本机的隐私敏感场景。
限制与注意事项
- 演示中的资金为模拟,真实提供者需自行配置密钥。
- 无见证者时,
mandare verify无法检测账本末尾被丢弃的条目,除非提供保存的--prev-head。 - 安全审查由 AI 辅助完成,尚未经过外部审计;外部审计仍在等待中。
- 从启动起:npm Trusted Publishing(OIDC 溯源)、cosign 签名镜像、签名技能信封。
- 许可证:AGPL-3.0-only,但可嵌入包(spec、policy-engine、verifier、passport、witness-protocol、sdk、sdk-py)为 Apache-2.0,此分割永久有效。
- 漏洞报告见 SECURITY.md(私人报告、安全港、90 天披露)。
- 需要 Docker 与 Compose v2 或 Node ≥ 22.13 和 pnpm 10。
- 所有操作通过本地 CLI 和 MCP 服务器进行。