ank とほかの選択肢

ank はコードベースの上に載る、人の手で整えた層として最初のものではありません。それぞれの選択肢が得意なこと、ank がどこで違うか、その違いにどんな代償があるかを示します。

ひと目で

ank と 4 つの選択肢の比較
選択肢得意なことank の違いank が払う代償
検索(RAG)得意なこと誰も整理していないコーパスから、クエリに関連しそうなものを見つける。ank の違いパスに何が適用されるかに答えます。ランキングではなく集合の所属判定です。埋め込みも、インデックスサービスもありません。ank が払う代償誰かが制約とその scope を書いておく必要があります。
LLM が管理する Wiki得意なこと元資料から派生したページで、失われてもモデルが再生成できる。ank の違いADR は出典のない選択を記録します。hash で固定され、承認時に署名され、書き換えられることはありません。ank が払う代償記録を再生成する手段はありません。決定は一度だけ書かれ、人が承認します。
Open Knowledge Format得意なこと組織をまたぐ知識。利用側は、足りない項目を理由に文書を拒否しない。ank の違い同じ発想、同じ形で、YAML frontmatter 付きの markdown、サーバーなし。ただし ank は未知のフィールドを拒否します。ank が払う代償形式の崩れたファイルは、読まれずに拒否されます。
プロセス系 skills のワークフロー得意なこと人へのヒアリングからマージ前のレビューまで、サイクル全体を覆う手厚い方法論。ank の違いank も方法論を提供しますが、測るのは結果です。ank done は verifier を実行し、どの方法論を使ったかは読みません。ank が払う代償誰も守らない方法論は frontmatter の 1 行にすぎません。作業が終わったかを語るのはツリーだけです。

検索との比較

RAG が答えるのは「このクエリに関連しそうなもの」、ank context src/auth/ が答えるのは「このパスに適用されるもの」です。前者は類似度で順位を付け、後者は集合の所属判定です。制約にとってはそこがすべてです。適用されるべきだったのに 7 位に沈んだルールは適用されず、しかも何も知らせてくれません。

埋め込みも、インデックスサービスも、コミットごとの再インデックスもありません。代償は本物です。誰かが制約とその scope を書いておく必要があります。ank は、誰も整理していないコーパスの検索を置き換えるものではありません。置き換えるのは、誰にも見つけられなかった Wiki のページです。

~/auth-service
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 が管理する Wiki との比較

Karpathy のパターンには 3 つの層(元資料、モデルが持つ Wiki、スキーマファイル)と 3 つの操作(ingest、query、lint)があります。ank も同じ形をしていて、違うのは真ん中の層が何であるかです。

Wiki のページは資料から派生したもので、失われても再生成できます。ADR は出典のない選択を記録します。誰かが JWT ではなく不透明なセッションを選んだなら、その記録が唯一のコピーで、どんな ingest でも取り戻せません。だから書き換えるのではなく hash で固定し、承認時に署名します。lint も、モデルが矛盾を探して読み直すのではなく機械的に行います。

Karpathy の LLM Wiki パターン

Open Knowledge Format との比較

Google の Open Knowledge Format は、独立にたどり着いた最も近い親戚です。YAML frontmatter 付きの markdown、サーバーなし、SDK なし、パスが識別子、フォーマットそのものが契約。v0.2 の信頼シグナルは ank の proof と同じ発想で、ank はそのうち 2 つをそのまま採用しました。actor の規約と verified です。

1 つの軸だけが、双方とも意図的に分かれています。OKF は利用側に、足りない項目を理由に文書を拒否するなと言います。組織をまたぐ場面では、拒否された文書は失われた知識だからです。ank は未知のフィールドを拒否します。こっそり緩められてはならない基準にとって、受け入れられたが形式の崩れたファイルは、黙って効かなくなったルールだからです。

Open Knowledge Format

プロセス系 skills のワークフローとの比較

Matt Pocock の skills はいちばん充実した例です。20 以上のプロンプトがサイクル全体を覆います。spec が正確になるまで人に質問し、チケットに切り分け、テストファーストで実装を進め、マージ前にレビューする。skill が方法論そのもので、エージェントは作業中ずっとそれに従わされます。

ank も方法論を提供します。バイナリには 6 つの skills が入っていて、契約と、plan、drift、loop、tdd、diagnose を受け持つ 5 つの兄弟です。タスクは ank new --method tdd でそのどれかを指定でき、タスクが claim されると ank context がそれを示し、ank skills は指定の数と実際に使われた数を数えます。ただし、それを強制するコマンドはありません。ank done は方法論を読みません。宣言された verifier を自分で実行します。プロセスで評価されるエージェントはプロセスを装うことを覚え、ツリーで評価されるエージェントはツリーを変えるしかないからです。

Matt Pocock の skills

動かすためのコスト

形容詞ではなく、2 つの数字で。

約 280 トークン
6 つの skills がセッションごとに使う量です。ハーネスが常に読み込んでおく名前と説明、つまり frontmatter の分で、契約が 38、兄弟がそれぞれ 41〜57、cl100k_base で数えた値です。本文は skill が呼ばれたときにだけ読まれます。
8000 文字
ank context が読み手に渡す内容のデフォルトの上限です。

ank ではないもの

はっきり書いておきます。求めているものでなければ、すぐに候補から外せるように。

  • トラッカーではない。 サイクルも、見積もりも、ベロシティも、ロードマップもありません。

  • Wiki ではない。 入れるのは、エージェントにとって実行できること、または拘束力のあることだけです。

  • 検索エンジンではない。 誰も整理していないコーパスの検索を置き換えはしません。

  • プロセスの監視役ではない。 方法論は教えますが、測るのは結果だけです。

  • セキュリティ境界ではない。 防ぐのはずれであって、攻撃者ではありません。

ank をインストール

コマンドは二つ。Linux、macOS、Windows に対応し、git 2.34 以降が必要です。

npm install -g @haksolot/ank
npx skills add haksolot/ank