dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
DeepSeek Harness 的动态 Cordis 插件:为每个 API(厂商 + 模型)写备注,模型在每次请求时都能读到。
设计背景见 docs/design.md(《API 分级、备注与动态选择插件设计》)。 本仓库实现的是该设计的阶段一(首版范围),以 Harness GUI 动态插件的形式交付,Harness 本体零修改。
llm 服务(listConfigurableProviders / listProviders / listModels),不重复管理密钥与模型列表。┌───────────── 设置面板 (Client) ─────────────┐ ┌────────────── Host (主进程) ──────────────┐
│ settings.section「API 路由」 │ RPC │ 进程内存状态 state.entries │
│ · 添加表单(厂商下拉 + 模型建议 + 备注) │ ───► │ { provider, model, enabled, │
│ · 条目卡片(等级/优先级/备注/保存/删除) │ ◄─── │ tier, priority, note } │
│ · 上下文预览 │ │ │
└─────────────────────────────────────────────┘ │ systemPrompt.context(order 140) │
│ └─► 每次请求注入备注 → 模型可读 │
└────────────────────────────────────────────┘
src/host.body.js):llm.listConfigurableProviders() + llm.listProviders() 合并出厂商目录(route id + 显示名 + 是否已注册);llm.listModels(provider) 提供模型输入建议;systemPrompt.context({ name: 'api-router-notes:notes', order: 140 }) 注入备注(order 排在 sandbox 110 / approval 115 / subagent 120 之后);src/client.body.js):settings.section 注册页面(id api-notes,order 25);host.call 读写 Host 状态;model 为空时是 provider,否则是 provider::model。| 字段 | 类型 | 说明 |
|---|---|---|
| provider | string | 厂商 route id(必填,来自 Harness 目录) |
| model | string | 模型 id;空 = 整个厂商 |
| enabled | boolean | 是否参与动态选择(默认 true) |
| tier | 'light' | 'medium' | 'heavy' | null | 轻/中/重;null = 未设置 |
| priority | number | 同等级内优先级(默认 100) |
| note | string | 备注(trim 后保存,空白视为未填写) |
页面底部预览即为模型每次请求读到的内容:
API routing policies configured by the operator (context-only mode, routing unchanged):
- [light] DeepSeek [deepseek-official], model deepseek-chat, priority 100: 日常问答、翻译、摘要优先。
- [heavy] DeepSeek [deepseek-official], model deepseek-reasoner, priority 90: 复杂推理、大型重构、长上下文。
- [medium] DeepSeek [deepseek-official], all models, priority 80: 厂商默认说明。
规则:
disabled / dormant / not registered 标记仅提示状态,不含任何连接信息。创建插件,两种方式任选其一:
cordis_define 创建新插件(idPrefix 自定,如 apnote):
code.host = src/host.body.js 的完整内容,code.client = src/client.body.js 的完整内容。dsh-api-router-notes),
然后对模型说:「读取 dsh-api-router-notes/src/host.body.js 与 client.body.js,用 cordis_define 定义插件并 cordis_run 运行」。
模型会读取两个文件并完成 define 与 run,你只需在界面批准。用返回的 pluginId / packageId 执行 cordis_run(mode run;方式 B 中模型已代做)。
在界面批准本次运行;建议双击勾选,同时授权该插件的后续版本,便于以后更新。
打开左下角 设置 → API 路由:
保存后,从下一次模型请求开始,备注即出现在模型上下文中(页面底部预览可即时核对)。
更新版本:用
cordis_define(kindexisting、同一 pluginId)追加新包,再cordis_run(modeupdate)。旧包保留,可随时回滚。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。