Cline(Roo Code)がターミナルの出力を読めなかったときのワークアラウンド
Roo Codeがターミナルの出力を読めない問題解決がバージョンアップで解決したようなので、不要になったのですが、何かで必要になりそうなTipsなので、参考情報として残しておきます。やはり環境によっては読めないケースがありそうです。
本記事は、macOSでRoo Codeを使ったときを対象にしています。Clineや他のCline派生の拡張およびmacOS以外のOSでは確認できていませんのでご了承ください。
Clineがターミナルの出力を読めるか確認
VS Codeエディタのターミナルの出力をClineが読めるかチェックします。Clineは、VS Codeエディタのターミナルでコマンドを実行して、その結果を確認してフィードバックしてくれます。このように人間を介さない自律的な動きができることは、地味なようですが使用してみると非常に良い開発体験を生むことを実感できます。こういった機能がないツールを使う場合は、今の時点では、自分でAIの出力したコマンドや実行結果をコピペすることになります。時間がたてばそれらのツールでも同様の機能が実装されるか、淘汰されていくことになるので、ツールを乗り換えるか待つかしましょう。
重要な機能なので、最初に動作を確認していきます。動作を確認するには、以下のようなプロンプトをClineに入力するだけです。
あなたがターミナルの出力を読めるかチェックしたいので、echoで出力して読めるか教えて下さい
例えば以下のようにコマンドの実行依頼が出てきますので、Run Commandボタンを押します。
うまくClineが出力を読めると以下のように表示されます。
ターミナルの出力確認のワークアラウンド
環境によっては出力をうまく出力が読めない場合があります。使用するシェルや、設定によって変わってくるようです。
リダイレクトを使う
リダイレクトを使って、ファイルをいったん書き出してから読む方法です。プロンプトで以下のように指示すればOKです。毎回指示するのは大変なので.clinerules
に書いておくのがよいでしょう(テンプレートリポジトリの.clinerules
には書いてあります)。
### 標準出力が見えない環境(例:Docker環境)の場合
以下の手順で出力を確認してください:
1. 標準出力と標準エラー出力を別々のファイルに保存:
```bash
コマンド > stdout.txt 2> stderr.txt
```
2. それぞれのファイルを確認:
```bash
<read_file>
<path>stdout.txt</path>
</read_file>
<read_file>
<path>stderr.txt</path>
</read_file>
```
これにより、出力が見えないときは以下のようにリダイレクトを提案してくれます。
実行すると、リダイレクトで出力が見えたことが分かります。
リダイレクトすると余計なAPI料金と時間がかかることになるので、可能なら出力を読めるようにしておくとよいのですが、環境によっては難しいかもしれません。
zshの設定変更
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)")
を.zshrc
に追記(参考)
上記でもだめな場合は、.zshrc
に以下のように記載してプロンプトをイジってないか確認しましょう。プロンプトを変更してしまうとうまく読めないようです。
export PROMPT="xxx"
↲
上記に関しては、以下の記事に助けられました。
シェルの変更
使用するシェルを以下記事のようにMac標準のzshからfishに変更することで出力を読めるようになります。ただ、上記のzshの設定変更で直るならわざわざfishに変更する必要はないと思います。
Devcontainerの使用
Devcontainerでコンテナ環境でも、ターミナル出力を読むことができました。
まとめ
簡単なワークアラウンドのまとめです。
参考リンク
関連記事
変更履歴
- 2025/03/05 zshの設定変更に関して追記
Discussion