# Runtime 交互边界 本文定义当前原生交互的适配范围,不增加工作模式或第二层 Execute 审批。 | Runtime | 权限确认 | 业务问答 | | --- | --- | --- | | 本机 GoodBuddy 管理的 OpenCode | 内部默认配置允许权限;每个 Ask 请求仍使用 deny-all 与显式只读能力。Execute 自动回复属于当前请求的父、子孙会话权限事件,不处理其他并行请求 | 通过 `question.asked` 转交父、子孙会话问题,支持原生单选、多选、yes/no、自由文本及跳过;使用公开 ID 回传 `question.reply/reject` | | Continue | Execute 启动传入 `--auto`,剩余原生权限请求按当前模式自动答复 | 对接 `1.5.47` QuizService 的扁平 `pendingQuestion`,其中 `question` 是字符串。选项回答与自定义文本分别回传正确的 `isCustomAnswer`;跳过发送拒绝回答的文本 | | DeepSeek Harness | 固定 Host 的 Execute 文件与命令工具不询问目录权限;若收到 ACP 权限请求,活跃 Execute 直接选一次性允许,缺少该选项时使用 Runtime 提供的允许选项,Ask 拒绝,不等待额外 authorizer | 固定 Host 当前未提供通用原生业务问答服务,不把普通模型正文误识别成待答协议。模型以普通回复提问时,用户通过下一条消息回答 | 托管 SSH OpenCode 的 ACP 权限处理与直接启动配置由 [远程主机技术设计](../remote-host/technical-design.md)定义;本机 SDK 问答适配不代表远程 ACP 已提供相同业务问答接口。 ## 运行与失败 - 结构化 yes/no 是普通选项,不从日志、自然语言或 Shell 输出猜测用户意图。 - 前台问题停留在现有问答卡片,保留回答、提交失败提示与跳过入口。 - 回答或跳过成功后,会话保留只读的“问题与回答”,显示原问题及对应的选项答案、 自定义文本或“已跳过”。同一任务的多轮问答逐次保留,随本地会话保存,重新打开后仍可查看。 提交失败时保留输入与重试入口,不生成已回答记录;取消未回答的问题不记为主动跳过。 - 提交响应晚于任务结束时仍保存已提交的问答,但不覆盖完成或失败状态;晚于下一轮提问时 不清除新的待答卡片。旧版会话未保存的问题与答案无法从“已提交”状态文案恢复。 - 后台任务收到结构化提问时,通过现有 Main 路径明确失败并提示改为前台对话,不永久等待。 - 请求结束或取消后清除对应待答映射;过期回答明确报错,不转交给后来的请求。 - 任意终端程序的密码、OAuth 登录、许可证确认或 stdin 提示不自动回复 `yes`。这类程序应 使用其非交互参数,或由用户在终端完成;不能把权限确认和业务决策混为一谈。Shell 工具保留其现有取消与超时,不新增日志解析或通用交互代理。 ## 托管 Runtime 的并行与输出 - 本机和 Agent 管理的 OpenCode 启动配置都显式设置 `snapshot: false`。GoodBuddy 不消费 原生自动 Git 快照、快照差异摘要或快照撤销;关闭这条内部路径,避免大行级差异的同步 计算阻塞同一原生进程中的其他会话。 - 文件工具、Shell、原生子代理、工作区 Git 状态和单文件差异保持可用;不新增全局会话 队列、请求重放或总执行截止时间。外部 OpenCode Server 的配置不由 GoodBuddy 改写, 已运行的旧原生进程也不会热更新配置。 - Continue 使用 HTTP 传递响应和状态;Electron UtilityProcess 启动后持续排空不用展示的 stdout,避免控制台输出填满管道后阻塞宿主。stderr 的有界错误处理、请求取消与进程 回收保持不变,不把诊断输出复制进聊天或持久日志。 - 远端最终启动配置由[远程主机技术设计](../remote-host/technical-design.md)定义, 模型桥生成最终配置时同样保留上述快照策略。 ## 消息底部请求状态 - 状态属于当前请求,不与顶部 Runtime 的连接中、就绪、不可用混为一谈。提交后先显示 “正在准备请求”;没有更具体的活动事件时显示“等待后续进展”,不声称模型正在思考。 - 本机 OpenCode 只把当前父会话的 `session.status.retry` 映射为等待重试,显示原生 `attempt`、计划重试时间和有界脱敏原因;后续 `busy` 才显示已开始重试。其他会话的 状态不串入当前消息,不猜测总重试次数,不把 SDK 事件流重连当作模型重试。 - 显示优先级为待回答、待确认、进行中的上下文压缩、明确的请求状态、待执行或执行中的 工具、未完成的子任务、等待后续进展。压缩沿用已有活动块,不重复增加底部提示。 正文、推理或工具进展会清除旧状态;子任务更新不覆盖父请求的重试提示。 - 完成、失败、取消后保留真实终态,迟到的状态事件不能把请求恢复成处理中。底部状态点 为静态,不凭请求尚未结束暗示仍有进展;会话列表闪点和发送、停止按钮保持原有行为。 - Continue、DeepSeek Harness 和远端 ACP 保留其已接入的处理与工具事件,不伪造未接入 的原生重试状态。直连模型的重试等待与请求开始文案见 [直连模型 UI 设计](../direct-model-agent/ui-design.md#6-错误与通知);本次不改变任何 Runtime 的重试上限、请求重放或取消策略。 实现与真实 Runtime 验证证据见[进度记录](./progress.md)。