mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 02:41:58 +00:00
1756476a30
从点"生成"到第一个节点落到画布上,本机实测 31.7 秒(DeepSeek V4 pro,中等 复杂度需求)。这段时间界面上只有"正在起草…"五个字一动不动——用户没法判断 是在想还是已经卡死。生成质量本身没问题,瓶颈全在这段等待的体验。 三处改动: ## 思考转发 _iter_ops 原先只取正文、丢掉其余一切,模型的 thinking 块也一并丢了。现在用 thinking_text() 抽出来单独转成 thinking 事件,前端可折叠地实时显示。 刻意不用"把非 JSON 行当成思考"这种取巧写法:那会把模型的 markdown 注释、 协议跑偏时的乱输出一并当作思考展示出来,反而误导。不支持 thinking 的模型 就只有心跳,不硬凑假的思考。 注意这条只对支持 adaptive thinking 的模型(Claude 4.6+)生效,当前默认的 DeepSeek V4 pro 不会产出——代码路径用构造的 chunk 验证过,但端到端触发需要 启用 Anthropic provider。 ## 心跳与阶段 模型沉默时每 3 秒补一拍,带阶段和已用时长。必须在 _with_heartbeat 这一层做: 模型不吐 chunk 时 _iter_ops 里那个 async for 的循环体根本不执行,在里面判断 时间差轮不到。阶段跟着实际操作走(planning → building → wiring → finalizing), 阶段会变本身就是"它还活着"的信号。实测那 31.7 秒里补了 10 拍。 ## 失败后不用重敲需求 生成失败只有一个 ✕,重试得重新打开 Modal 把需求再敲一遍——而失败多半跟需求 本身无关(模型抽风、协议跑偏、网断了)。store 里留住 lastInstruction, 错误浮条上直接给"用同一需求重试"。 ## 顺带:项目第一组测试 这组守的是体验契约不是实现细节——thinking 和 heartbeat 两路反馈只要断了就是 回归,而这种回归在界面上表现为"又变回干等",很难被注意到。4 个用例覆盖: thinking 块转发、纯文本模型不伪造思考、沉默期补心跳、阶段随进度推进。 pytest 走 [dev] extra,environment.yml 一并带上。
6 lines
149 B
INI
6 lines
149 B
INI
[pytest]
|
|
# asyncio_mode=auto 省掉每个协程测试都写一遍 @pytest.mark.asyncio
|
|
asyncio_mode = auto
|
|
testpaths = tests
|
|
addopts = -q --tb=short
|