Portable Handoff
把项目上下文可靠地交接给不同的 AI 会话与编码工具。
- Star 数
- ★ 23
- 最近更新
- 2 个月前
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 80/100 · 表现良好
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude CodeChatGPT · Claude.ai(不支持)
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 使用 Claude Code 完成了一半重构的开发者,需要在上下文窗口耗尽前把约束、纠正记录、阻塞问题和 Git 状态交给下一次会话。
- 不适合
- 需要在纯 ChatGPT 或 Claude 网页对话中直接生成并验证胶囊的用户
- 需要同步、账号或团队协作功能的团队
- 需要密码学签名来证明胶囊作者身份的场景
- 源码审查
- 80/100 · 表现良好
这个 Agent 能做什么,适合哪些场景?
Portable Handoff 是一个本地优先的 Python CLI 和技能包,用于在 AI 会话、模型及编码代理之间传递项目上下文。模型先提供语义内容,本地程序再采集 Git 状态、文件哈希和时间戳,并在冲突时以本地事实为准。最终产物是一个同时包含可读说明和规范 JSON 的 Markdown capsule,每项声明还带有来源与可信度标签。它提供 preflight、finalize、load、validate、list、export 和 doctor 等命令,并附带 Claude Code、Codex、Cursor 及通用 shell 主机的集成说明。工具无需账户、API 密钥、网络、数据库、向量存储或运行时第三方依赖,但必须具备 Python 3.11+、shell 和可写文件系统;没有 shell 的普通 ChatGPT 或 Claude 网页对话只能生成未验证草稿。
端到端流程从 portable-handoff preflight --cwd . --source-host codex 开始:本地 CLI 检查运行环境,并采集可确定的仓库证据。模型根据会话和可见信息编写 draft JSON,其中约束、决策和其他声明可以标注 provenance 与 trust;未详细标注的字符串默认视为 model_inference / inferred。随后 portable-handoff finalize --preflight .handoff/evidence/preflight-xxxx.json --draft DRAFT.json --output auto 合并草稿与本地证据,并让本地事实覆盖冲突的模型内容,同时执行密钥脱敏、路径检查和规范化。生成的 Markdown capsule 保存人类可读说明、规范 JSON 和 SHA-256 摘要。load latest 输出适合新会话的简报,并检查内嵌 JSON、摘要、两种表示的一致性及当前仓库状态;validate 验证指定 capsule,list 枚举 capsule,export --format prose 生成适合粘贴到聊天中的文本。系统还会把未回答的问题提升为阻塞状态、检查记录的提交是否可从远端访问,并把下一步命令作为带风险标签的惰性文本展示,而不会执行它。
- 使用 Claude Code 完成了一半重构的开发者,需要在上下文窗口耗尽前把约束、纠正记录、阻塞问题和 Git 状态交给下一次会话。
- 同时使用 Codex、Claude Code 和 Cursor 的工程师,希望通过同一种 capsule 格式在工具之间迁移工作,而不必反复讲解项目背景。
- 在多个本地仓库间工作的个人开发者,需要用文件哈希、提交信息和时间戳区分模型回忆与机器验证的事实。
- 准备暂停任务的维护者,需要明确记录尚未回答的决策问题,避免后续会话误把项目视为无阻塞。
- 需要把上下文粘贴到无 shell 聊天界面的用户,可先按模板生成草稿,再回到装有 CLI 的机器上执行 finalize,得到经过验证的 capsule。
- 审阅外部传入交接文件的开发者,需要在加载前验证摘要、清理控制字符、检查相对路径并脱敏高置信度密钥。
如何安装或部署这个 Agent?
要求 Python 3.11 或更高版本。执行:
git clone https://github.com/legoambarish/portable-handoff
cd portable-handoff
pip install -e .
portable-handoff doctor --cwd .仅执行 pip 安装不会包含代理实际读取的技能文件,因此需要保留克隆目录。Claude Code 可继续运行 python scripts/install_skill.py --destination ~/.claude/skills/handoff;Codex 可运行 python scripts/install_skill.py --destination ~/.codex/skills/handoff。Cursor 可执行 mkdir -p .cursor/rules 和 cp integrations/cursor/commands/handoff.md .cursor/rules/handoff.mdc,但若需自动加载,还要按照 Cursor 规则格式补充 alwaysApply 或 globs frontmatter。安装不需要账户、API 密钥或网络运行时服务;Git 缺失时能力会降级,仓库事实将记录为 unknown。
如何使用这个 Agent?
先在目标仓库或克隆目录中运行 portable-handoff doctor --cwd .,确认结果为 supported 或了解其降级原因。创建 capsule 时运行 portable-handoff preflight --cwd . --source-host codex,让模型按项目上下文生成 DRAFT.json,再运行 portable-handoff finalize --preflight .handoff/evidence/preflight-xxxx.json --draft DRAFT.json --output auto;其中 preflight 文件名应替换为实际生成的路径。成功时 finalize 会输出包含 outcome、path、schema_version、validated 和 redactions 的单行 JSON。新会话中用 portable-handoff load latest --cwd . 获取简报;也可用 portable-handoff validate CAPSULE.md --cwd . 验证文件、用 portable-handoff list --cwd . 查看已有 capsule,或用 portable-handoff export CAPSULE.md --format prose 导出聊天用文本。普通 ChatGPT 或 Claude 网页对话无法完成验证:只能粘贴 skills/handoff/assets/handoff-template.md 的结构生成草稿,并在之后转移到具备 CLI 的机器上执行 finalize。
这个 Agent 有哪些优点和局限?
- 把模型负责的语义内容与本地程序采集的 Git 状态、文件哈希和时间戳分开,并在冲突时以确定性证据为准。
- 每项声明都有来源和可信度;非确定性来源不能被标为 verified,从机制上限制模型把回忆包装成事实。
- capsule 同时保存可读说明和规范 JSON,并通过 SHA-256、双表示一致性检查及仓库状态比较检测损坏或陈旧内容。
- 本地运行,无账户、API 密钥、网络、数据库、向量存储或运行时第三方依赖。
- 对传入内容实施密钥脱敏、终端控制字符及不可见或双向 Unicode 清理、仓库相对路径验证,并且永不执行 capsule 中的命令。
- 必须具备 Python 3.11+、shell 和可写文件系统,因此普通 ChatGPT 和 Claude 网页会话不能直接创建或验证 capsule。
- pip 包不包含技能文件;完整的代理集成需要保留仓库克隆并单独安装或复制对应技能文件。
- 语义质量仍取决于负责压缩上下文的模型;文档明确指出多数真实条目可能只是 inferred,重要信息仍可能在压缩中丢失。
- v0.1 没有同步、账户、团队功能,也没有第二个模型复核第一个模型的内容。
- SHA-256 摘要只能发现截断或意外修改,不能证明作者身份;能修改 JSON 的人也能重新计算摘要。
- 没有 Git 时只能降级运行,仓库事实会被记录为 unknown。
这个 Agent 与同类方案有什么区别?
与直接要求模型“总结我们做过什么”相比,Portable Handoff 把解释性内容交给模型,把 Git 状态、文件哈希、时间戳、远端可达性和完整性检查交给本地代码,并明确标注每项声明的来源与可信度。代价是需要额外的 preflight、草稿和 finalize 流程,以及本地 shell 和文件系统;它也不能保证模型已经注意到所有重要语义。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Portable Handoff 当前 | 80 · 表现良好 | 命令行工具免费 | ★ 23 | 2 个月前 | Python | Codex · Claude Code |
| Piia Engram | 77 · 表现良好 | 命令行工具免费 | ★ 165 | 今天 | Python | Codex · Claude Code |
| Remnic 智能体记忆 | 73 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 232 | 2 天前 | TypeScript | ChatGPT · Codex · Claude Code · OpenAI API |
| GameDesignOS:本地优先的游戏设计操作系统 | 71 · 存在缺口 | 命令行工具免费 | ★ 452 | 2 个月前 | Python | Codex · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
CLI 声明为本地优先且无运行时依赖或网络访问;技能仅声明 Bash、Read、Write,并将导入内容视为不可信数据、将下一步命令作为惰性文本,支持较小权限和清晰数据流。安全说明覆盖高置信度密钥脱敏、路径检查及摘要局限,但承认秘密检测不完整、命令分类只是启发式;材料没有明确的逐次确认机制或恢复流程,故未给满分。
CLI 对错误使用结构化错误类型和退出码,技能要求逐字引用命令结果;README、CLI 与安全说明对摘要用途和限制大体一致。CI 配置覆盖多系统与 Python 版本,但这是静态配置而非本次运行证据;安装依赖仍需获取 Python、Git 及安装工具,故依赖可用性与失败处理未获满分。
README 和技能明确面向跨聊天、模型和编码代理的上下文交接,列出 Claude Code、Codex、Cursor、通用 shell 及无 shell 的草稿路径,并清楚说明何时停止、降级或仅提供草稿。技能触发条件具体,环境能力由 doctor 区分,证据充分,给高分。
README 有目录、分平台安装步骤、创建与读取示例、安全章节和限制;Apache-2.0 元数据与许可证文件一致。版本为 0.1.0/alpha,但所给材料没有变更日志;贡献文件和 DCO 提及贡献流程,却未明确维护责任人或持续更新承诺,因此相关项扣分。
产品将模型语义与本地 Git、哈希和时间事实分开,生成可读且可验证的交接简报,命令输出易于引用;这直接回应重复解释和摘要幻觉问题。它仍依赖模型提取语义,README 承认多数条目可能只是推断,且安装需要克隆和 Python 环境,成本效益未给满分。
README 说明来源标签、确定性事实覆盖模型冲突、摘要校验和不能证明作者身份;CLI 展示 JSON 输出及具体命令行为,测试样本佐证适配器将转录标记为不可信并拒绝若干畸形输入。部分关键行为仅由文档声称,且给出的测试不能证明整个产品或本次运行结果,故交叉佐证为部分充分。
- SHA-256 摘要不验证作者身份;分享前应人工检查胶囊,因为秘密检测只覆盖高置信度模式。
- 模型负责语义压缩,可能遗漏上下文;不要把推断内容当作已验证事实,且不要未经审阅运行胶囊中的命令。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v0.1.0-alpha 预发布
发布说明摘录
First public release. Portable Handoff compacts an AI coding session into one Markdown file: the active model writes the goal, decisions, corrections, and next action, and a local script writes the parts a model shouldn't be trusted to remember on its own: the current Git branch and commit, whether that commit was ever pushed anywhere, and file hashes. Every claim carries a label for where it came from and how much to trust it, and a claim marked verified requires a deterministic source, never just the model's word. Standard library only, no runtime dependencies, offline by default. No …在 GitHub 查看 ↗
常见问题
使用它需要付费账户、API 密钥或联网吗?
它会执行 capsule 里记录的下一步命令吗?
next_action.command 只会作为惰性的代码块显示,并标记为 read_only、review 或 dangerous。capsule 被修改或仓库已经变化时会怎样?
load 会检查内嵌 JSON、SHA-256 摘要、说明与 JSON 的一致性,以及当前仓库与记录状态的差异。完整性检查失败的 capsule 会被拒绝而不是自动修复;陈旧程度会报告为 fresh、possibly_stale、stale、obsolete、unverified 或 missing。Git 是硬性要求吗?
doctor 会将环境评为 degraded,仓库事实会记录为 unknown。摘要能证明 capsule 是谁写的吗?
谢谢反馈,我们会据此改进页面。