src/context/ · buildContext 的資料來源圖查完之後,要把「相關符號的原始碼 + 關係」組裝成 agent 直接能用的格式。ContextBuilder 負責這件事:buildContext(task, { maxNodes, includeCode, format }) 用任務描述挑相關節點、抓逐位元組原始碼、附上關係說明,輸出 markdown 或 JSON。這是 codegraph explore 的核心——「一次呼叫,surgical context」的組裝點。
流程:1) 用 GraphQueryManager 找相關候選(依關鍵字/檔案/符號);2) 用 GraphTraverser 帶出之間的呼叫路徑與 blast radius;3) 抓原始碼(從磁碟重讀、逐行編號、逐位元組對齊——不是摘要);4) 依 format 組出 markdown 或 JSON。組完的「相關符號原始碼依檔案分組 + call path + blast-radius 摘要」就是 explore 回傳的形狀。
ranking 決定 explore 品質。幾個刻意修正:專案名 token 降權(它命名整個 repo 不是符號);generated 檔、ambient .d.ts(declares Body/Message 這類常見名)在「行為問題」時排名降低——避免只宣告常見名、沒有 handler 的檔霸佔答案。實作分佈在 src/context/ranking 與 src/search/query-utils.ts。
Unreleased:codegraph_explore 不再重送本對話已給過的原始碼——已顯示的檔案回傳 path + symbols + 行範圍 pointer(附「檔案沒變」確認),省下的空間給沒看過的程式;若檔案在期間被編輯過則永遠整檔重顯。用 CODEGRAPH_EXPLORE_DEDUP=0 可關。這是「一坨 dense payload 留在窗口」vs「逐個小結果被逐出」取捨的調校(見 benchmarks)。