Skip to content

keel v0.1.0

Choose a tag to compare

@shiftu shiftu released this 10 Sep 09:20
· 7 commits to main since this release

第一个可用版本:M0(协议定稿)与 M1(统一底座)。

keel 把项目目标、开发约定、任务经验和验证证据保存在 git 仓库里,为 Claude Code / Codex
提供一致、可追溯的工作上下文。无服务、无账号、无数据库,核心命令离线。

装

curl -fsSL https://raw.githubusercontent.com/shiftu/keel/main/install.sh | bash   # macOS / Linux
irm https://raw.githubusercontent.com/shiftu/keel/main/install.ps1 | iex          # Windows

然后 cd <你的仓库> && keel init。装完确认 command -v keel 找得到它 ——
git hook 就是靠这个定位二进制的,不在 PATH 里会静默放行。

这版有什么

init / sync / decide / why / note / check / brief / hook / version。
review 属于 M3,会明确报「尚未实现」。

  • 四种检查目标不可互相替代:worktree 只诊断、index 用 git checkout-index 导快照验证真正要提交的内容、
    commit-msg 验证 trailer、range 供 CI。暂存了坏代码但工作树已改好时,worktree 通过而 index 失败。
  • 提交门禁真的会拦:hook 里是 if command -v keel …; then keel check … || exit $?; fi,不吞退出码。
    新增依赖而没有覆盖它的有效决策时退出码为 1;空 ADR 和不相关的 ID 不算覆盖。
  • 不静默覆盖任何东西:CLAUDE.md / AGENTS.md 只碰 <!-- keel:begin --> 到 <!-- keel:end --> 之间,
    settings.json 只碰自己写过的 hook 条目,认领靠内容摘要而不是命令前缀。手改了托管块就报冲突,一个文件都不写。
    遇到别人的 git hook 会失败并说明怎么接,--adopt-hooks 才串联。
  • 自决范围不会自己变大:auto_promote: true 直接报错;手写的 proven 不提高上限。
    上限看项目策略,不看 tag。
  • 规则只走 argv:不接 shell 字符串。退出码 0=通过、1=失败、其余一律是错误,
    「目录不存在」不会被 ! grep 翻转成通过。
  • keel hook 永远 exit 0 且输出合法 JSON,和业务的 0/1/2 完全分开。
  • 一侧工具写下的记忆,另一侧的 SessionStart 拿得到,未验证的标注为「候选」。

M2 起的证据记录、任务接续、冲突与过期推导、keel review 和受控进化未做。

校验

SHA256SUMS 一并发布,shasum -a 256 -c SHA256SUMS 可对。