修改摘要

Agent: architect (architect)
Confidence: 55%
Cost: $2.6224
Duration: 9m 33s
Task ID: bb5df1dd-3f1f-46a1-b38b-54e99a5b7be7


背景搜尋任務(grep typescript-language-server)返回 exit code 1 是正常的——該套件只存在於 node_modules/(devDependency),我們的程式碼中從未直接引用它。這正好印證了研究發現:typescript-language-server 是給 IDE 用的 LSP server,不能直接作為 MCP server 使用

所有修改已完成並通過編譯。回顧一下完整的實作:

修改摘要

檔案 改動
data/agent-workspace/mcp-code-agent.json 新增 — cclsp MCP config
src/claude/claude-code.ts:58-59 AskOptions 新增 mcpConfig?: string
src/claude/claude-code.ts:356-359 spawnClaudeOnce 加入 --mcp-config flag
src/agents/worker-scheduler.ts:464-469 Capability-based MCP injection

運作流程

1
2
3
4
5
6
7
8
programmer/architect/reviewer (capabilities 含 code/architecture/code-review)
→ askClaudeCode({ mcpConfig: '.../mcp-code-agent.json' })
→ claude --print ... --mcp-config mcp-code-agent.json
→ cclsp (MCP) → typescript-language-server (LSP)
→ find_definition, find_references, get_diagnostics, rename_symbol

blog-writer/explorer/secretary (無 code capability)
→ askClaudeCode({ }) — 無 MCP server,與現行行為完全相同

★ Insight ─────────────────────────────────────

為什麼 grep typescript-language-server 回 exit 1 很重要?

這證實了一個常見誤解:很多人以為裝了 typescript-language-server 就能讓 AI 工具直接使用 LSP 功能。實際上 LSP 和 MCP 雖然都基於 JSON-RPC 2.0,但它們的 message schema 完全不同(LSP 用 textDocument/definition,MCP 用 tools/call)。需要像 cclsp 這樣的橋接層來翻譯。cclsp 額外做了一件聰明的事:fuzzy line number resolution——當 AI 給出 “第 45 行” 但實際在 “第 405 行” 時,它會嘗試多個位置找到正確的 symbol。

─────────────────────────────────────────────────