keel v0.4.0
M4:复用与扩展
跨仓库复用一套 keel 配置。一句话:模板给的是建议,不是既成事实。
模板导入
keel init --from https://github.com/org/keel-template.git@v1导入模板仓库 .keel/ 的可复用部分,并把来源解析成一个 commit 钉进 .keel/template.yaml。
导入面:keel.yaml(tools 除外,它是本机探测结果)、skills/**、rules/*.md、cases/**。
不导入:decisions/、memory/、evidence/、intent.md。它们是源仓库的项目事实——
证据的 digest 是对着那边的代码算的,在你这边永远对不上;intent.md 是你自己项目要回答的问题。
导入的规则一律落成 candidate,模板里写 active 也一样,同时清空 evidence、verifier_digest
和 from,用 from_template 记下 <source>@<commit>。M3 定的「promote 不能自我批准」不许绕开:
装个模板不等于让别人的仓库决定你这边执行什么代码。要生效,仍得本地 keel decide 记依据、
keel promote 跑对照验证。
三方更新
keel template status # 不联网,只答「本地相对导入基线动过什么」
keel template update [--to <ref>] [--dry-run]update 拿模板新版、上次导入的基线、你现在这一版做三方比较:
| 你改过吗 | 模板改过吗 | 结果 |
|---|---|---|
| 没有 | 改了 | 快进写入 |
| 改了 | 没改 | 保留你的 |
| 改了 | 也改了 | 一个字节都不写,退出码 1 |
| 没这个文件 | 新增 | 写入 |
| 你删了 | — | 不写回 |
| — | 模板删了 | 不删你的 |
冲突不阻塞其他文件;冲突文件的基线不推进,会一直报到人处理为止。
keel.yaml 比的是配置的含义而不是字节,快进时保留本地 tools。
sync --codemap
按目录列的仓库地图,写 .keel/knowledge/CODEMAP.md。输入是 git ls-files 不是工作树遍历,
两台机器生成的逐字节一致。只列目录,没有 AST 也没有调用图。
长期开启用 knowledge.codemap: true。
未做
claude / codex 之外没有加新适配器。技能的对照评估继续后置(仍缺宿主任务集);
M4 只把技能的版本定义成模板钉住的那个 commit。
go test ./... 全绿。SHA256SUMS 随本次发布附带,可用 shasum -a 256 -c SHA256SUMS 校验。