ToukaIDE (燈火 VS Code 擴充套件)
ToukaIDE 是為 VS Code 量身打造的 AI 原生開發插件。它不僅提供了側邊欄對話,更透過內建的 ToukaMcpServer 賦予 AI 讀寫檔案、執行終端機指令以及操作 Git 的能力。
🚀 核心功能
- 內嵌式聊天視圖:直接與 Touka 進行對話,支援代碼解釋、重構與計畫追蹤。0.2.0為安全純文字模式:保留換行,但不解析Markdown或HTML;Webview不載入外部CDN JavaScript(ADR-0219)。
- 提及系統 (@Mentions):
@problems: 獲取目前的診斷資訊 (Diagnostics)。
@terminal: 獲取終端機最後的輸出內容。
@git: 獲取 Git 暫存區與未暫存的變更摘要。
@opened: 引用所有目前已開啟的檔案內容。
- Artifact 橋接接收器:
- 預覽與套用:接收來自
ToukaChat 的 Apply to Project 指令。
- 虛擬編輯器 (Virtual Buffer):內容會以「未儲存檔案」形式在 VS Code 中開啟,讓使用者審核後再決定是否存檔,確保安全性。
- MCP 工具整合 (Model Context Protocol):
- 檔案操作:基於
FileHandlers 的讀寫與目錄遍歷。
- Terminal Auto-Fix:自動捕捉 Exit Code 並在 ReAct 迴圈中嘗試修正。
- 分級授權機制 (Tiered Auth):
ReadOnly: 僅讀取,禁止寫入。
Manual: 寫入前需手動確認 (預設)。
SafeAuto: 自動執行安全範圍內的指令。
FullYOLO: 全自動執行 (排除 Git/Docker 等高危指令)。
- MCP 2026 bridge (ADR-0202) ⭐:主路徑為 Streamable HTTP
/mcp;
legacy /mcp/sse+/mcp/messages 使用隔離相容層。
- 逐 request Bearer:啟動時以
crypto.randomBytes(32) 生成 session token,
discovery 只交給 ToukaProxy;modern/legacy 每個 HTTP request 都重驗,空 token
fail-closed。
- 多連線與取消:modern request 彼此隔離;legacy 依
sessionId 路由;client
關閉 stream 時取消訊號會傳至 terminal executor。
- P11-B raw rollout evidence+P11-C follow-up(ADR-0213/0215 committed implementation):feature預設完全關閉;
只有
MCP_ROLLOUT_EVIDENCE_DIR 與 MEMORY_APP_DATA_DIR 都明示才記錄三個固定 MCP
endpoint 的 payload-free counters。Observer 位於 Bearer+Host/Origin 與 exact method/path
guards 後;path alias/method mismatch 不計數。Shutdown close phase 以 bridge latch 讓合法
late request 回 503,並 bounded close listener/transport,最後才封存 evidence。非空 generation 固定每
300 秒以 atomic create-only artifact 封存,既有檔案不覆寫、不自動刪除。產物仍是 untrusted
raw evidence。P11-C committed implementation已把filesystem publication移至bounded worker、在BigInt()前做
Python-derived pre-cap,並加入exact release-window ID+digest binding與successful-start latch;raw
artifact仍須經fixed-slot trusted verifier。IDE candidate/runtime/publication provider與sunset Owner
authority尚未配置,release workflow最早gate固定fail-closed。
🛠️ 技術架構
src/extension.ts: 核心入口與指令註冊。
src/mcp/server.ts: AuthLevel 與 IDE 工具 executor 組裝。
src/mcp/httpBridge.ts: modern /mcp 與 legacy endpoints transport bridge。
src/mcp/protocolServer.ts: 官方 Node SDK v2 server/tool registry。
src/mcp/contracts.ts: endpoint 與 discovery SSOT。
src/mcp/rolloutRuntime.ts: 選配 rollout producer/writer/lifecycle 組裝。
src/mcp/rolloutPublicationWorker.ts: extension-host bounded queue/ACK/shutdown controller。
src/mcp/rolloutArtifactWorker.ts: worker-thread artifact store/writer entry。
src/mcp/generated/rolloutContract.ts: 由 Python rollout_contract.py 經
scripts/generate_mcp_rollout_ts.py 機械產生的 binding;包含 automatic validator discovery、
executable field/validator recipes 與全部欄位必填的 artifact output types,禁止手改。
src/mcp/handlers/: 工具邏輯分離 (Editor, File, Git, Terminal)。
src/providers/: 提供 ChatViewProvider 與 CodeLens 支援。
📦 安裝與開發
建置與驗證工具鏈固定為 Node.js 24.19.0 LTS/npm 11.17.0。擴充套件執行期仍支援
Node.js 20+/VS Code 1.90+;@types/node 保持 20.x,以免建置時誤用高於 extension host
下限的 Node API。
- 依 lock 安裝:
npm ci --ignore-scripts --no-audit --no-fund
- 測試:
npm test
- 型別檢查:
npm run typecheck
- 開發編譯:
npm run compile
- Production bundle:
npm run package
- 偵錯:按下
F5 開啟擴充套件開發主機。
📦 Marketplace 候選(ADR-0218)
首發固定為 touka-ai.toukaide@0.2.0/MIT,只發布到Visual Studio Marketplace。
@vscode/vsce直接精確釘在3.9.2;不使用npx,也不加入@vscode/test-electron。
候選只能由ToukaIDE/scripts/build_marketplace_candidate.py在clean、tag-anchored commit上建立。
Builder以Node 24.19.0直接執行npm 11.17.0的npm-cli.js及repo-local vsce entry,將root
LF-sealed LICENSE注入repo外staging;child輸出固定strict UTF-8,真vsce raw成員集合必須先與
release authority SSOT完全相同,最後才產生一份create-only universal VSIX與canonical SHA-256 manifest。
此命令不登入、不上傳、不發布;完整人工流程與fresh gates見
Marketplace最小發行指南。
📖 更多資訊
Created by Antigravity AI IDE — Coding with Soul.
| |