-
Notifications
You must be signed in to change notification settings - Fork 1
User Interaction zh
上游用户提问和确认系统在 Edge 中的适配。
上游参考:用户交互
用户交互子系统(ctx.userQuestions)允许 agent 在工具或权限插件需要人类批准时暂停执行并请求输入。
-
提问协议 — 结构化问题,带稳定 ID、可选多选、自由文本"其他"选项,以及展示意图(如
plan-review用于计划审批)。 -
提供者接缝 — 一个 context 中只能有一个活跃的
UserQuestionProvider。UI 注册提供者,宿主运行时转发问题给已连接的客户端。 - 回答契约 — 响应携带所选选项标签和可选自定义文本,按问题 ID 索引。
-
错误分类 —
EMPTY_QUESTIONS、NO_PROVIDER、ASK_ABORTED、CALLER_NOT_LIVE。
此能力供审批系统、计划模式和任何需要人类确认的插件使用。
Edge 未安装 dsh-user-questions 包,也未注册 UserQuestionProvider。不存在用户提问流程——调用 ctx.userQuestions.ask() 的工具和插件会收到 NO_PROVIDER 错误。
edge-api.ts 中的 respond 处理器无条件返回 { accepted: false, reason: 'not-pending' }——永远没有待回答的问题。
userQuestions 也是 ApiProxyService 四个未满足 inject 依赖之一(还有 directoryPicker、subagents、sessionQuery),这是 Edge 手写 createEdgeApi() 而非安装上游插件的原因之一。
- 审批系统 — 无法在执行危险操作前请求用户批准。
- 计划模式 — 无法向用户展示计划以供审批。
- 工具确认 — 任何委托给用户提问的工具守卫会静默失败。
dsh-user-questions 包(ctx.userQuestions)是纯能力接缝,无平台依赖。缺失的是一个提供者——基于 WebSocket 的实现,将问题转发给浏览器并收集响应。客户端问题 UI 已在 33 插件包中(dsh-client-ui-conversation 渲染问题节点)。服务端提供者需要:
- 通过 mux WebSocket 广播
session/question帧 - 等待客户端的
respondPOST - 将结构化回答返回给调用插件
这遵循与投影推送和事件广播相同的传输桥模式。所有计划均可用。
| 组件 | 分类 | 状态 |
|---|---|---|
| UserQuestionService | 缺失 | 包可用但未安装 |
| WebSocket 问题提供者 | 缺失 | 需要 Edge 传输桥实现 |
| 客户端问题 UI | 可用 | 已在客户端包中 |
(#107) **安装
dsh-user-questions并实现基于 WebSocket 的提供者。**上游接缝无平台依赖。提供者模式与已有的投影推送桥一致:向 mux 广播,等待客户端响应,传递给调用者。也会解除审批系统、计划模式的阻塞,并是ApiProxyService四个依赖之一。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发