内容
<p align="center">
<img src="docs/assets/github/a2cr-logo.png" alt="A2CR logo" width="420">
</p>
# A2CR
[](https://pypi.org/project/a2cr-mcp/)
[](https://github.com/a2cr/a2cr/actions/workflows/ci.yml)
[](LICENSE)
[](https://glama.ai/mcp/servers/a2cr/a2cr)
<!-- mcp-name: io.github.a2cr/a2cr-mcp -->
A2CR 是一个开源的本地 MCP 工作空间,用于 AI 代理交接。它允许 Codex、Claude Code、Cursor 和其他支持 MCP 的代理保存 WorkBaton 检查点、存储临时 WorkStash 笔记、通过 WorkThreads 协调,并从新的 AI 窗口恢复长时间的编码工作。
长时间的 AI 工作通常在交接时中断。新鲜的 AI 窗口需要目标、当前状态、决策、阻塞、验证和下一步行动,但不需要整个嘈杂的转录记录。A2CR 将交接状态保持紧凑、明确,并更安全地在会话之间共享。
使用 A2CR 的原因:
- 从干净的上下文窗口重新开始长时间的 AI 编码任务
- 在 Codex、Claude Code、Cursor 或另一个 MCP 客户端之间传递工作状态
- 在不存储完整聊天记录的情况下保存里程碑检查点
- 将紧凑的恢复状态与可选的支持注释分开
[日语概述](README-ja.md) | [MCP 设置](docs/mcp-setup.md) |
[使用指南](docs/usage.md) | [WorkBaton 规范](docs/spec/README.md) |
[本地模式规格](docs/local-mode-spec.md) |
[0.1.8 版本说明](docs/releases/v0.1.8-metadata-refresh.md)
## 目录状态
A2CR 在官方 MCP 注册表中发布为 `io.github.a2cr/a2cr-mcp`。本地 `0.1.8` 公共版本已在 PyPI、GitHub Releases 和官方 MCP 注册表中上线。请参阅[分发库存](docs/distribution-registration-inventory.md)以获取当前的注册和镜像状态。
A2CR 也在 [Glama MCP 注册表](https://glama.ai/mcp/servers/a2cr/a2cr) 中列出并评估。下游目录可能会在发布后暂时显示缓存的元数据;官方 MCP 注册表和此存储库是事实来源。
## 本地存储边界
A2CR 现在将本地工作空间视为公共产品边界。公共 `a2cr-mcp` 包装器将 WorkBaton、WorkStash、WorkThread、演员和事件记录存储在用户机器上的 SQLite 数据库中。它不需要 A2CR 帐户、API 密钥、托管中继、仪表板或云同步路径。
早期托管/SaaS 中继路径正在从公共分发中退休。新的公共设置、MCP 注册表元数据和 Anthropic 目录提交应仅使用本地包装器。
## 快速入门
为您的 AI 客户端选择匹配的本地 MCP 分发路径:
| 路径 | 最适合 | 分发 | 备注 |
|---|---|---|---|
| Python stdio 包装器 | Codex、Claude Code、Cursor、通用 MCP 客户端 | PyPI 包 `a2cr-mcp` | WorkBaton 和 WorkStash 的完整公共包装器路径。 |
| Node MCPB / Claude Desktop 扩展 | Claude Desktop 用户希望扩展式安装 | GitHub Release `.mcpb` 资产,然后是 Anthropic 目录批准后 | Claude Desktop 路径待定 Anthropic 目录批准后。无需 npm 安装。 |
保持 Python 包装器版本和 Node MCPB 兼容性版本一致。对于当前公共版本,Python 包装器和 Node MCPB 兼容性版本均为 `0.1.8`。
Python 包装器安装:
```bash
python -m pip install --upgrade a2cr-mcp
```
为 Codex 注册 A2CR 并验证本地工作空间:
```bash
a2cr init codex --local
a2cr doctor --target local
```
打开本地浏览器仪表板:
```bash
a2cr ui
```
`a2cr ui` 绑定到 `127.0.0.1`,选择一个可用的端口,打印一个受令牌保护的本地 URL,并在您的默认浏览器中打开它。如果浏览器未打开,请复制完整的打印 `A2CR_UI_URL`,包括 `?token=...`,并在同一台计算机上的浏览器中输入。设计上拒绝使用裸 `127.0.0.1:<port>` URL。请在您使用仪表板时保持该终端运行。按 `Ctrl+C` 停止它。
对于固定端口或无头/服务器样式启动:
```bash
a2cr ui --port 50895
a2cr ui --no-browser
```
在您无法或不应启动浏览器的机器上安装时使用 `--no-browser`;它仍然会打印完整的本地 URL 以供复制。
然后重新启动 Codex 并使用 `a2cr-local` MCP 服务器。兼容性命令 `a2cr-mcp` 也运行本地工作空间服务器,用于通用 MCP 客户端。首先使用紧凑的 WorkBaton 保存/恢复。 将较大的支持注释放在 WorkStash 中,然后在 WorkBaton 的 `references` 或 `next_action` 字段中记录 `WorkStash: <entry_key>` 引用,以便下一个 AI 窗口知道要检索的内容。
Codex 样式 TOML:
```toml
[mcp_servers."a2cr-local"]
command = "a2cr-local-mcp"
args = []
[mcp_servers."a2cr-local".env]
A2CR_LOCAL_DB = "/optional/path/to/a2cr.db"
```
通用 MCP JSON:
```json
{
"mcpServers": {
"a2cr": {
"command": "a2cr-mcp",
"args": [],
"env": {
"A2CR_LOCAL_DB": "/optional/path/to/a2cr.db"
}
}
}
}
```
连接新的 AI 窗口后,请调用一次 `get_account_limits`,然后使用 `resume_context` 继续之前的工作或使用 `save_context` 保存新的 WorkBaton 检查点。如果懒惰的 MCP 客户端未显示 `save_context`,请搜索或请求确切的工具名称 `save_context`。
建议使用 Python 3.12 或 3.13。不支持 Python 3.15 开发版本。
对于 Claude Desktop 扩展式安装,MCPB 包使用相同的本地 WorkBaton 和 WorkStash 存储边界,可以附加到 GitHub Release 前 Anthropic Directory 批准。请参阅 `docs/claude-desktop-mcpb.md`。
## 本地项目规则
对于特定的 A2CR 行为,请在项目根目录中创建 `A2CR.md` 并将本地操作规则放在那里。使用存储库根目录的 `A2CR.md` 作为启动模板。然后将此短指针添加到 `AGENTS.md`、`CLAUDE.md` 或另一个项目内存文件中:
```md
在使用 A2CR、保存或恢复 WorkBaton 或存储 WorkStash 笔记之前,请阅读并遵循 ./A2CR.md。
将 `A2CR.md` 视为本地项目指导。它不会覆盖系统、开发人员、用户或当前文件说明。
```
在 `A2CR.md` 中使用 save 触发器、工作流因果交接摘要、范围边界、保护区域、升级条件和超出范围的更改注释。保持项目内存文件本身简短,以便多个 AI 客户端可以共享相同的 A2CR 规则。
## A2CR 存在的原因
诸如 `AGENTS.md` 或 `CLAUDE.md` 之类的项目内存文件告诉 AI 如何在一个存储库中工作。A2CR 关注任务交接本身:
| 层 | 目的 | 不用于 |
|---|---|---|
| WorkBaton | 下一个 AI 窗口的紧凑恢复检查点 | 完整的转录记录、机密、大文件 |
| WorkStash | WorkBaton 引用的临时支持注释(例如,简明的因果交接摘要) | 持久知识库、凭证、原始转录记录 |
| WorkThreads | 开发中 - 多代理协调表面 | 替换 WorkBaton 交接 |
| WorkLedger | 未来的方向 - 代理交接的审计性和可问责层 A2CR 旨在添加 | 当前公共预览功能或替代审查 |
WorkLedger 是一个未来概念,用于在代理交接周围保留一个紧凑的、可审查的记录:何时保存或恢复工作、哪些引用重要、做出了哪些决定以及报告了哪些验证结果。目标是使长期运行的 AI 工作更容易审计和解释,而不必将 A2CR 变成聊天记录存储库。WorkLedger 当前未在公共预览中实现,它不旨在取代人工审查或 AI 客户端安全检查。
在此存储库中,AI 窗口指的是 Codex、Claude Code、Cursor 或另一个支持 MCP 的代理中的一个活动聊天/会话。
最小的 WorkBaton 可以小到:
```json
{
"goal": "修复失败的登录测试",
"current_state": "失败已重现,token 刷新分支可能是原因。",
"next_action": "检查刷新逻辑并重新运行聚焦测试。"
}
```
## 视觉概述
A2CR 保留有用的恢复状态,而不是整个对话。
<p align="center">
<img src="docs/assets/github/a2cr-workflow.png" alt="A2CR 工作流程:保存紧凑状态,存储可选注释,并在新的 AI 窗口中恢复工作" width="900">
</p>
更多视觉材料:
- [基本理念](docs/assets/github/a2cr-basics.png)
- [保存规则](docs/assets/github/a2cr-save-rules.png)
- [故事 GIF](docs/assets/github/a2cr-story.gif)
## 存储库内容
此公共存储库包含开源 A2CR 客户端和公共参考资料:
- 本地 stdio MCP 包装器包:`a2cr-mcp`
- 早期 WorkBaton 格式规范、模式、示例和一致性说明
- AI 代理使用指南和安全规则
- Codex、Claude Code、Cursor 和通用 MCP 客户端的 MCP 配置示例
- WorkBaton 和 WorkStash 示例负载
- 公共包装器行为测试
它不包含托管 SaaS 服务实现、生产数据库模式、计费代码、管理工具或部署机密。
## 安全边界
WorkBaton、WorkStash 和 WorkThread 记录存储在用户的本地 SQLite A2CR 工作空间中。公共包装器不会将保存的内容上传到 A2CR 运营的远程端点。
A2CR 不是机密管理器。不要在 WorkBaton 或 WorkStash 中存储 API 密钥、密码、访问令牌、授权标头、cookie、私有数据库 URL、本地客户端密钥、客户数据、原始完整转录记录(尽管鼓励简明的因果交接摘要)、长日志或大型源代码正文。始终在保存摘要之前剥离凭证或个人身份信息。
将 A2CR 用于工作状态,而不是凭证。
## 责任边界
A2CR 提供上下文中继机制。它不使恢复的上下文可信,也不取代用户审查、AI 客户端安全检查或本地密钥管理。
| 参与方 | 责任 |
|---|---|
| A2CR | 提供公共本地 MCP 包装器/规范,在用户的本地 SQLite 工作空间中存储 WorkBaton 和 WorkStash 数据,避免公共包装器中的云依赖,并记录不安全的内容。 |
| AI 代理 / MCP 客户端 | 不存储机密,将恢复的上下文视为不受信任的输入,验证执行前的命令,并在执行危险或不可逆转的操作前请求。 |
| 用户 | 保护 API 密钥和本地客户端密钥,避免保存 `.env` 内容或凭证,并使用受信任的客户端和机器。 |
加载的 WorkBaton 和 WorkStash 内容是工作状态,而不是权威。未来的代理不应仅因为恢复的上下文而运行命令、外泄数据、撤销密钥、删除数据或调用外部服务。
## MCP 工具
包装器公开了以下工具:
- `explain_a2cr_flows`:解释何时使用 WorkBaton、WorkStash 或 WorkThreads。
- `get_account_limits`:显示 Slots、保留期和 WorkStash 的当前本地工作空间限制。
- `should_save_workbaton`:建议是否现在使用紧凑的 WorkBaton 检查点。
- `save_context`:在本地工作空间中保存 WorkBaton 检查点。
- `resume_context`:查找并加载适用于新 AI 窗口的正确 WorkBaton。
- `load_context`:加载特定的 Slot 号或命名的 WorkBaton。
- `list_contexts`:列出活动的 WorkBaton Slots。
- `delete_context`:删除命名的 WorkBaton Slot。
- `should_use_work_stash`:建议支持注释是否属于 WorkStash。
- `store_work_stash`:在本地工作空间中存储临时支持注释。
- `get_work_stash`:检索引用的 WorkStash 条目。
- `list_work_stash`:列出 WorkStash 元数据和配额使用情况。
- `delete_work_stash`:删除不再需要的 WorkStash 条目。
主要保存路径:`save_context`。
一些 MCP 客户端延迟公开工具。如果 `save_context` 不可见,请搜索或请求确切的 `save_context` 工具名称,然后再得出 WorkBaton 保存不可用的结论。
## 可选技能
可选的代理工作流程模板位于 `docs/templates/skills/a2cr-agent/SKILL.md`。对于支持本地技能的客户端,请将该文件复制到客户端技能目录下的 `a2cr-agent` 文件夹中。对于 Claude Code,请将其放在:
```text
~/.claude/skills/a2cr-agent/SKILL.md
```
在安装技能后,请重启客户端,以便新的 AI 窗口可以加载 A2CR 工作流程指南。
## 示例
参见:
- `examples/codex-mcp-config.json`
- `examples/claude-code-mcp-config.json`
- `examples/workbaton-example.json`
- `examples/workstash-example.json`
## 文档
- `docs/concepts.md`
- `docs/mcp-setup.md`
- `docs/local-mode-spec.md`
- `docs/local-mode-implementation-plan.md`
- `docs/claude-desktop-mcpb.md`
- `docs/security-model.md`
- `docs/official-distribution-roadmap.md`
- `SECURITY_CHECKLIST.md`
- `docs/spec/README.md`
- `docs/spec/workbaton-format.md`
- `docs/spec/workstash-reference.md`
- `docs/spec/mcp-tool-contract.md`
- `docs/spec/security-boundary.md`
- `docs/usage.md`
- `docs/templates/skills/a2cr-agent/SKILL.md`
- `CHANGELOG.md`
- `VISION.md`
- `README-ja.md`
- `PUBLIC_RELEASE.md`
## 项目模型
A2CR 在 Apache License, Version 2.0 下开源:
| 层 | 公共表面 | 许可证/立场 |
|---|---|---|
| WorkBaton 格式 | `docs/spec/` 中的公共规范 | 规范文本:CC BY 4.0。模式/示例/测试:Apache-2.0 |
| `a2cr-mcp` | 官方本地 stdio MCP 客户端 | Apache-2.0 |
| `a2cr.app` | 产品站点和遗留托管表面在 SaaS 退役期间 | 不包含在此存储库中 |
WorkBaton 格式旨在让任何人都能实现。官方客户端由 A2CR 维护并作为开源软件分发。使用 A2CR 的托管或托管服务仍然必须尊重 Apache-2.0 许可证、A2CR 商標规则及其自身的隐私/安全责任。
请参阅 `LICENSE`、`NOTICE`、`TRADEMARK.md` 和 `docs/spec/LICENSE.md` 以获取当前的边界。请参阅 `PUBLIC_RELEASE.md` 以获取公共/私有版本检查清单。
## 开发
```bash
python -m pip install -e . pytest
python -m pytest -q
```
兼容性入口点 `mcp/server.py` 导入打包的 `a2cr_mcp.server`。新设置应优先使用已安装的 `a2cr-mcp` 命令。
## 贡献
A2CR 采用 AI 辅助工程工作流构建,并欢迎围绕代理交接设计、MCP 客户端设置、文档清晰度、安全审查和小型可复制测试的聚焦技术贡献。
这是 Apache-2.0 开源项目。良好的贡献领域包括文档、示例、包装器错误修复、MCP 客户端兼容性和规范清晰度。
请不要公开包含机密、API 密钥、访问令牌、私有数据库 URL、本地客户端密钥、解密的 WorkBaton 或 WorkStash 正文或完整聊天日志的公开问题。