ank 与其他方案
ank 并不是第一个架在代码库之上的人工整理层。下面说明每种方案擅长什么、ank 有何不同,以及这种不同让 ank 付出了什么代价。
一览
| 方案 | 擅长 | ank 的不同之处 | ank 的代价 |
|---|---|---|---|
| 检索(RAG) | 擅长在没人整理过的语料里,找出看起来与查询相关的内容。 | ank 的不同之处回答的是什么适用于某个路径:一个集合归属判断,而不是排序。没有 embedding,没有索引服务。 | ank 的代价得有人事先写好约束和它的 scope。 |
| 由 LLM 维护的维基 | 擅长从原始资料派生出页面,丢了也能让模型重新生成。 | ank 的不同之处ADR 记录的是一个没有来源的决定。它由 hash 锚定,在批准时签名,从不被改写。 | ank 的代价没有任何东西能重新生成一条记录:决定只写一次,由人来批准。 |
| Open Knowledge Format | 擅长跨组织流动的知识:消费方从不因为文档缺了什么而拒收。 | ank 的不同之处同样的直觉、同样的形态:markdown 加 YAML frontmatter,没有服务器。但 ank 会拒绝未知字段。 | ank 的代价格式有误的文件会被拒绝,而不是被读取。 |
| 流程类 skills 工作流 | 擅长覆盖整个周期的完整方法:从追问需求方到合并前的评审。 | ank 的不同之处ank 也提供方法,但衡量的是结果:ank done 运行 verifier,从不读取用了哪种方法。 | ank 的代价没人遵守的方法只是一行 frontmatter。只有代码树能说明工作是否完成。 |
对比检索
RAG 回答的是什么看起来和这次查询相关;ank context src/auth/ 回答的是什么适用于这个路径。前者按相似度排序,后者是集合归属判断。对约束来说,这正是关键:一条本该生效、却排在第七位的规则就没有生效,而且没有任何提示。
没有 embedding,没有索引服务,也不用每次提交都重建索引。代价是真实的:得有人事先写好约束和它的 scope。ank 不能替代对一堆无人整理的语料的搜索。它替代的是那篇从来没人找到的维基页面。
ank context src/auth/
CONSTRAINTS (1 active)
ADR-06d2 Opaque sessions rather than stateless JWT
TASKS (1)
TASK-820d [open] Migrate auth to opaque sessions
> ank claim TASK-820d to start
对比由 LLM 维护的维基
Karpathy 的模式有三层(原始资料、由模型掌管的维基、一个 schema 文件)和三种操作:ingest、query、lint。ank 也是这个形态,不同在于中间那一层是什么。
维基页面由资料派生,丢了可以重新生成。ADR 记录的是一个没有来源的选择:有人决定用不透明 session 而不是 JWT,这条记录就是唯一的副本,任何 ingest 都找不回它。所以它由 hash 锚定、在批准时签名,而不是被改写;lint 也是机械检查,而不是让模型重读一遍找矛盾。
对比 Open Knowledge Format
Google 的 Open Knowledge Format 是最接近的近亲,双方各自独立得出:markdown 加 YAML frontmatter,没有服务器,没有 SDK,身份由路径决定,格式即契约。它 v0.2 的信任信号与 ank 的 proof 出于同样的直觉,ank 直接采用了其中两项:actor 约定和 verified。
有一个方向上双方刻意分道扬镳。OKF 要求消费方永远不要因为文档缺了什么而拒收,因为跨组织时,被拒收的文档就是丢失的知识。ank 会拒绝未知字段,因为对一个不能被悄悄放宽的标准来说,被接受却格式有误的文件,就是一条悄无声息失效的规则。
对比流程类 skills 工作流
Matt Pocock 的 skills 是最完整的例子:二十多个 prompt 覆盖整个周期,追问需求方直到 spec 精确,拆成工单,以测试先行推进实现,合并前评审。skill 就是方法,agent 在工作时被约束在这套方法里。
ank 也提供方法:二进制里带着六个 skills,一个契约加五个分别负责 plan、drift、loop、tdd 和 diagnose 的兄弟 skill。任务可以用 ank new --method tdd 指定其中一个,任务被 claim 后 ank context 会点出它,ank skills 统计指定次数与实际触发次数。但没有任何命令会强制执行。ank done 从不读取方法:它自己运行声明的 verifier,因为按流程打分的 agent 会学会伪造流程,而按代码树打分的 agent 只能真的去改代码树。
运行成本
用两个数字,而不是一个形容词。
- 约 280 tokens
- 六个 skills 在每个会话中的开销:也就是它们的 frontmatter,harness 始终加载的名称和描述。契约占 38,每个兄弟 skill 占 41 到 57,用
cl100k_base计数。正文只有在 skill 被调用时才读取。 - 8000 字符
ank context交给读者的内容的默认上限。
ank 不是什么
直接说清楚,如果它不是你要的,你可以很快排除。
不是任务追踪器。 没有迭代周期、估算、速率,也没有路线图。
不是维基。 只放对 agent 可执行或有约束力的内容。
不是搜索引擎。 它不能替代对无人整理的语料的搜索。
不是流程监工。 它传授方法,只衡量结果。
不是安全边界。 它防的是偏离,不是攻击者。