# GoodBuddy 长期助手功能规划 ## 文档信息 | 项目 | 内容 | | --- | --- | | 文档类型 | 产品路线图 | | 状态 | 规划中 | | 版本 | 0.3 | | 日期 | 2026-08-19 | | 适用产品 | GoodBuddy 桌面端 | | 相关设计 | [通用助手工作栏与执行空间 PRD](../prd/assistant-experience/assistant-workbar-and-execution-spaces-prd.md)、[Task 与 Job 统一领域模型](../prd/task-and-job/task-and-job-model.md)、[智能心跳 PRD](../prd/smart-heartbeat/smart-heartbeat-prd.md) | ## 1. 文档目标 本文定义 GoodBuddy 从“安全对话助手”演进为“可长期使用的桌面工作助手”所需的产品能力、交互结构、数据模型、权限边界、实施阶段和验收标准。 规划参考 ChatGPT 桌面版的桌面上下文、Projects、Tasks、成果分屏体验,以及腾讯 WorkBuddy 的任务工作区、右侧栏、自动化、记忆和专家协作能力,但不依赖其私有实现。 ## 2. 产品目标 GoodBuddy 应能够: 1. 持续组织项目、会话、任务、成果和记忆,而不是只保存聊天记录。 2. 在明确授权下理解文件、知识库、截图、应用窗口和浏览器上下文。 3. 以只读问答、计划审查和受控执行三种模式完成工作。 4. 在应用级助手工作栏中持续提供任务中心、监督、Runtime、终端、进程、工作区、浏览器、成果和上下文。 5. 支持后台任务、定时任务、失败恢复和桌面通知。 6. 让所有记忆、权限、上下文和远程传输可见、可审查、可撤销。 ## 3. 产品信息架构 ### 3.1 桌面布局 ```text ┌──────────────┬──────────────────────────────┬──────────────────────┐ │ 左侧导航 │ 主工作区 │ 右侧工作栏 │ │ │ │ │ │ 项目 │ 对话 / 知识库 / 活动 │ 任务中心 / 监督 │ │ 会话 │ │ Runtime / 终端 │ │ 智能心跳 │ │ 进程 / 工作区 │ │ 记忆 │ │ 浏览器 / 成果 │ │ 设置 │ │ 上下文 │ └──────────────┴──────────────────────────────┴──────────────────────┘ ``` - 宽窗口:右侧栏固定显示,可拖动宽度。 - 中等窗口:右侧栏默认折叠,点击后覆盖主工作区右侧。 - 窄窗口:右侧栏作为全屏抽屉。 - 右侧栏在对话、知识库和活动视图之间保持状态。 - 知识图谱实体详情复用同一右栏容器,不再维护独立布局。 - 九个标准能力固定可达;能力、连接和数据状态可以变化,但应用不按当前上下文自动隐藏入口。 - Task Center 是 Task 的单例索引;其他可绑定目标的能力支持跟随当前上下文或固定到用户选择的目标。 ### 3.2 右侧工作栏 本节的范围、选择、执行空间与安全契约以 [通用助手工作栏与执行空间 PRD](../prd/assistant-experience/assistant-workbar-and-execution-spaces-prd.md) 为准。 #### 任务中心 - 保留 Task Center 作为工作栏中的稳定入口,不先建设平行的独立任务或自动化平台。 - 每个 Task 与唯一 Conversation 一对一绑定;打开 Task 就打开该 Conversation。 - Task Center 只索引 Task,显示范围、状态、最近进展和需要关注信息。 - 普通 Conversation、Job、Run、工具步骤、Subagent 和智能心跳事项不作为顶层 Task。 #### 监督、Runtime 与进程 - 监督展示所选会话、任务、自动化或实验的带证据评论和介入请求。 - Runtime 展示所选会话或 Run 的工具、Subagent、后台 Job、Workflow/Hook 和生命周期。 - 进程只展示并控制 GoodBuddy 创建、托管或明确接管的进程。 - 待审批和高风险状态在所有栏目中持续可见,但不无条件抢占当前栏目。 #### 终端 - 用户可主动创建本机或 SSH 终端,并明确看到执行空间、目录和连接状态。 - 用户终端与 Agent 工具执行分离,Agent 不得未经明确授权向终端注入输入。 #### 上下文 - 展示本次请求使用的附件、知识库、截图、剪贴板和授权目录。 - 每项上下文显示来源、大小、发送状态和作用域。 - 支持预览、移除和清空。 - 不显示或持久化用户未主动选择的桌面内容。 #### 成果 - 展示任务生成的文档、表格、演示文稿、PDF、图片、代码和网页。 - 支持打开、导出、在文件管理器中显示和继续修改。 - 成果必须关联项目、任务、运行和会话。 - HTML 使用禁用脚本和网络的隔离静态预览,并同时提供源码视图。 #### 工作区 - 展示用户选择的项目、本机或 SSH 工作区文件树。 - 展示创建、修改和删除文件。 - 文本文件提供 Diff,支持接受、撤销和在外部应用打开。 - 高风险变更继续经过独立审批层。 #### 浏览器 - 创建或选择 GoodBuddy 隔离浏览器会话,不控制用户已安装的浏览器。 - 展示当前 URL、有界画面、状态和错误,并由用户进入明确交互模式。 - 没有会话时提供创建入口,不隐藏浏览器栏目。 ## 4. 核心功能 ### 4.1 Projects 工作区 每个项目包含: - 名称、说明、根目录和状态。 - 独立会话列表、任务、成果、记忆和自动化。 - 默认工作模式、Runtime、模型连接、Skills、MCP 和知识库范围。 - 项目可归档、恢复和导出。 会话支持置顶、归档、重命名、删除、按项目筛选和搜索。 ### 4.2 工作模式 #### Ask - 默认只读。 - 允许读取明确授权的上下文。 - 禁止文件写入、命令执行和外部副作用。 #### Execute - 允许按现有逐工具审批机制执行。 - 执行快照固定工作目录、模型、技能、MCP 和权限策略。 - 设置变化不影响正在运行的任务。 ### 4.3 后台 Task 与 Job - Task 拥有唯一 Conversation;内部步骤、委派、并行分支和重复触发使用 Job/Subjob。 - 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 语音 - 首期提供按住说话和语音转文字。 - 转写结果先进入可编辑输入框,不自动发送。 - 后续增加流式语音对话和文本转语音。 - 麦克风权限仅在可信主窗口、显式语音会话和用户操作后开启。 - 音频转写完成后默认删除。 ### 4.11 远程委派 - 远程入口可从受信任 Webhook、企业 IM 或移动端创建任务。 - 默认仅允许使用明确配置的项目和能力。 - 文件、记忆和桌面上下文不得隐式上传。 - Token 使用系统安全存储加密。 - 所有远程任务记录来源、摘要、幂等键、权限和结果。 - 远程委派默认关闭。 ### 4.12 专家与多 Agent - 专家包含名称、职责、系统指令、模型策略和能力白名单。 - Task 可创建受限 Job/Subjob,并交给专家 Subagent 串行或并行执行。 - 必须限制最大层级、并发、耗时、Token、工具次数和成果大小。 - Job/Subjob 不能绕过所属 Task 的权限和范围。 - 协调器负责整合结果,并行 Subagent 不直接向同一 Conversation 无序写入。 ## 5. 数据与持久化 新增独立 `assistant.sqlite`,不修改现有 `knowledge.sqlite`。 核心实体: - `projects` - `work_modes` - `conversations` - `messages` - `tasks` - `runs` - `task_events` - `artifacts` - `memory_items` - `schedules` - `schedule_runs` - `notifications` - `experts` - `delegations` 数据库要求: - WAL、外键、事务化迁移。 - 所有状态变更可恢复。 - 敏感 Token 不写入 SQLite。 - 本地存储迁移成功后才删除旧数据。 - 支持数据导出和彻底删除。 ## 6. 安全与隐私 1. 所有新 IPC 继续执行 Zod 校验和可信主窗口校验。 2. 项目根目录、成果路径和上下文路径必须 canonicalize 并验证目录包含关系。 3. Child Runtime 环境变量改用最小 allowlist,避免继承无关密钥。 4. 远程委派仅允许 HTTPS,开发环境只放行 loopback。 5. 语音、窗口捕获和浏览器上下文分别授权。 6. 自动化不得绕过工具审批和项目权限。 7. 记忆必须保留来源和作用域。 8. 所有模型输入继续按“不可信数据”处理。 ## 7. 实施阶段 ### 阶段 0:持久化基础 - 新增 `assistant.sqlite` 和迁移框架。 - 将会话与活动从 `localStorage` 迁移到主进程数据库。 - 拆分共享契约和 IPC 注册。 - 保持现有对话、知识库、设置和审批行为不变。 ### 阶段 1:长期工作区骨架 - Projects 与会话归属。 - Ask、Execute 工作模式与旧版 Plan 数据兼容。 - 应用级助手工作栏壳层。 - 固定任务中心、监督、Runtime、终端、进程、工作区、浏览器、成果和上下文九个能力入口。 - 任务中心保持单例索引,其他可绑定能力支持跟随当前上下文或固定目标。 ### 阶段 2:Task 与 Job - 持久化 Task、Job、Run 和事件。 - 在现有 Task Center 补齐范围、状态、最近进展、需要关注和直接打开 Task Conversation。 - 取消、重试、恢复和审批收件箱。 - 托盘状态和桌面通知。 ### 阶段 3:成果与记忆 - 成果存储和安全预览。 - 项目记忆、确认流程和检索。 - 智能心跳配置支持 Global 或指定一个、多个 Project,并在自己的菜单入口完成配置和处理。 - 统一上下文组装器。 ### 阶段 4:自动化与桌面上下文 - 定时任务和执行历史。 - 窗口选择、活动应用和浏览器上下文。 ### 阶段 5:语音 - 按住说话、转写适配器和可编辑转写。 - 后续扩展实时语音与 TTS。 ### 阶段 6:专家与远程委派 - 专家注册和受限 Job/Subjob。 - 多 Agent 编排。 - 企业 IM/Webhook 远程入口。 ## 8. 验收标准 ### 8.1 右侧栏 - 三种窗口宽度下布局可用。 - 九个标准能力在主要视图中固定可达,应用不按能力自动隐藏。 - 跨主视图切换保持栏目、折叠、跟随和固定目标状态。 - 任务中心、监督、Runtime、终端、进程、工作区、浏览器、成果和上下文更新不要求离开当前主任务。 - 键盘可操作,并具备正确 ARIA 标签。 ### 8.2 Projects - 创建、编辑、归档和恢复项目。 - 项目切换不会泄漏其他项目的上下文、记忆或任务。 - 旧会话可迁移且不丢失。 ### 8.3 Task - 每个 Task 与唯一 Conversation 一对一绑定,用户无需理解第二层内容载体。 - Task Center 入口保留,普通 Conversation、Job、Run 和心跳事项不会混入顶层列表。 - 每个 Task 显示范围、状态、最近进展和需要关注信息,并可直接打开其 Conversation。 - 事件持久化后再展示。 - 取消、失败、重试和应用重启均有确定状态。 - 审批在全局右侧栏可见。 ### 8.4 记忆 - 未确认记忆不会进入模型上下文。 - 用户删除后不再检索到。 - 每条记忆显示来源与作用域。 - 智能心跳配置明确属于 Global 或指定 Project,当前报告和建议继续沿用已有生命周期。 - 未来分区记忆完成独立设计前,不新增相关数据、页面或任务转换。 ### 8.5 安全 - Renderer 无任意文件读取能力。 - Runtime 无无关进程环境变量。 - 自动化和远程入口不能绕过审批。 - API Key、连接 Token 和音频不以明文长期保存。 ### 8.6 质量门禁 - `npm run typecheck` - `npm run lint` - `npm test` - 阶段里程碑执行 `npm run build` - 发布前执行 packaged GUI smoke、依赖审计和 secret scan