- Главная
- Плагины
- Инструменты и функции
- deepseek-harness-harness
deepseek-harness-harness
zyygkg/deepseek-harness-harness
DSHSH — a harness that harnesses your harness
Установка
dsh plugin --profile web add github:zyygkg/deepseek-harness-harnessREADME
deepseek harⁿess
aka DSHSH · a harness that harnesses your harness · harness 的 harness · 你的 harness 的 harness
⚠️ 递归警告
本插件需要一个 harness 才能 harness harness。
如果你没有 harness,请先 harness 一个 harness。
若报错 harness not found,说明你的 harness 还不够 harness。
把用户原始要求交给免费网页版 DeepSeek 求解,再返回给 DSH agent 执行 —— 无需 API key。 插件通过 BrowserSkill(bsk CLI + daemon)驱动本机已登录的浏览器,在 chat.deepseek.com 上完成 真实交互:生成提示词 → 填入并发送 → 等待流式回复完成 → 提取全文。
名字怎么读
没人问,但我要讲。
| 写法 | 读法 | 用在哪 |
|---|---|---|
deepseek-harness-harness | deepseek harness harness | npm 包名 / GitHub 仓库名(唯一合法形态:npm 与 GitHub 都不允许空格、撇号和上标) |
| DSHSH | 「迪-艾斯-艾尺-艾斯-艾尺」;熟人可直接读「嘶——」 | 聊天、issue 标题、日常称呼 |
deepseek harⁿess | deepseek harness 的 n 次方 | 封面、群聊吹牛(Unicode 上标,包名里用不了) |
DSH² | 「DSH 平方」 | 数学好的朋友 |
harness ⊃ harness ⊃ harness | —— | 哲学讨论 |
顺带一提,DSHSH 也可以读成 DeepSeek Harness SHell —— 给你本来就很强的 harness,再套一层 shell。反正怎么念都对。
工作流程
用户要求 ──► web_deepseek_solve(request) ──► 插件生成高质量提示词
│ 驱动浏览器发送到 chat.deepseek.com
│ 等待回复完成并提取全文
▼
网页版 DeepSeek 的「解决方法」
│
▼
DSH agent 拿到 answer 继续执行落实
- 输入只有一个参数:
request—— 用户原始要求(API 仅基于用户要求工作)。 - 提示词由插件内置模板自动生成(结构化的「问题分析 → 解决方案 → 注意事项 → 验证方法」输出要求),
模板可在配置中覆盖(
promptTemplate,占位符{request})。 - 返回
{ request, prompt, answer, chatUrl, complete, stats },agent 读取answer后用其他工具执行。
工具
| 工具 | 参数 | 说明 |
|---|---|---|
web_deepseek_solve | request(必填)、newChat(可选) | 一次「发要求 → 取解答」的完整调用,同一时间只允许一个调用 |
依赖
本插件的唯一运行时依赖是 BrowserSkill 的 bsk CLI + daemon(通过 node:child_process 调用),
不需要 API key,也不依赖 browser-skill 的 DSH 插件包。
- BrowserSkill 仓库(CLI + 浏览器扩展,必需):https://github.com/Tencent/BrowserSkill
- CLI 一键安装脚本见该仓库 README,安装后位于
~/.local/bin/bsk(Windows:%USERPROFILE%\.local\bin\bsk.exe) - 浏览器需安装其扩展并与 daemon 连接(
bsk status的browsers列表能看到实例) - 可选的 DSH 工具插件(与本插件无关,仅当同时想把 browser_* 工具暴露给模型时安装):
npm 包
@wxg-prc-cpg/browser-skill-dsh-plugin
- CLI 一键安装脚本见该仓库 README,安装后位于
- 浏览器已登录 chat.deepseek.com(登录一次后状态保留;未登录时工具会返回明确错误)
- 主机能访问 chat.deepseek.com
安装前检查清单(逐项确认,避免「缺少依赖」类报错)
- bsk CLI 可用:
bsk --version有输出。 - bsk daemon 运行中:
bsk status --json返回pid,且browsers列表有已连接的浏览器实例。- daemon 是前台常驻进程,必须持久运行:
bsk daemon start --foreground - ⚠️ 在 DSH 的沙箱子进程里执行
bsk daemon start(后台化模式)会失败 (Windows Job Object 禁止 breakaway,报拒绝访问 (os error 5))——请在独立终端 运行,或注册登录计划任务(见下文),或保持插件autoStartDaemon: true(由 DSH 主进程拉起; 部分环境可能失败,失败时工具会给出明确提示)。
- daemon 是前台常驻进程,必须持久运行:
- 浏览器已登录 chat.deepseek.com:在 bsk 打开的浏览器窗口人工登录一次即可。
- DSH 版本:已在 0.2.0-rc.2(desktop profile) 验证。插件手写标准 JSON Schema 注册工具,
不依赖
defineTool(其 0.2.0-rc.2 的 schema 编译器不接受旧插件惯用的{type:'json'}写法), 理论上兼容 0.1.5-rc.3+,但未逐一验证。
Windows 下让 daemon 常驻(登录计划任务,重启机器后自动拉起)
:: 保存为 C:\bsk-tasks\start-daemon.bat(注意:不要放在 .bsk 这类点号开头的目录里,
:: schtasks 引用点目录中的文件会报 0x80070002)
"C:\Users\<用户名>\.local\bin\bsk.exe" daemon start --foreground >> C:\bsk-tasks\daemon.log 2>&1
schtasks /Create /TN "BSK Daemon" /TR "C:\bsk-tasks\start-daemon.bat" /SC ONLOGON /F
schtasks /Run /TN "BSK Daemon"
安装
方式 A:npm 包(发布后)
在 DeepSeek Harness 的插件管理中 install_bundle,目标填包名:
install_bundle target: deepseek-harness-harness
方式 B:从 GitHub clone 后本地安装(推荐,当前最稳妥)
git clone https://github.com/zyygkg/deepseek-harness-harness.git
然后在 DeepSeek Harness 的插件管理中安装本地目录(把路径换成你自己的 clone 位置):
install_bundle 目标: file:D:/path/to/deepseek-harness-harness
⚠️ 安装是 pnpm 的快照复制:之后修改插件代码,必须同步覆盖
profiles/<profile>/node_modules/deepseek-harness-harness/中的副本,然后重启 DeepSeek Harness 应用 才会加载新代码(set_bundle热应用不清 ESM 模块缓存)。 重复install_bundle同一目标会报ambiguous-install:先remove_bundle再装。
2. 在 profile 的 cordis.patch.yml 中配置(所有字段都有默认值)
- id: webdeepseek
name: deepseek-harness-harness
config:
bskPath: 'C:\Users\<用户名>\.local\bin\bsk.exe' # bsk CLI 绝对路径(推荐)
deepseekUrl: 'https://chat.deepseek.com/'
pollIntervalMs: 1500 # 完成检测轮询间隔
stablePolls: 3 # 连续 N 次文本不变即判定回复完成
timeoutMs: 600000 # 单次调用总超时(含等待网页回复)
pageReadyTimeoutMs: 30000 # 等待输入框出现
reuseSession: true # 复用浏览器会话与网页对话上下文
autoStartDaemon: true # daemon 未运行时尝试自动启动
deepThink: false # 新对话时是否点开「深度思考」
promptTemplate: '...' # 覆盖内置提示词模板({request} 占位符)
配置项
| 字段 | 默认值 | 说明 |
|---|---|---|
bskPath | bsk | bsk CLI 路径(DSH 进程 PATH 不含 ~/.local/bin,建议写绝对路径) |
deepseekUrl | https://chat.deepseek.com/ | 网页版地址 |
promptTemplate | 内置中文模板 | 提示词模板,{request} 替换为用户要求 |
pollIntervalMs | 1500 | 完成检测轮询间隔(毫秒) |
stablePolls | 3 | 回复文本连续不变 N 次判定完成 |
timeoutMs | 600000 | 单次调用总超时(毫秒) |
pageReadyTimeoutMs | 30000 | 导航后等待输入框出现(毫秒) |
daemonReadyTimeoutMs | 10000 | 自动启动 daemon 后等待就绪(毫秒) |
deepThink | false | 新对话时是否启用「深度思考」 |
reuseSession | true | 复用浏览器会话;false 每次打开新对话 |
autoStartDaemon | true | daemon 未运行时尝试自动启动 |
完成检测原理
发送后轮询页面 DOM:
- 新回复出现(
.ds-assistant-message-main-content数量增加); - 发送按钮不再是「停止」图标(生成中为停止方块,完成后为发送箭头);
- 回复文本长度连续
stablePolls次轮询不变。
三个条件同时满足即判定完成,提取最后一条回复全文。超时兜底返回已生成的部分文本并标记 complete: false。
限制与说明
- 依赖网页版 UI 结构(
.ds-assistant-message-main-content等选择器),DeepSeek 改版后可能需要更新选择器(集中在PROBE_EXPR常量)。 - 单会话串行:共享同一浏览器会话与网页对话,同一时间只执行一个调用。
- 网页版偶发的验证码/风控需要人工在浏览器窗口处理(登录态、验证通过后重试即可)。
- bsk daemon 是前台常驻进程;建议用登录计划任务常驻(见上文),插件也会在
autoStartDaemon: true时尝试自动拉起。
GitHub 建库 / 发布注意事项
package.json已配好files(lib、cordis.patch.yml、README.md)与dsh.bundle.patch(指向 cordis.patch.yml),npm pack --dry-run可预览发布内容;记得补 LICENSE(package.json 声明 MIT)。- 发布 npm 时走 npmjs registry(
publishConfig.access建议显式声明);无 scope 包名存在被抢注风险,可考虑@your-scope/deepseek-harness-harness(DSH 的install_bundle对 scope 包名无限制,注意 cordis.patch.yml 里的name必须与发布包名一致)。 - 本插件 peer 依赖仅
@deepseek-ai/schemastery(optional):任何安装环境都不会因缺 peer 而拒绝安装;@deepseek-ai/dsh-tools/@deepseek-ai/cordis由 DSH 运行时提供,不要把它们写进 dependencies。 - 当前版本已在 DSH 0.2.0-rc.2 验证;若未来 DSH 升级导致激活失败,先看插件管理日志里的
application: failed诊断(常见为 schema/模块缓存两类问题,处理方式见上文)。
致谢
项目命名:@yyxxyy511
本插件最初叫 dsh-webdeepseek —— 一个平平无奇、看完就忘的名字。
是 @yyxxyy511 提出了 deepseek-harness-harness。
从此这个项目有了两个 harness、一句读不完的绕口令、一个所有人都念不对的缩写(DSHSH),
以及一个每次都要向别人解释自己名字的开场白。
没有这个名字,这里只是一个 DeepSeek 转接器; 有了它,这里成了一个需要反复解释自己名字的项目。
按照本项目的精神,他的名字也应该这样念:
DeepSeek Harness 的
deepseek-harness-harness 的
DeepSeek Harness 的
yyxxyy511 的
deepseek-harness-harness 的……
(可以一直读下去)
其他
- @zyygkg —— 插件实现、文档与发布
Похожие плагины
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill