关于 wheypoint
wheypoint 是一种检查点技能,用于记录新 Agent 接手工作所需的决策、约束、未决问题和背景。运行时会验证结构化意图,并写入带有工件链接和版本跟踪的持久记录。
主要功能
- 01记录决策、指令与待解决问题
- 02写入前验证检查点意图
- 03跟踪工件链接和版本
- 04列出并解析工作记录
- 05生成交接投影
适用场景
- 01在 Agent 会话结束时保留上下文
- 02对话压缩后恢复工作
- 03记录阶段检查点而不结束任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill wheypoint安装后在 Claude Code 中输入/wheypoint确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
wedge.tomlreferences/commands.mddelta-contract.mdintent-contract.mdlegacy-notes.mdparallel-handoffs.mdprovenance-fields.mdwork-graph.md详细介绍
/wheypoint
/wheypoint 记录新 Agent 继续工作所需的状态。
适用于文化交流环节、不带阶段 slug 的工作,以及阶段的 Checkpoint & stop 选项。 阶段检查点是独立的非终态 Wheypoint 记录,不是终态阶段产物。 达到硬性限制的工作者应返回观察结果;由父级而非工作者执行检查点持久化。
输入
- 对话是主要输入。
- 可选参数只影响方向说明;焦点不会移除任何决定、问题或指令。
运行时命令
通过此技能的归档运行每条命令,使用其解析后的已安装 bundle 路径;参见 ../cheese/references/harness-portability.md。
当使用方仓库缺少 skills/ 时,执行前先解析已安装的 bundle 路径;切勿假设 easy-cheese 检出目录或当前工作目录。
python3 skills/wheypoint/scripts/wheypoint.pyz turns [--session <id> | --transcript <path>]
python3 skills/wheypoint/scripts/wheypoint.pyz show <work-id> [--project <key>]
python3 skills/wheypoint/scripts/wheypoint.pyz validate [intent.json] [--base <revision_id>]
python3 skills/wheypoint/scripts/wheypoint.pyz checkpoint [intent.json] [--base <revision_id>]
python3 skills/wheypoint/scripts/wheypoint.pyz checkpoint <work-id> [--base <revision_id>] --question "<q>" --gates --rationale "<why>" --decision "<d>" --directive "<d>" --quote "<words>" --operator-directive "<style>" --operator-quote "<words>" [--owner <who> --when <trigger>] --link <ref> --kind <edge-kind> [--covers <id>]...
python3 skills/wheypoint/scripts/wheypoint.pyz schema checkpoint-intent
python3 skills/wheypoint/scripts/wheypoint.pyz resolve <absolute-path | work-id | slug> [--project <key>] [--workspace-root <checkout>]
python3 skills/wheypoint/scripts/wheypoint.pyz list [--scope project | machine] [--grep <text>]... [--status <s>]... [--next <move>]... [--project <key>]... [--entry-kind <k>]... [--entry-state <s>]... [--gated | --no-gated] [--edge-kind <k>]... [--linked-to <ref>]... [--forked-from <work-id>]... [--owner <who>]...
python3 skills/wheypoint/scripts/wheypoint.pyz log <work-id> [--project <key>]
python3 skills/wheypoint/scripts/wheypoint.pyz fork <parent> <child> --orientation "<child title>" [--next <move> [--artifact <a>]]
python3 skills/wheypoint/scripts/wheypoint.pyz export <slug | work-id | path> [--out <file>] [--include-operator] [--include-local]
python3 skills/wheypoint/scripts/wheypoint.pyz import <bundle.json> [--as <slug>] [--note-dir <dir> | --no-note]
python3 skills/wheypoint/scripts/wheypoint.pyz handoff render | parse | dispatch
在一次 list 调用中重复使用 --grep、--status、--next 或 --project,以搜索多个值;匹配同一标志任意值的结果都会保留,不同标志之间按 AND 组合;切勿针对每个词循环调用一次 list;在 Git 检出目录之外,不带 --scope 的 list 会搜索机器范围,并报告 scope-fallback: machine,显式指定 --scope 时则保留其含义。
fork 只写入一条带有一个 forked_from 边的子代创始记录;import 只写入一条导入记录,而 bundle_digest 覆盖规范 bundle,本身不包含任何字段;references/work-graph.md 介绍了 refs、边类型、bundle 和 list 图筛选器。
使用 checkpoint --link 创建链接;resolve 会验证产物链接、有依据的路径、Git 对象和覆盖范围;没有精确匹配的 slug 会先解析为唯一前缀,再解析为唯一子串;若有多个匹配项,则返回 ambiguous 并列出所有候选项。
resolve、list、log、show、schema 和 turns 只读;直接调用会返回输出,并在写入检查点前停止。
/cheese --continue 使用 resolve,且绝不会调用另一个归档;斜杠命令是宿主的呈现方式,并非控制模型;外部机器命中项需要归属检出目录;请遵循继续协议。
父级将持久化任务委派给此能力,作为一项结构化检查点任务,并在执行 checkpoint 前运行 validate;工作者达到硬性限制时绝不调用这两个命令。
阶段技能使用各自的 wheypoint-resolve --ref <slug> 命令进行解析;关于其结果、working_context 和发现,请参阅references/delta-contract.md。
流程
- 阅读用户的话。 运行
turns,并查看每一轮用户发言。 - 将每一轮对应到一个条目,或用一行说明为何未记录该轮发言。
- 重新读取。 运行
show或resolve,查询工作 ID 并记下其revision_id;首次检查点无需基准版本。 - 对现有记录的每次写入都需要将该
revision_id作为--base(或base_revision_id)传入。 压缩后,写入前请重新读取。 - 写入意图。 遵循
references/intent-contract.md。 - 将用户明确陈述的每项约束或偏好写入
directive条目,并附上逐字引用的quote。 - 将每项选择写入
decision条目,并说明rationale。 - 将每个未解决事项写入
question条目;对于阻塞性问题,提供rationale。 - 将搁置的分歧选项记录为带有
--gates的question,并在--rationale中列出选项和你此前倾向的选择。 - 将冷读者需要的报告写入
notes。 - 将路径和 URL 放入
artifact_links和working_context,而不是写入其内容。 - 验证。 运行
validate --base <revision_id>,并修复所有列出的问题。 - 创建检查点。 运行
checkpoint --base <revision_id>。 如果收到base-revision-required或stale-parent拒绝,表示需要重新读取、重新应用更改,然后再写入。 - 报告。 说明结果报告的持久性,以及恢复工作所需的命令。
运行时强制执行的规则
运行时会拒绝意图,而不是丢弃数据。
- 遇到未知键时会拒绝,并指出其路径。
- 如果首次创建检查点时没有任何条目和备注,会拒绝。
- 如果
next: affinage未在artifact中提供 PR 引用,会拒绝。 - 如果
next: cook未提供artifact,会拒绝。 - 如果文本符合凭据模式,会拒绝并指出对应字段。
- 如果
artifact_links或remove_artifact_links列表为空,会拒绝。 - 根据 交接契约,运行时会从设有门槛的条目推导
status:;作者不得设置此字段。 - 如果存在
baseline键,运行时会拒绝,而不会将其丢弃;Cook 基线应保留在 Cook 交接内容中。 - delta 新增的每个阻塞性问题都必须有
rationale。 - 所有标识符、摘要和修订版本均由运行时生成。
- 运行时会拒绝 Agent 编写的
fork转换,以及 delta 中的forked_from边。 - 如果
notes超过 6000 个字符,运行时会拒绝。 - 如果
working_context或工件链接中有裸path:line,且HEAD中包含该文件,则运行时会将其固定为path:line@<short HEAD sha>;否则会发出unpinned-line-ref警告(没有检出或提交,或文件未跟踪、已忽略或不存在)。 - 运行时会在
## Local references下列出每个本地引用(xdg:引用、检出目录之外的绝对路径,或 Git 忽略的路径)。 - 如果决策发生变化而
notes保持不变,运行时会发出stale-notes警告,在## Notes顶部标记该差异,并在## Superseded下列出被checkpoint --supersede <old> [--by <new>] --rationale <why>替换的条目。
修复被拒绝的意图,然后再次运行 checkpoint。
交接标识
checkpoint 命令会在生成的投影顶部写入共享前导内容;所有使用方都会通过 parse_handoff_slug() 读取该内容。
status: <canonical status field>
next: mold | cook | press | age | cure | affinage | briesearch | culture | hold | tasks | done
artifact: <path, or PR#<n> / URL when next is affinage, else empty>
<one-line orientation: where the session is and what is mid-flight>
当 next: tasks 时,投影会在 artifact: 后添加一行带有 mode: parallel 的键值行;方向说明后的键值块包含 Wheypoint 固定信息。
投影正文会显示门槛、未解决条目、决策、指令、备注、上下文、工件、任务,以及最后的 ## Identifiers 部分。
投影标题为 # Wheypoint handoff。
投影不是权威来源;切勿编辑它,也不要手动从中恢复工作。
next: 值
每个 next: 值的含义见 references/intent-contract.md;briesearch 和 culture 是只读启动项,而 tasks 遵循 references/parallel-handoffs.md。
缺少 next: 会导致交接格式错误;后续没有操作时,请使用 hold。
请根据未解决的问题推导 next: 和 status:,而不是根据预期的成功结果。
对于每个人工决策,请使用 status: gated:;恢复工作的 Agent 会先通过共享的交接门控询问,然后再进行派发。
手写笔记、其旧版值及其来源字段见 references/legacy-notes.md 和 references/provenance-fields.md。
规则
- 切勿通过 Git 提交、推送或发布来提高持久性。
- 切勿手动编写笔记、编辑生成的投影,也切勿包含机密值。
- 通过路径或 URL 引用每个工件;不要复制其内容。
- 使用完整句子;每行写一个句子。
交接
结尾须包含方向说明和此链接:Wheypoint dropped: [.cheese/notes/<slug>.md](<absolute-note-path>)。