把 DeepSeek Harness(dsh)放到阿里云 ECS 上很常见。但 dsh 默认搜索依赖 DeepSeek 官方 API key;没有(或不想用)官方 key、又用着不支持 web_search 的网关(如 opencode-go)时,agent 就会说"无法联网"。dsh-free-search 用免费引擎加自动回退补上这一环,安装只有一行命令,麻烦的是 ECS 侧:出网、代理、凭据、验证。
前置:Node 版本与 DSH 引擎
插件 npm 包要求 Node 引擎 >=20,实装基线是 Node 22.19。先确认版本,再装引擎与插件:
装完重启 dsh web 生效;配置若在本地改好再传上云,用 ssh 登录、scp 把 cordis.patch.yml 传到 ~/.dsh/profiles/web/。
出网:ECS 能不能连上这些外部主机
免费引擎不在本地,插件要访问一批外部主机。站点静态扫描列出的涉及外部主机共 7 个,含 www.v2ex.com、api.exa.ai、api.perplexity.ai、api.deepseek.com、qianfan.baidubce.com 等,基本都是 443 出站。
出网通常两种方式:实例绑公网 IP,或只在内网、经 NAT 网关出公网。安全组的出方向规则决定允许哪些出站流量,验证搜索时至少要放通对上述主机的 HTTPS 出站;只有内网又没 NAT 网关时根本出不了公网——要么加 NAT 网关,要么在能出网的一侧架代理。记住:安全组管"能不能出去",代理管"怎么出去"。
代理与 Node 的坑
国内环境 DuckDuckGo 这类引擎常需代理,而 Node.js 的 fetch 默认不读系统代理——ECS 上没有桌面环境那套代理设置,尤其容易漏。给 dsh 进程显式设环境变量(Node 24+):
把地址换成实际代理;设完重启 dsh web。
接上阿里云百炼 EnhancedSearch
机器在阿里云上,顺手接百炼很自然:百炼 EnhancedSearch 的引擎 id 是 aliyun,走 MCP search_pro,约 ¥0.03/次,新用户有 200 次免费包。建议把 DASHSCOPE_API_KEY 写进 harness 凭据中心 ~/.dsh/.credentials.yaml。插件读取优先级是 凭据中心 > 设置页 > 环境变量,设置页填的只作遗留兼容。切引擎可进设置页的 free-search 组件行(需 DSH 0.1.7-rc.1+),或在聊天框输入 /free-search-engine 点选。
验证:两种测试不是一回事
- 设置页 Test engine:直测当前引擎、不走回退链;付费引擎没配 key 会明确报错,属预期行为。
- 对 agent 说"测试一下所有搜索引擎":调用
free_search_test逐个报告引擎的 OK / FAIL 与原因,这才是判断整体可用性的入口。
ECS 上最容易踩的四个坑
坑一:旧 settings.yaml 里的 free-search 段不生效
现象。 照老文档改了 ~/.dsh/settings.yaml 的 free-search: 段,配置没反应也没报错。原因。 DSH 核心的 importLegacyDocument 只为 ui-developer-tools / ui-onboarding / shell 三段提供映射,其它段不导入,原文件还会被改名成 settings.yaml.imported。解决。 看启动日志有无 free-search: migrated N field(s)…(插件会一次性补种),或照 settings.yaml.imported 值手填一遍。
坑二:multi_search 会多花配额
现象。 用了几次多源并发,付费额度掉得比预期快。原因。 multi_search 并发请求前 3 个优选引擎(或显式 engines 列表),每个引擎独立计费。解决。 只在需要多角度核验时用,日常单源用 web_search。
坑三:5 分钟缓存让结果"不更新"
现象。 刚切完引擎,同样查询还是旧结果。原因。 相同查询(含引擎 / 时间过滤参数)5 分钟内命中 LRU 缓存(50 条),为的是防限流、省额度。解决。 换个查询措辞,或在设置页把缓存时长调到 0。
坑四:Reddit 平台搜索可能被拦
现象。 platform_search 的 reddit 项失败。原因。 部分网络环境会被 Reddit 反爬拦截。解决。 换 hn / v2ex / github 等公开 API 平台,或在设置页把 reddit 勾掉。
ECS 侧排查顺序
按顺序走,覆盖绝大多数"搜索不通":
- Node 是否
>=20(基线 22.19),dsh 与插件是否同一安装树。 - 出网:公网 IP 还是内网 + NAT 网关?没通路先补。
- 安全组出方向是否放通
api.exa.ai、qianfan.baidubce.com等的 HTTPS 出站。 - 需代理时,dsh 进程是否带
NODE_USE_ENV_PROXY=1与HTTPS_PROXY/HTTP_PROXY。 free_search_test跑一遍:全不通多看出网 / 代理,个别不通多看缺 key 或限流;再查启动日志的接管与migrated。
总结
在 ECS 上给 DSH 配免费搜索,难点不在安装,而在三件事:实例出网链路、Node 的代理环境变量、把 key 收进凭据中心;三者过了,用 free_search_test 验证即可。插件与汉化说明见 DeepSeek Harness Hub 插件清单。
适合与不适合
适合:在阿里云 ECS 上长期跑 dsh、要稳定联网搜索的个人或小团队;没有(或不想用)DeepSeek 官方 key、想让 agent 恢复联网的人;想在阿里云内顺手接百炼 EnhancedSearch 的人;需用 ssh / scp 同步多台实例配置的运维。
不适合:实例没有公网出口、又不加 NAT 网关或代理的环境(插件要访问 7 个外部主机,出不去就搜不了);不接受 5 分钟缓存、要求强实时的场景;把 web_fetch 暴露给公网 agent 又不评估内网可达风险的环境(web_fetch 无 SSRF 防护);拿额度型引擎当长期主力又不管额度的人(百度千帆每日 50 次、豆包每月 500 次,超出按量付费)。
标签:dsh-free-search、DeepSeek Harness、阿里云 ECS、免费搜索插件、出网与代理
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。