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
GoodBuddy Agent Release / Authorize Agent release (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
GoodBuddy Agent Release / Build darwin arm64 compound package (push) Canceled after 0s
GoodBuddy Agent Release / Build linux arm64 compound package (push) Canceled after 0s
GoodBuddy Agent Release / Build linux x64 compound package (push) Canceled after 0s
GoodBuddy Agent Release / Sign cumulative Agent catalog (push) Canceled after 0s
GoodBuddy Agent Release / Publish Agent to GitHub and OSS (push) Canceled after 0s
16 KiB
16 KiB
GoodBuddy 长期助手功能规划
文档信息
| 项目 | 内容 |
|---|---|
| 文档类型 | 产品路线图 |
| 状态 | 规划中 |
| 版本 | 0.4 |
| 日期 | 2026-08-22 |
| 适用产品 | GoodBuddy 桌面端 |
| 相关设计 | 通用助手工作栏与执行空间 PRD、Task 与 Job 统一领域模型、智能心跳 PRD、全双工实时语音交互设计 |
1. 文档目标
本文定义 GoodBuddy 从“安全对话助手”演进为“可长期使用的桌面工作助手”所需的产品能力、交互结构、数据模型、权限边界、实施阶段和验收标准。
规划参考 ChatGPT 桌面版的桌面上下文、Projects、Tasks、成果分屏体验,以及腾讯 WorkBuddy 的任务工作区、右侧栏、自动化、记忆和专家协作能力,但不依赖其私有实现。
2. 产品目标
GoodBuddy 应能够:
- 持续组织项目、会话、任务、成果和记忆,而不是只保存聊天记录。
- 在明确授权下理解文件、知识库、截图、应用窗口和浏览器上下文。
- 以 Ask 只读问答和 Execute 完整授权两种模式完成工作;计划审查是 Ask 中的交互方式,不是第三种权限模式。
- 在应用级助手工作栏中持续提供任务中心、监督、Runtime、终端、进程、工作区、浏览器和成果。
- 支持后台任务、定时任务、失败恢复和桌面通知。
- 让所有记忆、权限、上下文和远程传输可见、可审查、可撤销。
3. 产品信息架构
3.1 桌面布局
┌──────────────┬──────────────────────────────┬──────────────────────┐
│ 左侧导航 │ 主工作区 │ 右侧工作栏 │
│ │ │ │
│ 项目 │ 对话 / 知识库 / 活动 │ 任务中心 / 监督 │
│ 会话 │ │ Runtime / 终端 │
│ 智能心跳 │ │ 进程 / 工作区 │
│ 记忆 │ │ 浏览器 / 成果 │
│ 设置 │ │ │
└──────────────┴──────────────────────────────┴──────────────────────┘
- 所有窗口宽度下右侧栏都停靠显示并推动主工作区水平回流,不覆盖或遮罩主内容。
- 排除最左侧主导航后,主工作区与右侧栏使用相同的
300px最小宽度,并按用户拖动后的 比例分配可用宽度;任一侧到达最小值后停止拖动。 - 主工作区中的消息流和输入区保留对称的左右安全边距,右侧栏不得覆盖或裁切其右边缘。
- 唯一展开与收起开关固定在窗口关闭按钮正下方,右侧栏内部不重复关闭入口;当前会话没有 Task 时不保留空的 Task 上下文栏。
- 右侧栏在对话、知识库和活动视图之间保持状态。
- 知识图谱实体详情复用同一右栏容器,不再维护独立布局。
- 九个标准能力固定可达;能力、连接和数据状态可以变化,但应用不按当前上下文自动隐藏入口。
- Task Center 是 Task 的单例索引;其他可绑定目标的能力支持跟随当前上下文或固定到用户选择的目标。
3.2 右侧工作栏
本节的范围、选择、执行空间与安全契约以 通用助手工作栏与执行空间 PRD 为准。
任务中心
- 保留 Task Center 作为工作栏中的稳定入口,不先建设平行的独立任务或自动化平台。
- 每个 Task 只关联一条 Conversation,一条 Conversation 可以关联多个 Task;打开 Task 就打开关联 Conversation 并定位该 Task。
- Task Center 只索引 Task,显示范围、状态、最近进展和需要关注信息。
- 普通 Conversation、Job、Run、工具步骤、Subagent 和智能心跳事项不作为顶层 Task。
- 左侧最近会话对关联 Task 显示行首展开按钮和带任务图标的子项,父行不重复任务标签, 当前 UI 只展开到 Task。
监督、Runtime 与进程
- 监督展示所选 Conversation、Task 或实验的带证据评论和介入请求。
- Runtime 按所选 Conversation 或 Task 聚合工具、委派、后台执行、Workflow/Hook 和生命周期, 不提供 Job/Run 树或独立操作对象。
- 进程只展示并控制 GoodBuddy 创建、托管或明确接管的进程。
- 待审批和高风险状态在所有栏目中持续可见,但不无条件抢占当前栏目。
终端
- 用户可主动创建本机或 SSH 终端,并明确看到执行空间、目录和连接状态。
- 用户终端与 Agent 工具执行分离,Agent 不得未经明确授权向终端注入输入。
Composer 与任务上下文
- 本次请求使用的附件、知识库、截图和剪贴板由 Composer 展示与管理。
- 授权目录、浏览器和工作区内容由对应工作栏能力展示,不创建重复的上下文栏目。
- 历史执行上下文随关联 Task 查看;记忆功能实现后归入任务中心。
- 不显示或持久化用户未主动选择的桌面内容。
成果
- 展示任务生成的文档、表格、演示文稿、PDF、图片、代码和网页。
- 支持打开、导出、在文件管理器中显示和继续修改。
- 成果必须关联项目、任务、运行和会话。
- HTML 使用禁用脚本和网络的隔离静态预览,并同时提供源码视图。
工作区
- 展示用户选择的项目、本机或 SSH 工作区文件树。
- 展示创建、修改和删除文件。
- 文本文件提供 Diff,支持接受、撤销和在外部应用打开。
- 高风险变更继续经过独立审批层。
浏览器
- 创建或选择 GoodBuddy 隔离浏览器会话,不控制用户已安装的浏览器。
- 展示当前 URL、有界画面、状态和错误,并由用户进入明确交互模式。
- 没有会话时提供创建入口,不隐藏浏览器栏目。
4. 核心功能
4.1 Projects 工作区
每个项目包含:
- 名称、说明、根目录和状态。
- 独立会话列表、任务、成果、记忆和自动化。
- 默认工作模式、Runtime、模型连接、Skills、MCP 和知识库范围。
- 项目可归档、恢复和导出。
会话支持置顶、归档、重命名、删除、按项目筛选和搜索;稳定的本地会话还可复制当前聊天 内容到独立分支,并保留不依赖来源生命周期的来源标识。
4.2 工作模式
Ask
- 默认只读。
- 允许读取明确授权的上下文。
- 禁止文件写入、命令执行和外部副作用。
Execute
- 允许按现有逐工具审批机制执行。
- 执行快照固定工作目录、模型、技能、MCP 和权限策略。
- 设置变化不影响正在运行的任务。
4.3 后台 Task 与 Job
- Task 只关联一条 Conversation,Conversation 可以承载多个 Task;内部步骤、委派、并行 分支和重复触发使用 Job/Subjob,但当前 UI 不展示这些内部层级。
- Task 状态:排队、运行、等待审批、暂停、完成、失败、取消、中断。
- 应用隐藏后 Job 可以继续运行,应用退出后不承诺继续执行。
- 重启时将未完成 Run 标记为中断,并允许用户恢复。
- Task/Job 事件先持久化,再发送给 Renderer,避免窗口刷新后丢失。
- 取消 Task 时必须向所有活动 Job、Subjob 和 Runtime 传播。
4.4 长期记忆
记忆作用域:
- 全局:用户偏好和通用习惯。
- 项目:术语、约定、目标和工作方式。
- 会话:仅在当前对话中使用。
记忆状态:
- 建议:模型提出,尚未启用。
- 已确认:允许参与后续上下文。
- 已拒绝:不再自动建议相同内容。
用户可以查看、搜索、编辑、确认、拒绝、删除和要求忘记。敏感个人信息不得自动确认为长期记忆。
4.5 智能心跳
- 当前智能心跳继续提供周期回顾、报告、记忆建议、行动建议和运行历史。
- “智能心跳”菜单入口负责完整配置,并支持 Global 或指定一个、多个 Project。
- 任务中心和设置中心不复制智能心跳 CRUD。
- 智能心跳长期按分区回顾信息并提出记忆候选或唤起建议,但协同规则、唤起条件、生命周期、 页面以及与任务的关系尚未设计,不能提前实现平行的记忆类型或页面。
4.6 成果和预览
- 成果存储在应用管理目录或用户指定位置。
- 每个成果记录类型、MIME、校验值、大小、来源和更新时间。
- Renderer 只能通过受控 IPC 读取预览,不接收任意系统路径访问能力。
- 大文件采用流式或分页读取,并设定大小上限。
4.7 定时任务
- 支持单次、每日、每周、每月和受限 Cron 规则。
- 保存时区、有效期、错过执行策略和输出位置。
- 支持立即运行、暂停、编辑、删除和查看历史。
- 应用启动及系统恢复时重新计算待执行任务。
- 同一计划同一时间点不得重复执行。
4.8 桌面通知
- 任务完成、失败、等待审批和定时任务结果可触发通知。
- 点击通知打开对应项目、任务或会话。
- 通知内容默认不包含敏感上下文。
4.9 桌面上下文
首期采用显式选择:
- 当前活动窗口信息。
- 指定窗口截图。
- 指定浏览器页面内容。
- 文件、目录、剪贴板和屏幕区域。
不实现持续录屏、静默窗口监控或全局输入记录。授权策略可以持久化,采集内容默认不持久化。
4.10 语音
- 当前已提供点击开始、再次点击停止或到达 20 秒上限后停止的本地一次性语音听写。
- 转写结果先进入可编辑输入框,不自动发送。
- 后续按全双工实时语音交互设计增加持续听说、 Barge-in、流式文本转语音、本地与云端显式语音引擎。
- 活动会话冻结引擎、Provider、模型、地域、数据位置和能力;引擎失败时明确停止或重试 当前选择,不在本地/云端、原生/模块化、语音/文本之间静默降级。
- 麦克风权限仅在可信主窗口、显式语音会话和用户操作后开启。
- 音频转写完成后默认删除。
4.11 远程委派
- 远程入口可从受信任 Webhook、企业 IM 或移动端创建任务。
- 默认仅允许使用明确配置的项目和能力。
- 文件、记忆和桌面上下文不得隐式上传。
- Token 使用系统安全存储加密。
- 所有远程任务记录来源、摘要、幂等键、权限和结果。
- 远程委派默认关闭。
4.12 专家与多 Agent
- 专家包含名称、职责、系统指令、模型策略和能力白名单。
- Task 可创建受限 Job/Subjob,并交给专家 Subagent 串行或并行执行。
- 必须限制最大层级、并发、耗时、Token、工具次数和成果大小。
- Job/Subjob 不能绕过所属 Task 的权限和范围。
- 协调器负责整合结果,并行 Subagent 不直接向同一 Conversation 无序写入。
5. 数据与持久化
新增独立 assistant.sqlite,不修改现有 knowledge.sqlite。
核心实体:
projectswork_modesconversationsmessagestasksrunstask_eventsartifactsmemory_itemsschedulesschedule_runsnotificationsexpertsdelegations
数据库要求:
- WAL、外键、事务化迁移。
- 所有状态变更可恢复。
- 敏感 Token 不写入 SQLite。
- 本地存储迁移成功后才删除旧数据。
- 支持数据导出和彻底删除。
6. 安全与隐私
- 所有新 IPC 继续执行 Zod 校验和可信主窗口校验。
- 项目根目录、成果路径和上下文路径必须 canonicalize 并验证目录包含关系。
- Child Runtime 环境变量改用最小 allowlist,避免继承无关密钥。
- 远程委派支持用户配置的 HTTP 和 HTTPS 地址,不按主机位置增加额外限制。
- 语音、窗口捕获和浏览器上下文分别授权。
- 自动化不得绕过工具审批和项目权限。
- 记忆必须保留来源和作用域。
- 所有模型输入继续按“不可信数据”处理。
7. 实施阶段
阶段 0:持久化基础
- 新增
assistant.sqlite和迁移框架。 - 会话与运行记录已从
localStorage迁移到主进程数据库;旧运行记录可能触及历史上限时 保留可见的不完整提示。 - 拆分共享契约和 IPC 注册。
- 保持现有对话、知识库、设置和审批行为不变。
阶段 1:长期工作区骨架
- Projects 与会话归属。
- Ask、Execute 工作模式与旧版 Plan 数据兼容。
- 应用级助手工作栏壳层。
- 固定任务中心、监督、Runtime、终端、进程、工作区、浏览器和成果八个能力入口。
- 任务中心保持单例索引,其他可绑定能力支持跟随当前上下文或固定目标。
阶段 2:Task 与 Job
- 持久化 Task、Job、Run 和事件。
- 在现有 Task Center 补齐范围、状态、最近进展、需要关注和直接打开关联 Conversation。
- 在左侧最近会话增加行首展开按钮和 Task 子项图标,展开层级止于 Task。
- 取消、重试、恢复和审批收件箱。
- 托盘状态和桌面通知。
阶段 3:成果与记忆
- 成果存储和安全预览。
- 项目记忆、确认流程和检索。
- 智能心跳配置支持 Global 或指定一个、多个 Project,并在自己的菜单入口完成配置和处理。
- 统一上下文组装器。
阶段 4:自动化与桌面上下文
- 定时任务和执行历史。
- 窗口选择、活动应用和浏览器上下文。
阶段 5:语音
- 以现有点击式一次性听写、本地转写适配器和可编辑转写作为实施基线。
- 实现全双工会话契约、AudioWorklet 音频平面、Barge-in 和播放提交语义。
- 接入本地模块化、本地原生和云端原生语音引擎;所有引擎均由用户显式选择,不静默降级。
阶段 6:专家与远程委派
- 专家注册和受限 Job/Subjob。
- 多 Agent 编排。
- 企业 IM/Webhook 远程入口。
8. 验收标准
8.1 右侧栏
- 三种窗口宽度下布局可用。
- 九个标准能力在主要视图中固定可达,应用不按能力自动隐藏。
- 跨主视图切换保持栏目、折叠、跟随和固定目标状态。
- 任务中心、监督、Runtime、终端、进程、工作区、浏览器、资源监控和成果更新不要求离开当前主任务。
- 键盘可操作,并具备正确 ARIA 标签。
8.2 Projects
- 创建、编辑、归档和恢复项目。
- 项目切换不会泄漏其他项目的上下文、记忆或任务。
- 旧会话可迁移且不丢失。
8.3 Task
- 每个 Task 只关联一条 Conversation,一条 Conversation 可以承载多个 Task,关联不改变 Conversation 类型或复制内容。
- Task Center 入口保留,普通 Conversation、Job、Run 和心跳事项不会混入顶层列表。
- 每个 Task 显示范围、状态、最近进展和需要关注信息,并可直接打开其 Conversation。
- 左侧会话列表显示行首展开按钮和 Task 子项图标;当前 UI 不展示 Job/Subjob/Run 层级。
- 事件持久化后再展示。
- 取消、失败、重试和应用重启均有确定状态。
- 审批在全局右侧栏可见。
8.4 记忆
- 未确认记忆不会进入模型上下文。
- 用户删除后不再检索到。
- 每条记忆显示来源与作用域。
- 智能心跳配置明确属于 Global 或指定 Project,当前报告和建议继续沿用已有生命周期。
- 分区记忆协同和唤起条件完成设计前,不新增相关数据、页面或任务转换。
8.5 安全
- Renderer 无任意文件读取能力。
- Runtime 无无关进程环境变量。
- 自动化和远程入口不能绕过审批。
- API Key、连接 Token 和音频不以明文长期保存。
8.6 质量门禁
npm run typechecknpm run lintnpm test- 阶段里程碑执行
npm run build - 发布前执行 packaged GUI smoke、依赖审计和 secret scan