为聊天模型走第三方订阅或网关(例如 OpenCode Go)的 DeepSeek Harness 会话提供基于已登录 DeepSeek 账号的网页搜索:注册 deepseek-account-search 提供方,用账号 token 调用官方 Search API,无需 DEEPSEEK_API_KEY 也能让内置 web_search 继续可用。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/Chip-G0202/dsh-deepseek-search-account/releases/latest/download/dsh-deepseek-search-account.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Chip-G0202/dsh-deepseek-search-account
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
一个很小的 DeepSeek Harness(DSH)插件:当你的聊天模型接的是外部非官方订阅/网关(例如 OpenCode Go、其他 Anthropic 兼容网关、pi-ai 等),只要 DSH 里已登录 DeepSeek 账号,内置 web_search 就仍然可用——搜索走 DeepSeek 官方 Search API、使用该账号的官方额度,不需要 DEEPSEEK_API_KEY。
适用情况
推荐在这些条件下使用:
- DSH 的聊天模型由第三方订阅/网关提供(OpenCode Go / Zen、其他 Anthropic 兼容端点、pi-ai 等),不是 DeepSeek 账号模型;
- 你已在 DSH 里登录 DeepSeek 账号(设置 → 账号),并且愿意让该账号承担搜索调用;
- 内置网页搜索报错
DeepSeek search has no API key for "DEEPSEEK_API_KEY",而你手上没有、或不想用 DeepSeek API Key。
这时 web_fetch 正常、只有 web_search 不可用。装上本插件后,搜索仍然走 DeepSeek 官方额度和 Search API,聊天所用的订阅(如 OpenCode GO)完全不受影响、也不会被搜索消耗。
不需要安装的情况:
- 聊天模型本身就是 DeepSeek 账号模型——官方提供方已经会用账号登录搜索;
- 你已经配置了
DEEPSEEK_API_KEY——官方提供方本来就可用(也可以在「插件 → 内置插件配置 → 网页搜索」里启用新版 Search API); - 你已经在用其他搜索提供方插件(Exa、Tavily、SearXNG、智谱等)并已满足需求。
为什么需要它
DSH 自带的搜索提供方(dsh-web-search-deepseek、dsh-web-deepseek-api)只在「发起搜索的会话」模型路由为 deepseek-account 时才使用 DeepSeek 账号登录:
ctx.get("agents")?.currentInitiator()?.session.requestContext()?.provider === "deepseek-account"
聊天走 OpenCode Go 时这个判断不成立,提供方转而解析 DEEPSEEK_API_KEY;没有 key 就报错。本插件在每次搜索时直接取 ctx.deepseekAccount.resolveToken(endpoint),不看聊天模型路由;只有账号登录不可用时才回退到 DEEPSEEK_API_KEY(Bearer)。
它做什么
- 在
ctx.webseam 上注册搜索提供方deepseek-account-search; - 默认走 DeepSeek 官方 Search API(
POST https://api.deepseek.com/v1/tools/search):一次请求约 0.5–1 秒,返回title/url/snippet/date,不产生辅助模型轮次、不消耗模型 token; - 保留旧的
mode: messages后端(Anthropic 兼容 Messages + 原生web_search_20250305服务端工具)作为显式回退; - 自带 bundle 补丁
cordis.patch.yml:注册提供方并把web.searchProvider固定为它,同时保持web.fetchProvider: http。
安装
从 GitHub 装进某个 profile
dsh plugin --profile desktop add github:Chip-G0202/dsh-deepseek-search-account
# 纯 `dsh web` 服务则用 --profile web
包内声明了 dsh.bundle,所以 dsh plugin add 会把它记录进 profile 的 bundles 并在启动时应用自带的 cordis.patch.yml,不需要手工写行。直接用本地目录安装也一样:
dsh plugin --profile desktop add /path/to/dsh-deepseek-search-account
也可以直接装 GitHub Release 里的预构建 tarball:
dsh plugin --profile desktop add https://github.com/Chip-G0202/dsh-deepseek-search-account/releases/latest/download/dsh-deepseek-search-account.tgz
装完重启 DSH(bundle 列表变化在启动时生效)。桌面版用 desktop profile,同上。
手工安装(文件路径行)
不想装包的话,把本目录放到一个固定路径,然后在 profile 的 cordis.patch.yml(~/.dsh/profiles/<profile>/cordis.patch.yml)里加两段:
- insert:
- id: web-search-deepseek-account
name: '/path/to/dsh-deepseek-search-account/provider.js'
config:
mode: search-api
count: 10
- id: web
name: '@deepseek-ai/dsh-web'
config:
searchProvider: deepseek-account-search
fetchProvider: http
注意:DSH 的配置热更新不会因为同一行插件模块路径变化而重新 import 模块。改了 provider.js 之后要重启 DSH,或把该行临时改成 disabled: true 保存、再改回来,才会加载新代码。
配置
以 bundle 方式安装时,插件行位于本包的 cordis.patch.yml 中。如需覆盖,在 profile 补丁里写一个 id 定向覆盖(要带上同样的 name):
- id: web-search-deepseek-account
name: dsh-deepseek-search-account
config:
mode: search-api
count: 8
| 键 | 默认 | 说明 |
|---|---|---|
mode |
search-api |
search-api = 官方 Search API;messages = Anthropic Messages + web_search_20250305 服务端工具 |
baseURL |
https://api.deepseek.com/v1/tools |
Search API 基址(追加 /search) |
count |
10 |
每次 Search API 请求的条数,1–50;工具侧 searchMaxResults 更小时以更小者为准 |
sendOriginalQuestion |
true |
是否发送 ori_question(会话最近一条用户提问,≤128 字符) |
apiKey / apiKeyEnv |
未设置 / DEEPSEEK_API_KEY |
账号登录不可用时的 API Key 回退 |
messagesBaseURL |
https://api.deepseek.com/anthropic/v1 |
仅 mode: messages(追加 /messages) |
model |
deepseek-flash |
仅 mode: messages |
apiVersion |
2023-06-01 |
仅 mode: messages(官方文档说明该头会被忽略) |
maxTokens |
4096 |
仅 mode: messages |
maxUses |
5 |
仅 mode: messages,每次请求最多几轮服务端搜索 |
计费与额度
- 默认的
search-api后端按 成功请求 计费:5 元 / 1000 次成功请求(约 0.005 元一次),自北京时间 2026-11-01 00:00 起由 DeepSeek 账号承担;失败、空结果、超时不计费。详见官方 网页搜索与抓取指南。 - 搜索不消耗聊天模型 token,也不占用聊天所用的订阅(如 OpenCode GO)的模型额度;只涉及 DeepSeek 账号的搜索用量。
- 每次搜索约 0.5–1 秒。
mode: messages不同:每次搜索要消耗一个完整辅助模型轮次(数千输入 token、4–6 秒),而且自同一日期起服务端工具触发的搜索同样按次计费。仅建议作为回退。
安全
- DeepSeek 账号 token 每次搜索从 DSH 凭据服务读取(
ctx.deepseekAccount.resolveToken),并且只发往api.deepseek.com(账号服务会校验 origin)。 - 插件不把 token 写入磁盘,也不把 token 暴露给浏览器。
- 零运行时依赖、无安装脚本:纯 ESM,只用
node:内建模块和全局fetch。
要求
- DeepSeek Harness
0.2.1-rc.5及以上(依赖ctx.webseam 与deepseekAccount服务)。 - 已在 DSH 登录 DeepSeek,且能访问
api.deepseek.com。 - Node.js 22+(DSH 桌面版自带运行时)。
验证与排错
scripts/verify.mjs 会完全按 harness 的方式跑一次真实搜索(使用 ~/.dsh/.credentials.yaml 里的真实账号 token,token 不会离开进程):
NODE="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/primary-runtime/dependencies/node/bin/node"
"$NODE" scripts/verify.mjs "查询词" # 官方 Search API,约 0.4–0.6 秒,带 snippet
"$NODE" scripts/verify.mjs "查询词" --messages # 旧 Messages 后端,约 4–6 秒
搜索失败时会返回结构化错误:WEB_PROVIDER_CREDENTIAL_MISSING(未登录且没有 API Key)、WEB_PROVIDER_ERROR(HTTP/网络问题,会附上实际使用的端点)、WEB_ABORTED(被取消)。如果账号登录被拒,重新登录 DeepSeek 即可,不需要改端点。
卸载
dsh plugin --profile desktop remove dsh-deepseek-search-account
会移除包及其 bundle 层,不动 profile 自身的其它配置。手工安装方式则删掉上面那两段配置。
许可
MIT
链接
同类插件
Tencent/BrowserSkill#dsh-plugin-browserskill★ 9929
BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edge Agent Window,支持可访问性与 VOM 页面观察、截图、隔离的多会话控制和 Web UI 实时观察浮层。
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 966
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 911
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
DDDMUC/dsh-free-search★ 817
DSH 免费搜索插件:7 个引擎(DuckDuckGo/Bing/SearXNG 免费 + Exa/Perplexity/DeepSeek 付费)、自动回退、设置页 UI(API key 输入 + 官网链接)、web_fetch、引擎测试工具。
Fisfzy/dsh-ego-browser★ 395
用 35 个结构化工具从 DeepSeek Harness 驱动真实 Chrome/Chromium:导航、语义快照、点击、表单、JavaScript/CDP、截图、下载与标签页管理;右侧边栏实时镜像页面,并支持鼠标键盘直接接管。插件自带受管 CDP 运行时,跨调用保留登录状态,并可通过配套 Chrome 扩展从日常浏览器导入 cookie。
wqty123/dsh-browser★ 162
共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。