Repository navigation
Replies: 1 comment
|
Thanks for the quantified write-up — a session id, a step count and a state file make this far easier to answer than the usual "it hangs sometimes". I read the agent loop and both provider adapters at the tag you are on ( The symptom is a step that finished successfully with nothing visible"Thinking finished, nothing came out" is not one failure — it is two different terminal states of a step, and neither of them is retried. 1. A reasoning-only completion is a successful step
Reasoning occupies a content block on both paths: pi-ai's The loop then does what it does for any successful step ( The assistant message was already appended a few lines earlier ( 2. If the output ceiling cut it, it is
|
Uh oh!
There was an error while loading. Please reload this page.
环境
0.2.0-rc.2(Desktop / Windows)desktopsession-6f13a4c6-96a6-481c-af67-2aabd08cab28现象
在一次 51 轮的长会话中,反复出现「agent 推理已完成,但界面上没有出现最终回答」,
界面长时间静默,用户只能发「?」或「继续」催促,催促后往往才拿到回答。会话中用户共催促 6 次。
用户原话:
量化数据(来自 DSH 自身状态文件,非推测)
数据位置:
~/.dsh/storages/session_projcache/sessions/<session-id>.jsonsessionStats
{ "turns": 51, "steps": 405, "llmMs": 3521461, // LLM 累计 58.7 分钟 "toolMs": 4758769, // 工具累计 79.3 分钟 "ttftMs": 571521, // 首 token 等待总计 9.5 分钟 "ttftSteps": 406, "decodeMs": 2948785, "decodeTokens": 643406, "openStep": null, "pendingCalls": { "call_00_Ro4cK8Y9Biqxnx8vM57P3371": 1792164996867 // ← 未被清理 } }推算:
(llmMs + toolMs) / steps≈ 20.4 秒/步(平均);ttftMs / ttftSteps≈ 1.41 秒(平均首 token 延迟,峰值远超此值)。contextPressure
{ "surfaceTokens": 271372, "contextWindow": 1000000, "pressureTokens": 481453, // ← 占窗口 48% "sampledSurfaceTokens": 271089 }tokenUsage
{ "totals": { "uncachedInputTokens": 1219006, "outputTokens": 643406, "cacheReadTokens": 154584064, // ← 1.5 亿 "cacheWriteTokens": 0 }, "last": { "turn": 51, "step": 4, "buckets": { "uncachedInputTokens": 173, "outputTokens": 437, "cacheReadTokens": 481280 // ← 单步读 48 万 token 上下文 } } }llmRetry
{ "ver": 1, "seq": 2814, "val": {} } // ← 整个会话【零重试记录】分析(按可能性排序)
1. 主因:长上下文 + 全程无进度反馈
每一步都在接近半窗口(48 万 token)的上下文上推理 → 首 token 延迟可达数十秒。
而这段时间 GUI 没有任何可见反馈(无"正在处理"、无已等待秒数、无取消入口),
用户无法区分「在努力思考」与「已崩溃」。
结论:这不是功能故障,而是**「没有反馈的慢」被感知成了「卡死」**。
2. 空响应缺少兜底
会话中 6 次出现"推理完成但无最终输出"。结合
llmRetry.val = {},推测空/异常响应没有触发自动重试,也没有向用户明示"本轮未产生输出"。
3.
pendingCalls未清理(疑似状态机问题)sessionStats.pendingCalls中残留一条记录。若为异常路径下未清理,可能导致会话状态不一致。4. 工具耗时 > LLM 耗时(另一条优化线)
79.3 分钟 vs 58.7 分钟。高频只读命令(
dumpsys/getprop/lsmod/ps)每轮返回数 KB 原始文本,直接推高了那 48 万 token 的上下文压力。
建议
llmRetry;仍失败则明确告知用户pendingCalls清理~/.dsh/storages/**/*.json;建议 GUI 提供「会话诊断」面板 + 一键导出诊断包dumpsys/getprop等做结构化裁剪或缓存,降低单步输入体积已知相关讨论
maxOverflowRetries不构成上界)本报告补充的是另一条独立证据链:并非崩溃,而是"高压力上下文下无反馈的慢",
并提供了会话级 TTFT / 上下文压力 / 重试计数 / pending 调用的实测数值,可供定位与回归验证。
复现条件(供参考)
dumpsys、ps、lsmod等数千 token)deepseek-flash本报告全部数值均取自 DSH 自身状态文件,未做推测性填充;标注「推测/疑似」处已明确说明。
All reactions