Handbooks

Handbooks とは?

一つのコードベースから二冊のハンドブックを生成——チームが読む物語形式のドキュメントサイトと、コーディングエージェントがルーティングに使う位置インデックス。同じ解析済みの地図から作られ、コードの変化に追随します。

Handbooks — ひとつのコードベースから二冊のハンドブック:チームが読む解説付きドキュメントサイトと、エージェントが辿る機械向けの位置インデックス

一つのコードベースから、二冊のハンドブックへ。

Handbooks は同じコードの地図を二通りに書き出します。読者がまったく異なるからです:

土台は同じ事実——パーサーが構築したコールグラフ——なので、二冊が食い違うことはありません。 一冊は物語と探索のために、もう一冊はルーティングと陳腐化検出のために最適化されています。

問題を率直に述べると

リポジトリがあります。頭の中に収めるには大きすぎ、コンテキストウィンドウに収めるにも 大きすぎます。

コーディングエージェントに「失敗したアップロードを 3 回リトライして」と頼むと、 エージェントは見つけた 1 つのアップロード関数を自信満々にパッチします — そして、 リトライポリシーの定数、バッチワーカー内のミラー実装、試行回数を数えるメトリクス、 旧挙動をアサートするテストを見落とします。

これは推論の失敗ではありません。ルーティングの失敗です。エージェントは一度も マップを見ていないのです。

一文で言えば

Handbooks は本物のパーサーでコードを読み、そのマップを構築し、要約ではなく ロケーションインデックスとしてエージェントに渡します — そしてコードが動いても マップを最新に保ちます。

読み進める前にまず動かす

動かなければ、この先の説明に意味はありません。所要時間は約 30 秒、トークン消費はゼロ、 API キーも不要です:

git clone <this repo> && cd handbooks
pnpm install && pnpm build
pnpm demo

pnpm demo は、同梱のサンプルプロジェクトに対し、同梱のモック LLM サーバーを使って ツールチェーン全体を実行します。完了すると、レンダリング済みのハンドブック、HTML サイト、エージェント用ロケーターインデックス、検証済みの SKILL パッケージがディスク上に 揃っています。

土台となる 3 つのアイデア

1. 事実はモデルではなくパーサーから

Handbooks は tree-sitter ですべてのソースファイルを 解析し、型付きコールグラフを構築します: 関数、メソッド、self・属性・パラメータ・ インポートを通じて解決された呼び出しエッジ、あなたのコードの外へ出ていく呼び出し、 そして解決できなかった呼び出し — 最後のものは専用のファイルに隔離され、決して推測で 補われません。

そもそも読めなかった、あるいは解析できなかったファイルも同じように隔離されます。欠落は 列挙できるものであって、黙って消えるものではありません。

このレイヤーは LLM に一切触れません。 2 回実行すれば、2 回とも同じグラフが得られます。

2. 文章は事実の上に重ねられ、そうと分かるようにラベル付けされる

人間が読む部分は LLM が書きます: このファイルは何のためにあるか、このサブシステムは どうつながっているか、どの状態がどのステージ間を流れるか。文章は常にグラフに アンカーされ、生成に失敗した場合でも構造はそのまま出荷されます — 説明が空のままで。

でっち上げられた一文より、欠けている一文のほうがましです。

3. マップは読むためではなく、ルーティングのために作られる

出力はコードの要約ではありません。「この変更はどのファイル・関数・状態に触れなければ ならないか?」に答えるインデックスです — 散在していて見つけにくいものも含めて。 プランナーはそのインデックスでルーティングし、見つけたすべてのアドレスで実際のソースを 読み、機械的に適用できるほどバイト精度の高い編集プランを出力します。

1 回の実行で得られるもの

出力: markdown ハンドブック、HTML サイト、単一ページ、エージェント用ロケーターインデックス、llms.txt、SKILL パッケージ
出力対象
Markdown ハンドブック — 概要、ステージ索引、ステージごとに 1 ページ、状態レジスタの表人間
複数ページの HTML サイト — 固定 TOC、パンくずリスト、テーマ切り替え、file:// でも動作人間
メールでも送れる、自己完結型の HTML 1 ページ人間
エージェント索引 — シンボル → path:line-line、ファイル表と呼び出し表、grep レシピエージェント
llms.txt + llms-full.txtエージェント
ファイルごとのコンテンツハッシュ付き SKILL パッケージ — ドリフトを検出可能にしますエージェント

誰のためのものか

あなたは…得られるのは…
20 万行のサービスを引き継いだばかりのエンジニア実際に読み通せるステージごとのウォークスルーと、共有できる HTML サイト
大きなリポジトリでコーディングエージェントを使う人エージェントに「どこにあるか」を推測させない SKILL パッケージ
メンバーをオンボーディングするチームリード腐る代わりに再生成されるドキュメント
多言語のモノレポを保守する人18 言語を一度に解析し、言語ごとの解析忠実度を開示

必要なもの

  • Node.js ≥ 20.11 と pnpm。 インストールに必要なのはこれだけです。ネイティブ コンパイルも、Python も、node-gyp も不要 — パーサーは WebAssembly です。
  • OpenAI 互換のエンドポイントが LLM フェーズに必要です。ホステッドの OpenAI、 Azure、vLLM、Ollama、LiteLLM、社内プロキシ — /v1/chat/completions を話せるものなら 何でも。あなたのマシン上で動くモデルでも構いません。
  • 何も要りません — 最初に実行すべきコマンドである handbook analyze には。

コードは外に出ますか?

Phase 1 は完全にローカルです。Phase 2 と 3 は、あなたが設定したエンドポイントに ファイル内容を送信します — それは localhost でも構いません。それ以外は何も外に出ず、 --max-chars-per-file が 1 ファイルあたりの送信量に上限を設けます。 信頼モデルを参照してください。

次に読むもの

このページの内容