Skip to content

keel v0.2.0

Choose a tag to compare

@shiftu shiftu released this 10 Sep 09:50
· 6 commits to main since this release

M2 · 可信记忆。记忆终于有了可推导的生死,任务能跨工具接上。

升级:重跑一次安装脚本即可,.keel/ 的格式向后兼容,v0.1.0 建的仓库不用改。
keel sync 会新增 .keel/knowledge/INDEX.md 并更新 CLAUDE.md / AGENTS.md 的协议块。

证据只能跑出来

keel verify <M-…|D-…> -- go test ./internal/store/...
keel verify <M-…|D-…> --rule R-…

真的 exec 一次验证器,把退出码翻译成 pass/fail/error/timeout,写成 .keel/evidence/E-<uuid>.md。

没有「登记一条我认为它通过了」的入口。 自述的通过既不能被别人重跑,也不能被撤回,
写进仓库就成了不可证伪的事实。

  • 记忆:pass → verified 并写 verified_at;fail → disputed。
  • 决策:只追加证据,不改状态。proven 是人的判断,不是跑通一条命令的自动结果。
  • 验证器跑不起来或超时:照实记进证据,但不做任何状态转换——那既不是通过也不是失败。

证据记两个摘要,回答两个不同的问题:subject_digest 盯结论本身,
target.content_digest 盯 scope 覆盖的代码。改了记忆正文,旧证据就对不上;
代码变了但结论没变,验证结果算过期。两种失效模式不同,必须分开报。

记忆生命周期由证据推导,check 不改写文件

finding 条件 severity
memory_status_unsupported 自称 verified,但没有一条 pass 证据的 subject_digest 对得上 error
memory_evidence_stale 证据验的那份代码之后变过了 warn
memory_review_due review_after 已过 warn
memory_conflict 反例指向的结论仍是 verified warn

memory_status_unsupported 是 error 而不是提醒:文件自称 verified、证据却撑不住,
等于把未验证的经验当项目规则用。

状态转换的入口只有两个:keel verify 真的跑完一次,或人手工编辑文件。
check 只推导并报告——让 pre-commit 顺手改文件,改动就从 git diff 里消失了。

任务能跨工具接上

keel task set --goal "给存储层加缓存" --done "读完 internal/store" --next "写 LRU"
keel task show

同一个 worktree 上 Claude 与 Codex 之间的交接。摘要出现在 brief 和 SessionStart 最前面。
它在 .keel/cache/ 里、不进 git——这是交接,不是长期记忆;要跨 clone 留下的经验仍走 note / decide。
HEAD 往前走之后会照实说「摘要可能已经落后」,不假装还准确。

检索按任务收敛

brief 改成六档确定性排序:显式 ID > 路径 > 冲突与失败 > 有效证据 > 主题 > 兜底。

「适用条件」不参与打分,而是逐条原样展示:判断它适不适用是宿主 agent 的活,不是 keel 的。

上限为 1(有适用先例才自决)时,额外列出适用先例及其有没有跑出来的证据。
policy.Precedents.Verified 现在接的是真实证据,但它只出现在说明里,不参与上限计算——
扩大自决范围仍然只能改配置。

knowledge/INDEX.md

keel sync 生成并进 git:决策、规则、记忆各一张表,记忆那张带验证时间和证据条数。
clone 之后不装 keel 也能读。内容只来自仓库里的对象,两台机器 sync 出来一模一样。

修复

  • 列表选项重复给时静默只留最后一个。 --tag a --tag b 会丢掉 a,
    --scope/--path/--condition/--rule-migration 同样。现在既可重复也可逗号分隔,两种写法等价。
    这正是 keel 在别处拒绝的静默丢弃。

还没做

M3 的 keel review 与受控进化;M4 的 init --from、--codemap。

装

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

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