コンテンツにスキップ

AI エージェント連携

shijimi と AI エージェントをつなぐ方法は 2 つあります。

  • 提案パネルと ACP:作業の状態に合う操作を右のパネルに並べ、選ぶとエージェントに頼みます。エージェントの返事と変更は、パネルと差分モードに戻ります。
  • ターミナルパネル:ターミナルパネルで動かすエージェント(Claude Code など)と、IDE 連携や貼り付けでやりとりします。ACP に対応していないエージェントでも使えます。

提案パネル

右のパネルに、今の状態に合う「おすすめの操作」を並べます。 提案はルールで決めます。AI は使わないので、すぐに出て、費用もかかりません。

開く・閉じる

キー 動作
Alt+I / Space i / :agent パネルへ移る(閉じていれば開く)。パネルにいるときは閉じる
Esc / Tab エディタへ戻る(パネルは開いたまま)
  • 横幅が広い画面では、最初から開いています。エディタに 80 列以上残らないときは、Alt+I で開くまで出しません。
  • パネルを出していないときに提案があれば、ステータス行に「提案 N(Alt+I)」と出します。
  • パネルとエディタの境目をマウスでドラッグすると、幅を変えられます。

パネルの中のキー

キー 動作
j / k 提案を選ぶ
Enter 選んだ提案を実行する
x 提案を消す(同じ条件が続く間は出さない)
y / n エージェントの許可の求めに答える
c エージェントの作業を中止する
Ctrl+U / Ctrl+D 返事をスクロールする

返事の文字をコピーする

パネルの下の部分(エージェントの返事やログ)を、マウスの左ボタンでドラッグすると、その範囲の文字を選べます。 ボタンを離すと、選んだ文字がクリップボードに入り、ステータスバーに「エージェントパネルから N 文字をコピーしました」と出ます。 選んだ文字は、ターミナルパネルと同じように反転して表示します。

  • 幅に合わせて折り返している行は、コピーすると元の 1 行に戻ります(折り返しの改行は入りません)。
  • ドラッグ中にポインタをパネルの外へ出しても、選択は続きます。パネルの上または下へ出すと、ログがスクロールします。
  • ホイールでスクロールしても、選んだ文字はそのままです。
  • キーを押すか、パネルのほかの場所をクリックすると、選択は消えます。
  • ドラッグせずにクリックしただけのときは、コピーしません。今までどおり、パネルにフォーカスが移ります。

提案の一覧

条件 提案 実行したときの動き
失敗の原因調査で修正案が出た 修正を適用しますか 修正を頼み、終わったら差分モードにする
衝突マーカー(<<<<<<<)のあるファイルがある 衝突を解消しますか 解消を頼み、終わったら差分モードにする
コミットがあり、ブランチに PR が無い PR を作りますか PR の作成を頼み、終わったら差分モードにする
ブランチに PR がある レビューモードにしますか 差分モードで PR の base と比べる(エージェントは使わない)
ターミナルパネルのコマンドが失敗した 失敗の原因を調べますか ターミナルの出力を送り、原因と修正案をパネルに出す
LSP のエラーが残っている エラー N 件を直しますか エラーの一覧を送って修正を頼み、終わったら差分モードにする
差分モードで PR を見ている この PR を AI にレビューさせますか 差分を送り、コメント案を未送信コメントとして置く
  • 条件が消えると、提案も消えます。
  • 「衝突」は、git の未マージのファイルと、<<<<<<< と >>>>>>> の両方で始まる行を含むファイルです。
  • 「PR を作りますか」は、既定のブランチ(origin/HEAD、無ければ main / master)より先のコミットがあるときに出ます。PR の有無は gh pr list で調べます。gh が無いときは、PR に関わる提案を出しません。
  • 「コマンドが失敗した」は、次のどちらかです。
    • 終了コードが 0 以外(Ctrl+C で止めた 130 は除く)。終了コードは zsh と bash で取れます(下記「シェル統合」)。
    • テストの失敗の行(FAIL、--- FAIL:、FAILED、test result: FAILED など)が出た。これはどのシェルでも取れます。
  • 同じタブで次のコマンドが成功すると、そのタブの失敗の提案は消えます。
  • x で消すと、そのタブでコマンドが成功するまで失敗の提案を出しません。

AI レビュー

「この PR を AI にレビューさせますか」を実行すると、PR の差分をエージェントに渡し、指摘を JSON で返してもらいます。 指摘は、自分で書いたコメントと同じ未送信コメントとして置きます(作者は「AI」)。 GitHub へは送りません。読んで、消す・直す・足すをしてから、Space v A / R / S で送ってください。

  • 差分の外の行への指摘は、ファイルへのコメントにします。本文の先頭に行番号を付けます。
  • PR に無いファイルと、手元で変更のあるファイルへの指摘は置きません(数をステータス行に出します)。

ACP(Agent Client Protocol)

提案の実行は、ACP でエージェントに渡します。 エージェントは、最初に提案を実行したときに起動し、shijimi を終えるまで同じセッションを使います。

設定

~/.config/shijimi/config.toml に、エージェントを起動するコマンドを書きます。

[agent]
command = "claude-agent-acp"  # 例: Claude Code(npm の @agentclientprotocol/claude-agent-acp)
args = []
environment = { }             # エージェントに渡す環境変数
  • 例えば Gemini CLI なら command = "gemini"、args = ["--experimental-acp"] です。
  • [agent] は ~/.config/shijimi/ からだけ読みます。プロジェクトの .shijimi/ に書いても使いません。clone したリポジトリが、起動するプログラムを決められないようにするためです。
  • 設定が無いときは、提案を実行するとステータス行に設定の場所を出します。

エージェントの動き

  • ファイルを読む:開いているファイルは、バッファの内容(保存していない編集も含む)を渡します。開いていないファイルはディスクから読みます。
  • ファイルを書く:ディスクに書きます。開いているバッファは外部の変更として読み直します。差分モードで確かめられます。保存していない編集のあるファイルには書きません(エージェントにエラーを返します)。
  • 「失敗の原因を調べますか」と AI レビューの間は、書く要求を断ります。ターミナルの出力や PR の差分に、書き換えを促す文が紛れ込んでいても書かせないためです。
  • 許可を求める:パネルにカードを出します。y で許可、n で拒否します。パネルを閉じていれば開きます。
  • 進み具合と返事:パネルに流します。道具の呼び出しは ○(待ち)◐(実行中)●(完了)✗(失敗)で出します。
コマンド 動作
:agent パネルへ移る / 閉じる
:agent cancel 作業を中止する(パネルで c と同じ)
:agent stop エージェントを止める。次に提案を実行すると、新しく起動する

シェル統合

ターミナルパネルのシェルが zsh か bash のとき、コマンドの終了コードを shijimi に知らせる設定を自動で足します(OSC 133;D)。

  • zsh:一時ディレクトリの .zshenv を ZDOTDIR として読ませます。その中で元の ZDOTDIR に戻し、ユーザーの .zshenv を読んでから、precmd / preexec のフックを足します。.zshrc などは、いつもどおりユーザーのものを読みます。
  • bash:一時ファイルを --rcfile で読ませます。その中で、ログインシェルと同じファイル(/etc/profile と、~/.bash_profile・~/.bash_login・~/.profile のうち最初にあるもの。どれも無ければ ~/.bashrc)を読み、PROMPT_COMMAND の先頭にフックを足します。
  • ほかのシェル(fish など)は、OSC 133;D を自分で出す設定にすれば使えます(例: printf '\e]133;D;%s\a' $? をプロンプトの前に実行する)。

Claude Code の IDE 連携

shijimi は Claude Code の IDE 連携プロトコルに対応しています。VS Code 拡張や claudecode.nvim と同じプロトコルです。

  • 起動すると、127.0.0.1 の空きポートで WebSocket の MCP サーバーを立てます。
  • ロックファイル ~/.claude/ide/<ポート>.lock(権限 0600)に、接続先と認証トークンを書きます。CLAUDE_CONFIG_DIR があれば、その下の ide/ に書きます。終了すると消します。
  • shijimi のターミナルパネルで claude を起動すると、自動で接続します。
  • 外のターミナルで動く Claude Code は、作業ディレクトリが shijimi のルート配下なら、/ide で選べます。
  • 認証トークンの無い接続と、ブラウザ(Origin ヘッダー付き)からの接続は拒否します。

エージェントが使える道具

道具 内容
getCurrentSelection / getLatestSelection 選択範囲(なければカーソル位置)とファイル
getOpenEditors / getWorkspaceFolders 開いているファイル / ルート
getDiagnostics LSP の診断。URI を省略すると全ファイル
openFile ファイルを開く。startText / endText で範囲を選択
openDiff 変更を差分で表示する。Enter で承認、Esc で却下
closeAllDiffTabs / close_tab 待っている差分を却下して閉じる
checkDocumentDirty / saveDocument 未保存かどうかの確認 / 保存
  • openDiff で承認しても、shijimi はファイルを書きません。承認の後に Claude Code が書き込みます。
  • 選択範囲やカーソルが動くたびに、shijimi は selection_changed を送ります。

現在の文脈をエージェントへ送る

次のどれかで実行します。

  • Space a(Helix モード)
  • Alt+A
  • コマンドパレット

選択範囲(選択がなければカーソルの行)を、次の形に整えます。

  1. パス:開始行-終了行
  2. 選択した本文(コードブロック)
  3. その行にかかる診断(エラー・警告など)

IDE 連携で接続しているときは、整えた文を at_mentioned として Claude Code に送ります。 接続していないときは、プレビューに出ます。

キー 動作
Enter ターミナルパネルに貼り付ける(Enter は送らない)
Esc / q やめる
j / k プレビューをスクロール
  • 保存済みのファイルでだけ使えます。
  • 200 行を超える部分は省略します。

シェルから shijimi を操作する

shijimi は起動すると Unix ソケット(権限 0600)を作ります。 ソケットの場所は、ターミナルパネルのシェルの環境変数 SHIJIMI_SOCKET に入ります。 そのシェルで次のコマンドが使えます。IDE 連携にない操作だけを残しています。

コマンド 動作
shj diff [パス] 差分モード(比較元 HEAD)にする。パスを付けるとそのファイルを diff 表示で開く

削除したコマンド

shj open と shj status は、IDE 連携の openFile と getOpenEditors / getCurrentSelection に置き換えて削除しました。

スキルを書き出す

shj skill install [書き出し先]

shj diff の使い方を書いたスキル(SKILL.md)を書き出します。 書き出し先を省略すると ~/.claude/skills/shijimi/ に書きます。 Claude Code はこのスキルを読んで、差分を shijimi で開けるようになります。