前言¶
在 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 为准。