为 DeepSeek Harness 注册深度研究工具,按控制论+信息论设计自适应闭环:先定义答案空间、再多轮并行研究、自动补充信息缺口,可选对抗性审查。
- 语言
- TypeScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:omdsh-dev/dsh-deep-research在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 omdsh-dev/dsh-deep-research:先查看仓库 https://github.com/omdsh-dev/dsh-deep-research 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
为 DeepSeek Harness 注册一个名为 deep_research 的工具,让模型在面对"调研/对比/文献搜集"类请求时,按控制论+信息论设计的多轮自适应流程自动拆题、并行研究、收尾成稿并可选对抗审查,整套跑在宿主官方 workflow 引擎上、复用内置 web 工具。
核心能力
- 注册
deep_research工具,由模型按工具描述自动触发,调用即启动一次完整研究流程(src/index.ts:401-413) - 自动定义答案空间与信息维度:先由规划代理声明这份研究要支撑什么判断,再按维度拆解子问题并声明覆盖盲区(src/index.ts:207-240)
- 多轮自适应研究闭环:第一轮并行研究所有子问题,每轮把高优先级信息缺口自动派发下一轮补充研究,规划盲区会被定向侦察验证而非静默接受(src/index.ts:275-312)
- 综合子代理按"率失真"原则压缩为带置信度与来源的最终报告,明确保留不确定性与已验证盲区(src/index.ts:335-351)
- 可选对抗性审查:引用纠错(URL 是否可达/支撑结论)、覆盖度审计、矛盾与过度自信标注(src/index.ts:353-373)
- 复用官方 workflow 引擎与内置 web_search/web_fetch:零自研编排、零自研网络逻辑,子代理继承宿主工具集(src/index.ts:483-516)
技术实现
- 语言: TypeScript(ESM,原生 TS 源码,erasable-only 语法约束,无构建步骤即可被 Node 22+ 原生类型剥离加载;编译产物在 lib/types/,package.json#main 也指向那里)
- 关键依赖:
@deepseek-ai/dsh-tools(工具注册)、@deepseek-ai/dsh-workflow(WorkflowMeta 类型与官方引擎)、cordis^4.0.0-rc.7(插件宿主框架) - 架构模式: cordis 插件,
export const inject = ['tools', 'workflows'];在 apply 中通过ctx.tools.register注册deep_research工具,工具执行时通过ctx.workflows.start把一段静态工作流脚本(String.raw 字面量,含规划/研究/综合/审查四阶段)提交给官方引擎跑在 worker 线程上;并通过cordis.patch.yml把插件行插入 profile 的 bundles - 入口文件:
src/index.ts(name/inject/apply导出位于 67-70 / 386-539;运行时被宿主加载)
适用场景
需要就复杂主题写一份带引用、能经得起追问的研究报告的人——比如"调研一下 MCP 生态现状并对比几家主流实现"、"按这份问题清单做选型研究"、"给我一份带文献支撑的 XX 行业分析"。在对话里直接说需求即可,模型会自己判断要不要走 deep_research,并按"用途越明确,答案空间越准"的原则生成更聚焦的报告。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness | 未声明 | 通过 dsh.bundle.patch(cordis.patch.yml)注入到任何在 dsh.profile.bundles 列出本包的 profile;运行时要求宿主已加载 @deepseek-ai/dsh-workflow 提供的 ctx.workflows provider |
| Node | ^22.19.0 || >=24.0.0 | package.json#engines;erasable-only TS 依赖 Node 22.19+ 的原生类型剥离与稳定的 stripTypeScriptTypes |
| 平台 | 跨平台 | 纯 TypeScript,无原生模块;搜索/抓取由宿主内置工具承担,不引入平台特定依赖 |
| 原生模块 | 无 | 仅依赖 cordis 与 DSH 官方包;不引入 native binding |
| 官方 web 工具 | 内置 | 必须随宿主可用(web_search / web_fetch 由子代理继承);@deepseek-ai/dsh-tools / @deepseek-ai/dsh-workflow 由 profile 组合提供 |
安装方式
dsh plugin --profile web add github:omdsh-dev/dsh-deep-research
若 pnpm 把 https URL 重写成 git+ssh(本机全局 git
insteadof配置所致),显式用git+https://...形式;如dsh plugin提示需要allowBuilds,按提示在$DSH_HOME/profiles/<name>/pnpm-workspace.yaml加一行即可。profile 必须在dsh.profile.bundles列出本包才会被注入。
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
subagentProvider | 字符串 | 子代理 provider 覆盖,传给 workflow run | 引擎默认 spawn |
maxParallel | 正整数 | 每轮研究子问题并发上限 | 4 |
maxTotalAgents | 正整数 | 整次运行子代理总数上限;null/undefined 表示沿用引擎默认 | 引擎上限 |
plannerModel | 字符串 | 规划代理使用的模型(建议用强模型) | 继承父配置 |
researcherModel | 字符串 | 研究代理使用的模型(可用便宜模型降本) | 继承父配置 |
synthesizerModel | 字符串 | 综合代理使用的模型(建议用强模型) | 继承父配置 |
reviewerModel | 字符串 | 审查代理使用的模型;未配置时回落到 synthesizerModel | 继承父配置(缺省回落到综合模型) |
模型分级是按 OpenAI 指南设计的:规划/综合/审查吃模型能力,研究代理是"高频低价值"环节可换便宜模型;这是按角色配置而非单模型,覆盖原 profile 路由。
常见问题
Q: 这个插件和官方 .claude/skills/deep-research 是同一回事吗?
A: 不是。前者是 cordis 插件,挂在官方 workflow 引擎上跑,注册模型可见的 deep_research 工具;后者是 skill 体系,由模型按 skill 描述触发。README 与源码都明确两者独立、互不替代,按需选用。
Q: 安装后需要额外配置吗?
A: 不需要。Config 全部可选,按默认值也能跑。最常见的优化是按角色分层模型——规划/综合/审查用强模型、研究代理换便宜模型,能显著降本。
Q: depth 参数到底是几轮?
A: depth 等于研究阶段的最大轮次减一:1=初步(最多 2 轮),2=深入(默认,最多 3 轮),3=穷尽(最多 4 轮)。达到上限就停;更常见的停机条件是某一轮没有新增 high-priority 缺口(边际信息增益≈0)。
Q: 有些 Web Profile 装上后没生效怎么办?
A: 本插件运行时依赖官方 workflow provider(ctx.workflows)。如果 profile 没声明该 provider,loader 会保持 pending;此时要么在 DSH Hub 登记 workflows provider 关系,要么改用已经提供该服务的 profile 组合。
Q: 我已经列好问题了,怎么跳过自动拆解?
A: 把问题清单作为字符串传给 questions(每行一条,或 1./2./3. 编号均可),插件会跳过规划阶段直接进入并行研究;如果第一轮就拿到全部证据,一轮收敛。
Q: 怎么升级和卸载?
A: 升级 dsh plugin --profile <profile> update;卸载 dsh plugin --profile <profile> remove @dsh-external/dsh-deep-research,或者从 profile 的 package.json 移除依赖后再次 update。
上手难度
入门 — 安装一行命令即可使用,所有配置都有默认值;只有想把模型按角色分层降本、或把研究深度拉满到穷尽模式时才需要看 depth/模型配置。
已知问题与限制
- 必须由 DSH 官方 workflow provider 与内置 web_search/web_fetch 提供运行时能力;若目标 profile 未声明 workflows provider(如部分 Web Profile 组合),loader 会保持 pending(README.md:117-122)
- 工具入参
topic不能为空、depth仅接受 1/2/3,否则在进入ctx.workflows.start之前直接抛错(src/index.ts:464-472 / test/regression.test.mjs:516-569) - 工具内部判断
result.stopReason !== 'completed'会抛错,maxTotalAgents传 0 会被引擎直接判为 INVALID_ARGUMENT——所以 null/undefined 表示沿用引擎默认,绝不写入 0(src/index.ts:394-396 / 521-531) - 源码必须保持 erasable-only TS 语法(无 enum/namespace/参数属性),否则 Node 22 的原生类型剥离会响亮抛错(src/index.ts:53-58)
把 deep-research 流程做成 DSH 扩展插件(plugin,与 skill 体系分开),
基于 DSH 官方 workflow 引擎(ctx.workflows / @deepseek-ai/dsh-workflow-workerthread)
实现,按 控制论 + 信息论 设计——不是固定提示词流水线,而是活的、自适应的研究闭环。
理论 → 机制
| 理论 | 插件里的落地 |
|---|---|
| 控制论:参考信号校准(闭环控制错误目标 = 白费) | 规划代理先定义答案空间(scope:研究支撑什么判断/决策)与每个子问题的验收标准(acceptance),再开始研究 |
| Ashby 必要多样性定律(控制器多样性 < 系统多样性 ⇒ 必有盲区) | 规划代理枚举主题的信息维度,每个子问题映射一个维度,并输出覆盖度自检 coverage_gaps |
| 信息论:信息 = 不确定性的减少 | 研究子代理维护三态证据 confirmed / uncertain / gaps——条件熵的工程表达;报告保留置信度与矛盾,不掩盖不确定性 |
| 信息论:边际信息增益(EIG)递减 ⇒ 无限搜索是错的 | 每个研究子代理:预测(针对哪个高熵点、预期新增什么)→ 行动(web_search/web_fetch)→ 更新证据 → 边际增益验证;连续一轮零增益即停 + 轮次硬上限 |
| 控制论:自适应控制(流程是活的,不是固定脚本) | 研究阶段是闭环再规划:第 1 轮并行研究全部子问题;每轮结束收集 high-priority 缺口 → 自动派发下一轮补充研究;规划声明的"盲区"会被定向侦察验证(假设被实验检验而非静态接受);简单主题一轮收敛,复杂主题自动扩展,直到边际增益 ≈ 0 |
| 信息论:率失真(给定"率"最小化失真) | 综合子代理把证据有损压缩为最终报告:只保留对结论有区分度的信息,决策有用性最大化 |
| 信息论:信道冗余/纠错(对抗幻觉=噪声) | 可选对抗性审查子代理 = 奇偶校验:引用抽查(URL 可达性/支撑性)、覆盖度审计、矛盾与过度自信标注 |
结构
dsh-deep-research/
├── package.json # @dsh-external/dsh-deep-research(声明 dsh.bundle.patch)
├── cordis.patch.yml # bundle 补丁:按包名插入插件行
├── src/index.ts # cordis 插件:注册 deep_research 工具,提交官方 workflow 脚本(原生 TS,零构建)
├── tsconfig.json # typecheck 配置(project references 解析到 sibling deepseek-harness 源码)
└── README.md
开发与检查
pnpm install # 仅 typescript/@types/node(typecheck 用)
pnpm run typecheck # tsc -b,类型从 sibling deepseek-harness checkout 解析
源码即运行时:包入口直接指向 src/index.ts,无构建步骤。profile 安装的副本位于
node_modules 下,由 dsh 源码启动器的 tsx hook 加载(Node 原生类型剥离拒绝
node_modules 内的文件);源码 checkout 在 node_modules 外直跑时也可用 Node ≥22.18
原生剥离。要求 erasable-only TS 语法(无 enum/命名空间等),
node --test/pnpm typecheck 会挡住不可移植写法。
安装与使用方式
包声明了 dsh.bundle.patch(cordis.patch.yml),通过 dsh plugin 装进任意 profile
(把 <profile> 换成 tui / headless / web 或自建 profile):
dsh plugin --profile <profile> add git+https://github.com/dsh-external/dsh-deep-research.git
dsh --profile <profile> # 重启生效:工具 deep_research 随 profile 注入
若 pnpm 把 https URL 重写成 git+ssh(本机全局 git
insteadof配置所致),用上面的git+https://形式;dsh plugin会提示需要allowBuilds时按提示在$DSH_HOME/profiles/<name>/pnpm-workspace.yaml加一行即可。
工具由模型按工具描述自动触发(深度研究/调研/多源信息综合分析/研究报告/文献搜集), 对话中直接说人话即可:
- 「深度调研一下 MCP 生态现状,重点对比几家主流实现,出一份带引用的报告」
- 「按这份问题清单做研究:1. ... 2. ...」(已有清单 → 跳过自动拆解,直接并行研究)
- 「调研一下 A/B 方案,purpose 是决定我们选哪个」(用途越明确,答案空间越准)
- 复杂主题会自动扩展轮次(自适应闭环),简单主题一轮收敛;想要更严谨传
depth: 3, 要引用纠错和覆盖度审计传review: true。
成本建议:模型分层——规划/综合用强模型、研究用便宜模型(配置
plannerModel/researcherModel/synthesizerModel/reviewerModel),可显著降本。
依赖要求:profile 的组合必须包含官方 workflow 引擎与内置 web 工具——dsh 官方
base 组合自带,无需额外安装;peer 依赖(@deepseek-ai/dsh-tools 等)由组合提供,
profile 的 autoInstallPeers: false 可避免向 registry 查找未发布的 @deepseek-ai/*。
更新 / 卸载:
dsh plugin --profile <profile> update
dsh plugin --profile <profile> remove @dsh-external/dsh-deep-research
# 或:从 profile 的 package.json 移除依赖后 dsh plugin --profile <profile> update
工具参数
| 参数 | 必填 | 说明 |
|---|---|---|
topic | 是 | 研究主题 |
purpose | 否 | 研究用途(要支撑的判断/决策)——用于定义答案空间;缺省时规划代理声明假设用途 |
questions | 否 | 已有问题清单(每行一个);提供则跳过自动拆解 |
depth | 否 | 精度/容差:1=初步 2=深入(默认)3=穷尽——决定研究闭环轮次上限(depth+1) |
synthesize | 否 | 综合子代理出最终报告(默认 true);false 只返回三态证据 |
review | 否 | 对抗性审查(默认 false):引用纠错 + 覆盖度审计 + 矛盾/过度自信标注 |
配置(可选)
| Key | 默认 | 说明 |
|---|---|---|
subagentProvider | 引擎默认 spawn | 子代理 provider |
maxParallel | 4 | 每轮研究并发上限 |
maxTotalAgents | 引擎上限 | 整次运行子代理总数上限 |
plannerModel / researcherModel / synthesizerModel / reviewerModel | 继承父配置 | 模型分级(OpenAI 指南:规划/综合用强模型,执行用便宜模型) |
设计说明
- plugin ≠ skill:不注册进
ctx.skills;触发靠工具描述(深度研究/调研/多源信息综合分析等)。 - 复用官方能力:编排走官方 workflow 引擎(worker 隔离、并发/总数 caps、取消、进度事件、
wf-runs记录);搜索/抓取走内置web_search/web_fetch——插件零网络逻辑、零自研编排。 - 不碰 TUI:无 tuiPrompt / overlay / system-prompt 注入,规避 prompt 槽位 disposed 类崩溃。
- 取消传播:
exec.signal传入 workflow run,取消时子代理随之中止。 - 失败隔离:单个子问题研究失败只在该节标注;规划失败则工具报错,主代理可调参重试。
- 技能模板(
.claude/skills/deep-research)保留不动,两者独立。
Profile 兼容性
本插件运行时依赖 DSH 官方 workflow 引擎(ctx.workflows,peer:@deepseek-ai/dsh-workflow)。
请把它安装进提供 workflows provider 的 Profile(如 tui/headless 组合);若 Profile 未声明
该 provider(如部分 Web Profile 组合),Loader 会保持 pending——此时请先在 DSH Hub 登记
workflows provider 关系或改用提供该服务的组合。编译产物(lib/types/index.js)为官方
0810 生产入口,Node 原生可加载。
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/omdsh-dev/dsh-deep-research)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。