前言¶
在 DSH(DeepSeek Harness)裏做長週期研究時,推理過程、工具調用和結論往往散落在主對話裏:換會話或開子代理後,很難一眼看到「目標—步驟—假設—證據—死路」整條線。手工記筆記或只靠對話滾動,既占上下文,也不利於同一工作區裏多會話對齊。下面介紹社區插件 explore_tree(包名 dsh-explore-tree):它旁路訂閱會話事件,把研究過程落成一棵可觀測的樹,並提供固定工具讀寫與 GUI 頁籤,而不寫入主對話、不觸發主對話。
這是什麼¶
explore_tree 由維護者 fxxxysh-andy 發佈,在 SkillHub 目錄中歸類爲工作流;倉庫簡介爲「Research trajectory tree plugin for DeepSeek Harness (DSH)」。一句話定位:給 DSH 研究工作區提供共享研究樹——以推理鏈提取爲主、只取關鍵想法;模型通過 explore_tree / explore_tree_record 讀寫在樹;人在會話上欄「研究軌跡」頁籤查看,自動綁定當前會話工作區,無需手動選目錄。同一 workspace 下所有會話與子代理共用一棵樹,數據落盤在 .explore-tree/。
設計強調:系統提示段保持靜態、工具面固定,動態圖狀態只出現在工具返回值裏,避免破壞前綴緩存;對錯都留痕,節點只標信息類型與狀態,不做自動好壞判定。
核心功能¶
樹結構與自動產生¶
樹以 parentId 單樹爲主,輔以 edges 表示旁支關係(如 supports、contradicts、refines 等共 8 種)。節點 kind 包括 goal、topic、question、hypothesis、step、action、evidence、decision、dead_end、conclusion、artifact、note 等;狀態含 open、active、done、abandoned。
旁路流程:從推理思維鏈切出有信息量的想法,從工具調用補動作與產物;完整記錄依賴自動提取、journal.jsonl 操作流水,以及模型的顯式 explore_tree_record。
模型側觀測與記錄¶
只讀工具 explore_tree 支持多種 action,例如:
| action | 作用(摘要) |
|---|---|
overview |
目標、焦點、最近節點、未決、死路、產物、結論(默認彙總當前會話節點) |
trunk / brief |
主幹摘要或 ≤400 字研究簡報,適合接續長期研究 |
frontier |
下一步建議(驗證/收斂 + 換軌)與 avoid 死路 |
walk |
沿當前分支展開路徑、子節點、缺口與下一步模板 |
team |
與 Agent Teams 協作時的樹側租約與任務關聯(無 Team 插件時降級) |
stats / find / node / path / tree / subtree |
統計、搜索、單節點、路徑與子樹(子樹可限 depth) |
寫入工具 explore_tree_record 用於顯式記錄(語義優先於自動提取),例如新增假設、一次建多層子節點、或 link 旁支關係。
DSH 內可視化¶
安裝並刷新後,會話上欄會出現 研究軌跡 頁籤(conversation.view,排在記憶與預覽之間)。頁籤使用當前會話的 session.cwd 對應工作區;畫布爲自上而下卡片樹,支持主幹/研究切換、搜索、按 kind 過濾;顯示偏好可在 設置 → 研究軌跡 調整(如自動刷新、緊湊模式、僅本會話等),存於 localStorage(explore-tree.prefs.v1)。
使用約定(README 靜態版要點)¶
- 開新方向前先看
overview;接續研究先trunk/brief。 - 失敗記
dead_end並寫原因;frontier會避開,有新證據才建議 reopen。 - 多路徑時優先能證僞當前假設的最小實驗。
- 節點標題宜短,摘要寫理由與證據。
- 不要爲同步圖而改系統提示或工具面順序。
更細的設計契約見倉庫 docs/design.md。
安裝與啓用¶
前置:DSH 已安裝(README 寫明在 DSH 0.2.1-rc.5 上驗證),Node.js ≥ 20,pnpm 可用。當前包版本見倉庫 package.json(撰寫時資料爲 0.26.3),許可證 MIT。
方式 A:腳本安裝(推薦)¶
先在 scratch profile 驗證,再裝到正在使用的 web profile:
# 1) 先裝到一個 scratch profile 驗證(不碰正在用的 GUI)
node scripts/install.mjs --profile explore-scratch --create
node scripts/smoke.mjs --profile explore-scratch --boot --port 0 --path /explore-tree/health
# 2) 驗證通過後裝到當前 web profile(live 拾取,無需重啓 GUI)
node scripts/install.mjs --profile web
node scripts/status.mjs --profile web
腳本會寫 bundle patch、備份 package.json / pnpm-lock.yaml,並執行 dsh plugin --profile <p> add link:<repo> 等步驟。卸載示例:
node scripts/uninstall.mjs --profile web
上述 node scripts/*.mjs 需在插件源碼根目錄下執行(安裝腳本會執行 dsh plugin --profile <p> add link:<repo>,<repo> 爲你本機上的插件路徑)。
方式 B:手工安裝¶
dsh plugin --profile web add link:C:/path/to/explore-tree
並在該 profile 的 cordis.patch.yml 中按倉庫 cordis.patch.yml 插入一行:id: explore-tree, name: dsh-explore-tree, config: {}。
說明:dsh plugin add 會更新 profile 的 package.json 並觸發 pnpm 安裝;改宿主 src/** 需下次啓動宿主才加載;改 lib/client.js 可由 HMR 拾取(刷新頁面即可)。
典型用法¶
讀:概覽與下一步¶
開輪或換題目前,先拉一份當前研究摘要:
explore_tree({ "action": "overview" })
// → { ok, action: "overview", text: "……目標/焦點/最近/未決/死路/建議……" }
需要收斂到當前分支時:
explore_tree({ "action": "walk" })
寫:顯式記假設與證據¶
explore_tree_record({
"action": "add",
"kind": "hypothesis",
"title": "緩存未命中是因爲工具面順序變化",
"summary": "依據:上一輪工具列表順序不同;驗證:比對兩次請求前綴。",
"parentId": "n4",
"children": [
{ "kind": "evidence", "title": "兩次請求前綴長度不同", "summary": "diff 顯示 system 段多了 214 字節" },
{ "kind": "decision", "title": "先固定工具面順序再複測" }
]
})
旁支關係示例:
explore_tree_record({
"action": "link", "from": "n4", "to": "n7",
"edgeKind": "contradicts", "note": "兩者對同一現象給出相反解釋"
})
複雜課題可先建 topic 再掛 question/hypothesis 等葉根;接續時用 trunk 或 brief(宿主可在有 goal 時輪首注入 brief 增量)。
人在 GUI 側¶
安裝後刷新 DSH Web UI,打開任意綁定工作區的會話,點上欄 研究軌跡 即可查看與當前 workspace 共享的圖;不必在頁籤裏再選一次工作區路徑。
適用場景與注意¶
適合誰:在同一 DSH 工作區裏做多輪推理、多會話或多子代理協作的研發、排查、文獻式探索——需要「研究圖」可觀測、可檢索、可顯式標註死路與結論,又希望少佔主對話上下文的人。
權限與安全:插件以當前 DSH 進程權限運行,會讀寫工作區下的 .explore-tree/。安裝前請閱讀倉庫源碼與 MIT 許可證,確認 link: 路徑指向你信任的來源。
生態說明:DSH 採用「一切皆插件」思路;SkillHub 插件目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。倉庫 GitHub 星標以目錄頁展示爲準(資料線索爲 0)。
結尾¶
explore_tree 把研究工作區裏的推理與工具痕跡旁路收成一棵樹,用固定工具讀寫、用頁籤可視化,並在同一 workspace 內共享狀態。若要進一步覈對安裝步驟與 action 列表,以倉庫 README 爲準。