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など)が出た。これはどのシェルでも取れます。
- 終了コードが 0 以外(
- 同じタブで次のコマンドが成功すると、そのタブの失敗の提案は消えます。
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- コマンドパレット
選択範囲(選択がなければカーソルの行)を、次の形に整えます。
パス:開始行-終了行- 選択した本文(コードブロック)
- その行にかかる診断(エラー・警告など)
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 で開けるようになります。