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.
6.3 KiB
6.3 KiB
直连模型 Agent 能力 UI 设计
文档信息
| 项目 | 内容 |
|---|---|
| 状态 | 已实施 |
| 版本 | 0.4 |
| 日期 | 2026-09-09 |
| 设计系统 | GoodBuddy 统一界面设计系统 |
| 关联 PRD | PRD |
| 关联逻辑 | 功能逻辑设计 |
1. 信息架构
本功能不增加一级页面、Composer 按钮或 Runtime 专属工具栏。用户主要通过三处理解能力:
- 设置 > MCP > 直连模型:查看工作区文件和开发工具说明。
- 聊天消息活动块:查看命令和 Subagent 的实时状态与结果。
- 运行记录:按当前 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 结果详情
详情按以下顺序展示:
- Shell、工作目录、耗时和退出码。
- stdout。
- stderr。
- 预览省略提示与工具结果中的续读引用。
日志使用共享等宽字体和可选择文本。长输出在活动块内折叠,展开后仍保持工作栏和聊天布局 可用;不把完整日志复制为应用通知。
模型使用 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;用户回到聊天活动块展开查看详情。