dsh-devin-search-next:Devin 登录与联网搜索的 DSH 抗漂移版插件

前言

在 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 归纳了四条设计规则,便于理解「为什么升级后还能起来」:

  1. 零 DSH 运行时 import:避免包改名或导出变更导致插件整体无法启动。
  2. 不导出 Config:两个功能开关写入插件自有设置文件,而非 Schemastery 运行时实例。
  3. 能力逐个探测、逐个降级:某个服务拿不到则少一项能力,不在 apply 里抛错中断。
  4. 只依赖语义稳定的扩展点:如 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:通过 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 模块)。

确认三件事:

  1. 插件页出现 Devin 搜索(标题/描述/图标来自 locale/*.json 与 icon.svg);
  2. 设置 → 插件 → Devin 搜索 中能看到登录状态与两个开关;
  3. 聊天里输入 /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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye