Files
goodbuddy/docs/features/application-tool-navigation/logic-design.md
T
mesalogo c8db340cc7 fix: prevent runtime permission stalls and Agent reconnect failures
Execute could stall on workspace-external access or native child-session
permissions, while structured questions could be lost or answered incorrectly.
Route owned OpenCode descendant interactions, correct Continue question and
custom-answer handling, and resolve DSH Execute ACP permissions without a
second approval. Ask remains read-only and unrelated sessions stay isolated.

Restore the required DSH session projection service. Reuse offline OpenCode
configuration by plugin version, remove unused npm shims from remote payloads,
normalize dependency modes, and accept real compound descriptors up to 4 MiB.
Fix intermittent Agent attach rejection and closed-handshake waits.

Add focused and real-Runtime regressions, document interaction boundaries and
validation evidence, and include the existing application/tool navigation
design drafts. Those navigation changes are design-only, not implemented UI.

Validation: full suite 3597 passed, 0 failed, 61 skipped across 338 files;
typecheck, lint, release-note verification, whitespace and relative-link checks
passed. Current-source Linux x64 installation, Ask/Execute, native subagent
external writes, reconnect and stop/bootstrap passed with 10 completed real
model calls, 13 native endpoint tests and 20 consecutive handshakes.
System sleep/wake and release CI packaging remain unverified.

Release note: 修复 Execute 访问工作区外目录或运行原生子代理时卡在权限等待的问题,并恢复 OpenCode 与 Continue 结构化问答的正确转交。修复远程 Agent 安装与重连失败;Ask 仍保持只读,任意终端密码或业务确认不会自动代答。
2026-09-08 11:34:45 +08:00

5.5 KiB

应用导航与系统工具入口功能逻辑设计

文档信息

项目 内容
状态 设计中
版本 0.1
日期 2026-09-08
关联 PRD 应用导航与系统工具入口 PRD
关联 User Stories User Stories

1. 不变量

  1. “当前对话”“运行记录”和“设置”始终是系统入口。
  2. 运行记录不进入工具注册表、应用显隐设置或插件市场。
  3. 文件浏览器、终端和浏览器始终是系统工具,不能卸载或被插件替换。
  4. 左下角只提供快捷入口,工具内容仍由助手工作栏承载。
  5. 隐藏应用不等于停用功能,也不删除、迁移或清理业务数据。
  6. 快捷入口不能扩大执行空间、文件、PTY、网络或浏览器权限。

2. 入口模型

type NavigationContribution =
  | {
      type: 'system-entry'
      id: 'chat' | 'activity' | 'settings'
      placement: 'primary-start' | 'primary-end' | 'footer'
    }
  | {
      type: 'application'
      id: 'magic-notes' | 'knowledge' | 'heartbeat'
      source: 'builtin'
      visible: boolean
    }
  | {
      type: 'system-tool'
      id: 'workspace' | 'terminal' | 'browser'
      workbarAppId: 'workspace' | 'terminal' | 'browser'
    }

该模型只覆盖首期入口。插件贡献模型随插件 Host、权限和生命周期另行设计。

3. 主导航组合规则

主导航按以下顺序计算:

当前对话
可见的内置应用
运行记录

当前对话和运行记录不参与排序。首期内置应用默认顺序为魔法笔记、知识库、智能心跳;显隐 设置只从中移除对应项,不改变固定入口的位置。

3.1 应用可见性与业务状态

导航可见 功能启用 结果
是 是 显示入口并允许进入
否 是 隐藏入口,后台和数据保持原状
是 否 不显示不可用入口;设置页保留启用路径
否 否 不显示入口,保留符合该功能自身规则的数据

“功能启用”由各应用现有产品设置负责。例如魔法笔记启停仍使用原设置;导航偏好不能覆盖它。

4. 系统工具打开规则

4.1 通用流程

用户激活工具按钮
  -> 校验按钮仍可用
  -> 向助手工作栏发送打开意图
  -> 工作栏按应用实例策略查找或创建实例
  -> 展开工作栏
  -> 激活目标实例
  -> 把焦点移入面板标题或首个主要控件

若创建失败,工作栏保持展开并在对应能力位置显示错误;主页面和其他工作栏实例不被清空。

4.2 决策表

工具 匹配实例存在 匹配实例不存在 上下文不可用
文件 激活单实例并保留其跟随或固定状态 创建跟随当前上下文的 workspace 单实例 打开面板并显示目录修复入口
终端 激活当前执行空间最近的 starting 或 running 实例 创建一个绑定当前执行空间的实例 没有项目时使用本机 Home
浏览器 激活单实例并保留其目标状态 创建跟随当前会话的 browser 单实例 打开面板并提示选择或创建对话

文件和浏览器按以下优先级处理目标:已有有效固定目标、跟随模式的当前上下文、新实例的默认 上下文。固定目标失效时显示该目标的修复状态,不回退到当前项目、默认工作区或当前会话。

closing、exited、interrupted 和 failed 终端不属于可复用实例。当前执行空间只有这些 终端时,快捷按钮创建新实例并保留原 Tab 的历史状态。用户需要额外的并行终端时使用工作栏 “+”或终端面板中的既有创建命令。

4.3 选中与状态

工具按钮满足以下条件时显示选中:助手工作栏已展开,且当前活动实例的 appId 与工具映射 一致。只有实例存在但未激活时不显示选中。

徽标优先级为:等待用户处理 > 错误 > 运行中 > 无徽标。同一按钮只显示一个视觉徽标, 可访问名称包含完整状态。

5. 设置保存规则

应用导航偏好与应用业务启停分开保存。Switch 每次切换立即提交完整目标集合;请求完成前禁用 三个应用显隐 Switch,下一次操作基于最新确认结果提交,防止并发更新互相覆盖。

保存失败时:

  • 主导航和 Switch 恢复最后一次成功保存的偏好。
  • 设置行显示可重试错误。
  • 不回滚或修改各应用的业务状态。

6. 与需求的对应关系

逻辑 PRD User Stories
固定入口不变量 FR-1、FR-2 US-A1、US-A2
应用显隐和失败恢复 FR-3、FR-4、FR-10、FR-11 US-B1、US-B2、US-B4、US-B5
工具打开决策表 FR-5 至 FR-9 US-C1 至 US-C6
无障碍与窄窗口 FR-12 US-D1、US-D2

7. 逻辑完整性评估

首期规则已覆盖固定入口、应用显隐、保存失败、系统工具单实例与多实例差异、本机 Home、 托管 SSH、无活动会话、目录失效、权限边界、键盘和窄窗口。工具面板内部的取消、超时、 连接恢复和固定目标失效继续由助手工作栏负责,本功能不复制这些状态机。

8. 后续产品决策

  • 插件工具上线后,快捷栏允许固定的最大数量及溢出规则。
  • 插件应用是否允许用户排序,以及固定系统入口之间允许的排序范围。

这些决策不影响首期三个系统工具的固定入口和内置应用显隐实现。