子代理 UI 打磨:列表贴合内容、详情页去掉横线带、命令执行成块 - #36
Merged
Merged
Conversation
Use status glyphs for tool results and live execution state.\nKeep tool calls and results contiguous, with running and settled tools sharing one body shape.
The dashboard, takeover header, and transcript each grew their own spinner copy. Export the frames and cadence from transcript.ts, pass the render's `now` into buildTranscriptLines so both spinners show the same frame, and mark a running tool's partial output with a neutral dot instead of a success glyph it has not earned yet.
Review found the running/settled parity contract was vacuous in production: message_end lands the assistant toolCall in the transcript before tool_execution_start creates the live entry, and ToolEnd deletes that entry rather than marking it done. So a running command was rendered twice and the block reflowed two columns left when it settled. Give an execution exactly one glyph, on its command line: the live block owns the call while the tool runs, the transcript's call line takes over with the settled glyph in the same column, and output lines are plain indented text. The item cache now keys on width plus tool phase, so a pending glyph cannot outlive its phase. Also sanitize tool names in the dashboard activity string (they come from the child's own events) and share one timestamp per frame.
Collaborator
Author
追加:glm-5.3 子代理审查后的修复两个 reviewer 子代理( 运行中的命令被渲染了两遍,settle 时整块左移重排。 原因是生产事件顺序与我们的假设不符: 改法:一次执行只有一个 glyph,落在命令行上。
同时修的:
新增测试:生产顺序下的 running→settled 无重复无重排、spinner 跨帧不被缓存冻结、缓存按宽度与 phase 双维度区分、孤立 result 渲染。 738 + 29 全绿, 审查里其余为测试加固建议(并行 tool call 的配对语义、dashboard 精确 padding 断言、 |
This was referenced Aug 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
子代理的三个界面都做了视觉整理:多子代理列表、单个子代理详情、以及详情里的命令执行渲染。
① 命令执行渲染成块(
transcript.ts)一次 bash 调用原来是三段互不相干的行,
output:读起来像调试日志;运行中的工具还是另一种排版,结束时会整行重排。Before
After
$ cmd,其他工具保留→ name argstoolId配对,中间不再插空行,一次执行读起来是一块✓/✗/ 运行中 spinner),删掉· running· done后缀;运行中的部分输出用中性·,不冒领成功② 列表贴合内容 + 显示实时活动(
takeover.ts)rows - 5行,1 个子代理也撑出一整屏空框 → 现在高度按行数走,上限不变Subagents / 3 agents+ 边框标题agents · 0/3)合成一个边框标题╭─ Subagents · 2 running · 1 done ─╮■+running):运行中是 spinner,结束是✓/✗… N more独占一行,不再覆盖真实条目·硬截断③ 详情页 chrome 从 5 条通栏横线降到 3 条
model · ctx% · elapsed(窄屏按优先级丢弃)↓ 42),正文视口高度恒定,滚动时 overlay 不跳动(no output yet)→ dim 的waiting for output…其他
transcript.ts一处导出,dashboard / 详情页 header / transcript 三处同帧(原来是三份各自的拷贝)outputPreview仍是上游收敛过的单行,本次纯渲染层验证
bun run test:736 + 29 全绿(基线 723 + 29)bun run check退出 0(仅剩file-search/src/binaries.ts既存 warning)visibleWidth <= width、详情页恰好 3 条横线且高度恒定、滚动指示只在滚动时出现、调用+结果无空行、运行/结束排版一致、spinner 帧边界确定性