mcpField
C
chp

chp

远程服务
capabilityhostprotocol.com安全12 周前更新

关于 chp

chp 定义了 Capability Host Protocol,用于治理 Agent 和工具的执行并记录证据。它支持回放和验证受治理的操作,并与 MCP 等协议配合,而非取而代之。

主要功能

  1. 01能力与主机描述
  2. 02在执行边界实施治理
  3. 03关联且防篡改的证据
  4. 04按关联 ID 回放
  5. 05Python 与 TypeScript 实现

适用场景

  1. 01审计编码 Agent 执行的操作
  2. 02查看能力调用被拒绝的原因
  3. 03回放已记录的执行过程
  4. 04治理来自 MCP 的调用

MCP 相关

MCP 向 AI 应用提供工具和上下文,CHP 则治理并记录能力执行。MCP 调用可作为 CHP 治理和留证的操作来源。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://capabilityhostprotocol.com/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Capability Host Protocol

PyPI Python npm License Docs

CHP 是一项开源协议,用于声明、治理并证明 Agent、工具和系统的行为——它是一个统一的签名平面,让人工审批、Agent 操作和系统调用成为同一个受治理、防篡改且可重放的事件。

核心理念很简单:

查看 Agent 和工具实际做了什么,以及这些行为受到怎样的治理。

两分钟快速体验

你的编码 Agent 会读取文件、运行命令、调用工具。无需更改应用代码,即可在操作发生处建立受治理的边界:

pip install chp-core
chp hooks install                        # hooks Claude Code
chp hooks install --all-harnesses        # ...or Claude Code + Codex + Gemini CLI

像往常一样使用 Agent,然后查看它做了什么:

chp session list
chp session tree <session_id>

每次工具调用都是一个类型化证据事件,采用哈希链链接并存储在本地的 ~/.chp/evidence.sqlite 中。拒绝调用会作为一等事件记录,并附带原因代码,而不是被吞掉的异常。证据链具有防篡改性,因此,即使没有运行 Agent 的人也能判断记录是否完整。

想直接驱动协议?chp serve-demo 会启动一个受治理的主机,并打印一条可直接复制粘贴的首次调用命令。

完整指南: docs/quickstart.md · 存在的原因: docs/why-chp.md · 文档网站: docs.capabilityhostprotocol.com

你将获得什么

可以按关联 ID 重放记录,而记录回答的不只是“发生了什么”——参见 examples/agent-operations-demo/:

[
  {"sequence": 1,  "event_type": "execution_started",   "capability_id": "trace_execution", "outcome": null},
  {"sequence": 3,  "event_type": "execution_completed", "capability_id": "trace_execution", "outcome": "success"},
  {"sequence": 7,  "event_type": "execution_started",   "capability_id": "tool.add",        "outcome": null},
  {"sequence": 12, "event_type": "execution_started",   "capability_id": "tool.multiply",   "outcome": null},
  {"sequence": 13, "event_type": "execution_completed", "capability_id": "tool.multiply",   "outcome": "success"}
]

你还可以询问某项策略对已经发生的运行本来会如何处理:

{
  "invariant": {"id": "deny_multiply_tool", "kind": "capability_id_matches"},
  "would_have_denied": true,
  "violating_events": [{"capability_id": "tool.multiply", "event_type": "execution_started"}]
}

为什么是协议,而不是库

CHP 不是另一个 Agent 框架、工具协议或工作流引擎。它是能力边界上的受治理证据平面:运行了什么,以及对其进行了怎样的治理(策略、风险级别、安全检查、人工审批、自主预算、拒绝),都会写入同一条签名且关联的记录。可观测性工具会将执行拆分到彼此独立、可选且未签名的信号中,也不包含治理信息;CHP 则将两者统一起来并予以证明。

状态: CHP 目前处于 1.0 之前的候选发布版(v0.9.3)——线协议表面已冻结且仅支持增量扩展,并由两个通过一致性测试的独立实现(Python + TypeScript)提供支持。chp-core 已发布到 PyPI。

CHP 定义的内容

  • 能力描述符
  • 主机描述符
  • 调用信封
  • 关联上下文
  • 结构化执行证据
  • 结果、错误和拒绝语义
  • 重放查询和结果
  • 按关联 ID 重放
  • 最低一致性要求

安装

pip install chp-core                 # zero runtime dependencies
pip install 'chp-core[schema]'       # enforce declared input_schema
pip install 'chp-core[signing]'      # ed25519 — signed hosts, bundles, mandates
npm install @capabilityhostprotocol/sdk   # TypeScript client + verifier (alpha)

chp host verify 会在不到一秒内对安装进行冒烟测试,并报告是否强制执行输入模式验证。

从此检出版本安装:python -m pip install -e packages/python。

最小能力

from chp_core import LocalCapabilityHost, capability

host = LocalCapabilityHost("example-host")

@capability(
    id="math.add",
    version="1.0.0",
    description="Add two numbers.",
)
def add(a: int, b: int):
    return {"sum": a + b}

host.register(add)

result = host.invoke(
    "math.add",
    {"a": 2, "b": 3},
    correlation_id="demo-correlation",
)

print(result.outcome)       # "success"
print(result.data)          # {"sum": 5}

for event in host.replay("demo-correlation"):
    print(event.event_type)  # execution_started, execution_completed

主机会为该调用发出 execution_started 和 execution_completed 证据。如果执行失败,则会发出 execution_failed。如果主机拒绝调用,则会发出 execution_denied。

仓库结构

  • spec/README.md:规范索引——核心(v0.1)、治理词汇、调用流水线、HTTP 绑定、证据完整性与锚点(v0.2)、保留名称、测试向量、变更日志、提案流程
  • schemas/:协议对象的 JSON Schemas
  • packages/python/chp_core/:参考宿主(Python)
  • packages/chp-sdk/ + packages/chp-host-ts/:第二种实现(TypeScript)
  • examples/capability-host-endpoint-demo/:通过 HTTP 提供服务的宿主演示
  • examples/agent-operations-demo/:Agent/工具可观测性演示
  • examples/codex-self-observation-demo/:Codex 自用演示
  • examples/mcp-bridge-demo/:实验性 MCP 风格桥接原型
  • conformance/:一致性测试运行器
  • docs/quickstart.md:安装、首次运行、服务、网格
  • docs/why-chp.md:问题与核心论点
  • docs/adapter-authoring.md:编写自己的能力适配器
  • docs/production-runbook.md:运维、备份/恢复、密钥泄露
  • docs/comparisons/chp-vs-mcp.md:CHP 与 MCP 的精确比较
  • docs/comparisons/chp-and-opentelemetry.md:与 OpenTelemetry 的对齐说明
  • docs/comparisons/landscape.md:相邻框架比较
  • docs/security/threat-model-v0.1.md:v0.1 威胁模型

生产就绪情况

参考实现已针对生产运行进行加固:WAL 多写入者安全与热备份(chp store backup --verify)、SIGTERM 排空(退出前完成正在进行的工作)、失败时明确报错的身份验证标志(CHP_HOST_REQUIRE_AUTH=1)、定期保留策略,以及运维指标(存储大小、见证循环存活状态、撤销计数、内部错误)。运维、备份/恢复、滚动升级和密钥泄露操作手册: docs/production-runbook.md。漏洞报告:SECURITY.md。

CHP 与 MCP

MCP 向 AI 应用提供工具和上下文。CHP 则治理能力的执行并为其提供证据。

二者可以配合使用。MCP 可以作为能力调用的来源,而 CHP 在执行边界添加关联、重放、证据、拒绝语义和治理。

了解更多:docs/comparisons/chp-vs-mcp.md。

贡献

请先阅读 CONTRIBUTING.md。在提交拉取请求前,有一点需要了解:此仓库是私有开发仓库的自动生成镜像。CI 会拒绝来自非 sync/* 分支、且修改了 packages/、docs/、spec/、schemas/ 或 examples/ 的拉取请求,因此针对这些路径提交的代码 PR 无论质量多高,都会必然失败。

这不是敷衍——这是我们的发布模式。我们宁愿提前说明,也不愿让你在看到检查变红后才发现。如今,提交问题、规范提案、比较内容和参与讨论是最有效的参与方式;请提交问题,我们会通过内部流程处理相关变更并注明贡献者。

开源边界

开源内容应包括本地可见性:

  • 规范和 schemas
  • 本地主机
  • SDK 基础组件
  • 一致性测试
  • 本地重放
  • Agent 可观测性包装器
  • 实验性 MCP 桥接原型

商业价值可以保留在生产级信任能力上:

  • 托管能力图
  • 多宿主跟踪拼接
  • 数据保留
  • 团队工作区
  • 高级解释
  • 不变量库
  • 保障推导
  • 合规性导出
  • 企业身份与 RBAC

指导原则:

本地可见性应免费。生产级信任应付费。

许可证

CHP 按资产采用双重许可:

  • 代码(packages/、conformance/、examples/、scripts/):Apache License 2.0 — 详见 LICENSE。
  • 规范、架构和文档(spec/、schemas/、docs/):Creative Commons Attribution 4.0(CC BY 4.0)— 详见 LICENSE-DOCS。实施该规范还受到免版税专利授权的保护 — 详见 PATENTS。
  • 商标:“CHP”和“CHP-Certified” — 详见 TRADEMARK.md。

我们依据贡献者许可协议接受贡献;详见 CONTRIBUTING.md。

版权所有 © 2026 Project Auxo, Inc. 详见 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

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

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