用途:这是 wsh(deepgram/wsh)中的输入捕获技能,用于临时接管终端键盘。捕获生效时,人类的按键不再进入 PTY,而是通过 WebSocket 事件订阅发送给代理,由代理决定如何处理每个按键;终端被冻结。适用于需要实时按键交互的场景,如执行命令前的确认、选项菜单、自由文本输入和多步对话框。
主要能力:capture input 获取键盘,release input 归还;人类可随时按 Ctrl+\ 切换捕获与放行,这是其逃生开关,不应禁用或劝阻。捕获的按键事件包含 raw(字节序列)与 parsed(键名、ctrl/alt/shift 等修饰键)。可用 get input mode 查询当前为 passthrough 还是 capture,捕获前应先检查。设置 focus 可将输入关联到某个 overlay 或面板,该元素需以 focusable: true 创建;同一时刻最多一个元素有焦点,释放输入或删除元素时焦点自动清除。
用法模式:确认流程为显示问题、捕获输入、等待按键、解释按键、释放输入、移除提示、执行动作;提示中必须提供“否/取消”按键并明确标出可用键。选择菜单用方向键与 Enter,自行跟踪选中索引并在每次导航后重绘 overlay。文本输入需处理字符、Backspace、Enter 确认、Escape 取消。多步对话可保持捕获,显示进度并用焦点路由标记当前步骤,任一步 Escape 应取消整个流程。
限制与注意:尽量减少捕获时长,先建好界面再捕获;捕获时必须显示视觉说明,避免终端看似无响应。忽略未预期的按键,不报错、不闪烁。捕获不支持嵌套,应设计为扁平流程:捕获一次、完成多步、释放一次。若用户在对话中途按 Ctrl+\ 释放,应清理 overlay 并放弃流程,未经同意不要重新捕获;若用户按 Ctrl+\ 进入捕获而你没有界面,可视作交互邀请。仅需普通问答且不在意延迟时,宜改用对话方式。
关于 API 调用:若拥有 wsh_* 工具则直接使用;否则为 HTTP/curl 回退模式,不要猜测端点或 CLI 子命令,需先加载完整 API 参考。快速引导命令:curl -sf --unix-socket ${XDG_RUNTIME_DIR:-/tmp}/wsh/default.http.sock http://localhost/health;失败则运行 wsh server -L agent-$$ --ephemeral & 后重试。