Skip to content

4. Adapter

liplus-lin-lay edited this page Mar 22, 2026 · 3 revisions

アダプターレイヤー仕様書

本文書は Li+ プログラムのアダプターレイヤー(Li+agent.md / Li+claude.md)の仕様を定義する。 要求(何を満たすか)と仕様(どう振る舞うか)を一体として記述する。


セッション初期化

ブートストラップ

セッション開始時に Li+config.md を読み込み、実行する。ホスト環境の指示ファイル(CLAUDE.md / AGENTS.md)に Character Instance を含める。

配布先 workspace では、会話の基本言語と成果物のプロジェクト言語を分離できる。既定値は Li+config.md に保持し、未設定ならセッション開始時に AI が対話で確定して書き戻す。人間の明示指示で、現在の返答または成果物の言語を上書きできる。

この workspace 言語契約は liplus-language リポジトリ内部の運用言語と分離する。

セッション継続性

コンテキスト圧縮・再開・セッション継続時にモデルレイヤーとタスクレイヤーのプログラムファイルを再読込する。

トリガーベースの再読込:issue、branch、commit、PR、merge、release の各操作時に、タスクレイヤーまたはオペレーションレイヤーの該当セクションを再読込する。ランタイムアダプターがトリガーの強制発火メカニズムを実装する。

トリガー発火時は毎回必ずファイルを開いて読み直す。過去のコンテキストや記憶に頼ってスキップしてはならない。

オペレーションレイヤーはオンデマンドで読み込む(毎セッション必須ではない)。


アダプターの構成

アダプターレイヤーは2つの役割を持つ:

エントリーポイント(Li+agent.md): ホスト指示ファイルへの Li+ 注入を担う。読込順序、再読込トリガーのマッピング、Character Instance 配線、workspace 言語契約の配線を所有する。

ランタイムバインディング(Li+claude.md 等): ホスト環境固有のトリガー実装を担う。エントリーポイントが定義するトリガー契約を、ランタイム固有のメカニズム(hook、イベント等)へコンパイルする。


Claude Code バインディング

Li+claude.md に Claude Code 用の hook 定義を格納する。Li+config.md Step 6 が runtime=claude を検出した際、Li+claude.md のコードブロックからワークスペースへ hook ファイルを初回生成(bootstrap)する。

hook は Claude Code ランタイムが強制発火するため、AI の記憶やコンテキスト圧縮に依存しない。

パス安全性

settings.json の hook command はプロジェクトディレクトリにスペースを含む環境で壊れないよう bash "$CLAUDE_PROJECT_DIR/..." 形式でクォートする。hook スクリプトは冒頭で export PATH="$HOME/.local/bin:$PATH" を設定し、永続インストールされた外部コマンド(jq、gh 等)を参照できるようにする。

on-user-prompt.sh

トリガー:UserPromptSubmit — ユーザーがメッセージを送信するたび(Claude の処理開始前)。

動作:

  1. Character Instance 再通知:.claude/CLAUDE.md から Character Instance セクションを抽出して出力する。見つからない場合はスキップする。
  2. 通知取り込み:利用可能な通知源を1回 inspect し、5. Notifications の規則で前景一致した summary だけをホストへ渡す。empty/no-op は出力しない。

post-tool-use.sh

トリガー:PostToolUse (matcher: Bash) — Bash ツール呼び出し後に実行。

動作:

コマンドパターン 再読込対象 追加動作
gh issue / gh api .*/issues タスクレイヤーの Issue Flow セクション
gh issue develop / git switch -c / git checkout -b オペレーションレイヤーの Branch And Label Flow セクション
git commit オペレーションレイヤーの Commit Rules セクション
gh pr create オペレーションレイヤーの PR Creation セクション PR body への子 issue 参照の自動補完
CI check-run 完了時 オペレーションレイヤーの CI Loop セクション
gh pr view --json reviewDecision オペレーションレイヤーの PR Review セクション
gh pr merge オペレーションレイヤーの Merge セクション
gh release create オペレーションレイヤーの Human Confirmation Required セクション

子 issue 自動補完の詳細:PR 作成出力 URL から PR 番号を抽出し、親 issue の子 issue を取得し、PR body に記載のない子 issue の Refs #NNN を自動追記する。

生成先ファイル構成

{workspace_root}/
└── .claude/
    ├── settings.json      # hook 登録(UserPromptSubmit + PostToolUse)
    └── hooks/
        ├── on-user-prompt.sh
        └── post-tool-use.sh

bootstrap は次回セッションから有効。現セッションは Li+config.md の実行で継続する。


前景 Webhook 通知取り込み

前景スレッドで軽量な GitHub webhook 通知を確認する。広く GitHub を探しに行くのではなく、届いている差分だけを扱う。

ホストが各ターン先頭でローカル確認を実行できる場合のみ使用する。確認処理は内部 housekeeping として無言で行い、確認中であることや empty/no-op 結果を会話へ出さない。

アダプターが所有するのは transport の選択と summary の受け渡しである。関連性判定、claimack/readconsume/donementioncleanup の正本は 5. Notifications に置く。

通知源の優先順位:

  1. mcp__github-webhook-mcp
  2. ローカル webhook ストア(LI_PLUS_MODE=clone かつ bundled helper が使える場合)
  3. 利用不可 → 黙ってスキップ

アダプターは inspect を既定とし、前景一致しない通知を勝手に排水しない。詳細が必要になるまでは full payload を開かない。このフローから別 AI プロセスを起動しない。


進化

再構築・削除・最適化はすべて許容する。構造の一貫性のみ維持する。

Clone this wiki locally