0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Roo Code (旧 Roo Cline) / Cline で zsh の RPROMPT 設定が原因でコマンドライン出力が取得できない問題

Last updated at Posted at 2025-02-20

概要

VS Code の拡張機能 Roo Code を使用している際、RPROMPT.zshrc に設定していると、コマンドラインの出力が正しく取得できない という問題が発生しました。

この問題について、Roo Code の GitHub Issue #1083 として報告しました。
本記事では、この問題の詳細や再現方法、回避策について解説します。

また、同様の問題が VS Code 拡張「Cline」でも発生しており、RPROMPT の回避策を適用しても完全には解決しない ため、Cline では別の原因がある可能性があることについても言及します。 Cline での問題については最後の追記参照。

確認したバージョン
Roo Code: v3.3.21
Cline: v3.4.5


発生した問題

VS Code のターミナルで Zsh を使用し、RPROMPT.zshrc に設定した状態で、Roo Code に次のような指示を出しました。

ls -la の出力結果を教えて。

しかし、Roo Code は ls -la を実行したものの、その 出力結果を取得できず、ユーザーに返せない という問題が発生しました。

なお、ターミナル自体では ls -la の結果が正常に表示されており、出力が阻害されているわけではありません。
このことから、Roo Code のターミナル出力の取得方法と RPROMPT の設定が干渉している可能性が考えられます。


再現方法

  1. 以下の .zshrc を設定する。
    RED=$'%{\e[1;31m%}'
    DEFAULT=$'%{\e[1;m%}'
    
    RPROMPT=$RED'[%~]'$DEFAULT
    
  2. VS Code のターミナルを開き、Zsh を使用する。
  3. Roo Code に次の指示を出す。
    Tell me the output of the command ls -la.
    
  4. Roo Code が ls -la の出力を取得できず、結果が返されないことを確認する。

原因の考察

この問題は、Roo Code が RPROMPT に設定された ANSI エスケープシーケンスを適切に処理できず、ターミナル出力を正しく認識できないことが原因 である可能性が高いです。

Zsh の RPROMPT は、ターミナルの 右側に表示されるプロンプト であり、上記の設定では「現在のディレクトリ (%~) を赤色で表示する」ようにカスタマイズされています。

通常のターミナル(iTerm2 や macOS の標準ターミナル)では問題なく動作しますが、VS Code の Roo Code では RPROMPT の影響で出力の解析がうまくできず、コマンドの結果を取得できない という問題が発生している可能性があります。


回避策

回避策 1: VS Code では RPROMPT を無効化

if [[ "$TERM_PROGRAM" != "vscode" ]]; then
    RPROMPT=$RED'[%~]'$DEFAULT
fi

この設定を .zshrc に追加すると、VS Code のターミナルでは RPROMPT を使用せず、他のターミナルでは従来通り動作 します。

回避策 2: RPROMPT を削除する

根本的に問題を避けるなら、RPROMPT を設定しないのも一つの手です。

unset RPROMPT

ただし、RPROMPT を使ってターミナルをカスタマイズしている場合は、この方法は望ましくないかもしれません。


関連情報

  • GitHub Issue: Roo Code Issue #1083
  • 環境情報:
    • VS Code Version: 1.97.2 (Universal)
    • OS: macOS 15.1.1
    • Shell: Zsh
    • Terminal Emulator: VS Code Integrated Terminal
    • Roo Code Version: 3.3.21
    • LLM Used: google/gemini-flash-1.5

まとめ

  • RPROMPT.zshrc に設定していると、Roo Code が ls -la の出力を取得できなくなる。
  • RPROMPT を VS Code のターミナルのみ無効化することで回避できる。
  • 同様の問題が Cline でも発生するが、RPROMPT を無効化しても解決しないため、別の原因がある可能性がある。 Cline での問題については最後の追記参照。
  • Roo Code のこの問題について、GitHub Issue #1083 に報告済み。

もし同じ問題に遭遇した方がいれば、上記の回避策を試してみてください!🚀

追記 - 2025/2/20

Cline では、以下の様にRED=$'%{\e[1;31m%}'だけでコマンドライン出力が取得できなくなる事がわかりました。。

RED=$'%{\e[1;31m%}'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?