关于 Attest
Attest 为 Agent 执行的外部操作实施策略判断、人工审批、回读验证和防篡改记录,适用于需要审计操作结果的团队。它不执行操作,而是检查并记录实际结果,且会明确标示验证程度。
主要功能
- 01按策略决定是否允许操作
- 02对重要操作设置人工审批
- 03从目标系统回读并核对结果
- 04以哈希链记录操作证据
- 05导出审计记录并支持签名与锚定
适用场景
- 01在发送邮件或更新 CRM 前要求审批
- 02核实工具报告成功的写入是否生效
- 03追踪操作字段与预期值的差异
- 04为合规审计导出操作记录
MCP 相关
提供可置于任意 MCP 服务前的零代码代理,以及用于验证的 MCP 服务。它拦截策略决策、审批、回读验证和记录,但实际操作仍由原有工具执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx attestlayerATTEST_POLICYPath to a policy YAML (defaults to ./attest.yaml or the built-in default)ATTEST_LEDGERLedger SQLite path (default .attest/ledger.sqlite)ATTEST_AUTO_APPROVESet to 1 to approve every confirm request (development only)ATTEST_CONFIRM_TIMEOUTSeconds attest_confirm waits for a human (default 900)GMAIL_TOKEN密钥Google OAuth access token with gmail.readonly — enables Gmail read-backGOOGLE_TOKEN密钥Google OAuth access token — enables Calendar / Drive / Docs / Sheets read-backSLACK_BOT_TOKEN密钥Slack bot token (xoxb-…) with channels:history, channels:read — enables Slack read-backHUBSPOT_TOKEN密钥HubSpot private-app token — enables HubSpot read-backNOTION_TOKEN密钥Notion integration token — enables Notion read-backLINEAR_API_KEY密钥Linear API key — enables Linear read-backGRAPH_TOKEN密钥Microsoft Graph token — enables Outlook / Teams read-back本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Attest — 证明你的 AI Agent 实际做了什么
决策 → 把关 → 验证 → 证明。 你的 Agent 发送邮件、更新 CRM、转移资金。 Attest 会决定它是否可以执行,在关键操作前要求人工把关,从事实来源系统中读取数据以确认操作确实发生,并记录无篡改迹象的证据。
Attest 永远不会执行你的操作,执行操作的是你的工具。因此,它从第一天起就能与任何应用和任何框架配合使用。
你的 Agent 说操作成功了。真的吗?
两次完全相同的 CRM 写入,工具都报告成功,也都经人工批准:
$ attest ledger
#2 2026-09-19 10:16:46 someweirdcrm.create → leads ask approved unverified a09e7641db12
#1 2026-09-19 10:16:46 someweirdcrm.create → leads ask approved verified 77a6d99a60f6
第二次读取回来的数据完全匹配。第一次则不然,账本会指出不一致的字段:
{ "level": "unverified", "matched": false,
"evidence": { "compared": 4, "exists": true, "failed": ["stage"],
"fields": { "stage": { "want": "qualified", "got": "new", "ok": false } } } }
跟踪记录会显示两步都成功。这个差异就是整个产品的价值所在。
安装
pip install attestlayer # Python
npm install attestlayer # TypeScript — byte-identical ledger format
import attest
@attest.action(system="gmail", verb="send", target="to")
def send_email(to, subject, body): ...
import { Attest } from "attestlayer";
const at = new Attest({ agent: "followup-agent@v3", readers: { gmail: process.env.GMAIL_TOKEN! } });
const sendEmail = at.wrap({ system: "gmail", verb: "send", target: "to" },
async ({ to, subject, body }) => gmail.send({ to, subject, body }));
改动就这些。现在,首次向外发送操作会暂停并等待人工确认;账本记录的状态为 acknowledged,如果 Attest 能使用 Agent 自己的凭据读取回数据,则为 verified(Attest(readers={"gmail": service}))。你的代码其他部分无需改动。
分层验证,绝不夸大结果
每条记录都会准确说明检查到什么程度。无法执行的检查绝不会被包装成通过。
| 级别 | 含义 |
|---|---|
verified | 从事实来源系统读取回数据,且字段匹配 |
verified-custom | 运行了你自己的检查,且检查通过 |
acknowledged | 操作已被接受,但此处无法执行读取回查 |
attested-only | 已记录,但没有可用于此操作的验证器 |
unverified | 检查结果与声明矛盾 |
只有出现矛盾时,状态才会标记为 unverified。缺少凭据、只有只读权限或动词不受支持时,状态会降级为 acknowledged,因为“无法检查”和“操作没有发生”是两回事。
接入方式
| 接入点 | 方式 |
|---|---|
| 装饰器 / 包装器 | @attest.action(...) · at.wrap(...) |
| LangGraph | 工具节点包装器,将把关设为图中断 |
| OpenAI Agents · Claude Agent SDK · CrewAI · DeerFlow | attest/ 中的适配器 |
| MCP | 在任何服务前部署零代码代理,另提供验证服务 |
| HTTP 网关 | 将出站流量指向该网关,无需 SDK |
| 仅用 API | 自行 POST 描述符 |
人工确认会发送到团队日常使用的地方:Slack、Web 收件箱、Webhook、LangGraph 中断或控制台。审批者可以在批准前编辑参数,编辑操作也会被记录。
记录本身
采用哈希链式账本,本地使用 SQLite,云端按组织使用 Postgres。签名检查点让你可以清理旧记录,同时仍能验证链。支持可选的 Ed25519 签名,以及将记录锚定到文件、git 仓库或 HTTP 端点。导出格式包括 JSON、CSV、IETF draft-sharif-agent-audit-trail JSONL 格式,以及 EU AI Act 事件日志包。
每次操作的开销约为 1/6 毫秒,测量结果见 benchmarks/(已发布的数据)。
在本地试用
python examples/unknown_app.py # an app Attest has never seen, L1 → L3
ATTEST_AUTO_APPROVE=1 python examples/langgraph_agent.py
cd deploy && cp .env.example .env && docker compose up # cloud API :8400 + dashboard :3400
Attest Cloud
SDK 采用 MIT 许可证,可独立搭配本地账本使用。Attest Cloud 提供共享账本、确认收件箱、带版本的组织策略、Agent 密钥和合规导出。你的供应商令牌不会传到这里:回读在你的进程中使用你自己的凭据完成,只会发送哈希和预览内容。
你可以从 deploy/ 自托管,或阅读 DEPLOY.md。
安装渠道
| 渠道 | 方式 |
|---|---|
| PyPI | pip install attestlayer → attest、attest-mcp、attest-mcp-server、attest-gateway |
| npm | npm install attestlayer |
| MCP Registry | io.github.dev-prathap/attest(验证服务) · io.github.dev-prathap/attest-proxy(零代码代理) |
| Smithery | attestlayer/attest |
| Claude Desktop | 最新版本中的 attest-<version>.mcpb |
| Docker | ghcr.io/dev-prathap/attest-api · ghcr.io/dev-prathap/attest-dashboard |
文档
完整文档请见 dev-prathap.github.io/ATTEST — 快速入门 · 验证级别 · 策略 · 回读示例 · 账本与导出 · 加固
仓库
| 路径 | 内容 |
|---|---|
| attest/ | Python SDK — 描述符、策略、账本、验证阶梯、门控、适配器、MCP 代理、CLI |
| packages/attest-ts/ | TypeScript SDK — 使用相同的规范哈希,并通过针对 Python 的测试夹具验证 |
| cloud/ | Attest Cloud — FastAPI + Postgres:组织、密钥、策略版本、账本、确认收件箱、导出 |
| dashboard/ | Next.js 仪表板 — 账本深入查看、确认收件箱、策略和密钥 |
| examples/ | 未知应用、LangGraph、OpenAI Agents、MCP 配置、仅 API、云 |
| deploy/ | Dockerfile 和 compose |
| benchmarks/ | 该层每项操作的开销 |
| docs/ | 文档站点源文件及设计说明 |
pytest -q && (cd cloud && pytest -q) # 355 + 37 offline tests
pytest tests/live # 8 live suites; need real credentials, skipped without them
贡献
回读示例是最容易上手的部分:每个示例都会教 Attest 如何在一个新应用中确认写入操作,只需使用该应用的读取 API。请参阅 CONTRIBUTING.md,如需报告漏洞,请参阅 SECURITY.md。
原则
- 我们绝不执行你的操作。由你的工具执行;我们负责决策、门控、验证和记录。
- 覆盖范围是普遍的。每一行都会如实标明分层的验证深度。
- 采用 MIT 许可证的开源 SDK。共享账本、收件箱、策略和导出功能由付费云服务提供。
设计说明
公开记录产品背后的思考:愿景 · 产品 · 通用适配器 · 架构 · 市场 · 构建计划 · 决策 · 阶段计划
渊源
Attest 的核心机制提取自两个实际运行的代码库:DO(策略引擎、回读验证对、证据账本)和 DeerFlow(工具回执、验证模式、MCP 和聊天渠道适配器)。它们可与真实的 Gmail、Slack、HubSpot、Notion、Linear 和 Google Workspace 配合运行。Attest 在 tests/live/ 中为这些系统提供了自己的实时测试套件;这些测试需要真实凭据,没有凭据时会跳过。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。