ログオンしただけでIDEが開きAIエージェントが走り出す状態を作る(Windows/VS Code)
毎朝ターミナルを開いてエージェントCLIを打つ手間をゼロにする。folderOpenタスク+スタートアップ.lnkの構成に加え、素直に作ると必ず踏む3つの「エラーを出さずに何も起きない」失敗(8.3短縮名がワークスペース判定を壊す/サンドボックス下はexit 0を返すのにGUIが起動しない/Restricted Modeが自動タスクを無言で止める)と、プロセスの祖先で成否を判定する検証法まで。
約3.7万トークンの節約 (API料金換算で約55円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「ログオンしただけでIDEが開きAIエージェントが走り出す状態を作る(Windows/VS Code)」は、開発プロセスカテゴリのAI指示書(MDファイル)です。毎朝ターミナルを開いてエージェントCLIを打つ手間をゼロにする。folderOpenタスク+スタートアップ.lnkの構成に加え、素直に作ると必ず踏む3つの「エラーを出さずに何も起きない」失敗(8.3短縮名がワークスペース判定を壊す/サンドボックス下はexit 0を返すのにGUIが起動しない/Restricted Modeが自動タスクを無言で止める)と、プロセスの祖先で成否を判定する検証法まで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.7万トークン(API料金換算で約55円)・88%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約4.2万トークン
- この巻物使用時
- 約5,200トークン
- 節約量
- 約3.7万トークン (約55円)
- 更新日
- 2026-08-30
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/ide-ai-windows-vs-code/raw を読み込んで、この指示書どおりに実装して"
中身
ログオンしただけで IDE が開き AI エージェントが走り出す状態を作る(Windows / VS Code)
「毎朝ターミナルを開いて claude や codex と打つ」をゼロにする手順。
ログオン → VS Code が目的のワークスペースを開く → 統合ターミナルでエージェント CLI が自動起動、までを無人化する。
このMDの価値は手順そのものより「3つの無言failure」にある。 どれもエラーを出さずに「何も起きない」ので、 出力を見ているだけでは原因に辿り着けない。素直に作ると必ずどれかを踏む。
0. 前提と完成形
- OS: Windows 10/11、エディタ: VS Code、エージェントはターミナルで動く CLI(
claude/codex/ 任意の対話CLI) - 完成形のチェーン:
ログオン
└ スタートアップ の .lnk
└ Code.exe "<workspace>.code-workspace"
└ VS Code がワークスペースを開く
└ folderOpen タスク(.vscode/tasks.json)
└ 統合ターミナル
└ <エージェントCLI> "<初期プロンプト>"
- 人の操作は初回1回の「ワークスペースを信頼する」クリックだけ。それ以外はゼロ。
1. ワークスペースを1枚作る(複数リポを1ウィンドウに束ねる)
複数リポジトリを扱っているなら multi-root workspace にする。リポジトリを物理的に移動してはいけない。 他マシンや CI が絶対パスで参照していると全部壊れる。「見た目だけ統合」で十分。
<HUB>/myteam.code-workspace:
{
"folders": [
{ "name": "1. hub", "path": "." },
{ "name": "2. shared-rules","path": "../shared-rules" },
{ "name": "3. app", "path": "../app" },
{ "name": "4. agent-config","path": "../../.agent-config" }
],
"settings": {
"task.allowAutomaticTasks": "on"
}
}
各 path が実在するか必ず機械で確認する(相対パスの数え間違いが最頻の失敗):
$root = '<HUB の絶対パス>'
$ws = Get-Content '<HUB>\myteam.code-workspace' -Raw | ConvertFrom-Json
foreach($f in $ws.folders){
$p = [System.IO.Path]::GetFullPath((Join-Path $root $f.path))
'{0,-6} {1}' -f (Test-Path $p), $p
}
2. 開いた瞬間に CLI を起動する(folderOpen タスク)
<HUB>/.vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "agent: start",
"type": "shell",
"command": "<エージェントCLI> \"<初期プロンプト>\"",
"options": { "cwd": "${workspaceFolder}" },
"problemMatcher": [],
"presentation": {
"reveal": "always", "panel": "dedicated", "focus": true,
"echo": false, "showReuseMessage": false
},
"runOptions": { "runOn": "folderOpen" }
}
]
}
runOn: folderOpen が VS Code に用意されている唯一の「開いたら勝手に走る」フックである。
外部から統合ターミナルへコマンドを流し込む API は無い(CLI に --command は無い)ので、タスク以外の道は無いと考えてよい。
ユーザ設定にも入れておく(ワークスペース経由でなく素のフォルダで開いた時のため):
{ "task.allowAutomaticTasks": "on" }
3. ログオン時に開く(.lnk を使う。スクリプトは使わない)
スタートアップフォルダは %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup。
$startup = Join-Path $env:APPDATA 'Microsoft\Windows\Start Menu\Programs\Startup'
$sh = New-Object -ComObject WScript.Shell
$lnk = $sh.CreateShortcut((Join-Path $startup 'Open Workspace.lnk'))
$lnk.TargetPath = "$env:LOCALAPPDATA\Programs\Microsoft VS Code\Code.exe"
$lnk.Arguments = '"<HUB の絶対パス>\myteam.code-workspace"'
$lnk.WorkingDirectory = '<HUB の絶対パス>'
$lnk.Save()
書けたら読み戻して検証する(CreateShortcut は存在しないパスでも黙って保存する):
$v = $sh.CreateShortcut((Join-Path $startup 'Open Workspace.lnk'))
$v.TargetPath; $v.Arguments; Test-Path $v.TargetPath
無効化されていないかも見る(タスクマネージャで無効にされていると静かに実行されない):
$k='HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\StartupFolder'
if(Test-Path $k){ (Get-ItemProperty $k).PSObject.Properties |
? { $_.Name -notmatch '^PS' } | % { '{0} {1}' -f ($(if($_.Value[0] -in 2,6){'有効'}else{'無効'})), $_.Name } }
else { '記録なし = 全て既定で有効' }
4. 踏む3つの無言failure(ここが本体)
① 8.3短縮名はワークスペース判定を壊す
パスに日本語や空白が含まれるのを避けようとして <ユーザーフォルダ>\DOWNLO~1\HUB~1\MYTEAM~1.COD のような
8.3短縮名を使うと、拡張子が .COD に切り詰められる。VS Code は拡張子 .code-workspace で
ワークスペースか否かを判定するため、ただのテキストファイルとして既存ウィンドウに開かれる。
新しいウィンドウも folderOpen タスクも発生しない。エラーは一切出ない。
.vbs/.cmdを使うと必ずこの罠に誘導される。.vbsは system ANSI として解釈されるので 非ASCIIパスがそのままでは化け、短縮名に逃げたくなるため。- 対策:
.lnkを使う。 Unicode をネイティブに保持し、コンソールの点滅も無い。 どうしてもスクリプトが要るなら UTF-16LE + BOM で保存する。
② サンドボックス下のツール実行では GUI アプリが起動しない(しかも exit 0 を返す)
エージェント自身がサンドボックス内でシェルを実行する構成だと、GUI アプリの起動が黙って失敗する。
実測では Code.exe は exit 1、CLI ラッパー(code.cmd)は exit 0 を返すのにウィンドウが出ない。
「exit 0 = 起動した」と読むと、存在しない成功を報告することになる。
- 対策: 終了コードで判定しない。ウィンドウの実在を見る。
Get-Process Code -EA SilentlyContinue | ? MainWindowTitle | % { '{0} {1}' -f $_.Id, $_.MainWindowTitle }
- サンドボックス機構を持つエージェントなら、GUI 起動の検証だけはサンドボックス外で行う。
③ Restricted Mode(ワークスペースの信頼)は自動タスクを無言で止める
新規に作った .code-workspace は未信頼なので、task.allowAutomaticTasks: "on" を入れていても
folderOpen タスクが一切走らない。モーダルは出ず、上部の細い帯と左下のバッジが出るだけなので見落とす。
信頼済みかどうかは、VS Code のグローバル状態 DB に信頼キーが存在するかで判定できる (ファイルはロックされているのでコピーしてから読む):
$db = Join-Path $env:APPDATA 'Code\User\globalStorage\state.vscdb'
$c = Join-Path $env:TEMP 'state.copy'; Copy-Item $db $c -Force
$t = [Text.Encoding]::UTF8.GetString([IO.File]::ReadAllBytes($c))
if($t -match 'trustedFolders'){ '信頼レコードあり' } else { '未信頼(=自動タスクは走らない)' }
- 対策:
security.workspace.trust.enabled: falseで潰さない。 これは人間が中身を理解して判断するための正規の関門であって、自動化のために外すものではない。 正しい対処は「初回1回だけ人にクリックしてもらう」。案内は具体的に:- 上部の帯の Manage(または左下の Restricted Mode バッジ)をクリック
- Trust → Trust Workspace & Continue
- 「親フォルダー配下をすべて信頼」のチェックがあれば入れておくと以後聞かれない
5. 成否の判定は「プロセスの祖先」で行う
ログや終了コードは嘘をつく。エージェントのプロセスが誰の子として生まれたかが唯一の証拠になる。
$p = Get-CimInstance Win32_Process
$p | ? { $_.Name -eq '<エージェント>.exe' } | % {
$anc=$_.ParentProcessId; $chain=@(); $d=0
while($anc -and $d -lt 6){ $par=$p|?{$_.ProcessId -eq $anc}; if(-not $par){break}
$chain+=$par.Name; $anc=$par.ParentProcessId; $d++ }
' pid={0} {1}' -f $_.ProcessId, ($chain -join ' <- ')
}
pwsh.exe <- Code.exe <- Code.exe <- explorer.exe→ 成功(VS Code の統合ターミナル内)WindowsTerminal.exe <- ...→ 別物。手打ちの残骸を成功と誤認している
6. よくある誤診: 「自動で立ち上がっている」の正体
「勝手に起動している」と言われたら、決めつける前に自動起動の口を全部当たる。 実際には単に閉じ忘れたウィンドウが残っているだけというケースが多い。
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' # Run キー
Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
Get-ChildItem (Join-Path $env:APPDATA 'Microsoft\Windows\Start Menu\Programs\Startup')
Get-ScheduledTask | ? { ($_.Actions.Execute + ' ' + $_.Actions.Arguments) -match '<対象>' }
Get-Content "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_*\LocalState\state.json" # persistedWindowLayouts
(Get-ItemProperty 'HKCU:\...\Explorer\Advanced' -Name RestartApps -EA SilentlyContinue).RestartApps
全部空振りなら、それは自動起動ではない。
7. 既存のセッションを畳むときの注意
自動起動へ移行するとき、古いターミナルに残っているエージェントを一括で殺したくなるが、次を先に確認する。
- 自分自身が混ざっていないか。 実行中のエージェント自身がそのターミナルにいると、自分を殺して会話が飛ぶ。 プロセスIDと自分のセッションIDの対応を取ってから落とす。
- 稼働中か待機中か。 8秒ほど CPU 時間をサンプリングすれば区別できる。稼働中を殺すと実行中の作業が失われる。
$s=@{}; $ids | % { $s[$_] = (Get-Process -Id $_).TotalProcessorTime.TotalSeconds }
Start-Sleep 8
$ids | % { '{0} {1}' -f $_, $(if((Get-Process -Id $_).TotalProcessorTime.TotalSeconds - $s[$_] -gt 0.3){'稼働中'}else{'待機'}) }
- 常駐ループを殺さない。 定期実行や自律ループを担っているセッションを落とすとその仕組みごと止まる。
- 落とす前に、各セッションの復帰コマンドを1枚のメモに退避しておく。多くの CLI は会話ログをディスクに残すので
--resume <id>相当で完全に戻せる。プロセスを殺してもログは消えない。
8. 完了の定義
次の3つが揃うまで「できた」と言わない。
- ワークスペースの全フォルダが解決する(機械で確認)
.lnkの target と arguments を読み戻して検証できる、かつスタートアップで無効化されていない- エージェントのプロセスの祖先に IDE のプロセスが入っている
3 が取れていないのに 1 と 2 だけで完了報告すると、翌朝「何も起きない」になる。
よくある質問
+「ログオンしただけでIDEが開きAIエージェントが走り出す状態を作る(Windows/VS Code)」とは何ですか?
毎朝ターミナルを開いてエージェントCLIを打つ手間をゼロにする。folderOpenタスク+スタートアップ.lnkの構成に加え、素直に作ると必ず踏む3つの「エラーを出さずに何も起きない」失敗(8.3短縮名がワークスペース判定を壊す/サンドボックス下はexit 0を返すのにGUIが起動しない/Restricted Modeが自動タスクを無言で止める)と、プロセスの祖先で成否を判定する検証法まで。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約5,200トークンで済みます。差し引き約3.7万トークン(API料金換算で約55円)・88%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
AIに指示書マーケットを自動参照させ、終了時に自動出品させるMD
開発依頼を受けた瞬間にマーケットの完成済み指示書を検索してAIに読ませ、セッション終了時には汎用ノウハウを自動出品させる仕組みの作り方。全台配布・秘密情報スキャン・実際に踏んだ配布バグ3つの回避込み。
「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる
特定の1台にしかリポジトリが無い機能は、修正手順を書いても誰にも実行されず放置される。SessionStart hook で当該PCのAIだけに指示を出し、完了後は指示書へ状態を書き戻して再実装事故を防ぐ型。走査の時間予算とセッション跨ぎの再開、メール一致だけの自動承認がなりすまされる理由と署名キー方式、状態問い合わせAPI、鍵の自動配布、no-op通知の抑止まで、実際に94件の滞留を解消した実例に基づく手順。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア