Repository navigation
v1.1.0 · 子代理档位与会话上下文继续
这一版解决两个真问题
1. 子代理该派谁:steward:subagent
DSH 的子代理默认继承父会话的路由——主代理用最强火力时子代理跟着烧钱,主代理用便宜档时子代理又扛不住真活。1.1.0 给子代理单开了一个档位(不是模式,不改全局档位):
- agentic 质量 0.6 + 成本 0.4:够聪明,但不必每件事都用顶配;
- 窗口每 100k +4 分(封顶 40):子代理带着父会话的已完成轮次,长前缀是常态;
- 延迟最多 +20 分、burst 打散决定性(−20000):一批子代理同时开工时落到不同上游,不一起撞 429;
- agentic 维度 B+ 硬门槛:弱模型会把工具调用写坏、把半截结果当完成;
- 会话粘性 +300:同一子代理会话的后续轮次沿用同一模型。
接线(写进 profile,重启生效):
- id: tool-subagent
name: "@deepseek-ai/dsh-tool-subagent"
config:
provider: spawn
toolName: subagent
agentOptions:
provider: steward
model: 管家·子代理不想固定,也可以让 Agent 先问一句再派:token_steward_manage 新增 recommend_model(profile=subagent + task="一句话任务"),返回按真实意图推断排好序的 provider/model 与逐项理由。/v1/models 现在给 6 个虚拟 id 都带上 name / strengths / strength_tags,选择界面不再是看不懂的 id。
2. 换模型时的上下文
消息日志本身不会丢——DSH 会话层把完整历史原样发给新模型。会损失的是:
- 上游前缀缓存:每换一次模型,新厂商从零读完整段前缀。对策是会话粘性(同一会话成功服务过的模型,下一轮小额加分:frugal +60 / balanced +300 / max_power +120;主会话与子代理按档位分开记,LRU 512 个会话)。
- 上一家的私有字段:
reasoning_content/reasoning_details/thinking块 /cache_control。对策是跨厂商请求归一化:只在目标厂商 ≠ 上一轮服务的厂商时剥掉,系统提示与用户内容一字不动;同一厂商内换模型保持原样。 - 窗口收缩:仍然硬拒绝(
window-too-small),绝不悄悄截断历史。
关于「把 KV 状态直接搬给下一家」:公开 chat/completions 协议拿不到模型内部状态,这一层做不到,也不假装做到。README 里写清了边界。
升级
cd ~/.dsh/profiles/desktop && pnpm update dsh-token-steward然后重启 DSH。已有配置无需改动;steward:subagent 与 recommend_model 是新增能力。
质量
- 485 条断言全绿(新增子代理打分 / 粘性 / 只读预览 / 跨厂商归一化 / 虚拟 id 自述 /
recommend_model); tsc --noEmit零错误;npm run build正常产出;- README / CHANGELOG / docs/architecture.md 同步更新。
如果它帮到了你,去仓库点一颗 Star 吧 —— @JiamingShi-JsPhys
发布后并入 1.1.0 的两处修复
换过令牌后「API 密钥无效 AUTH」
系统用户环境变量 STEWARD_LOCAL_TOKEN 里留着旧令牌、网关持久化的是新令牌时,DSH 的 llm-pi-ai 可能在插件挂载前就把 apiKeyEnv 读进凭据缓存,之后每个请求都被网关 401。三道保障:网关优先采用继承来的合法令牌;启动时两把不一致则漂移窗口内两把都接住;每次启动把当前令牌写回 HKCU\Environment。仍是常量时间比较,认的钥匙最多两把、都在本机用户目录,范围仍只限回环。
DSH 打不开:desktop welcome: Web authentication failed
桌面版宿主每次启动下发一枚新名字的 dsh-auth-<随机> Cookie 且从不回收旧的,本机实测积了 71 枚;Cookie 头越过 Node 16 KB 上限后宿主回 431,桌面端拿不到 2xx 就判定认证失败——与插件、密钥、账号都无关。面板现在会数这个数(≥40 黄条 / ≥55 红条);完全退出 DSH 后跑 npm run repair:cookies 即可清理(先备份,只删本机 127.0.0.1 的 dsh-auth-*)。
测试: 505 条断言全绿,tsc --noEmit 零错误。