Replies: 3 comments 1 reply
|
I checked this against the rc.7 source. The important distinction is correct: |
|
按 rc.8( 方案 A 的 provider 改法(
真正有效的修复方向(与你的 workaround 一致):把默认 provider/model 换成用户自己的免费端点(如你 workaround 里的 对方案 C 的语义提醒: 我的分层建议:
补充一点:你的 Impact Analysis 里"创建 Agent 未显式指定模型 → 触发 F1 → F4 链路"的表述准确,但触发前提是 DEEPSEEK_API_KEY 已在凭据库——无 key 时路由不可达、无计费。这个前提让问题从"无感付费"精确化为"有 key 的用户在默认配置下的预期行为 + 误以为已禁用的 UI 鸿沟",后者才是值得修的。 |
|
@argszero 那条修正( 一、验证那一步:把"我希望都关掉了"变成"漏掉的会自己喊出来"你的 Verification Steps 第 2 条是"可抓包验证"。抓包能证明"我观察的这段时间里没有流量",但证明不了"没有我没想到的路径"——F1 到 F4 这四条链路正是你逐条读源码才发现的,谁也不敢说没有第五条。 有个更省事也更严格的做法:在 hosts 里把端点指回本地。 它把失败模式整个翻了过来:
也就是说:它不是用来阻断的,是用来把"沉默"变成"报错"的。 你只要照常用几天——新建 Agent、跑 这条和 @denial123789 的观点不冲突——权威成本边界仍然在 provider 侧,hosts 只是一个本地的、可逆的发现工具。 二、
|
| 包 | 特点 |
|---|---|
dsh-web-search-searxng |
SearXNG 后端,自建实例,无需任何 API key |
dsh-web-search-thirdparty |
把 ctx.web.search 路由到多个第三方引擎的门面 |
@yugasun/dsh-web-search |
多 provider(百度/豆包/Tavily/Exa 等) |
@deepseek-ai/dsh-web-search-exa、@monotykamary/dsh-web-search-exa |
Exa 后端 |
对你的场景,dsh-web-search-searxng 大概是最贴的——自建 SearXNG 之后连第二张账单都不会有。
这对提案本身也有意义:F2 提"默认值指向付费端点"时,"有免费且无 key 的替代实现存在"是个有分量的论据——它说明默认值不是"没有别的选择只能这样",而是一个可以重新考虑的产品决策。
披露:上面四个都是社区包,不是我的。我自己维护的兼容层里也有 web 搜索能力,但它注册的是一个 web_search 工具,不是 ctx.web.search 的 provider——接不进你这个 searchProvider 位,所以对你这条没用,这里不推销。而且那条能力我们只做到"能挂载 + 探针能调起来",没做过真实端到端,按我们自己的规矩也不该拿出来推。
三、关于方案 C,我倾向 @argszero 那边
models: [] 自动等于 disabled: true 这个耦合我也觉得危险,理由和他一样:models 是 discovery 目录不是开关,而且 resolveModel() 接受目录外的 id 是已被核验的现有行为,有人正靠它直呼未收录模型。
但我觉得你方案 B 提的那句 UI 提示被低估了。这帖真正的伤害不是"关不掉"(你的 workaround 证明关得掉),是**"用户以为关掉了"**——models: [] 之后 Models 页面变干净,界面给出的信号和实际状态相反。一个会误导的正确实现,用户成本高于一个诚实的缺失功能。 所以哪怕 A 和 C 都不做,B 也值得单独做。
边界与利益相关
我们不修 DSH 自家组件——dsh-base、llm-deepseek、Models 页面都在 DSH 里。上面的 hosts 手法是通用运维技巧,不需要经过任何插件。
利益相关:我维护 pi2dsh(Pi 生态兼容层)。这条不推销,理由见上面第二节——我们那条 web 能力接的不是你需要的那个 seam,而且核证等级不够。
Uh oh!
There was an error while loading. Please reload this page.
Summary
@deepseek-ai/dsh-base的cordis.patch.yml中有 4 处硬编码将所有用户默认指向付费 DeepSeek API。即使用户通过 Models 页面隐藏 DeepSeek 模型(llm-deepseek: models: []),底层路由适配器仍然存活,web_search等工具的调用会无感走付费端点。另有 1 处遥测端点默认未硬禁用。Severity: High — 导致用户产生非预期付费调用,且用户无法通过现有 UI 完整规避。
Affected Version:
@deepseek-ai/dshv0.1.0-rc.7 +@deepseek-ai/dsh-baseRoot Cause
dsh-base/cordis.patch.yml作为所有 profile(web/tui/headless)的共享基础层,其默认配置硬编码了付费端点。Cordis patch 层的models: []仅控制 UI picker 展示,不等于禁用路由适配器。这是两套独立机制:llm-deepseek: models: [](settings.yaml)llm-deepseek: disabled: true(cordis patch)用户通过 UI 隐藏模型后以为已切换,但适配器仍在后台解析
DEEPSEEK_API_KEY并注册路由,其他组件引用deepseek-official时仍可达。Detailed Findings
F1:
agent-default-model默认走付费 (dsh-base/cordis.patch.yml Line 63-67)All reactions