前言¶
在 DeepSeek Harness(DSH)里做智能体时,模型往往只在用户显式调用 web_search 时才去查网。话题涉及版本号、新闻或价格时,回答容易滞后,也不方便在正文里用 Markdown 链接标出来源。
下面介绍社区插件 dsh-web-think(维护者 muodin):在每一轮用户消息的第一次模型请求之前,自动执行一次 Web 检索,把可引用的来源注入上下文,并通过系统提示词要求模型优先采用检索结果并标注链接。插件归类为「联网工具」,当前 GitHub 星标为 0,版本 0.1.0,许可证 MIT。
这是什么¶
dsh-web-think 是 DSH Host 插件:零第三方依赖、无构建步骤,纯 ESM,约 16 KB。它复用 DSH 的 ctx.web.search(),与内置 web_search 工具共用同一套可插拔搜索 provider(DSH 桌面版默认多为 DeepSeek 官方联网检索)。
前提:本机已安装 DSH Desktop 或 dsh CLI,且当前 profile 里配置了可用的 ctx.web 搜索 provider。
核心功能¶
每一轮都检索¶
不是只在话题变化时检索——用户每次发消息,都会在当轮第一个 agent step 之前联网。同一 agent 的同一 turn 只检索一次(同轮去重)。
查询与短追问¶
检索查询来自本轮真实用户消息(source.kind === "user")。像「继续」「好的」这类短追问会并入上一条用户消息作为检索上下文。
注入格式与安全¶
检索结果以 source.kind = "web-think" 的 user 消息追加到本步请求;内容包含查询、时间、来源标题 / 链接 / 摘要 / 发布日期,并附带外部内容仅作资料、不得当作指令的安全说明。插件还可通过 ctx.systemPrompt.section() 注册引用规范,减少模型「假装检索过」的情况。
失败与取消¶
超时、无可用 provider 等失败会注入说明,引导模型改用 web_search 或如实告知用户;默认单次检索超时 20 秒。用户停止或取消本轮时会中止检索。
工作原理(摘要)¶
在 agent/pre-step 的 waterfall 中拦截每一轮的第一个 step:取出 step 1 的消息批次 → 提取查询 → 调用 ctx.web.search({ query, maxResults }, signal) → 注入消息并注册系统提示词段落。
安装与启用¶
方式 A:插件管理器(推荐)¶
在 DSH 插件管理器(Creator 模式插件页,或 plugin_manager 工具)中安装 bundle,目标填:
git+https://github.com/muodin/dsh-web-think.git
安装后管理器会把 dsh-web-think 选入 profile 的 dsh.profile.bundles;HMR 开启时通常立即生效。
方式 B:手动安装(以 desktop profile 为例)¶
- 在 profile 目录安装依赖:
cd ~/.dsh/profiles/desktop
pnpm add "dsh-web-think@git+https://github.com/muodin/dsh-web-think.git"
- 编辑
~/.dsh/profiles/desktop/package.json,将"dsh-web-think"加入dsh.profile.bundles:
{
"dsh": {
"profile": {
"bundles": [ "…", "dsh-web-think" ]
}
}
}
-
HMR 开启时保存后自动重载;否则重启 DSH。
-
用
dsh --profile desktop --dump-config或插件列表确认组合树中出现id: web-think。
说明:DSH Desktop 的 desktop profile 由应用管理,不能用 dsh plugin CLI 直接管理;CLI profile 可用 dsh plugin --profile <name> add …,但仍需把 bundle 写入 dsh.profile.bundles。
卸载:从 dsh.profile.bundles 和 profile 依赖中移除 dsh-web-think,然后重启 DSH。
配置¶
在 profile 的 cordis.patch.yml 中可覆盖插件行配置,例如:
# ~/.dsh/profiles/<profile>/cordis.patch.yml
- id: web-think
config:
maxResults: 8
timeoutMs: 30000
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
promptSection |
true |
是否注册系统提示词说明 |
maxResults |
5 |
每次检索来源条数上限 |
timeoutMs |
20000 |
单次检索超时(毫秒) |
maxQueryChars |
400 |
查询文本上限 |
maxSnippetChars |
200 |
每条来源摘要上限 |
maxAnswerChars |
1200 |
检索摘要上限 |
maxMessageChars |
6000 |
注入消息总长度上限 |
includeSnippets |
true |
是否附带来源摘要 |
log |
false |
是否输出 debug 日志 |
HMR 开启时配置改动可即时生效;修改 Host 代码 index.js 需重启 DSH。
典型用法与验证¶
安装并启用后,正常在 DSH 里对话即可——无需每轮手动点搜索。适合需要时效性事实、文档版本或外部资料交叉验证的开发与问答场景。
验证方式(来自项目 README):
- 发出下一条用户消息后,在会话日志
~/.dsh/sessions/<workspace>/<session>/session.v4.jsonl.zstd中应能看到source.kind === "web-think"的user/message事件; - 模型回答宜带 Markdown 来源链接;
- 将
log设为true时,Host 日志可见web-think: turn N searching "…"。
注入内容形态可参考仓库 README 中的示例块(含「自动联网检索 · web-think」标题与来源列表)。
适用场景与注意¶
适合谁:希望默认「先查再答」、又希望与 DSH 内置搜索后端一致的 DSH 用户;子 agent 的轮次同样会触发检索。
延迟与 token:每一轮都会检索(含寒暄),通常增加约 1–10 秒延迟;注入消息以 user 角色持久化在会话中,占用上下文 token。检索质量取决于所配置的搜索后端。
兼容性:README 记载在 DSH Desktop Next 2.0.18-next(deepseek-harness 0.2.1-alpha.2)上测试通过;仅使用公开扩展点 agent/pre-step、ctx.web.search()、ctx.systemPrompt.section()。
安全与信任:插件以当前 DSH 进程权限运行,会调用联网搜索并改写当轮请求上下文。安装前请阅读 源码 与 MIT 许可证,确认 bundle 来源可信。社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
UI:未做 Chat UI 定制,注入消息在对话中以普通 user 消息样式显示。
结尾¶
dsh-web-think 把「每轮自动联网 + 可引用来源注入」做成 Host 层固定流程,与手动调用 web_search 互补;失败时也不静默跳过,便于继续用工具补检。