Files
goodbuddy/docs/features/direct-model-agent/ui-design.md
T
mesalogo 0d7ba55a50 fix: preserve tool details and prevent repeated history growth
Show bounded operation summaries for Continue, DeepSeek Harness and direct-model tools, retaining input details across incremental updates. Use one canonical workspace path for DeepSeek Host startup and ACP sessions so equivalent Windows paths reuse a working Runtime.

Compare persisted subagent tool fields by value, release terminal task caches, and avoid rebuilding caches for duplicate remote events. Upgrade to schema 35 to recompact repeated schema-34 tool blocks while preserving events and provenance. Include regression coverage, validation records and temporary-resource test exclusions.

Validation: 4155 tests passed, 66 skipped; typecheck and lint passed. Full desktop real-model validation covered all three tool-summary paths and both Windows path spellings. Storage validation evidence includes local and remote tool workloads and real database upgrade checks.

Release note: Tool records now show paths, commands and search details across runtimes. Fix DeepSeek Windows workspace failures and repeated subagent history growth; schema 35 reclaims redundant history data while preserving execution records, and older clients cannot reopen the upgraded database.
2026-09-14 00:34:51 +08:00

6.3 KiB
Raw Blame History

直连模型 Agent 能力 UI 设计

文档信息

项目 内容
状态 已实施
版本 0.4
日期 2026-09-09
设计系统 GoodBuddy 统一界面设计系统
关联 PRD PRD
关联逻辑 功能逻辑设计

1. 信息架构

本功能不增加一级页面、Composer 按钮或 Runtime 专属工具栏。用户主要通过三处理解能力:

  1. 设置 > MCP > 直连模型:查看工作区文件和开发工具说明。
  2. 聊天消息活动块:查看命令和 Subagent 的实时状态与结果。
  3. 运行记录:按当前 Conversation 或 Task 查看聚合执行活动。

Job、Subjob 和 Run 继续是内部对象,不创建树形 UI、独立路由或操作菜单。

2. 设置中的能力目录

直连模型工具目录使用两个本机开发分组:

工作区文件
  搜索工作区
  读取工作区文本
  应用工作区补丁

开发工具
  进程执行
  使用当前用户权限运行 PowerShell、Bash 或 Sh 命令,默认在工作区执行,也可指定其他工作目录。
  编程 Subagent
  将聚焦任务委派给同一模型连接;继承当前工作模式和工作区。

要求:

  • 这些工具默认属于直连模型,不提供持久 Switch。
  • 设置目录只定义稳定工具能力,不增加 Shell 状态或重试控件;实际 Shell 标签在模型工具 定义和进程结果中返回。
  • Runtime 是 OpenCode、Continue 或 DeepSeek Harness 时,不在其原生能力清单中伪造这两项; 用户需要理解差异时,在直连模型分组说明“Agent Runtime 使用自身工具”。
  • 不把模型配置检查成功描述为命令或 Subagent 已经通过真实执行验证。

3. 进程活动块

复用现有对话工具活动视觉和语义,不创建页面专属卡片系统。

3.1 标题与摘要

正常执行状态的操作摘要遵循工具操作摘要规则,从原始调用参数提取并在完成后保留;异常状态继续显示原有提示。

进程执行
PowerShell · packages/app · npm test
  • 命令只显示单行有界摘要,完整参数进入可展开详情。
  • 工作区内目录显示相对路径,工作区根显示 .;工作区外目录显示规范化绝对路径。
  • 不在摘要中显示完整环境或凭据。

3.2 状态

状态 文案
pending 等待运行
running 正在运行
completed,exit 0 已完成
completed,exit 非零 工具已完成,详情显示退出码 N
timeout 工具已完成,详情显示 timeout
cancelled 父请求活动显示已取消
failed 启动失败

状态必须同时有文字和状态图标,不能只依靠颜色。非零退出属于正常结构化工具结果,不显示为 GoodBuddy 服务崩溃。

3.3 结果详情

详情按以下顺序展示:

  1. Shell、工作目录、耗时和退出码。
  2. stdout。
  3. stderr。
  4. 预览省略提示与工具结果中的续读引用。

日志使用共享等宽字体和可选择文本。长输出在活动块内折叠,展开后仍保持工作栏和聊天布局 可用;不把完整日志复制为应用通知。

模型使用 output_read 续读时显示普通工具活动“续读工具输出”。活动展开只展示该次返回的 摘要,不等同于自动加载完整日志;当前不增加手动分页按钮。

4. Subagent 活动块

复用现有 subagent 消息块,并将系统执行者显示为“编程 Subagent”,不要求用户预先创建 专家。

编程 Subagent
检查认证模块的测试失败并提出修复
正在运行 · 直连模型 · Execute

终态:

  • 完成:显示有界结果摘要,可展开查看当前预览;完整正文由模型通过输出续读工具取得。
  • 失败:保留部分输出和错误。
  • 取消:显示“父请求已取消”或准确取消原因。
  • 排队:显示当前处于并发队列,不显示虚假百分比。

活动块不提供单独的“批准”“提高权限”或“继续递归”按钮。用户取消父请求即可取消子级。

5. Ask/Execute 表达

  • Ask 中不显示不可用的进程按钮,因为模型工具没有手动调用入口。
  • Ask Subagent 活动明确显示“只读”。
  • Execute 活动显示“当前用户权限”,不声称 OS 沙箱或工作区隔离。
  • 如果用户从 Ask 切到 Execute,只有下一条请求使用新模式;运行中的 Subagent 不切换。

6. 错误与通知

  • 参数错误、命令退出、Subagent 失败和部分输出属于当前活动上下文,保留在对应活动块。
  • Runtime 初始化、Shell 探测或全局服务失败可通过应用通知提示,并在设置状态卡提供重试。
  • 同一错误不同时显示活动块副本和通知副本。
  • 失败后保留用户 Prompt、命令摘要、工作目录和已有输出。
  • 直连模型自动重试在消息底部区分“模型网络请求失败,等待重试(n/3,s 秒后)”与 “〈模型名〉正在重试请求(n/3),等待响应”;只有退避结束且未取消才显示后者。 初始请求显示“〈模型名〉请求处理中”,不把尚无输出的等待描述成思考。
  • 不增加独立按钮、弹窗或通知副本;用户仍可使用当前停止操作取消请求。 底部静态状态点、工具进展、待回答及终态优先规则由 消息底部请求状态统一定义。

7. 键盘与无障碍

  • 活动块展开按钮使用原生 button,提供 aria-expanded 和关联详情 ID。
  • 状态变化通过现有活动区域的礼貌级 live region 发布,不逐个朗读流式日志。
  • stdout/stderr 区域具有可见标签,不能只靠顺序区分。
  • 焦点不会因后台状态更新自动移动。
  • 取消父请求后的焦点保持在原取消按钮或恢复到 Composer。
  • 浅色、深色和减少动态效果模式遵守统一设计系统。

8. 响应式

  • 窄聊天区只保留工具名、状态和一行摘要,元数据换行到下一行。
  • 日志区域横向滚动,不撑宽页面。
  • 运行记录使用紧凑摘要,不复制完整 stdout/stderr;用户回到聊天活动块展开查看详情。