dsh-semble:DSH 中的語義代碼搜索工具

前言

DeepSeek Harness(DSH)插件生態採用「一切皆插件」的架構,智能體在會話中通過註冊的工具訪問外部能力。現有的 grep 等工具需要已知字符串才能檢索,而智能體在代碼庫中往往只有行爲描述,例如「哪裏處理請求失敗時的重試策略」或「哪個模塊決定評分權重」。這種時候,智能體通常開始猜測文件名,檢索效率低且容易偏離目標。

dsh-semble 將 Semble 引入 DSH 會話,以兩個原生工具提供語義代碼搜索:semble_search 與 semble_find_related。插件從 3.0.0 版本起不再依賴 MCP 層,直接將工具註冊到宿主的工具註冊表,每次調用通過 uvx 啓動 Semble CLI。檢索時返回匹配片段而非整文件,一次查詢的 token 數量約爲 grep+read 的 1%,上游基準測試顯示檢索質量與專用 transformer 檢索器相當。

核心能力

插件提供兩個工具與一個斜槓命令:

  • semble_search:輸入對代碼行爲的描述或位置說明,返回按相似度排序的 file:line 位置與代碼片段。
  • semble_find_related:輸入已知位置,返回其鄰居:其他實現、調用方、測試等。
  • /semble:報告子命令,包括 /semble savings、/semble file-types、/semble version 與 /semble clear <index|savings|orphans|all>。

工具參數包括:
- repo:倉庫的絕對路徑或 https:// Git URL。可一次搜索多個倉庫。
- top_k:默認 5,檢索數量。首次命中不足時可提升到 10–20。
- max_snippet_lines:默認 10,片段最大行數;設爲 0 僅返回位置。
- content:默認 code,可選 docs、config 或 all,控制索引內容類型。

第一次查詢會構建索引(較慢,一次性);後續查詢複用磁盤緩存。命中結果按相似度排序,分數爲 RRF 值(約 0.0x),可視爲相對排序,空結果表示未找到相關代碼。

安裝與啓用

桌面應用

  1. 打開 DSH 桌面應用。
  2. 進入 Settings → Plugins → Install。
  3. 輸入插件名:
dsh-semble
  1. 若需鎖定版本,可在插件行配置中輸入 dsh-semble@3.0.0。

桌面應用僅支持通過設置頁安裝 desktop 配置文件,CLI 會拒絕直接安裝到該配置文件。

命令行

dsh plugin --profile web add dsh-semble

該命令在 web 配置文件中運行 pnpm add,並協調 dsh.profile.bundles,使插件在下一次啓動時掛載。無構建步驟,無需額外豁免配置。

從倉庫安裝

若需跟蹤 main 分支、fork 或未發佈提交,使用:

dsh plugin --profile web add github:CodeIntegrity/dsh-semble

支持 github:owner/repo、git+https://…、https://github.com/owner/repo 以及 .tgz URL,需要 git 在 PATH。

本地檢出安裝

dsh plugin --profile web add link:/absolute/path/to/dsh-semble   # macOS / Linux
dsh plugin --profile web add link:D:\path\to\dsh-semble          # Windows

安裝後配置文件指向工作副本,修改 cordis.patch.yml 後重啓即可生效,無需重新安裝。

前置依賴

插件依賴 uv,通過 uvx 從 PyPI 啓動 Semble:

  • Windows:
winget install astral-sh.uv
  • macOS:
brew install uv
  • macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh

首次啓動時會下載 Semble 包與嵌入模型(約 1–2 分鐘),之後索引與查詢在本地運行,無需 API 密鑰、GPU 或外部服務。安裝後重啓 DSH,設置行可能顯示「待重啓」。

配置與調優

在 Settings → Plugins 編輯插件行,配置項爲加載器行的 config,插件在每次調用時讀取。

字段 默認值 修改原因
command uvx 若僅安裝 .cmd 包裝,指向 uvx.exe
args --from 'semble[mcp]' semble 追加 --content all 可同時索引文檔與配置
args(版本) 浮動 使用 semble[mcp]==X.Y.Z 鎖定版本
toolTimeoutMs 300000 首次調用構建索引並下載模型,調低可更快失敗
env 空 限制網絡下設置 HF_ENDPOINT 爲鏡像,設置 SEMBLE_CACHE_LOCATION 移動索引位置

修改配置會重新註冊工具,磁盤索引緩存保留。

環境變量

工具通過進程環境讀取配置,將變量放在插件 config 的 env 字段。/semble 命令啓動獨立進程並繼承宿主環境,若報告與搜索需一致,建議同時在兩者導出相關變量。

變量 默認值 作用
SEMBLE_INDEX_WORKERS 4 首次索引時分片倉庫的工作進程數,設爲 0 在進程內分片。多核機器可提升,避免後臺搜索佔用過多 CPU
SEMBLE_MCP_IDLE_TIMEOUT 0(永不) MCP 模式下空閒索引在內存緩存中停留的秒數;CLI 每次調用退出,該變量對該模式無影響
SEMBLE_MODEL_NAME minishlab/potion-code-16M-v2 替換爲本地路徑或 Hugging Face 倉庫的嵌入模型
SEMBLE_MAX_FILE_BYTES 1000000 超過該大小的文件將被跳過,生成代碼需索引時可調高
SEMBLE_CLONE_TIMEOUT 60 克隆 https:// 倉庫允許的最長時間(秒)
HF_ENDPOINT https://huggingface.co 模型下載時的鏡像地址

適用場景與注意

  • 適合需要根據行爲描述而非文件名檢索代碼的智能體場景,如代碼理解、遷移與重構輔助。
  • 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 依賴 uv 與網絡(首次下載模型),網絡受限時可配置鏡像。
  • 首次索引較慢,後續查詢在毫秒級完成,索引增量更新。

小結

dsh-semble 爲 DSH 提供了基於語義的代碼檢索能力,通過 semble_search 與 semble_find_related 讓智能體根據行爲描述而非猜測文件名定位代碼,顯著降低 token 消耗並提升檢索精度。插件在本地完成索引與查詢,無需外部服務,適合需要深度代碼理解的智能體開發場景。

  • 插件目錄:https://www.skillhub.cn/plugins/CodeIntegrity/dsh-semble
  • GitHub:https://github.com/CodeIntegrity/dsh-semble
羽毛球分组比赛记分
小程序二维码

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

小夜