前言¶
在 DeepSeek Harness(DSH)裏跑智能體改代碼,常見檢索仍是 grep 或扁平全文索引:能搜到字符串,卻難以回答「改這個導出函數會影響誰」「文檔裏寫的功能落在哪些調用鏈上」。倉庫變大、單倉多包時,簽名猜錯、漏跑測試、改共享符號時低估連帶修改,都是實際風險。
下面介紹社區插件 dsh-knowcode(維護者 huuthuan-nguyen):把 Tree-sitter WebAssembly AST 代碼圖、Markdown 知識庫和嵌入式 FalkorDB(Cypher)收進同一套圖數據庫,並通過 knowcode CLI 提供類似 tgrep 的守護進程與增量文件監聽。DSH 側通過 Cordis 插件暴露約 25 個工具,供智能體做符號檢索、重構影響面、克隆檢測與 spec-to-code 追溯。
這是什麼¶
dsh-knowcode 是 npm 包名,GitHub 倉庫爲 huuthuan-nguyen/dsh-knowcode,許可證 MIT。在社區目錄 SkillHub 中分類爲「記憶」。SkillHub 是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」的擴展方式。
一句話定位:在本地嵌入 FalkorDB,統一維護代碼符號圖(類、函數、調用、繼承、測試關聯等)與文檔/規則知識,並在文檔節點與代碼符號之間建立雙向邊(例如 (:DocSection)-[:DOCUMENTS]->(:Symbol)、(:Rule)-[:GOVERNS]->(:File))。
核心能力¶
代碼圖(Tree-sitter WASM)¶
解析引擎基於 Tree-sitter WebAssembly,README 說明沒有固定語言白名單:內置常見語法,其餘可按需加載,也可放入自定義 .wasm 語法。
內置覆蓋包括 TypeScript/TSX、JavaScript/JSX、Go、Rust、C/C++、Java、C#、Python、Ruby、PHP、Lua、Shell、Kotlin、Scala、Swift、Zig、Elixir、OCaml、ReScript、Solidity 等;同一套圖模型包含限定名、import 邊、調用邊、行號範圍等。
擴展語法可放在:
- 項目內:
<workspace>/.knowcode/grammars/tree-sitter-<lang>.wasm - 用戶目錄:
~/.knowcode/grammars/tree-sitter-<lang>.wasm - 環境變量:
KNOWCODE_GRAMMARS_DIR=/path/to/grammars
知識圖與交叉鏈接¶
索引 ADR、README、設計文檔、編碼規範等 Markdown 內容,並與代碼符號自動關聯,便於「從 spec 找實現」或「從符號反查文檔」。
圖查詢與工程向分析¶
相對 README 中的 dsh-tool-codegraph、dsh-knowledge-base,本插件強調:
- 重構爆炸半徑(傳遞調用、風險評分、關聯測試)
- 環依賴檢測(圖上的 cycle 遍歷)
- 代碼克隆(基於 AST token 指紋)
- 跨語言移植相關的接口契約與依賴藍圖
- spec ↔ code 雙向追溯
數據落在工作區默認目錄 .knowcode(可通過配置或 CLI 的 --data-dir 調整)。
架構:index / serve 與守護進程¶
採用 Microsoft tgrep 風格:一次性索引 knowcode index .,或長期運行 knowcode serve .(帶 debounce 的文件監聽與 SHA 增量更新)。README 說明 serve 啓動時會自行對賬索引,多數場景不必先跑 index;CI 一次性建圖可用 index(會起 daemon、索引後退出)。
守護進程默認監聽 http://127.0.0.1:48123;Harness 工具經 HTTP/IPC 訪問。
DSH 智能體工具(節選)¶
插件向 Cordis 註冊多組工具,名稱以 README 爲準,例如:
| 方向 | 代表工具 | 用途 |
|---|---|---|
| 探索 | code_get_architecture_overview |
入口符號、調用 hub、語言分佈 |
| 安全重構 | code_analyze_refactor_blast_radius |
修改前評估傳遞影響與測試 |
| 調用關係 | code_find_function_callers / code_find_function_callees |
上下游調用點與行號 |
| 質量 | code_detect_circular_dependencies、code_find_similar_duplicate_functions |
環依賴、克隆檢測 |
| 追溯 | spec_find_code_flow_for_feature、code_find_spec_features_for_symbol |
文檔功能 ↔ 代碼流 |
| 知識 | knowledge_search_documentation_and_rules |
ADR/規範檢索並鏈到符號 |
| 運維 | knowcode_check_index_health_and_stats、knowcode_execute_custom_cypher_query |
索引健康、Cypher 逃生艙 |
完整列表見倉庫 README「The 25 Agent Tools」一節。
環境與依賴¶
| 項 | 說明 |
|---|---|
| Node.js | ^22.19.0 \|\| >=24.0.0(與 DSH 要求一致) |
| 平臺 | macOS Apple Silicon、Linux x64 自帶嵌入式 FalkorDB;其它平臺可設 FALKORDB_URL 連接外部實例(見 README Platform Support) |
| peer | @deepseek-ai/cordis、@deepseek-ai/dsh-tools(optional) |
knowcode 不是獨立下載的二進制,而是包內 CLI:package.json 中 "bin": { "knowcode": "./bin/knowcode.js" }。
安裝與啓用¶
安裝到 DSH Profile(推薦)¶
在目標 profile 下一行安裝並註冊插件(README 示例 profile 名爲 web,請換成你實際使用的 profile):
dsh plugin add --profile web dsh-knowcode
安裝後,該 profile 的 node_modules/.bin 中會有 knowcode,例如:
~/.dsh/profiles/web/node_modules/.bin/knowcode index .
本地開發插件源碼時,可鏈接 checkout(路徑改爲本機絕對路徑):
dsh plugin add --profile web link:/absolute/path/to/dsh-knowcode
通過 Cordis patch 配置¶
在 profile 的 cordis.patch.yml 中插入 bundle(字段以 README 爲準):
- insert:
- id: knowcode
name: 'dsh-knowcode'
config:
daemonPort: 48123
dataDir: .knowcode
blastRadiusMaxDepth: 3
autoStartDaemon: true
常用配置項包括:daemonPort(默認 48123)、dataDir(默認 .knowcode)、falkordbUrl(空則嵌入式)、blastRadiusMaxDepth(默認 3)、autoStartDaemon(默認 true)、stopDaemonOnExit(默認 true)等,詳見 README「Configuration options」。
僅用 npm 試用 CLI¶
不裝 DSH 也可驗證索引與守護進程:
npx dsh-knowcode index .
npx dsh-knowcode serve .
驗證命令是否可用:
knowcode --version
knowcode --help
典型用法¶
1. 建圖並啓動守護進程¶
進入倉庫根目錄。日常開發通常只需 serve;需要強制全量重掃時使用 --force-index(升級解析器後 README 也建議強制重索引或刪除 .knowcode/falkordb.rdb)。
knowcode serve .
可選:先一次性索引再常駐(預熱身,首條工具調用更快):
knowcode index .
knowcode serve .
調試 watcher 與 RPC 時:
knowcode serve . --trace
2. 查看圖狀態¶
knowcode status .
會輸出 daemon 是否在線、.knowcode 路徑、文件/符號/調用/文檔計數及按語言分佈等(具體字段以 CLI 輸出爲準)。
3. 直接跑 Cypher¶
適合腳本或人工探查圖結構:
knowcode query "MATCH (s:Symbol {kind: 'class'}) RETURN s.name, s.file"
4. 在 DSH 會話中使用¶
- 按上文安裝插件並啓用
autoStartDaemon,或在項目根手動knowcode serve .。 - 在 Harness 中讓智能體調用
code_get_symbol_definition_and_signature、code_analyze_refactor_blast_radius等工具;修改共享 API 前優先跑爆炸半徑與受影響測試類工具。 - 對照 ADR/PRD 時用
spec_find_code_flow_for_feature或knowledge_search_documentation_and_rules。
停止本工作區 daemon:
knowcode stop .
適用場景與注意¶
更適合:中大型單倉或多包倉庫、需要 AST 級符號與調用圖、重構前要做影響面分析、文檔與代碼需要雙向追溯的 DSH 工作流。
相對侷限:README 明確索引層有擴展名白名單與二進制嗅探,不會讀取運行中的數據庫文件;存儲結構知識來自倉庫內 schema/SQL 等文本。Windows 原生環境需 WSL2 或 Docker + FALKORDB_URL,見 README 平臺說明。
安全與權限:插件與 knowcode 以當前 DSH/終端用戶權限運行,會讀取工作區源碼與文檔、寫入 .knowcode 並可能啓動本地 HTTP 守護進程。安裝前請閱讀 源碼 與 MIT 許可證,在可信倉庫上使用;社區目錄頁星標爲 0,不代表質量結論,需自行評估。
結尾¶
經過上面的步驟,你可以把 dsh-knowcode 理解爲:在 DSH 智能體與倉庫之間加一層本地圖數據庫,用 AST 與 Cypher 回答「誰調用誰、改哪裏會波及測試、文檔對應哪條調用鏈」,而不是隻靠字符串搜索。