前言¶
在 DeepSeek Harness(DSH)里做智能体会话时,模型常需要联网检索和语义化代码检索。若走 Devin / Windsurf 侧提供的 web_search 与只读 code_search,通常要先完成 Devin 登录,并在宿主里注册对应 provider 与工具。
社区里已有 dsh-devin-search 一类插件对齐上述能力,但旧版在 DSH 升级后曾出现「整行插件消失、无任何输出」的情况:根因之一是 bundle 版本兼容性闸门,以及运行时对 @deepseek-ai/dsh-* 精确版本、defineTool、官方 Client 内部组件等的耦合。维护者 gongstudent 发布的 dsh-devin-search-next(分类:联网工具)是对同一功能目标的抗版本漂移重写:零 DSH 运行时 import、不锁 engines.dsh,目标是 DSH 小版本升级后插件仍能自行加载。
下面介绍它是什么、如何安装,以及登录与两个开关的典型用法。
这是什么¶
dsh-devin-search-next 是 DSH 插件包(当前版本 1.0.4,MIT 许可证)。一次 Devin 登录后,可在会话中使用 Devin 提供的 web_search 与只读语义 code_search。Host 侧仅使用 Node 内建模块;Client 侧只 require('react'),dependencies / peerDependencies 为空,不声明 engines.dsh,因此不会被 DSH 的 bundle 版本闸门整包摘除。
与旧包 不要同时启用:两者都注册 id 为 devin 的搜索 provider,后注册者会被拒绝。应先停用 dsh-devin-search 再启用本包。
- 目录页:https://www.skillhub.cn/plugins/gongstudent/dsh-devin-search-next
- 源码与说明:https://github.com/gongstudent/dsh-devin-search-next
相对旧版做了哪些硬约束¶
README 归纳了四条设计规则,便于理解「为什么升级后还能起来」:
- 零 DSH 运行时 import:避免包改名或导出变更导致插件整体无法启动。
- 不导出
Config:两个功能开关写入插件自有设置文件,而非 Schemastery 运行时实例。 - 能力逐个探测、逐个降级:某个服务拿不到则少一项能力,不在
apply里抛错中断。 - 只依赖语义稳定的扩展点:如
ctx.get、ctx.inject、ctx.slots.inject/register;不使用已消失的configForms、uiConversation或官方内部 UI 组件。
核心功能¶
Devin 登录与会话¶
凭据保存在 $DSH_HOME/devin-search/session.json(POSIX 0600,原子写入),不经过 DSH 的 credentials 服务,也不写入会话日志或模型上下文。
从旧版升级时,会一次性只读导入 $DSH_HOME/.credentials.yaml 里未过期的 devin-search/session 记录,并写 $DSH_HOME/devin-search/legacy-import.json 标记;/devin-logout 后重启不会被旧记录重新登录。
web_search 与 code_search¶
- web_search:通过 Devin provider 提供联网检索;关闭开关时工具被 guard 拒绝并返回可操作提示,provider 仍在注册表。
- code_search:只读语义代码检索;关闭开关时从工具注册表移除(模型不可见,省 token)。
code_search 会把检索问题与经筛选的代码片段发往 Devin/Windsurf 云端;使用前需确认对相应代码资产有上传授权。本地沙箱仍为工作区绝对根边界、不跟随符号链接、执行 .gitignore,并硬性跳过 .git、node_modules、.env* 等;单次检索有轮次、时间与输出上限,且仅允许结构化只读命令(细节见 README「数据边界」)。
降级行为¶
缺少 connection、tools、web、commands 或某个 slot 时,插件按 README 表格逐项降级(例如无 web 服务则不注册 provider,web_search 回到内置实现),其余部分尽量保持可用。
安装与启用¶
从 GitHub 安装(README 推荐):
在 DSH 界面:插件 → 添加插件 → 输入:
github:gongstudent/dsh-devin-search-next
或命令行(示例为 desktop profile):
dsh plugin --profile desktop add "github:gongstudent/dsh-devin-search-next"
本地开发可对仓库目录做 link 安装(改代码后需重启):
dsh plugin --profile desktop add "$(pwd)"
也可在插件页选择「本地目录」并指向本仓库路径。装好后重启应用(新 bundle 需新进程加载 JS 模块)。
确认三件事:
- 插件页出现 Devin 搜索(标题/描述/图标来自
locale/*.json与icon.svg); - 设置 → 插件 → Devin 搜索 中能看到登录状态与两个开关;
- 聊天里输入
/devin-status有返回。
环境要求(README):Node ≥ 20;DSH 0.2.x 系,设计上不感知具体小版本。
典型用法¶
登录相关命令¶
| 命令 | 作用 |
|---|---|
/devin-login |
生成授权链接;浏览器登录后把一次性授权码粘贴到聊天里的登录卡片(不要贴进对话正文) |
/devin-login local |
同一台机器:监听 127.0.0.1:59653 自动接收回调 |
/devin-status |
查看登录状态与到期时间(脱敏) |
/devin-logout |
取消在途登录并删除本地会话 |
/devin-cancel |
只取消在途登录 |
两个开关¶
| 开关 | 关闭后的效果 |
|---|---|
web_search |
web_search 被 guard 拒绝并返回提示 |
code_search |
code_search 从注册表移除 |
改法三选一:设置页开关;/devin-settings web off、/devin-settings code off;删除 $DSH_HOME/devin-search/settings.json 回落默认(均为开)。优先级:设置文件 > 内置默认。
适用场景与注意¶
适合谁:已在 DSH 0.2.x 上使用 Devin 侧联网与代码语义检索,且希望避免旧版 dsh-devin-search 因版本闸门或内部 API 耦合而在升级后静默消失的用户。
安装前建议:插件以当前 DSH 进程权限运行,会读写 $DSH_HOME/devin-search/ 下的会话与设置;安装前应阅读仓库源码与 MIT LICENSE,自行评估数据出境与代码上传边界。
排错提示(节选):插件页没有该行时检查 profile 的 bundles 是否包含本包;web_search 报 WEB_PROVIDER_AMBIGUOUS 时检查用户 patch 层是否需指定 devin provider;登录卡片不刷新时可先用 /devin-status,并确认 connection 服务与 /api/devin/* 是否可用。完整表格见 GitHub README「排错」一节。
DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-devin-search-next 把 Devin 登录、web_search 与 code_search 收进一个尽量不绑 DSH 内部版本的插件包,用自有存储与扩展点探测降低升级风险。需要安装或细节时,以维护者文档为准:
- https://www.skillhub.cn/plugins/gongstudent/dsh-devin-search-next
- https://github.com/gongstudent/dsh-devin-search-next