feat: improve desktop reliability and customization

Address reliability and consistency gaps across Agent Runtimes, persistence, settings, Knowledge, Magic Notes, Smart Heartbeat, and the download site. Runtime processes now have bounded lifecycle cleanup and atomic configuration rollback, while model packages and persisted mutations recover safely.

Add a configurable global shortcut, protect unsaved work, improve modal and keyboard behavior, localize the built-in project without rewriting stored data, and lazy-load heavy renderer routes under enforced bundle budgets. Align project forms and disabled controls with shared typography and interaction states, and strengthen website release metadata validation and navigation accessibility.

Release note: 修复 Runtime、设置、知识库、魔法笔记与智能心跳中的可靠性和交互一致性问题;新增可配置全局快捷键,改进无障碍与加载性能,并强化官网下载校验。
This commit is contained in:
mesalogo
2026-08-20 10:11:06 +08:00
parent 20c15f74c6
commit f44a0dc907
129 changed files with 15511 additions and 2112 deletions
@@ -397,6 +397,8 @@ Execute 消息通过身份、长度、去重和并发检查后:
- 失败:回传经过脱敏、长度受限的用户可处理错误。
- 取消:回传“任务已取消”。
- 结果投递失败时保留发件箱记录并显示通道错误,不重复执行任务。
- 发件箱达到五次投递尝试后进入可查询的终止状态,并继续通过现有通道错误回调
暴露;终止记录不再发送,也不会从未投递查询中静默消失。
### 9.6 媒体与文件
@@ -286,13 +286,14 @@ Supervisor 不能:
实验工作台页签:
1. **设计**:问题、协议、变量、指标和预算。
2. **运行**:总体进度、Run 表和状态。
2. **运行**:总体进度、候选执行和聚合状态。
3. **比较**:指标表、图表、差异和 Pareto 候选。
4. **证据**:按结论、指标和 Run 查看证据。
4. **证据**:按结论、指标和候选查看证据。
5. **结论**:总结、限制和后续操作。
Run 详情展示参数、协议版本、时间线、消息、任务、成果、监督记录、指标、评估理由、
上下文和记忆快照、Token、耗时与错误。
候选详情在 Experiment 工作台内展示参数、协议版本、时间线、消息、Task、成果、监督记录、
指标、评估理由、上下文和记忆快照、Token、耗时与错误。内部 Run ID 只用于关联和审计,
不提供独立 Run 路由、页面或操作菜单。
## 15. 后续操作
@@ -302,7 +303,7 @@ Run 详情展示参数、协议版本、时间线、消息、任务、成果、
- 创建自动化计划草稿。
- 保存实验模板。
- 创建记忆候选。
- 追加确认 Run
- 追加确认执行
- 导出脱敏结果摘要。
不得自动启用新计划、覆盖现有计划、确认长期记忆、应用工作区 Patch 或扩大权限。
+1 -1
View File
@@ -84,7 +84,7 @@ Observe
- 用户对回答、任务或 Supervisor 意见的显式反馈。
- 用户对心跳报告或建议的显式反馈。
- Task/Job Run 的成功与失败比较。
- Task 执行的成功与失败比较。
- 并行实验结论。
- 回放评估发现的稳定差异。
- 用户手动创建。
+5 -5
View File
@@ -140,10 +140,10 @@ agent:{expertId}
Conversation → Project → Global
```
Task/Job Run
Task 执行(内部 Job/Run
```text
Run → Automation → Conversation(可选)→ Project → Global
Run → Job → Task → Conversation → Project → Global
```
实验 Run
@@ -232,7 +232,7 @@ type MemorySource =
- 用户明确“记住这个”。
- 会话结束总结。
- Task/Job Run 结束反思。
- Task 执行结束反思。
- 实验结论。
- Supervisor 建议后用户采纳。
- 智能心跳。
@@ -481,7 +481,7 @@ Project 记忆与 Global 偏好冲突时:
- [ ] 普通会话只读取 Global、当前 Project 和当前 Conversation 的允许记忆。
- [ ] 智能心跳配置只能属于 Global 或 Main 已验证的一个、多个 Project。
- [ ] 未来分区记忆完成独立设计前,不新增相关表、状态或检索行为。
- [ ] Task/Job Run 只读取运行快照绑定的分区。
- [ ] Task 执行只读取内部 Run 快照绑定的分区。
- [ ] 实验 Run 不能读取其他 Run 的消息或记忆。
- [ ] 每条非手动记忆都有可追溯来源。
- [ ] 候选和被拒绝记忆不进入普通上下文。
@@ -489,6 +489,6 @@ Project 记忆与 Global 偏好冲突时:
- [ ] 冲突事实不被静默覆盖。
- [ ] 当前有效事实可通过有效时间正确选择。
- [ ] 上下文组装遵守各层和总字符预算。
- [ ] UI 能显示某次 Run 实际使用的记忆
- [ ] UI 能在 Task 执行记录中显示实际使用的记忆,不把 Run 暴露为独立导航对象
- [ ] 删除或忘记后,文本、索引和缓存不再可检索。
- [ ] Restricted 记忆不会自动生成或发送给外部 Embedding 服务。
@@ -197,6 +197,8 @@ type HeartbeatScope =
- 多项目汇总后统一应用上限,不能按项目倍增预算。
- 心跳结果默认不在系统通知中暴露私人正文。
- 数据迁移必须使用 SQLite 事务,保留外键、级联删除和现有历史。
- 心跳运行失败时,运行记录与配置的 `last_status` 必须在同一 SQLite 事务中
更新;任一写入失败时两者一起回滚,不能留下半提交状态。
## 7. 实施状态与后续顺序
@@ -28,9 +28,10 @@ GoodBuddy 的魔法笔记已经提供一种有价值的交互:用户持续写
## 2. 产品定义
会话监督是在明确范围和策略下,对普通 Conversation、Task、Job/Run 或 ExperimentRun
的可见事件进行独立观察,产生带证据的评论、告警和人工介入请求。个 Task 与唯一
Conversation 一对一绑定Job/Run 是内部执行和审计对象
会话监督是在明确范围和策略下,对普通 Conversation、Task 或 Experiment 的可见事件
进行独立观察,产生带证据的评论、告警和人工介入请求。个 Task 只关联一条 Conversation
一条 Conversation 可以承载多个 TaskJob/Run 是内部执行和审计对象,不作为当前 UI
监督目标。
它不是:
@@ -55,7 +56,7 @@ Conversation 一对一绑定;Job/Run 是内部执行和审计对象。
## 4. 已确认的产品决策
1. 监督默认关闭,由用户对 Conversation、Task、Job/Run 或实验显式启用。
1. 监督默认关闭,由用户对 Conversation、Task 或实验显式启用。
2. 监督只读取用户可查看的消息、工具事件、状态、指标、成果摘要和目标。
3. 不读取、推断或保存模型隐藏推理链。
4. 每条重要判断必须引用具体消息、工具、步骤、指标或成果。
@@ -100,9 +101,7 @@ Conversation 一对一绑定;Job/Run 是内部执行和审计对象。
| --- | --- | --- |
| 普通会话 | 用户消息、助手回答、引用、工具事件 | 质量和证据评论 |
| Task | 目标、状态、Conversation、成果 | 偏离、循环和失败分析 |
| Job/Run | 触发、步骤、协议、预算、审批、指标 | 无人值守或内部执行关注 |
| 实验 Run | 协议、变量、指标、证据 | 协议一致性 |
| 实验整体 | 各 Run 结算和比较 | 评估公平性与无结论提示 |
| Experiment | 协议、变量、各候选执行、指标和证据 | 协议一致性、评估公平性与无结论提示 |
每个监督会话只能绑定一个主对象,并继承其项目范围。
@@ -254,7 +253,7 @@ type SupervisorDecision = {
### 13.1 工作栏监督栏目评论流
监督是助手工作栏中固定且始终可访问的栏目,不是只在聊天页面出现的附属面板。栏目默认
跟随当前会话,用户也可以固定到其他普通 Conversation、Task、Job/Run 或 ExperimentRun
跟随当前会话,用户也可以固定到其他普通 Conversation、Task 或 Experiment。
切换页面不会改变固定目标;目标失效时必须显示修复状态,不能静默回到当前会话。
复用魔法笔记的体验方向:
+1 -1
View File
@@ -12,5 +12,5 @@
## 阅读顺序
先阅读统一领域模型。其他三份文档不得重新定义 Task、Conversation、Job、Run 或 Subagent。
先阅读统一领域模型。其他功能文档不得重新定义 Task、Conversation、Job、Run 或 Subagent。
若实现与文档出现冲突,应先修正统一模型,再同步功能 PRD。
+7 -5
View File
@@ -11,8 +11,8 @@
## 1. 产品定义
Goal Task 是围绕可验证结果持续推进的 Task。它仍然只有一个 Task Conversation;每轮观察、
计划、行动和评估由 Job/Run 表达,不创建一串顶层 Task。
Goal Task 是围绕可验证结果持续推进的 Task。它只关联一条 Conversation,但该 Conversation
也可以承载其他 Task;每轮观察、计划、行动和评估由内部 Job/Run 表达,不创建一串顶层 Task。
## 2. 必要配置
@@ -35,8 +35,9 @@ Observe Job
→ Complete, pause, revise or continue
```
循环内的所有 Job 共享 Task Conversation。只有协调器把有意义的阶段进展写入消息时间线,
避免每个内部步骤产生一条顶层任务或杂乱消息。
循环内的所有 Job 通过所属 Task 写入同一关联 Conversation。只有协调器把有意义的阶段进展
写入消息时间线,避免每个内部步骤产生一条顶层 Task 或杂乱消息。当前 UI 只显示 Goal Task
及其聚合状态,不显示 Job/Run 层级。
## 4. 完成和无进展
@@ -47,7 +48,8 @@ Observe Job
## 5. 验收原则
- [ ] Goal Task 只有一个 Task Conversation
- [ ] Goal Task 只关联一条 ConversationConversation 可以承载其他 Task
- [ ] 循环步骤以 Job 表达,不创建顶层子 Task。
- [ ] 当前 UI 不展示 Goal Task 内部 Job/Run 层级。
- [ ] 没有成功标准和停止条件时不能启用。
- [ ] 无进展和预算耗尽不会伪装为成功。
+12 -8
View File
@@ -29,7 +29,7 @@
## 3. 并行模型
```text
Task Conversation
关联 Conversation
└─ Coordinating Job
├─ Parallel Job A
├─ Parallel Job B
@@ -41,7 +41,8 @@ Task Conversation
- 每个 Job 有独立输入快照、状态、Run、预算和输出缓冲。
- 并行 Job 不直接同时追加助手消息。
- Aggregation Job 或 Task 协调器按确定顺序生成一条进展或结果消息。
- 用户可以查看每个 Job 的详细活动,但主 Conversation 保持可读。
- 用户可以按 Task 查看有界活动和聚合状态,但不选择或展开单个 Job;主 Conversation
保持可读。
## 4. Subjob
@@ -78,21 +79,24 @@ queued → running → waiting_approval → completed
## 7. 界面
Task Conversation 显示:
当前产品 UI 的对象层级止于 Task,不提供 Job/Subjob 树、独立页面或导航入口。
关联 Conversation 和 Task Center 只显示:
- 当前总体进展。
- 并行 Job 数量和聚合状态。
- 需要审批或用户输入的 Job
- 并行执行数量和聚合状态。
- 需要审批或用户输入的 Task 状态
- 完成后的统一结果。
详细活动视图显示 Job 树、执行者、Runtime、耗时、预算、Run、错误和成果。Task Center 只显示
Task 聚合状态,不展开 Job 树
活动与 Runtime 可以按 Task 显示执行者、工具、耗时、预算、错误、审批和成果事件,但不把
Job、Subjob 或 Run 暴露为可选择、可展开或可操作的产品对象。内部标识只用于关联与审计
## 8. 验收标准
- [ ] 并行 Job 共享所属 Task Conversation。
- [ ] 并行 Job 通过所属 Task 写入同一关联 Conversation。
- [ ] Job 不创建顶层 Task。
- [ ] 并行输出不会无序污染消息时间线。
- [ ] Subjob 深度、并发、预算和输出有界。
- [ ] Subagent 失败能够返回部分输出和明确状态。
- [ ] 父级取消传播到所有活动子级。
- [ ] 当前 UI 只展示到 Task,不显示 Job/Subjob/Run 层级。