前言¶
在 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。
安装与启用¶
图形界面¶
- 打开 Plugins,点击 Add plugin。
- 输入
@octen.ai/dsh-octen,点击 Install。 - 进入该插件页,在 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 支撑联网任务。