mcpField
A
Actionproof

Actionproof

本地服务
github.com/Burakfenerci5安全017 周前更新

关于 Actionproof

Actionproof 为 AI Agent 的操作生成加密签名凭证,可离线验证且无需后端。它面向需要可移植、防篡改证据来记录 Agent 操作及其身份的构建者和审计人员。

主要功能

  1. 01Ed25519 签名的操作凭证
  2. 02离线验证凭证
  3. 03使用 `did:key` 标识 Agent
  4. 04对敏感输入和输出进行哈希
  5. 05TypeScript 与 Python 互操作
  6. 06通过封装器自动生成凭证

适用场景

  1. 01记录发送邮件或付款的凭证
  2. 02离线验证 Agent 操作凭证
  3. 03为审计保留防篡改记录
  4. 04为框架工具调用自动生成凭证

MCP 相关

MCP 服务提供 `attest_action`、`verify_receipt` 和 `get_identity` 工具。它在首次运行时创建稳定的 Ed25519 身份,并通过标准输入输出通信。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"actionproof": {
"command": "npx",
"args": [
"-y",
"actionproof-mcp"
]
}
}
}
启动命令npx -y actionproof-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmactionproof-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ActionProof

为 AI Agent 提供防篡改的审计轨迹。 可验证的可观测性:Agent 执行的每项操作都会生成一份由密码学签名的收据,你可以随时随地离线验证 — 无需后端。

可观测性工具(LangSmith、Langfuse、Arize)展示的是 Agent 声称执行过的操作 — 记录在它们平台上的跟踪数据,由平台说了算。但这些日志是自行声明的:Agent、错误或攻击者都可以随意写入内容,而事后你无法证明记录未被篡改。

ActionProof 补上了缺失的一环:可验证的可观测性。每项操作 — 发送邮件、提交表单、付款 — 都会生成一份防篡改、由 Ed25519 签名的收据,记录做了什么、由哪个 Agent 执行、何时执行以及依据谁的授权执行。修改任何字段都会导致验证失败。这是一条审计轨迹,你(或审计员、用户、交易对手)无需信任 Agent、供应商或我们,就可以信赖它。

为即将到来的合规要求而构建 — 《欧盟 AI 法案》(第 12 条)和 ISO 42001 要求为自动化决策提供可追溯、防篡改的日志。ActionProof 以可移植的基础组件形式提供这样的日志,而非封闭平台。

安装

npm install actionproof      # TypeScript / JavaScript
pip install actionproof      # Python

收据可跨语言兼容:在 TypeScript 中签名的收据可以在 Python 中验证,反之亦然。

快速入门(TypeScript)

import { attest, verify, generateKeypair } from "actionproof";

const agent = generateKeypair();               // agent's identity = its key (did:key)

const receipt = attest(agent, {
  type: "email.send",
  summary: "Sent renewal quote to [email protected]",
  params: { to: "[email protected]", amount: 4200 }, // hashed, not stored in clear
  result: { smtp: 250 },
  outcome: "ok",
});

verify(receipt);            // -> { valid: true, agent: "did:key:z6Mk..." }

快速入门(Python)

from actionproof import attest, verify, generate_keypair

agent = generate_keypair()

receipt = attest(
    agent,
    type="email.send",
    summary="Sent renewal quote to [email protected]",
    params={"to": "[email protected]", "amount": 4200},  # hashed, not stored in clear
    result={"smtp": 250},
    outcome="ok",
)

verify(receipt)             # -> VerifyResult(valid=True, agent="did:key:z6Mk...")

修改该收据的任何字段,verify 都会返回无效。这就是它的核心理念。

适用场景:Agent 可观测性的可验证层

ActionProof 是对可观测性技术栈的补充,而非替代。继续使用 LangSmith / Langfuse / Arize 获取丰富的跟踪数据、延迟和成本信息 — 然后为重要操作(那些会转移资金、改变状态或触及用户数据的操作)附加 ActionProof 收据,使这部分审计轨迹具备防篡改和可独立验证的特性。

可观测性平台ActionProof
记录内容供应商内部的跟踪数据/日志由你持有的签名收据
信任模型信任平台存储的记录通过密码学验证,无需信任任何人
防篡改性可由任何有数据库访问权限的人编辑任何编辑都会使签名失效
可移植性存在于供应商平台中可离线、跨语言、随处使用
大规模使用成本按事件计费~$0(本地签名,无需后端)

这是一份证明,而不只是一条日志 — 区别在于“我们的仪表板显示 Agent 做了这件事”和“这是任何人都可以验证的签名收据”。

设计原则

  • 离线且无需后端。 Agent 使用自己的 Ed25519 密钥。签名和验证仅使用原生密码学 — 无需服务器、账户或网络。(这也是它在任何规模下运行成本都几乎为零的原因。)
  • 保护隐私。 敏感输入/输出以 SHA-256 哈希形式存储;之后你可以证明某个值匹配,而无需将其放入收据。
  • 可组合,而非竞争。 ActionProof 是收据封套。将更强的证据绑定到 result_hash 中 — 例如 x402 结算、AP2 授权引用或经 DKIM 签名的 SMTP 250 — 让收据的可信度与交易对手证据相匹配。
  • 无需注册表的身份。 Agent 身份是 did:key(自描述公钥)。你信任谁取决于你的策略(固定密钥、允许列表,或下方的可选日志)。

有关线缆格式,请参阅 SPEC.md。

将其用作 MCP 服务(无需编写代码)

让 Agent 获得收据的最快方式:将 ActionProof 作为 MCP 服务运行,并将其添加到 Claude Desktop / Cursor。你的 Agent 将获得三个工具 — attest_action、verify_receipt、get_identity — 并可在执行操作后立即生成收据。

将以下内容添加到 MCP 客户端配置中(例如 Claude Desktop 的 claude_desktop_config.json):

{
  "mcpServers": {
    "actionproof": {
      "command": "npx",
      "args": ["-y", "actionproof-mcp"]
    }
  }
}

服务会在首次运行时生成一个稳定的 Ed25519 身份(存储在 ~/.actionproof/agent.key.pem,可通过 ACTIONPROOF_KEY_PATH 覆盖)。它签署的每份收据都可归属于该 Agent 的 did:key。

自动生成回执(框架包装器)

你不必在每次操作后都手动调用 attest——只需包装一次工具,每次调用都会生成回执。

TypeScript(与框架无关;适用于 LangChain.js、Mastra、Vercel AI SDK):

import { withReceipts, generateKeypair } from "actionproof";

const agent = generateKeypair();
const send = withReceipts(agent, rawSendEmail, {
  type: "email.send",
  onReceipt: (r) => store(r),   // called with a signed receipt on every call
});

Python(@attest_action 装饰器,或 LangChain/CrewAI 回调):

from actionproof import attest_action, ActionProofCallbackHandler

@attest_action(agent, type="email.send", on_receipt=store)
def send_email(to, body): ...

# or attest every tool a framework agent runs, no per-tool code:
handler = ActionProofCallbackHandler(agent, on_receipt=store)
agent_executor.invoke(input, config={"callbacks": [handler]})

本地开发

git clone https://github.com/Burakfenerci5/actionproof
cd actionproof && npm install
npm run demo     # full sign → verify → tamper loop
npm test         # TS suite (9 tests)
npm run mcp      # start the MCP server over stdio

cd python && pip install -e ".[dev]" && pytest   # Python suite (7 tests, incl. TS↔Python interop)

路线图

  • 当前(已发布): TypeScript 库 + MCP 服务 + 框架包装器,以及带有装饰器和 LangChain/CrewAI 回调的 Python 包。两者的回执可互通。
  • 下一步: 提供一流的 LlamaIndex / CrewAI 插件;导出器可将回执附加到现有可观测性技术栈(OpenTelemetry、LangSmith、Langfuse)的 span 中。
  • 之后(可选,托管): 可验证的审计仪表板——可搜索、可分享、防篡改的时间线,记录你的 Agent 集群执行过的操作;由仅追加日志提供支持,面向需要合规级证据(EU AI Act / ISO 42001)、但不想自行构建解决方案的团队。**该库和 MCP 服务将永远免费且可离线使用;**只有托管仪表板是付费服务。

许可证

MIT。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。