You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
真错被丢弃。dsh-compaction-basic 抛的是 ManualCompactionError("summary", "manual compaction could not produce a smaller summary", { cause }),真错只在 cause 里;dsh-command-compact 的 expectedFailure 把 code summary 映射成一句固定文案,cause 不显示。用户除了翻会话日志没有任何入手点。
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
改过 provider 架构(删除 / 改名 / 把多家 provider 收敛成一个)之后,在那之前已经开着的会话里
/compact必然失败,界面只给一句笼统的真正的错误只在会话日志里:
no adapter registered for provider "xhx"(codeNO_ADAPTER)。两个具体缺陷:
configured ?? latest ?? agentTarget——latest取的是「本会话最后一次已路由请求的 provider/model」,只看字段非空,不检查该 provider 是否还在注册表里。于是latest命中一个已经删掉的 provider,排在后面的agentTarget(profile 的agent-default-model,此时仍然可用)永远不会被用到。dsh-compaction-basic抛的是ManualCompactionError("summary", "manual compaction could not produce a smaller summary", { cause }),真错只在cause里;dsh-command-compact的expectedFailure把 codesummary映射成一句固定文案,cause 不显示。用户除了翻会话日志没有任何入手点。同一份
requestHeader()还被routedTarget()/reservedCompletionTokens()使用(region.ts的保留预算也读它);自动压力压缩走agent/pre-step时会 catch 后只打一条 warn 继续,所以自动路径表现为静默不压缩,手动路径表现为报错但不说原因。环境
@deepseek-ai/dsh0.2.0-rc.2,webprofile,Linux@deepseek-ai/dsh-compaction-basic、@deepseek-ai/dsh-command-compactcordis.patch.yml(自定义路由,非内置目录)复现步骤
xhx)。{ provider: "xhx", model: "..." }。xhx),重启 dsh。/compact。预期
压缩应当改用仍然可用的模型(profile 里
agent-default-model就现成),或者至少把真错显示出来,例如:no adapter registered for provider "xhx"。实际
界面(
command-compact映射的summary文案):会话日志
$DSH_HOME/sessions/<槽>/session-<uuid>/session.v4.jsonl.zstd(zstd -dc后):{"type":"compaction/end","seq":2966,"time":1792062239884,"data":{"compactionId":"abab20dc-...","sourceCommandId":"cmd-e5053688-1","turn":null,"error":"no adapter registered for provider \"xhx\""}}同一会话此前还有一次普通回合因为同一个原因整个失败:
{"type":"turn/end","seq":2381,"data":{"turn":10,"reason":{"kind":"error","error":{"message":"no adapter registered for provider \"xhx\"","code":"NO_ADAPTER"}}}}定位(0.2.0-rc.2 发布包)
@deepseek-ai/dsh-compaction-basic→summarizeWithLlm():同一个包里
routedTarget(session)的注释也写明它取的是 "the exact provider/model durably routed for the latest request"。@deepseek-ai/dsh-compaction-basic第 527 行附近:@deepseek-ai/dsh-command-compact→expectedFailure():case "summary"返回固定文案,未带cause。建议
summarizeWithLlm()里对latest先做可用性判断(例如尝试llm.resolveModelInfo(latest.provider, latest.model)或在 provider 注册表里查适配器),不可用就退到agentTarget;routedTarget()/reservedCompletionTokens()读的是同一份requestHeader(),同一类风险。expectedFailure的文案里带上cause.message(或加 detail 字段),别让唯一线索只存在于会话日志文件里。目前的规避办法
在那会话里先随便发一条普通消息(路由头刷新成当前 provider),再
/compact,即可正常压缩。另可在 profile patch 的顶层把摘要模型钉死,与路由头无关:
All reactions