Repository navigation
feat(ui): child 树渲染、每 child 预算列与 fan-out 执行历史/取消 - #68
Merged
Merged
Conversation
- AgentGraphPanel 按 parent_id 渲染 root→child 树形,child 行增加剩余回合/剩余 Tokens 与根节点子槽位
- 新增 GET /runs/{run_id}/fanout-executions?plan_id= 只读执行历史投影 + POST /runs/{run_id}/fanout-executions/{execution_id}/cancel 取消控制(复用既有 CancelRemainder/Finalize 与租约栅栏,终端执行幂等返回)
- FanoutPanel 每计划展开执行历史与分片表,运行中的执行提供控制侧取消按钮(control token 门控、显式确认)
- Web 客户端新方法+严格解析器、schema.d.ts 重生成、openapi 新操作与 live-route 测试
This was referenced Aug 15, 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.
背景
#51(PR #67)合入后遗留三个前端展示缺口:Agent 图是平铺列表而非树形、child 预算只有 used/limit 没有剩余额度视角、fan-out 只有"最近一次执行"且没有取消入口。本 PR 补齐,并顺带给出后端已有但前端未做的完整盘点(见文末)。
本次改动
AgentGraphPanel按parent_id渲染 root→child 树形(root 在上,两个 child 缩进挂其下,depth≤1 由准入合同保证)。turn_limit - turns_used、token_limit - tokens_used),root 行新增"子槽位"(child_limit)。GET /runs/{run_id}/fanout-executions?plan_id={id}(readonly_fanout_executions.v1,含分片表,无文件 manifest/报告 JSON)。POST /runs/{run_id}/fanout-executions/{execution_id}/cancel(readonly_fanout_cancel.v1,必须显式confirm_cancel):复用既有CancelReadOnlyFanoutExecutionRemainder+FinalizeReadOnlyFanoutExecution与租约栅栏;终端执行幂等返回存储状态。FanoutPanel每计划展开执行历史,运行中的执行显示 control-token 门控的"取消执行"按钮。getRunFanoutExecutions/cancelRunFanoutExecution与严格解析器;schema.d.ts重生成;OpenAPI 新增两个操作与 live-route 测试。测试覆盖
验证结果
go build ./...、go vet ./...通过;全量go test -timeout 30m ./...(含 analyzer opt-in)零 FAIL。docs/openapi.json与schema.d.ts同步。安全边界与非目标
顺带盘点:后端已有但前端未做(审计结论)
ChildTaskReviewService/AdmitChildTaskProposal未被任何入口实例化调用,也没有 HTTP 端点或 operator action,提案只能停留在 proposed。建议下一个 PR 补操作者审阅控制面(HTTP + operator action center + Web 审阅对话框)。/api/v1/models/prices)与 Docker 沙箱(/api/v1/sandbox/docker/*)在 OpenAPI 中但无客户端方法与组件。client.installSkillPackage无调用点,UI 只走桌面原生桥)。max_children/max_turns_per_child/max_tokens_per_child/stop_code、fan-out 的scope_path/shard_count/max_output_tokens_per_shard、Activity 的attempt_id/model_attempt/tool_round、receipt 的retry_strategy/recovery_action、evidence 的source_kind/instruction_authorized等字段在视图里但未渲染;RunView.Budget 未渲染、run 创建不能设预算。