dsh-octen:用 Octen 接管 DSH 的 web_search 与 web_fetch

前言

在 DeepSeek Harness(DSH)里做需要联网的智能体时,模型调用的通常是内置 web_search 和 web_fetch,工具名和 schema 不变,但背后走哪条搜索与抓取链路,会直接影响结果质量和页面正文形态。若你希望搜索与正文抽取都交给 Octen 的 API,又不想额外学一套新工具,可以在 Harness 的 web 接缝(ctx.web)上挂一个 provider 插件。下面介绍社区插件 dsh-octen(npm 包名 @octen.ai/dsh-octen,仓库 Octen-Team/dsh-octen),由 Octen-Team 维护,分类为联网工具。

这是什么

dsh-octen 把 Octen 注册为 DSH 的 web provider:安装并配置 API 密钥后,内置 web_search 走 Octen 的 POST /search,web_fetch 走 POST /extract。模型侧看到的仍是原来的工具 schema,没有新增工具名。

内置工具 Octen 端点 返回给模型的内容
web_search POST /search 每条结果的标题、URL、与查询相关的摘要片段、发布时间
web_fetch POST /extract 页面主内容(干净 Markdown),并带页面标题

环境与依赖

  • DeepSeek Harness 0.2.0-rc.2 或更高版本。
  • 在 octen.ai 申请 Octen API key。
  • 插件当前版本(package.json):0.1.0;许可证:MIT。

安装与启用

图形界面

  1. 打开 Plugins,点击 Add plugin。
  2. 输入 @octen.ai/dsh-octen,点击 Install。
  3. 进入该插件页,在 Octen API key 中粘贴密钥并 Save。

终端

按你实际使用的 profile 安装。桌面应用一般用 desktop;dsh web 用 web。

dsh plugin --profile desktop add @octen.ai/dsh-octen

若提示 command not found: dsh,在桌面应用中选择 DeepSeek Harness → Manage dsh Command… → Install,新开终端后再执行。若桌面应用在运行,安装后建议重启一次。

密钥也可在插件 Web UI 保存,或在启动 DSH 的环境中导出:

export OCTEN_API_KEY=your-key

安装完成后,web_search 与 web_fetch 默认都会指向 Octen。向智能体提一个需要时效信息的问题即可验证。

只让部分工具走 Octen

搜索与抓取可以分开配置。例如保留 Octen 搜索、抓取改回 Harness 自带的 HTTP fetch,在 profile 的 cordis.patch.yml(如 ~/.dsh/profiles/desktop/cordis.patch.yml)中加入:

- id: web
  config:
    searchProvider: octen
    fetchProvider: http

搜索改回内置实现时使用 searchProvider: deepseek-official。profile 的 patch 层在插件 patch 之后生效,因此会覆盖插件默认。

配置项

插件在 Cordis 中的 id 为 dsh-octen。字段均为可选,且每次调用会重新读取,改配置一般无需重启进程。

字段 默认值 含义
apiKeyEnv OCTEN_API_KEY 从 credentials 存储(Plugins 页写入)或环境变量读取密钥
apiKey 无 明文密钥;更推荐 apiKeyEnv,避免密钥进配置文件
baseURL 先读 $OCTEN_API_URL,否则 https://api.octen.ai Octen API 根地址;须为 HTTPS,或指向 localhost 的 HTTP。OCTEN_API_URL 来自进程环境或 ~/.dsh/.env,不会读项目目录下的 .env
extractTimeoutSeconds 25 单次 web_fetch 抽取超时(1–60 秒),宜低于 web_fetch 工具默认预算(30 秒)

示例:

- id: dsh-octen
  config:
    apiKeyEnv: TEAM_OCTEN_KEY
    extractTimeoutSeconds: 20

运行行为与错误

搜索: Harness 默认结果条数为 8,插件将其作为 count 传给 Octen;无 URL 的结果会被丢弃;缺少标题、摘要或日期时不会编造,而是省略对应字段。

抓取: 由 Octen 在服务端抽取正文,Harness 不再自行下载或转换 HTML。抽取成功时工具层报告 HTTP 200(Octen 不返回源站状态码)。抽取失败时工具调用失败,并带上 Octen 的原因,例如 Failed to resolve domain。

错误码: 未配置密钥时在发请求前失败,错误为 WEB_PROVIDER_CREDENTIAL_MISSING;密钥无效、余额不足、限流或服务端错误为 WEB_PROVIDER_ERROR 并附带 Octen 消息;取消为 WEB_ABORTED。

安全: 请求通过 x-api-key 头携带密钥;拒绝跟随重定向;仅允许 HTTPS 基址(或 localhost 的 HTTP)。项目 .env 不能改 API 端点,降低在不可信仓库中误配密钥出口的风险。

典型用法

安装并保存密钥后,无需改智能体提示词里的工具名,直接提问即可,例如:

  • 「查一下 Octen 文档里对 /search 的请求体字段说明。」
  • 「打开某新闻链接,用 web_fetch 总结正文要点。」

若只需搜索、不需 Octen 抽取,按上一节把 fetchProvider 设为 http 即可。

适用场景与注意

适合: 已在用 DSH 0.2.0-rc.2+,希望统一用 Octen 做联网搜索与正文抽取,且不想改模型侧工具契约的开发者。

注意:

  • 插件在当前 dsh 进程权限下运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
  • Octen 为付费/配额型 API 服务,需自行在 octen.ai 管理密钥与用量。
  • 社区插件目录 SkillHub 上的 dsh-octen 页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点为准(GitHub 上当前为 0 star)。

结尾

dsh-octen 的价值在于:在 DSH「一切皆插件」的 web 接缝上替换搜索与抓取后端,模型仍用原来的 web_search / web_fetch。装好 @octen.ai/dsh-octen、配置 OCTEN_API_KEY(或 Plugins 页密钥),即可用 Octen 的 /search 与 /extract 支撑联网任务。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜