dsh-knowcode:DSH 上的統一代碼圖與知識庫

前言

在 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 會話中使用

  1. 按上文安裝插件並啓用 autoStartDaemon,或在項目根手動 knowcode serve .。
  2. 在 Harness 中讓智能體調用 code_get_symbol_definition_and_signature、code_analyze_refactor_blast_radius 等工具;修改共享 API 前優先跑爆炸半徑與受影響測試類工具。
  3. 對照 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 回答「誰調用誰、改哪裏會波及測試、文檔對應哪條調用鏈」,而不是隻靠字符串搜索。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜