TL;DR : VSCodeの親切な「自動有効化」機能だったが、多分エージェントがONにした。そんな権限あるのか・・・?
開発中のプロジェクト self_disciplined_invest_agent をVSCodeで開き、ターミナル(zsh)を起動すると、プロンプトが表示される直前に、今開いているプロジェクトのPython仮想環境(venv)を有効化するコマンドが実行されていました。
❯ source /Users/tonishi/Documents/GitHub/cOnigashima/self_disciplined_invest_agent/.venv/bin/activat
いや便利なんですが、一体どこで設定されているんでしょう…?
シェルの設定ファイル
ターミナル起動時に自動実行されるといえば、真っ先に思いつくのはシェルの設定ファイルだ。私は zsh を使っているので、~/.zshrc をさっそく中身を確認してみたが、なかった。
starship や sdkman などの設定はあるが、self_disciplined_invest_agent へのパスや source .../activate といった記述はどこにも見当たらない。~/.bashrc や、~/.zshrc から source されている他の設定ファイルも調べたが、空振りだった。
他のプロジェクトやVSCodeを介さずに、Macの標準ターミナルを起動してみるとコマンドは一切表示されなかった。
VSCodeは「何」を見て判断したのか
pyvenv.cfg こそが、VSCode(正確にはVSCodeのPython拡張機能)に対して「この .venv フォルダは、Pythonの仮想環境ですよ!」と知らせる役割を果たしていた。
VSCodeの設定でいうと、
- VSCodeの設定 ( Cmd + , ) を開く
- 検索窓で python.terminal.activateEnvironment と入力
そこには「Python > Terminal: Activate Environment」という項目があり、バッチリとチェックが入っていた。
原因のまとめ:
- VSCodeがプロジェクト内に
.venvフォルダを発見。 - その中の
pyvenv.cfgを見て「お、これはPython仮想環境だな」と自動認識。 - VSCodeの設定「
Terminal: Activate Environment」が On になっていた。 - VSCodeが「親切心」で、ターミナル起動時にその仮想環境を自動で有効化(
source .../activate)してくれていた。
というわけでコマンド自動実行は、バグや設定ミスではなく、VSCodeのPython拡張機能による便利な機能でした。もしこの自動実行を止めたい場合は、この設定のチェックを外すだけでいいとのこと。
あとこの調査と記事はほとんどAIがやってくれましたが、この機能のONもAIがやったんですかね?CodeXしか走らせてなかったのでそれかなぁ・・・。肝心なところはそこなんだよな。