AST API
透過 REST API 或 Code Graph MCP server 查詢程式碼結構。專為 Claude Code、Gemini CLI 等 AI 程式編碼助手設計。 自 v1.15 起,Code Analysis 在獨立的 utility process 執行,並可逐 workspace 開關。
快速開始
步驟 1:取得工作區 ID
所有 API 呼叫都需要:
curl -s 'http://localhost:3033/api/workspaces' | jq '.data.workspaces[0].id'步驟 2:搜尋符號
curl 'http://localhost:3033/api/search?q=UserService&workspace=<wsId>&limit=10'步驟 3:使用符號 ID
使用回傳的 symbolId 來查詢呼叫者、被呼叫者和影響分析。
何時使用 AST API
使用 AST API 當:
- • 使用者問「X 在哪裡?」、「誰呼叫了 X?」
- • 編輯前需要找到檔案路徑
- • 變更可能影響多個檔案
- • 在沒有明確目標時進行廣泛搜尋
跳過 AST API 當:
- • 使用者提供了確切的檔案路徑
- • 任務只涉及文檔或設定檔
- • 只需要字面字串搜尋
API 參考
1. 搜尋符號
GET /api/search?q=<name>&workspace=<wsId>&limit=10回應欄位:
- •
symbolId- 用於呼叫者/被呼叫者查詢 - •
file- 絕對路徑 - •
line- 0-indexed(顯示時加 1) - •
type- 5=類別, 6=方法, 11=介面, 12=函式
2. 檔案依賴關係
GET /api/graph/deps?file=src/path/to/file.ts&workspace=<wsId>回傳:imports(此檔案使用的)和 exports(此檔案提供的)
3. 誰呼叫了這個?(呼叫者)
GET /api/graph/callers?to=<symbolId>&workspace=<wsId>找出所有呼叫或引用此符號的位置。
4. 這個呼叫了什麼?(被呼叫者)
GET /api/graph/calls?from=<symbolId>&workspace=<wsId>找出此函式/方法呼叫的所有符號。
5. 影響分析
GET /api/impact?symbolId=<id>&depth=2&workspace=<wsId>回傳所有會受此符號變更影響的符號和檔案。重構前必備。
6. 重建索引
POST /api/index/update
Content-Type: application/json
{"workspace":"<wsId>"}程式碼變更後重建索引。當搜尋結果看起來過時時使用。
常見模式
模式 A:找到並理解一個類別
# 1. 找到它
curl 'http://localhost:3033/api/search?q=TerminalService&workspace=ws_xxx&limit=1'
# 記下 symbolId 和檔案路徑
# 2. 查看它的 imports/exports
curl 'http://localhost:3033/api/graph/deps?file=src/main/services/TerminalService.ts&workspace=ws_xxx'
# 3. 現在帶著上下文讀取檔案模式 B:追蹤使用情況
# 1. 找到函式
curl 'http://localhost:3033/api/search?q=createSession&workspace=ws_xxx&limit=5'
# 選擇正確的 symbolId
# 2. 找出所有呼叫者
curl 'http://localhost:3033/api/graph/callers?to=<symbolId>&workspace=ws_xxx'模式 C:安全重構
# 變更函式前,檢查影響
curl 'http://localhost:3033/api/impact?symbolId=<id>&depth=2&workspace=ws_xxx'
# 在進行變更前審查 impactedFiles決策流程圖
使用者詢問程式碼相關問題
|
v
是「X 在哪裡?」的問題嗎?
|是 |否
v v
/api/search 是關於依賴關係的嗎?
| |是 |否
v v v
取得 symbolId? /api/graph/deps 是關於呼叫鏈的嗎?
|是 |是 |否
v v v
需要呼叫者? -----> /api/graph/callers 使用其他工具
需要被呼叫者? ---> /api/graph/calls
需要影響分析? ---> /api/impact錯誤處理
| 錯誤 | 原因 | 處理方式 |
|---|---|---|
| 找不到工作區 | API 未執行 | 啟動 Termdock 應用程式 |
| 搜尋結果為空 | 符號未被索引 | 嘗試部分名稱或重建索引 |
| symbolId 404 | 程式碼變更後 ID 過時 | 重新搜尋以取得新 ID |
重要提示
- • 行號是 0-indexed - 顯示給使用者時加 1
- • 使用相對路徑於 /api/graph/deps(例如
src/main/...) - • 符號 ID 是穩定的直到程式碼變更
- • API 基礎網址:
http://localhost:3033(正式版)或:3032(開發版)
Code Graph MCP Server
自 v1.13 起,Termdock 內建本機 stdio MCP server,讓 agent 透過 Model Context Protocol 查詢 code graph,不必自己打 HTTP。它是唯讀的 — 索引由 Termdock app 建立與維護,請先在 Termdock 開啟該專案。
啟動 server
node /path/to/Termdock/scripts/termdock-ast-mcp.js --path /path/to/project| 工具 | 用途 |
|---|---|
termdock_context | 用自然語言查詢取得 budgeted code context pack — 首選工具 |
termdock_search | 依名稱搜尋 symbol(函數、class、interface) |
termdock_callers / termdock_callees | 指定檔案的 caller / callee edges |
termdock_impact | 遞迴收集 callers,重構前的影響分析 |
termdock_node | 單一 symbol 詳情;includeCode: true 同時回傳原始碼 |
termdock_status / termdock_files | 索引狀態與已索引檔案清單 |
Claude Code 設定
claude mcp add --scope project termdock-code-graph -- \
node /path/to/Termdock/scripts/termdock-ast-mcp.js --path /path/to/projectStandalone 限制:termdock_callers、termdock_callees、termdock_impact 依賴持久化 call graph — Termdock app 未執行時,多數檔案會回傳空 edges。search、context、status、files 則完全可離線使用。
為 Claude Code 安裝 AST 技能
- 在 Termdock 開啟 設定 → 技能 分頁
- 選擇 Claude Code 作為目標
- 在 "termdock-ast" 技能上點擊 安裝
- Claude Code 會在相關情境自動使用 AST API