diff --git a/FEATURES.md b/FEATURES.md index 169d8435..7487bced 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -333,7 +333,7 @@ records are listed separately and do not introduce another feature status. failure, Agent `SIGKILL`/restart, and recovery from a reopened Desktop SQLite database. Successful tool START/END events appear exactly once, with no Prompt, provider, or tool replay observed. The current Agent source lock is - `0.15.1`, paired with the current Desktop release candidate `0.15.4`; formal + `0.15.1`, paired with the current Desktop release candidate `0.15.5`; formal publication status follows the separate Agent and Desktop release channels. Previous macOS validation covered native package installation, detached lifecycle, Attach, real Ask/Execute, and cancellation of tools in @@ -446,6 +446,8 @@ records are listed separately and do not introduce another feature status. waiting for another approval. See the [interaction boundaries](./docs/features/assistant-workbar/runtime-interactions.md). - [x] **Native execution checklists**: OpenCode and Continue update a read-only checklist above the conversation, with progress saved in history. + Details expand in an anchored, scrollable floating panel without shifting chat + content; outside clicks close it and Escape restores focus to its trigger. Explicit clears and remote replay retain request ownership; cancellation does not mark unfinished items complete. Remote delivery requires the matching Agent package. See the @@ -472,6 +474,9 @@ records are listed separately and do not introduce another feature status. indicators and send/stop behavior remain unchanged. Cancellation and failure retain existing replies and use a single status; cancellation is neutral, and Edit again appears only when input can be restored. + Model-visible history preserves interrupted partial replies or placeholders + so cancelled questions are not merged into later requests. Reused local + OpenCode sessions receive a one-time interruption notice. - [x] **Layered Runtime and model selection**: Resolve Runtime and model per field through conversation, project, and global defaults. The two-column composer picker shows sources and supports overrides or restoring project @@ -703,7 +708,9 @@ records are listed separately and do not introduce another feature status. records without replacing editors. Successful saves establish the editor's normalized baseline; only unsaved changes require confirmation on leaving. Opening a note shows a blank text/canvas composer above the history, and creation resets it - for the next record. Explicit editing updates a saved record. The separate To-dos view offers search, status filters, + for the next record. Explicit editing updates a saved record and exits after a + successful save; automatic comments do not reopen the editor, and failed saves + retain drafts. The separate To-dos view offers search, status filters, grouped tasks and direct completion, with instructions, source entries and AI comments in a right detail pane beside a stable task list. Narrow views offer on-demand detail with an explicit return to the list. Wide views support a @@ -807,16 +814,19 @@ records are listed separately and do not introduce another feature status. [Scheduled Task PRD](./docs/features/task-and-job/scheduled-task-prd.md). Status counts and filters identify running tasks and those needing attention; task approvals remain actionable in their task cards. -- [x] **Memory and Smart Heartbeat**: Provides periodic review, suggested - memories, insights, follow-up tasks, and auditable run history. -- [x] **Automatic supervision settings and scope**: Supervisor / Automatic supervision is - the sole authoritative plan configuration, automatic report, and suggestion entry. Daily or weekly plans can be - created and edited for Global or one or more selected Projects. Legacy - single-project settings migrate without loss, and project-level memory and - action output must explicitly target a Project in scope. Task Center and - Settings no longer duplicate the form. Partition-aware review, candidate - generation, and recall triggers remain to be designed. See the - [Smart Heartbeat PRD](./docs/features/smart-heartbeat/prd.md). +- [x] **Memory and Smart Heartbeat**: Plans trigger shared incremental reviews + instead of separate heartbeat reports. Choose memory/graph updates only or + evidence-backed suggestions for open items, disagreements, revisions, and + candidate conventions. Accepted open items create paused tasks; confirmed + conventions become long-term background. Suggestion failures can be retried + independently without undoing reviews. +- [x] **Smart heartbeat settings and scope**: Supervisor / Smart heartbeat + manages daily or weekly Global or selected-Project plans and suggestions. + Task Center and Settings do not duplicate this form. Pending suggestions are + not repeated; dismissed suggestions can return with changed evidence. + Project/global processing progress remain separate and real-time conversation + intervention remains planned. See the + [implemented rules](./docs/features/conversation-supervision/logic-design.md). - [x] **Supervisor reviews, story graphs, and activity**: Review a selected scope and period, read dated supervision results and history in Work review, inspect saved result graphs and sources, confirm or revise entities, and continue a discussion with source-linked review context. Sidebar feedback follows or pins a @@ -825,8 +835,10 @@ records are listed separately and do not introduce another feature status. focus in narrow sidebars. Activity combines heartbeat and downstream review stages, including failures and links to older results. Automatic stages process only new, changed, or unprocessed source portions; - no-change checks skip model calls. Manual review pages through the selected history - and saves batches with their facts and sources. Runs can pause and resume from + no-change checks skip model calls. Manual review is also incremental by default; + explicit reanalysis rereads the period without changing shared progress. + Automatic reviews do not resume user-paused runs. Reviews save batches with + their facts and sources. Runs can pause and resume from saved progress, without fixed-duration automatic pauses; settings expose concurrency, per-request timeouts, batch sizes, and response capacity. Activity emphasizes connected stages and saved-batch coverage, with secondary @@ -841,7 +853,8 @@ records are listed separately and do not introduce another feature status. Continue discussion opens directly from feedback or graph sources, with an editable question and explicit target-conversation navigation. The UI no longer exposes knowledge-entity writeback controls or redundant context - explanations, and Automatic supervision hides empty metrics until activity exists. + explanations. Smart heartbeat shows actionable suggestions rather than report + metrics and trends. - [ ] **Further supervision capabilities** (planned): Full event-by-event replay, Experiment targets, chronological manual-edit audits, event triggers, and broader execution observation remain incomplete. Current automatic @@ -938,9 +951,14 @@ records are listed separately and do not introduce another feature status. ### Open source, builds, and releases -- The current candidates are Desktop `0.15.4` and Agent `0.15.1`, with +- The current Desktop candidate is `0.15.5`; published Agent `0.15.1` is unchanged, with OpenCode pinned to `1.18.29` and Continue to `1.5.47`. Publication status follows the independent Desktop and Agent release channels. +- Desktop `0.15.5` updates Smart heartbeat and incremental review, preserves + cancelled-turn history, floats checklist details, and exits note editing after + saving. Schema 50 carries pending legacy memory proposals into unconfirmed + conventions; back up the database and adjacent notes before upgrading. + See the [preparation record](./docs/development/release-preparation-0.15.5.md). - Desktop `0.15.4` introduces layered Runtime/model choices and separate system-task usage, and reduces duplicate Runtime instructions and history. Schema 49 migrates project/conversation choices; rollback requires the complete diff --git a/FEATURES.zh-CN.md b/FEATURES.zh-CN.md index 44e8c629..35f0426b 100644 --- a/FEATURES.zh-CN.md +++ b/FEATURES.zh-CN.md @@ -52,7 +52,7 @@ - [x] **高效直连模型工作区工具**:直连模型使用随包 ripgrep 的原生参数发现文件和搜索内容,按行分页读取大型 UTF-8 文件,并在 Execute 中应用多文件补丁。Ask 限于工作区只读搜索和读取,Execute 按当前账号权限搜索;用户无需另行安装 ripgrep。搜索保留原生输出与退出码,大结果通过 `output_read` 完整续读,可处理的参数错误允许模型调整后继续。 - [x] **长上下文与工具输出分页**:历史消息、长回复和文档解析文本不再采用旧的固定截断限制。直连模型可分页续读已保存的搜索、命令和 Subagent 输出;所选模型的上下文窗口及传输边界仍然有效。 - [x] **OpenCode 与 Continue**:使用隔离子进程、环境变量白名单、统一配置、取消、启动与控制请求时限、有界流式输出和活动记录;共享进程回收逻辑保留 Windows 完整进程树终止,并对采用独立进程组的 POSIX 子进程执行组回收。聊天状态检查使用一次性探测 Runtime 并在返回后立即回收,不进入按模型与项目隔离的执行 Runtime 缓存;本机 GoodBuddy 管理的 OpenCode 在该被动检查中只确认所选路径和模型凭据,不启动用后即毁的 Server,设置中的显式连接测试和原生能力清单仍执行完整启动及健康检查,原生能力清单随后与首次实际请求复用同一个执行 Runtime,不再重复冷启动;执行 Runtime 仍按项目复用,但 OpenCode 配置依赖和按内容摘要生成的 Skill 快照在所有本机项目间全局复用,会话数据、工具输出及请求级 MCP 状态继续隔离。本机 GoodBuddy 管理的 OpenCode 只对同一会话内的请求保持顺序,不同会话即使属于同一项目也可并行,不同项目同样可并行;请求级动态 MCP 通过默认通配禁用和当前请求精确放行保持隔离。托管的本机和远端 OpenCode 跳过界面未使用的自动 Git 快照,避免同步差异计算拖住会话,文件工具、子代理与工作区 Git 差异保留;Continue 持续排空不用展示的宿主 stdout,防止控制台输出填满管道。这些调整随新启动的 Runtime 生效,不改写外部 OpenCode Server 配置。OpenCode 与 Continue 不再按固定工具调用数或活动数中止单次运行,已观察到的工具与 Subagent 活动全部保留在本地会话,不再在原生任务继续执行时丢弃后续详情。交互提问只由前台对话回答,定时任务、远程通道和委派等后台执行遇到提问时会立即失败并提示改为前台运行,避免无限等待。本机 OpenCode 启动时直接使用已选择的绝对路径,不预先检查文件或运行 `--version`,路径失效时由实际启动返回错误;托管 Linux ARM Host 激活 Runtime 时复用准备阶段已验证的 registry 和 manifest,不重新哈希或检查完整 OpenCode 二进制。 -- [x] **托管 SSH OpenCode 与 Continue**:该能力由“设置 > 平台功能”中的独立“远程项目”页签控制并默认关闭;关闭时不影响本地项目、普通桌面功能或桌面发布。支持 Linux x64、Linux arm64 和 macOS arm64 Host,不支持 Intel Mac;通过 SSH 按需启动 detached Agent,不要求开机服务。Ask 在 Runtime 工具边界保持只读,Execute 使用所选 SSH 账号的完整权限。Agent 持有 Prompt、模型和工具轮次、Runtime 进程及语义 transcript,Desktop 断开后重新 Attach 原操作而不重发 Prompt;模型凭据仅在当前操作内存中使用,不写入 Renderer、SSH 参数、环境或磁盘。当前 Agent 可以常驻,更新替换的旧 Agent 排空活动任务后退出。任务完成后回收空闲 Runtime,共享进程仍有任务或待答问题时保留;下一轮重建 Runtime 并恢复对话历史。设置页按平台和架构显示包状态,用户显式下载、更新或导入/导出包含 Agent、固定 Node、OpenCode 和 Continue 的签名 `.gbagent`;三个目标共用一个签名 catalog,继续校验签名和 SHA-256。Continue 需要更新后的联合包与配套 Desktop。首次发布混合 catalog 前需先升级 Desktop,旧版 Linux-only 目录读取器无法解析包含 Darwin 的目录。历史 macOS OpenCode 原生安装、生命周期、Attach、真实 Ask/Execute 和独立进程组工具取消已在真实 Host 验证,不代表 Continue 的同等实机覆盖。当前 Agent 源码锁为 `0.15.1`,配套 Desktop 候选为 `0.15.4`;详细运行边界和 Linux 历史回归证据见[远程主机技术设计](docs/features/remote-host/technical-design.md),正式发布状态以独立发布渠道为准。 +- [x] **托管 SSH OpenCode 与 Continue**:该能力由“设置 > 平台功能”中的独立“远程项目”页签控制并默认关闭;关闭时不影响本地项目、普通桌面功能或桌面发布。支持 Linux x64、Linux arm64 和 macOS arm64 Host,不支持 Intel Mac;通过 SSH 按需启动 detached Agent,不要求开机服务。Ask 在 Runtime 工具边界保持只读,Execute 使用所选 SSH 账号的完整权限。Agent 持有 Prompt、模型和工具轮次、Runtime 进程及语义 transcript,Desktop 断开后重新 Attach 原操作而不重发 Prompt;模型凭据仅在当前操作内存中使用,不写入 Renderer、SSH 参数、环境或磁盘。当前 Agent 可以常驻,更新替换的旧 Agent 排空活动任务后退出。任务完成后回收空闲 Runtime,共享进程仍有任务或待答问题时保留;下一轮重建 Runtime 并恢复对话历史。设置页按平台和架构显示包状态,用户显式下载、更新或导入/导出包含 Agent、固定 Node、OpenCode 和 Continue 的签名 `.gbagent`;三个目标共用一个签名 catalog,继续校验签名和 SHA-256。Continue 需要更新后的联合包与配套 Desktop。首次发布混合 catalog 前需先升级 Desktop,旧版 Linux-only 目录读取器无法解析包含 Darwin 的目录。历史 macOS OpenCode 原生安装、生命周期、Attach、真实 Ask/Execute 和独立进程组工具取消已在真实 Host 验证,不代表 Continue 的同等实机覆盖。当前 Agent 源码锁为 `0.15.1`,配套 Desktop 候选为 `0.15.5`;详细运行边界和 Linux 历史回归证据见[远程主机技术设计](docs/features/remote-host/technical-design.md),正式发布状态以独立发布渠道为准。 - [x] **SSH Host 手动环境准备源码链路**:Host Key、认证和系统探针成功后先保存 Host,并只读探测共享 Agent/Runtime;保存 Host、打开项目都不自动安装。Host 卡片只有一个按版本事实显示“安装远程环境”“更新远程环境”或“重新安装”的主按钮,次级 SegmentedControl 选择默认且不持久化的“自动”、Host 下载或 GoodBuddy 传输;“版本匹配”badge 不等同环境健康。自动模式只在 operation/prepare 前探测并择一,显式选择保持有效,任何 prepare、commit 或 adoption 失败都不跨 acquisition 自动 fallback。两种方式把同一签名 compound `.gbagent` 交付到固定 staging 后,共用 control-plane prepare、commit、Agent activate/health、Runtime activate、finalize 与显式 cleanup。GoodBuddy 路径可在同一次操作下载并验证缺失候选、缓存并取得 lease,再有界流式 SFTP 上传一个归档和其中已验证的 bootstrap Node,不把约 294 MiB 整包读入 Main `Buffer`;Host 在解包时完成一次完整 payload 校验。未完成操作只记录暂存 cleanup 所需的 operation ID;下次更新尽力清理旧暂存后重新 prepare,不保存远端 metadata 副本,也不让 cleanup 失败阻塞新更新或回滚健康环境。已有项目在实际使用 Workspace/Runtime 时按需解析 Host current identity 并执行固定 `attach-or-bootstrap`,注册后的 health、capabilities 和 prompt 启动不扫描完整 payload。详见 [设计说明](./docs/features/remote-host/environment-provisioning-technical-design.md)。 - **SSH Host 环境准备验证记录**:当前源码已在隔离 Linux x64 环境通过包安装、Ask/Execute、原生子代理工作区外写入、重连及 stop/bootstrap。现有记录未覆盖 Host 卡片的完整 GitHub、北京镜像、Linux x64/arm64、取消和离线 GoodBuddy 传输矩阵,候选 CI/原生打包与系统休眠唤醒也尚未验证;开发记录不代表版本已经发布。 - [x] **远程工作区与长任务更新**:Agent `0.11.23` 新增远程文件/Git 管理和可选模型限额,随包 Runtime 不再施加固定十分钟 Prompt 时限;无限请求时长仍保留独立连接超时。请先升级 Desktop 至 `0.12.11`,再下载并更新 Host 上的 Agent。 @@ -63,7 +63,8 @@ - **本地 Runtime 原生客户端(预览)**:输入区可按当前本地项目与模型,在工作栏终端打开 Continue/OpenCode,或在系统浏览器打开官方 DS Web。客户端使用独立会话,不导入 GoodBuddy 对话历史;关闭 DS 网页不停止服务,可在 GoodBuddy 中停止。Continue/OpenCode Ask 已通过原生权限映射 Main 绑定的只读工具。远程快捷入口未接通,托管标准 Node 交付和完整跨平台安装包验收仍有缺口;Windows 真实模型证据不代表全部会话能力等价,详见[实现与剩余工作](./docs/features/assistant-workbar/progress.md#2026-09-27-local-native-client-validation)。 - **Runtime 遥测关闭配置**:本地 DS Web、远程 Runtime 和模型桥启动共用遥测关闭环境,不限制模型、MCP 或用户主动联网。Continue 在自动更新关闭时跳过检查;远程改动随配套 Agent 新启动的 Runtime 生效,当前源码 Linux x64 Agent/model 验证见 [0.15.0 发布准备](./docs/development/release-preparation-0.15.0.md)。 - [x] **Runtime 原生交互转交**:OpenCode 与 Continue 的选择、yes/no、自由文本回答和跳过使用现有问答卡片,本机与托管 SSH OpenCode 同时转交属于当前请求的子会话提问。托管 SSH OpenCode 问答需要 Desktop `0.13.0`、Agent `0.11.24` 和新启动的托管 Runtime,不扩展到任意 ACP 服务。回答或跳过成功后在原位置保留问题与答案,支持多轮记录和本地会话重载;旧版本已丢弃的答案不能恢复。并行问题按顺序等待回答,重复事件保留草稿,提交失败可重试;取消远程待答后可在同一会话继续发送。Execute 权限确认自动处理,不等待第二次审批;具体支持范围见[交互边界](./docs/features/assistant-workbar/runtime-interactions.md)。 -- [x] **原生执行清单**:OpenCode 和 Continue 在对话顶部更新只读执行清单,进度随会话保存。显式清空和远程重放保留请求归属,取消不把未完成条目标成完成;远程交付需要配套 Agent,详见[清单契约](./docs/features/assistant-workbar/runtime-checklist-technical-design.md)。 +- [x] **原生执行清单**:OpenCode 和 Continue 在对话顶部更新只读执行清单,进度随会话保存。详情在可滚动的锚定浮层中展开,不挤动聊天内容;点击外部关闭,Escape 关闭后焦点返回入口。显式清空和远程重放保留请求归属,取消不把未完成条目标成完成;远程交付需要配套 Agent,详见[清单契约](./docs/features/assistant-workbar/runtime-checklist-technical-design.md)。 +- **取消后的历史**:模型可见历史保留已中断的部分回复或占位标记,避免旧问题合入下一轮;本地 OpenCode 复用会话时附带一次中断说明。 - [x] **专家与 Subagent**:支持显式专家、团队分析和最多三个专家并行分析。专家继承父请求 Ask/Execute 模式,可使用已启用的本机直连模型工具,Ask 仍只读;这些工具不是远程 OpenCode 子会话。聊天先展示可逐项展开的专家完整输出,再在其下展示总 Agent 的综合结果,并随会话保存。 - [x] **OpenCode 子代理过程与最终结果**:子代理卡片按顺序显示文字、推理和工具过程,最终结果独立展示。远程实时过程需要 Agent `0.11.20`,旧包仍显示最终结果但不补造缺失过程。 - [x] **OpenCode 事件连接回收**:聊天与原生上下文压缩在结束事件迭代前关闭各自订阅,覆盖完成、失败、取消和消费方提前结束,不取消其他并行会话。 @@ -119,13 +120,13 @@ - [x] **任务、活动与成果**:集中管理任务状态、审计活动和独立成果文件;普通聊天回复只保留在会话中,不再自动复制到成果栏,已有重复聊天 Markdown 从成果列表隐藏但不物理删除。运行记录改由 Main SQLite 保存,不再受旧 Renderer 的 500 条、单详情 4,000 字符或约 2 MB 上限影响,页面按批继续显示;不再常驻旧缓存截断警告,但不会恢复此前已丢失的历史。Token 用量按 Runtime 与模型归类,并针对 OpenAI 兼容与 Anthropic Messages 的不同上报口径归一化展示缓存命中率;用量按项目或会话分组时默认收起并显示汇总,展开后显示 Runtime / 模型子行,按模型分组时保持平铺。独立“系统任务”页签按来源汇总后台用量,支持手动刷新和记录更新后刷新;监督回顾、图片重新生成、图谱提取和远程嵌入补充用量记录,不补算缺失的历史或供应商数据。活动按会话分组并默认收起,避免长历史占满页面。 - [x] **紧凑会话工具记录**:逐项展开工具记录即可查看和复制结果、错误及输入参数;会话与子任务进度使用简洁行,减少重复 Runtime 摘要。OpenCode、Continue、DeepSeek Harness 和直连模型可显示已有文件路径、命令或搜索摘要,并在工具完成和会话重载后保留。 - [x] **Task 与定制任务体验**:每个产品级 Task 只关联一条 Conversation,一条 Conversation 可承载多个 Task;左侧会话列表通过行首展开按钮显示带共享状态点的 Task 子项,父会话行不重复任务标签,UI 只展示到 Task,不暴露 Job/Run 层级。新建定制任务可关联当前或新 Conversation,默认 Execute 并沿用 Runtime、工具和审批边界;重复触发复用同一 Task,文本结果回写 Conversation,独立文件和图片保留为成果。普通消息与到期 Scheduled Task 共用 Conversation 级持久发送队列,同一会话一次只执行一项;当前回复期间仍可继续发送,队列按顺序续跑,并允许删除或“立即中断并插入”。Task Center 继续作为完整索引,不建设独立 Automation Center。当前计划触发支持单次、每日和每周;高级时区、Cron、事件触发与重试治理仍按 PRD 逐步实现。详见 [Task Center PRD](./docs/features/task-and-job/task-center-prd.md) 和 [Scheduled Task PRD](./docs/features/task-and-job/scheduled-task-prd.md)。 -- [x] **记忆与智能心跳**:当前提供周期回顾、建议记忆、洞察、后续任务和可审计运行轨迹。 +- [x] **记忆与智能心跳**:计划触发共享增量回顾,不再单独生成心跳报告;可只更新记忆图谱,或从未决事项、分歧、修订和候选约定生成有依据的建议。接受未决事项创建暂停任务,确认约定写入长期背景;建议失败可单独重试,不撤销已完成回顾。 - [x] **定时消息沿用会话**:定时消息使用会话当前历史、Runtime、工作模式和已保存的知识检索设置;任务详情显示实际运行模式,当前 occurrence 未结束时禁止重复“立即运行”。 任务中心通过状态数量和筛选定位运行中及待处理任务,审批操作保留在对应任务卡片中。 -- [x] **自动监督设置与范围**:“监督者 > 自动监督”统一管理计划、自动监督报告和建议,支持创建和编辑 Global 或指定一个、多个 Project 的每日、每周计划;工作回顾阅读带日期的统一监督结果及历史。旧单项目配置无损迁移,项目级记忆与行动输出必须显式指定范围内的 Project。Task Center 和设置中心不再复制心跳表单;按分区回顾、候选生成和唤起条件仍待设计。详见 [智能心跳 PRD](./docs/features/smart-heartbeat/prd.md)。 -- [x] **监督者回顾、故事线图谱与活动**:按范围和时间回顾工作,查看保存结果的图谱及来源,确认或修订实体,并带入相关回顾上下文继续讨论。侧栏可跟随或固定 Conversation、Task,并打开匹配结果。活动合并心跳报告与下游监督的阶段状态,保留失败和旧结果入口。自动阶段只处理新增、修改及未处理的来源片段,无变化时跳过模型;手动回顾重新整理有界历史。回顾只读且禁止工具,模型调用可能产生费用,详见[实施与验证记录](./docs/features/conversation-supervision/progress.md)。 +- [x] **智能心跳设置与范围**:“监督者 > 智能心跳”统一管理 Global 或指定 Project 的每日、每周计划及建议,Task Center 和设置中心不复制表单。待处理建议不重复,忽略后有新依据才再次提出;项目与全局仍分别维护进度,会话级实时主动介入仍为规划。详见[实现规则](./docs/features/conversation-supervision/logic-design.md)。 +- [x] **监督者回顾、故事线图谱与活动**:按范围和时间回顾工作,查看保存结果的图谱及来源,确认或修订实体,并带入相关回顾上下文继续讨论。侧栏可跟随或固定 Conversation、Task,并打开匹配结果。活动合并心跳触发与下游监督的阶段状态,保留失败和旧结果入口。自动与默认手动回顾只处理新增、修改及未处理来源,无变化时跳过模型;显式“重新整理”重读区间,但不推进或重置共享进度,自动回顾不续跑用户暂停的运行。回顾只读且禁止工具,模型调用可能产生费用,详见[实施与验证记录](./docs/features/conversation-supervision/progress.md)。 手动开始、自动触发和继续共用一个活动回顾;活动记录可取消并保留已保存批次,清理结束前不接纳新回顾,已取消回顾不可继续。故事线事件、实体和关系按独立页签展示数量,并与画布选择同步。 - 可从监督反馈或图谱来源直接继续讨论,编辑问题并明确打开目标会话;界面不再提供知识实体写回控件或重复上下文说明,自动监督没有活动时隐藏空指标。 + 可从监督反馈或图谱来源直接继续讨论,编辑问题并明确打开目标会话;界面不再提供知识实体写回控件或重复上下文说明,智能心跳用可处理的监督建议代替报告指标和趋势。 - 手动回顾分页处理所选历史,并按批保存事实与来源;不再按固定时长自动暂停,仍支持主动暂停和从保存进度继续。设置提供并发、单次请求超时、批次大小和响应容量;活动记录突出相连阶段、已保存批次与剩余来源,次要统计可展开查看。工作回顾采用全宽纵向布局,运行状态单独显示,空态不再挤在控件旁。 - [ ] **监督后续能力**(规划中):逐事件完整回放、Experiment 目标、人工修改时间序列审计、事件触发及更完整的执行观察仍未完成。当前自动回顾受输入预算和滚动窗口限制,删除报告不会重置处理进度或重建图谱。详见 [会话监督 PRD](./docs/features/conversation-supervision/prd.md)。 - [ ] **批量运行与对比实验室**(规划中):对模型、Prompt、角色和工作流配置执行批量对比,汇总质量、耗时、Token、费用、失败率和成果差异。 @@ -155,7 +156,8 @@ ### 开源、构建与发布 - Desktop `0.15.3` 修复本地直连手动压缩和请求有效期间的工具授权,区分取消与失败并去除重复提示,优化侧栏搜索、注册成功后的快捷键提示及笔记操作布局,减少启动和存储中的重复处理,并精简重复依赖及开发文件。不宣称整体渲染性能已显著提升;Office 实时编辑仍为设计。证据见[0.15.3 发布准备](./docs/development/release-preparation-0.15.3.md)。 -- 当前候选为 Desktop `0.15.4` 与 Agent `0.15.1`,OpenCode 固定为 `1.18.29`、Continue 为 `1.5.47`;正式发布状态以独立发布渠道为准。 +- 当前 Desktop 候选为 `0.15.5`,已发布 Agent 保持 `0.15.1`,OpenCode 固定为 `1.18.29`、Continue 为 `1.5.47`;正式发布状态以独立发布渠道为准。 +- Desktop `0.15.5` 更新智能心跳与增量回顾,保留中断轮次历史,执行清单改为浮层,笔记保存成功后退出编辑;自动评论不重新打开编辑器,失败保留草稿。schema 50 将旧待确认记忆迁为待处理约定,升级前备份数据库与相邻笔记。证据见[发布准备](./docs/development/release-preparation-0.15.5.md)。 - Desktop `0.15.4` 增加 Runtime/模型分层选择及独立系统任务用量,减少 Runtime 指令和历史重复。schema 49 迁移项目与会话选择,回退须恢复完整升级前数据库和相邻笔记备份。Agent `0.15.1` 要求 Desktop `0.15.4`,修复远程 Continue 历史重复封装,Runtime 锁版本不变。证据见[0.15.4 发布准备](./docs/development/release-preparation-0.15.4.md)。 - Desktop `0.15.1` 已完成六平台原生打包及 GitHub/OSS 发布。Desktop `0.15.2` 新增 Story Graph 只读工具和完整可编辑的监督讨论消息,简化笔记采集并补充退出诊断;远程图谱读取需配套 Agent `0.15.0`。主机与云环境管理应用仍为待实现规划,当前候选证据见[0.15.2 发布准备](./docs/development/release-preparation-0.15.2.md)。 - Desktop `0.15.1` 承接未发布的 `0.15.0` Obsidian 接入、会话采集到魔法笔记和预览中的本地原生客户端,并修复知识库、监督者与界面操作。schema 48 新增会话来源元数据,回退旧客户端需使用升级前完整备份。Agent `0.15.0` 要求 Desktop `0.15.2`,保留 Node `24.19.0`,补齐远程遥测关闭配置及 Continue 跳过已关闭的更新检查,不新增远程客户端快捷入口。 diff --git a/docs/development/release-preparation-0.15.5.md b/docs/development/release-preparation-0.15.5.md new file mode 100644 index 00000000..72926c37 --- /dev/null +++ b/docs/development/release-preparation-0.15.5.md @@ -0,0 +1,46 @@ +# Desktop 0.15.5 发布准备 + +日期:2026-09-30。用户授权按新增改动确定版本、提交推送两个远端, +CI 与生产构建通过后自动打标签发布;本轮不构建 LoongArch。 + +## 范围 + +已发布基线 `v0.15.4`:`a662b16f5e076f67788457653d29c0d2fbacdab0`。 +初始工作区干净,产品源码截止 `2d8e58e995c4ac2e3d885b028e588d49d06f05cf`。 +四个提交分别为取消轮次历史、执行清单浮层、智能心跳增量回顾与监督建议、 +笔记保存后退出编辑。双语正文维护在 `resources/release-notes.json`; +已发布正文保留,两个 FEATURES 同步当前能力和剩余边界。 + +Agent 保持 0.15.1,不发布新标签或修改其历史说明。Agent daemon、协议实现和 +Runtime 锁没有变化;共享合同新增的是桌面监督配置/API,历史构建在 Renderer/Main +进行,远程继续通过现有 history 字段传输。因桌面至 Agent 历史输入改变, +仍对当前源码完成真实 Host 取消后续聊验证。 + +## 数据与行为边界 + +schema 50 在既有事务中增加心跳介入方式、建议状态和建议表;旧报告中仍 proposed +的记忆迁为 pending 约定,不确认或删除原记录。已读迁移指南并核对 49→50 回归; +没有读取或升级用户原库,也不声明大规模真实旧库性能已验证。 +升级前关闭应用,备份完整数据库及相邻 `notes/`;降级需恢复完整升级前备份。 + +手动回顾默认增量,显式重新整理不推进或重置共享进度。建议以本次结果中的依据为准, +有候选才进行额外模型调用;项目与全局分别维护进度,会话级实时介入仍未实现。 +本地 OpenCode 的取消会话标记不等同于 Agent 实现;远程使用共享桌面历史输入与 +原有取消/会话恢复路径,不声称复用了本地 OpenCode 类。 + +## 验证记录 + +- 类型检查和 lint 通过。 +- 首轮定向 34 文件:1092 通过、1 跳过、1 失败。会话合并用例只等待 Runtime + mock 调用便触发新会话,单独复跑通过;补充等待已发送消息可见,保留两次同批 + 新建请求和最终会话数量断言。最终 34 文件全部通过,1093 项通过、1 项既有条件跳过; + 类型检查、lint、双语发布说明及差异检查再次通过。 +- 当前源码在共享 Linux x64 Host:OpenCode、Continue 各在 Ask 输出后主动取消, + 用生产 `buildRuntimeHistory` 生成中断历史,再以 Execute 发送无工具的新问题。 + 两条路径均只回答新问题,未续写原列表;归属进程最终为 0。 + 本轮恰好 4 次真实上游请求,全部 HTTP 200,无重试或假模型;用户设置只读取 + 临时加密副本,未修改正式 Agent 安装和工作目录。 +- 智能心跳开发记录中的 4 次 DeepSeek 请求是该功能开发证据,不计入本轮新增调用。 + 参见[实施记录](../features/conversation-supervision/progress.md)。 +- 不执行本地生产构建、打包或安装包启动。全仓验证和生产构建以最终提交的 CI + 为准,标签只能在该门槛通过后创建。 diff --git a/docs/quality/recurring-defects.md b/docs/quality/recurring-defects.md index 1195e505..d3debaff 100644 --- a/docs/quality/recurring-defects.md +++ b/docs/quality/recurring-defects.md @@ -61,6 +61,9 @@ AI 列 280。测试同步原生输入与实际状态后独立复跑通过,保 Runtime 状态尚未匹配当前选择时按钮仍禁用,点击不会发出请求。发送前应以现有 `waitFor` 等待按钮可用,而不是将按钮存在等同于 Runtime 就绪。保留问答保存、 跳过与重载的全部断言,不延长全局超时。 +2026-09-30 发布验证中,连续新建会话用例只等 Runtime mock 收到请求,尚未等 +已用会话渲染完成就触发新建。沿用 `waitFor` 等待已发送用户消息可见,再保持 +两次同批新建及最终数量断言;mock 调用不代表界面状态已提交。 ## 整窗遮罩与原生拖动区域 diff --git a/package-lock.json b/package-lock.json index 19a6091f..09bd2c65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "goodbuddy", - "version": "0.15.4", + "version": "0.15.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "goodbuddy", - "version": "0.15.4", + "version": "0.15.5", "license": "0BSD", "dependencies": { "@agentclientprotocol/sdk": "0.25.1", diff --git a/package.json b/package.json index 7dea2423..3bf3f19d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "goodbuddy", - "version": "0.15.4", + "version": "0.15.5", "private": true, "description": "Secure desktop AI workspace with controlled Agent Runtimes", "desktopName": "GoodBuddy", diff --git a/resources/release-notes.json b/resources/release-notes.json index 852019ff..c7247067 100644 --- a/resources/release-notes.json +++ b/resources/release-notes.json @@ -1,6 +1,44 @@ { "formatVersion": 1, "releases": [ + { + "version": "0.15.5", + "releasedAt": "2026-09-30", + "notes": { + "zh-CN": { + "highlights": [], + "features": [ + "**智能心跳按变化回顾并提供有依据的建议**:心跳计划现在触发共享的增量回顾,不再另外生成一份心跳报告;可选择只更新记忆图谱,或根据本次回顾中的未决事项、分歧、修订和候选约定生成监督建议。建议支持核对来源、接受或忽略,接受未决事项会创建暂停任务,确认候选约定才会写为长期背景;建议生成失败可单独重试,不撤销已完成的回顾。", + "**手动回顾默认只处理新增与变化内容**:点击“回顾”会沿用处理进度,无变化时不再调用模型;需要重读所选区间时,可从“更多”选择“重新整理…”并确认。重新整理不会推进或重置共享进度,自动回顾也不会续跑用户主动暂停的运行。" + ], + "fixes": [ + "**取消后不再把上一轮问题并入新请求**:模型可见历史保留中断回复的已有文字,并明确标记取消或失败,避免用户问题成为没有回应的孤立输入。本地 OpenCode 复用会话时保留取消轮次,在下一轮附带一次中断说明,失败请求仍按原规则清理。", + "**展开执行清单不再挤动聊天内容**:OpenCode 与 Continue 的清单详情改在锚定浮层中展开,长清单可在浮层内滚动。点击外部可关闭,按 Escape 关闭后焦点回到入口,进度保存规则不变。", + "**笔记保存成功后退出编辑**:文字和画布记录保存修改后回到只读内容,自动评论完成后不会重新打开编辑器。保存失败时保留草稿,便于修改和重试。" + ], + "notices": [ + "首次启动升级到 schema 50,将旧心跳报告中仍待确认的记忆迁为待处理约定,不自动确认或删除原记录。升级前请关闭应用并备份完整数据库及相邻 `notes/` 目录;旧客户端不能打开升级后的库,回退需恢复完整升级前备份。", + "本轮只更新 Desktop,Agent 保持 **0.15.1**,无需重新下载 Agent 包。心跳回顾及有候选时的建议生成可能产生模型费用;项目与全局仍分别维护处理进度,会话级实时主动介入尚未实现。" + ] + }, + "en-US": { + "highlights": [], + "features": [ + "**Smart heartbeat reviews changes and offers evidence-backed suggestions**: Plans now trigger the shared incremental review instead of generating a separate heartbeat report; choose between updating memory and graphs only or generating suggestions from open items, disagreements, revisions, and candidate conventions. Inspect sources, accept, or dismiss suggestions; accepting an open item creates a paused task, and only confirming a convention saves it as long-term background. Suggestion generation can be retried independently without undoing a completed review.", + "**Manual review defaults to new and changed content**: Review resumes from saved processing progress and makes no model calls when nothing has changed; choose Reanalyze from More and confirm to reread the selected period. Reanalysis neither advances nor resets shared progress, and automatic reviews no longer resume runs you explicitly paused." + ], + "fixes": [ + "**Keep cancelled questions out of the next request**: Model-visible history retains partial replies with explicit interruption or failure markers, rather than leaving their user messages unanswered. Reused local OpenCode sessions retain cancelled turns and receive a one-time interruption notice on the next turn; failed requests retain their existing cleanup behavior.", + "**Expand execution checklists without shifting chat content**: OpenCode and Continue checklist details now open in an anchored floating panel with internal scrolling for long lists. Click outside to close, or press Escape to close and return focus to the trigger; saved progress behavior is unchanged.", + "**Leave note editing after a successful save**: Saved text and canvas records return to read-only content, and automatic comments no longer reopen the editor. Failed saves retain your draft for correction and retry." + ], + "notices": [ + "First launch upgrades to schema 50 and carries still-proposed memories from older heartbeat reports into pending conventions, without automatically confirming or deleting the original records. Close the app and back up the complete database and adjacent `notes/` directory first; older clients cannot open the upgraded database, so rollback requires the complete pre-upgrade backup.", + "This is a Desktop-only update; Agent remains **0.15.1**, with no Agent package download required. Heartbeat reviews and suggestion generation when candidates exist may incur model charges; project and global processing progress remain separate, and real-time conversation-level proactive intervention is not implemented." + ] + } + } + }, { "version": "0.15.4", "releasedAt": "2026-09-29", diff --git a/src/renderer/src/App.test.tsx b/src/renderer/src/App.test.tsx index 01d21e93..932e91a4 100644 --- a/src/renderer/src/App.test.tsx +++ b/src/renderer/src/App.test.tsx @@ -7265,6 +7265,9 @@ describe("App", () => { }); fireEvent.click(screen.getByLabelText("发送")); await waitFor(() => expect(run).toHaveBeenCalledOnce()); + await waitFor(() => + expect(document.querySelector(".message--user")).toHaveTextContent("已有内容"), + ); const requestId = run.mock.calls[0]?.[0].requestId; act(() => { if (requestId) {