Skip to main content
comet native 是 Native 工作流的确定性 Runtime 入口。它的状态与工作流产物只归属共享项目配置 .comet/config.yaml 和配置指定的 <artifact-root>/comet/,不会读取或转换 Classic/OpenSpec change。为生成 baseline 与 implementation scope,Runtime 会有界读取项目所有范围内的文件内容;项目存在 Git metadata 时,仅在构建 Git-aware snapshot 时调用 Git。它不会调用外部 Skill、shell 或项目命令;内置 comet native check 仍不调用 Git 或任何外部进程。

初始化与根目录

示例:
artifact-root 必须是项目内相对路径,默认为 docs. 表示 <project>/comet/docs 表示 <project>/docs/comet/ init --language 会把以后新建 Native change 的默认语言写入 .comet/config.yamlnew --language 可以覆盖单个 change;再次运行 init --language 只改变以后新建 change 的默认值,不改写已有 change。 已有配置会拒绝冲突的 init --root。改变目录必须使用 root move,不能直接编辑配置。迁移具有 copyingreadyswitched 状态;存在 pending_root_move 时,普通写命令会失败关闭,避免两棵目录同时可写。

Change 管理

change-name 和 capability 使用字母开头的 lowercase kebab-case。new 在配置缺失时创建默认配置和 <project>/docs/comet/ 新增或替换长期行为时,把完整目标规格写入:
Runtime 根据 canonical spec 是否存在推导 createreplace,并冻结 base_hash。删除 capability 使用 spec remove,不要手工维护 comet-state.yamlspec_changes。若并行 change 已改变同一 canonical spec,先重读并改写完整目标规格,再使用 spec rebase 刷新基线、重开 Build 并清除旧验证结论。

Baseline 与 Git-aware snapshot

new 在提交 change 状态前捕获完整 baseline。Git 项目只纳入 tracked 和未被 ignore 的 untracked 文件;ignored cache 与未登记的嵌套仓库内容不属于项目所有范围,submodule/gitlink 作为一个原子条目。非 Git 项目使用有界物理树 provider。任何项目所有项被省略都会返回结构化 baseline-incomplete,并清理未完成的 change,而不是把问题拖到 Build。 Git selection 需要一次稳定且有界的枚举:
  • git-selection-changed 表示枚举期间 Git index 变化。等待 git add 等 Git 写入结束后重新运行命令;不能用 partial-scope 授权越过。
  • git-enumeration-limit 表示 tracked 与未忽略 untracked 的项目所有范围超过 Git 枚举安全预算。这是结构化不完整;应优先缩小或清理项目所有范围,或使用后续调整该产品预算的 Comet 版本,不能直接或默认越过。若确实无法恢复,只有 Runtime 返回带计数和内容 hash 的可授权 scope、且用户理解未知尾部风险时,才可按普通 partial 协议提交精确 hash、理由与 --confirmed。不能手改 snapshot/evidence 或猜测未枚举路径。
非 Git 项目的 physical selection 使用有界、顺序无关的前后枚举围栏:
  • physical-selection-changed 表示项目树在捕获期间发生变化。等待并发文件操作结束后重试。
  • physical-enumeration-limit 表示节点、路径、字节或协作式执行预算耗尽。缩小项目树或把非项目内容移出项目所有范围后重试。
这两种 physical 完整性失败都无法为未知尾部建立稳定 scope,因此在 current snapshot 中也不能通过 partial-scope 授权。 普通 omission 会带 reason、计数和有界样本路径。baseline 创建与 migration cutover 必须完整,两种 Git selection omission 都不能在这里授权。之后的 current snapshot 只有在 Runtime 明确返回可授权 partial scope 时才可按精确 hash 进入确认:git-selection-changed 仍必须先消除,git-enumeration-limit 仅能使用上一段所述的最终兜底。

有界状态视图

list 与不带 change 的 status 返回同一种只读分页投影:
  • 每页最多 24 个 active change;
  • 最多接受 4096 个可见 change;
  • nextCursor 非空时原样传入下一次 --cursor
  • cursor 绑定完整 change 名称集合,增删 change 后旧 cursor 会明确失效。
status <change-name> 返回阶段、证据新鲜度、finding 摘要、checkpoint、repair 状态和结构化 continuation。使用 --details 可以取得最多 50 条详细 findings、恢复信息以及首个 acceptancePage。若 findingsTruncatedtrue,不能把未展示项当作不存在。 acceptancePage.nextCursor 非空时,用 --acceptance-cursor 逐页读取;每页最多 16 条,cursor 同时绑定 change 与当前 acceptance hash。show 对规格数量、单文件、累计读取和最终输出都有硬预算;超限时拒绝,不会通过截断需求正文伪装成功。

阶段内 checkpoint

Checkpoint 保存同阶段摘要、下一动作和内容寻址的产物 manifest,不改变 phase。--expect-revision 使用 CAS 防止旧会话覆盖更新后的状态。恢复会话应从 status 返回的 checkpoint 继续,而不是依赖聊天记忆。

内置只读检查

check 只允许在 Verify 且已有 implementation scope 时运行。它执行 Comet 内置的有界只读文本策略,并把结果写入独立、内容寻址的 receipt。 它不会:
  • 调用 Git、shell、项目脚本、测试命令或外部 Skill;
  • 接受任意命令、环境变量、路径或超时参数;
  • 修改项目源码、change phase、Run state 或 trajectory。
检查发现问题或 scope 已 stale 时返回退出码 1,但 receipt 仍会保存。模型仍应按任务风险自行运行真实项目测试;内置 check 是可复核的补充证据,不是通用测试执行器。

阶段推进

只有用户刚确认了会影响范围、用户可见行为、兼容性、风险或不可逆性的决定时,Shape/Build 才传 --confirmed。没有高影响决定时由 Runtime 记录隐式确认;任何确认都不能绕过 [blocking] 问题。进入 Build 时,Runtime 把 approval 绑定到当时的 approved_contract_hash。之后若 brief 或完整目标规格变化,Build 会保持阻塞并返回 re-confirm-contract;只有用户重新确认当前 contract 后才能再次传 --confirmed,不能复用旧确认或手改 hash。 Build 无法证明完整 scope 时,第一次调用只返回 scope hash 和未归属项,不推进。当前 snapshot 不完整时,Runtime 不会把未观察到的路径推断成删除;变化明细超过预算时,保留有界明细,并用带计数和内容 hash 的 scope-detail-overflow 表示其余变化。用户明确接受一组 Runtime 允许授权的具体风险后,使用完全匹配的 --allow-partial-scope、非空理由和 --confirmed 重试。Allowance 与 scope hash 绑定;实现变化后不能沿用旧授权。git-selection-changedphysical-selection-changedphysical-enumeration-limit 绝不可授权;git-enumeration-limit 只有在优先恢复无效、Runtime 返回可授权 scope 且用户理解未知尾部风险后,才能使用同一普通 partial 协议。 Verify 报告必须包含 Runtime 可解析的验收机器块,并逐项绑定当前 Acceptance ID。旧报告、旧 receipt、变化后的 brief/spec、变化后的 implementation scope 或不同 revision 的证据都会被判定 stale。 进入 Verify 后,若 contract 或项目 snapshot 变化,status 会返回只含摘要的受控 next。先运行该命令退回 Build 并生成新 scope;只有 brief/spec contract hash 也变化时才让用户重新确认。若只是项目 snapshot 或 implementation 变化,保留原 approved_contract_hash,不要制造无意义确认。不要在 stale scope 上提交 pass/fail;Archive 中任一绑定事实变化时使用同一回退协议,不能沿用旧 pass。

自主修复与停止语义

Verify fail 会自动返回 Build。模型可以自主修复,但 Runtime 会按失败分类、失败检查 ID、contract 和 implementation scope 形成语义签名:
  • 相同 scope 下第三次出现相同失败签名时,continuation 变为 manual stop;
  • scope 真正变化后,新的 Build 推进会结束旧 repair episode;
  • scope 未变化时,只允许使用 status 返回的签名和非空摘要 override 一次;
  • 单个 repair episode 最多记录 12 次 failure,达到上限后 hard stop。
这些限制按“有没有真实证据进展”计算,不按机械 phase 切换次数计算,因此长期 change 不会因为固定 Run iteration 上限永久锁死。

两步 Archive

Archive 不能用 next 代替,也不能单步提交:
  1. 先运行 --dry-run,检查证据、canonical hash、目标路径和冲突,取得 preflightHash
  2. 把该 hash 原样传入 --expect-preflight
  3. Runtime 在锁内重算全部事实;只有完全一致时才提交。
Archive 对源树、canonical 文件和事务日志使用有界、身份绑定的读取。目录移动先进入事务绑定的 quarantine,再完成不可逆提交。若在最终 marker 前中断,可以按 journal 继续或回滚;marker 写入后只能 exactly-once continue,避免已经公开为归档的结果被反向撤销。

诊断与恢复

只读 doctor 不改文件。--repair 只处理 Runtime 能证明安全的事项:
  • 陈旧 selection 和锁;
  • schema / workspace identity 迁移;
  • 阶段 transition、Archive 和 root move 事务恢复;
  • 未引用且超过保留窗口的派生 evidence/receipt;
  • 中断的 retention quarantine。
Doctor 不会自动重写用户的 brief、规格、验证报告或项目源码。普通阶段 transition 只支持 continuerollback 只适用于 journal 仍允许回滚的 Archive/root move。 新 change 和当前 schema 的 v3 change 都必须保留创建时的完整 baseline。v3 baseline 缺失或不完整时,doctor 不会用当前文件重新生成,因为那会抹掉 change 创建以来的差异;应从可信备份恢复,或保留用户产物和实现事实后新建 change。 显式 v1/v2 schema migration 是唯一 cutover 例外。doctor --repair 会在任何状态写入前捕获完整的迁移时点 baseline;捕获不完整时保持旧状态并停止。迁移后的 implementation evidence 只证明 cutover 之后的变化,不能把迁移前聊天、旧 scope 或旧 pass 当作当前证据。v2 位于 Verify/Archive 时会受控退回 Build 重新建立证据。 普通写命令不会自动接管陈旧锁。只有显式 doctor --repair 能在证明本机 owner 已不存在、锁身份未变化且没有冲突事务时接管;活动锁和无法证明陈旧的锁始终保留。 Evidence retention 只清理 active change 中至少 30 天、每种 evidence kind 最新 32 份之外、且依赖闭包证明未引用的派生证据。当前状态引用、归档证据、依赖项、较新文件和每类最新 32 份始终保留。

Continuation 与退出码

status 和写命令会返回结构化 continuation,常见 disposition 包括:
  • continue-same-skill:当前 Skill 可以按下一动作继续;
  • await-user:需要真实用户决定或 partial scope 授权;
  • repair-runtime:先执行 doctor/recovery;
  • stop:已完成、手动停止或达到 hard stop。
next: auto 表示调用方可以继续同一个 Native Skill,不表示后台 daemon 会自行调用模型。 所有命令支持 --json。JSON 模式只输出一个对象,包含 commandexitCodedata,失败时增加结构化 error

只提供 Skill 文件的环境

若宿主没有安装 comet CLI,可直接使用 /comet-native 随包发布的 Runtime:
它与 comet native 使用相同参数、输出和退出码。Runtime 与 Skill 一起发布,不依赖 OpenSpec、Superpowers、grill-me 或其他外部 Skill。
最后修改于 2026年7月22日