dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
按时间做模型路由:在设置页定义工作日峰谷时段与各时段使用的 Provider/模型(候选来自 harness 已注册的 API 与订阅账号),打开开关后由该策略决定每次请求的模型与思考档。开关按会话独立,会话列表每行带指示灯显示各自状态,设置页顶部写明此刻生效的模型与原因。无任何时段命中的日子(周末、假期)使用第一个方案的主力模型;高级思考模型是另一根轴,只在会话自身要求 max 思考时使用。
峰时站岗换班:谷时让 DeepSeek 干苦力,峰时换 ChatGPT Plus 顶班,你的 API 账单从此不再被高峰期收割。
DeepSeek Harness 的跨 provider 峰谷路由插件 + 公开 SKILL。详见 SKILL.md。
当前版本:v0.12.0(pre-1.0)。版本号唯一来源是 package.json;运行时可在设置页标题下方或 debug.log 的 apply: vX.Y.Z, … 行确认当前加载的是哪一版。变更记录与版本策略见 CHANGELOG.md。
max 思考时使用(reasoningEffort === 'max'),不作为未命中策略时的兜底。未命中任何策略的时刻(周末、假期)→ 用第一个方案的主模型。设置页顶部会写明「此刻生效:model@effort · 原因」,例如「无匹配方案(周末/假期),用首个方案的主力模型」,所以任何一次目标都能解释,不会像故障。listModels 接口读取。避峰岗自身不会出现在候选里:它是 provider 之上的一层选择器逻辑,不是 provider。.recon/workspace.client.js 里 !row.archived && !row.blank && (showStatus ? … : unread ? … : renderSlot("sidebar.session.row.leading", …))。这是宿主行为,插件不去改它。debug.log 留一行——此时小灯仍是亮的。SKILL.md — 「避峰岗」技能说明lib/index.js — Node 端:策略引擎、agentDefaultModel 门控、agent/request 覆盖、RPClib/text.js — 唯一维护文件:默认定义(DEFAULTS)+ 中英文案(zh/en)src/client/*.js — 客户端源码(开关 / 选择器 / 策略编辑 / 设置页 / 入口)lib/client.js — 生成物:由 src/build-client.mjs 拼接各 source 并注入 lib/text.js 文案,请勿手改src/build-client.mjs — 客户端构建脚本scripts/verify.mjs — 仓库自检(契约、不变式、版本一致性、产物新鲜度)scripts/roundtrip.test.mjs — 副模型往返回归(防止形状错配复发)scripts/copy.test.mjs — 界面文案单一来源与本地化映射检查scripts/session-state.test.mjs — 每会话状态语义(覆盖 / 跟随默认 / 清除 / 容量上限 / 会话 id 读取)scripts/session-fuzz.mjs — 随机化差分属性测试:200 次随机操作 × 12 个探针 id(含 __proto__、constructor、超长与 Unicode id),期望值独立地从 state.json 重算,用来抓跨会话串扰与身份透传违规(npm run fuzz,可传种子)CHANGELOG.md — 变更记录与版本策略cordis.patch.yml — 自激活 patch(bundle 安装用)package.json — 插件清单(含 dsh.client 声明)node src/build-client.mjs # 重建 lib/client.js(改了 src/client 或 lib/text.js 后必跑)
npm run verify # 五套检查(只读,不写任何产物)
npm run fuzz # 只跑随机化差分属性测试(可传随机种子)
npm run verify 覆盖:文案 key 完整性/双语对称、client↔node RPC 契约、关键不变式
(inject=['llm']、agent/request 带 prepend、无 registerAdapter/llm/stream 残留、
未触碰会话模型选择器)、版本一致性(package.json ↔ CHANGELOG.md ↔ README.md/SKILL.md
的「当前版本」)、产物新鲜度(构建到临时文件比对,不重写仓库里的产物)、仓库顶层文件集合、
副模型形状往返、界面文案无硬编码中文、每会话状态语义、随机化差分属性测试。
dsh plugin --profile web add <本仓库路径或 git URL>
insert(仅 Node 端,无 GUI):
- insert:
- id: dsh-peak-valley-router
name: <本仓库/lib/index.js 绝对路径>
config: { ...见 SKILL.md 的配置结构... }
装完重启 DSH,打开「设置 → 避峰岗」即可在 GUI 里配置多模型协同策略。
插件只在 DSH_HOME/plugins/dsh-peak-valley-router/ 下写三个文件:
policy.json — GUI 保存的策略state.json — 开关状态:{ enabled, sessions }。enabled 是全局默认,sessions 是每会话覆盖表(没有覆盖的会话跟随默认;上限 500 条,按最近写入淘汰)。旧文件(只有 enabled)行为完全不变。debug.log — 诊断日志(只在 apply / 目录读取失败 / 开关切换 / 每个新接管目标时各记一行)DSH_HOME 时,各自持有自己的快照,后写的一方会覆盖整张 sessions 表(写入是原子的,但没有合并语义)。单窗口单进程使用不受影响。debug.log 记一行。此时开关与小灯仍显示"开"——它们反映的是开关意图,不是"此刻一定生效"。