
TUI 中的需求决策与工具审批
编写于 2026-08-13
实现一个登录流程时,Peri 可能先停下来询问会话应该保存在 Cookie 还是本地存储。随后它又可能弹出一个审批窗口,请求运行数据库迁移命令。两次暂停都在等待用户输入,用户承担的责任并不相同。
结构化提问补齐任务决策,答案会改变接下来的实现方向。工具审批只处理眼前的一次工具调用,放行不等于接受产品方案,也不等于给进程增加操作系统隔离。
结构化提问补齐任务条件
当 Agent 缺少一个会改变方案的选择时,TUI 会在消息区下方打开提问面板。问题可以包含单选、多选和自定义文本,多问题表单会要求用户处理尚未回答的项目,再把答案作为一组结构化结果送回当前任务。
这类问题适合承载产品取舍、范围选择和验收标准。回答之前应检查选项描述是否覆盖自己的约束,自定义答案则应写清选择、禁止事项和验证条件,避免只给一个缺少边界的方向词。下面的输入输出是演示示例,不是真实会话。
Peri 提问登录状态放在哪里
用户答案使用 HttpOnly Cookie。不要把 Token 写入 localStorage。验收包含刷新后会话恢复和登出后 Cookie 失效。这个答案决定了实现路径,也给出了禁止事项和验收条件。它没有授权 Peri 执行迁移、删除数据或访问生产凭据,后续敏感操作仍要单独判断。
提问面板保留拒绝语义
按 Esc 不会直接把提问面板当作普通窗口关闭,而是进入拒绝确认。确认后会向 Agent 发送明确拒绝,告诉当前任务不要等待这组答案。
协议里还存在取消结果,主要用于界面生命周期发生变化时结束等待。取消与明确拒绝不是同一个结果,文章、日志和用户判断都不应把两者统一写成一次普通关闭。
工具审批展示当前执行内容
需要人工确认的工具调用会打开 人工审批弹窗。弹窗展示实际工具名和输入摘要,批量请求还会列出附加工具,用户应根据当前仓库、命令目标和可能副作用决定是否放行。
按 Enter 只批准这一次请求,按 Esc 则拒绝。当前交互没有永久允许选项,因此一次批准不能推导后续同类命令都会自动执行。
审批不替代其他安全边界
工具审批回答的是 Peri 是否把这次调用交给工具执行。它不证明命令内容安全,不提供操作系统沙箱,也不能替代代码评审、发布审批、生产变更授权或数据备份。
看到文件写入、Shell 命令或外部请求时,先核对目标和参数,再检查工作区是否可恢复。输入摘要过长时,弹窗可能只展示截断内容,信息不足就应拒绝并要求 Peri 先解释操作范围。
交互结果回到任务时间线
回答或审批成功后,时间线里的 pending 交互块会回写结果并收起。若响应发送失败,交互仍可能保持 pending,不能只凭面板关闭就判断 Agent 已经收到决定。
回到登录流程,Cookie 选择回答了做什么,迁移审批回答了这次工具能否运行。把需求决策和执行授权分开,用户才能既控制产品方向,也控制每一个有副作用的动作。