GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build darwin arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Deploy website to GitHub Pages / Deploy static website (push) Canceled after 0s
Remove obsolete work-mode labels from bilingual product previews and describe tools through enabled capabilities and Runtime assignments. Fix preview overlap and narrow-screen clipping, guard the updated copy, and record execution migration and validation results. Release note: 官网同步移除 Ask/Execute 模式展示,更新工具配置说明,并修复桌面与手机首屏示意的遮挡和裁切。
114 lines
11 KiB
Markdown
114 lines
11 KiB
Markdown
# 技术设计
|
||
|
||
状态:主要源码改造已落地,完整验证待完成。规则见[PRD](./prd.md)与[执行规则](./logic-design.md),调研基线见[源码调研](./source-audit.md),字段级转换见[数据迁移](./data-migration.md),实际证据见[进度](./progress.md)。
|
||
|
||
## 结构调整
|
||
|
||
正常调用保留现有 Renderer → IPC → Runtime → 工具执行链路,删除各层携带的产品工作模式。无需新增权限服务、策略框架或持久化状态。
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
A[对话、队列、日程、通道] --> B[Runtime、模型、执行空间与上下文]
|
||
C[已启用能力与 Runtime 分配] --> D[实际工具目录]
|
||
B --> E[Runtime 执行]
|
||
D --> E
|
||
E --> F[原生工具、MCP、图片与子代理]
|
||
G[专用内部文本调用] --> H[无工具模型实例]
|
||
```
|
||
|
||
图中表示当前源码结构。模型和 Runtime 的真实能力限制、能力启用与分配、工具业务校验仍在原有实现中处理;产品 `toolApproval` 策略与一般工具审批等待已移除。
|
||
|
||
## 合同与调用边界
|
||
|
||
删除 `WorkMode`、`InteractiveWorkMode`、生产使用的 `LegacyWorkMode`、`normalizeInteractiveWorkMode` 及请求/结果中的模式字段。迁移模块可以识别历史键和值,但不得让兼容类型继续进入新执行请求。
|
||
|
||
同步修改 `assistant-contracts`、`contracts`、`runtime`、`image-generation-contracts`、`channel-contracts`、`remote-project-candidate-contracts`、`remote-runtime-launch-contracts` 和 `remote-agent-contracts`。原生清单的 `ask/execute` 属性以及能力说明中的 `availableIn` 模式数组一并删除。
|
||
|
||
IPC、preload 类型、Renderer 事件、任务投影、队列输入、子代理活动和恢复入口必须使用同一无模式形状。不能依赖 Zod 自动剥离字段代替实际持久化清理;严格 schema 的切换顺序须配合升级。
|
||
|
||
按 L-5 和 US-17 删除 `toolApproval` 的共享合同、默认值、设置读写、IPC 更新字段和各来源拒绝分支。移除一般工具审批的 Broker 等待、事件、回应入口与界面引用;保留原生权限协议的合法回应、结构化提问、取消和超时。不得把旧策略改成常驻的自动允许字段。
|
||
|
||
`stripWorkModeInstruction` 已删除,新请求不注入模式提示词。历史回放保留用户正文,不以任意正文以 `Work mode:` 开头为依据删除内容;既有不可信历史信封仍按完整格式解析。
|
||
|
||
## Runtime 实施清单
|
||
|
||
| 模块 | 必做调整 | 需保留的机制 |
|
||
| --- | --- | --- |
|
||
| Controller / Model | 删除 Ask deny authorizer、工具循环模式条件、目录和调用双重检查;删除 `rg` 的 Ask 参数解析 | 纯文本实例、工具注册身份、输出分页、取消、进程清理、工作区 API 语义 |
|
||
| OpenCode | 删除模式权限模板、Ask tool override、MCP/图片注册模式条件和 Ask 回应分支 | 运行时会话隔离、临时 MCP 生命周期、问题与权限协议的合法回应 |
|
||
| Continue | 删除产品模式参数、只读名单、模式选择 argv 和 MCP 拒绝分支;核对原生配置合并 | 与固定上游版本有关的其他补丁、Windows 处理、结构化问题、工具配置 |
|
||
| Harness | 删除 host 的 trusted Ask 定义、控制面的 Ask 工具钩子、prepare 模式及 ACP 模式宣告 | 工具实际注册、插件、请求归属、工具事件与输出回传 |
|
||
| 原生客户端 | 删除模式参与的启动身份、Continue 注入限制、OpenCode/DS Web 模式插件 | 用户历史目录、资源回收、独立上游配置和必要启动适配 |
|
||
| 内置 MCP / 图片 | 调整权限发放入口;移除图片服务及绑定的模式字段、回调、拒绝和描述隐藏 | 启用和分配、资源范围、模型配置、计划有效性、图片引用与保存语义 |
|
||
| 子代理与内部任务 | 删除继承及 Ask-only 智能路由条件;内部分析使用无工具实例 | 已有路由开关、能力上下文、专家/团队、摘要和监督者无工具性质 |
|
||
| 调度 / 通道 / 委派 | 删除模式、`toolApproval` 策略、一般工具审批等待及委派固定拒绝,不再识别模式前缀 | 时间计划、来源身份、队列顺序、业务许可和结果投递 |
|
||
|
||
原生工具没有通用逐工具开关,不能把新增设置系统作为移除前提。Continue `chat/agent`、OpenCode 原生 agent 类型、上游权限 `ask` 和文件权限 `mode` 按各自含义保留;仅删除它们与 GoodBuddy 工作模式的耦合。
|
||
|
||
## 远程协议与升级
|
||
|
||
Agent wire 保持 2.0,`runtime/acp` capability 已从 5 升至 6;prepare、acceptance 和 launch 不再含 `workMode`,使用既有精确版本协商拒绝旧端。本地 Harness 控制扩展由 1 升至 2,Utility 启动控制协议仍为 3,两者不混用。
|
||
|
||
Desktop、Agent、CLI、runtime profile、model bridge 路由、Continue helper、OpenCode 子会话插件必须同批更新。删除 `--work-mode`、模式相关进程冲突与路由字段,并重建受影响的受管包。当前源码版本与包锁版本不可混用作为验收证据。
|
||
|
||
旧 Agent 必须在提交新任务前被识别并提示更新,不能失败后补 `execute` 再投递。对于旧版已接受任务,保持 operation ID、prepare/start digest、事件序号和 ACK;使用已有状态查询、恢复与升级流程,不自动重发请求。若新合同不能恢复某种旧会话,必须报告明确状态,并在发布前给出已验证的处理路径。
|
||
|
||
远程 `semantic-prompt` 存储没有完整 preparation 对象,无法根据删字段后的请求重建旧摘要。字段迁移与摘要比较的关系见数据迁移。当前通用远程 MCP 转发缺口独立记录,不将模式删除描述为新增远程支持。
|
||
|
||
外部 `/goodbuddy/tasks/next` 委派入口接受无模式形状,也接受并丢弃旧 `ask/plan/execute` 字段;向内部只传无模式对象。新输出不发送模式,外部服务兼容性仍需验收。这个兼容入口不决定工具权限。
|
||
|
||
## 历史升级执行顺序
|
||
|
||
1. 先修改新写入形状与读取投影,建立旧字段转换测试。
|
||
2. 在现有启动 Worker 中执行版本升级;业务连接、恢复、队列和日程不得先读取未转换记录。
|
||
3. 保留已发布迁移链,schema 60 追加字段移除迁移。Runtime 设置 22 定向删除顶层 `toolApproval`,两类升级各自执行。
|
||
4. 清理 localStorage 导入、旧队列解析和远程事件归一化,避免升级后写回旧字段。
|
||
5. 新库和真实旧库副本走同一产品启动路径验收;不默认执行全库 `VACUUM`。
|
||
|
||
迁移不能通过重新序列化为窄 schema 丢弃其他元数据;不新增迁移日志框架或持久化恢复凭证。
|
||
|
||
## 实施阶段
|
||
|
||
| 阶段 | 内容 | 进入下一阶段的证据 |
|
||
| --- | --- | --- |
|
||
| P1 | 合同、状态、数据库与 Runtime 设置迁移 | 新写入无模式及 `toolApproval`,旧数据转换可重复,字段外内容与身份不变 |
|
||
| P2 | Controller、各本地 Runtime、工具与内部任务 | 生产调用链不依赖模式;正常工具任务与内部无工具任务均通过 |
|
||
| P3 | 原生客户端、子代理、队列、日程、通道和委派 | 启动配置及各来源实际可用,取消/恢复不回退旧逻辑 |
|
||
| P4 | Desktop-Agent 协议、辅助程序与受管包 | 兼容性协商及真实 Host 的当前源码路径通过 |
|
||
| P5 | UI、文案、当前规范及发布说明 | 无模式和安全分类,通用设置可确认或取消清除数据,中英文界面与迁移验收完成 |
|
||
|
||
阶段可在开发中交叉推进,最终必须一起交付;不能发布仅删除界面而后端仍依赖模式的中间状态。
|
||
|
||
## 验证矩阵
|
||
|
||
| 层次 | 验证内容 | 证据形式 |
|
||
| --- | --- | --- |
|
||
| 静态清点 | 字段、模式分支、默认值、CLI、生成插件、提示词与 i18n | 对每个剩余搜索命中说明其为历史迁移或无关语义 |
|
||
| 存储 | 新库、schema 59、较早已发布库、重复启动、失败与恢复、远程重放 | 产品 Worker 升级、内容比较、完整性检查与计时 |
|
||
| 设置 | Runtime 设置 21 及更早支持版本、全部旧策略值、保存与重启 | 新版本落盘无 `toolApproval`,其他设置及加密凭据字节保留;历史必填字段不新增缺省策略 |
|
||
| 工具 | 原生各工具组、启用/关闭 MCP、图片生成保存、业务错误 | 真实入口调用结果;关闭服务不能被伪造调用绕过 |
|
||
| Runtime | Model、OC、CN、DSH、各原生客户端及其子任务 | 聚焦测试加生产路径验证,包含动态插件工具 |
|
||
| 请求来源 | 对话、恢复队列、定时、通道、委派、内部分析 | 无旧策略拒绝或一般审批等待,任务身份与结果一致,内部分析没有工具 |
|
||
| 远程 | 兼容/不兼容版本、OpenCode/Continue、断开恢复、停止与重启 | 共享 Linux x64 Host 上的当前源码或开发包验证 |
|
||
| UI | 各删除面、键盘、窄窗口、浅深主题和中英文 | 真实 Electron 验收及组件回归 |
|
||
|
||
完成代码改造后运行 `npm test`、`npm run typecheck`、`npm run lint`。构建、真实模型和 Agent 验证遵循仓库开发规则;记录实际请求数,不把已有单测或配置检查写成端到端通过。图片提供商调用与纯文本模型验证分开记录。
|
||
|
||
## 文档同步清单
|
||
|
||
根运行时约定、站点中英文 HTML 及下列 Markdown 现行规范已按无模式源码更新。日期明确的历史记录保留原状;尚未实现的功能仍标为规划,完整测试与发布包验证不因文档同步而视为通过。
|
||
|
||
| 文档范围 | 更新内容 |
|
||
| --- | --- |
|
||
| 根 `AGENTS.md`、`UI-DESIGN.md` | 删除 Ask 只读、Execute 授权与选择器规范;删除安全分类,将清除数据放入通用设置;保留 OS、生命周期和发布规则 |
|
||
| 根 README、FEATURES 中英文、`BUILD.md`、站点 | 能力介绍、启动与升级说明 |
|
||
| assistant-workbar、direct-model-agent、deepseek-harness、remote-host | 执行、原生客户端、合同、权限协议和真实验证 |
|
||
| task-and-job、wechat-channel、telegram-channel | 任务字段、日程继承、旧命令和未来通道需求 |
|
||
| conversation-media-generation、computer-control、obsidian、magic-notes、conversation-supervision | 模式依赖、业务范围与内部无工具任务 |
|
||
| device-sharing 与跨功能架构 | 已有委派合同;不扩大设备共享的当前实现范围 |
|
||
| local-tool-environment、application-tool-navigation、知识与文档类功能 | 引用旧模式的设置说明与功能条件 |
|
||
| desktop-pet、office-document-editing、full-duplex-voice、路线图 | 尚未实施方案中的旧模式依赖 |
|
||
| 开发验证脚本与发布手册 | 模式参数、旧验收场景和 Agent 兼容步骤 |
|
||
|
||
旧发布说明、日期明确的测试记录和审查报告保留当时事实,通过新版说明建立替代关系,不伪造过去的验证结果。
|