---
title: "TUI 中的需求决策与工具审批"
description: "区分结构化提问与单次工具授权，在任务暂停时给出范围明确的响应。"
---

> Documentation Index
> Fetch the complete documentation index at: https://konghayao.github.io/peri-cool/llms.txt
> Use this file to discover all available pages before exploring further.

# TUI 中的需求决策与工具审批

实现一个登录流程时，Peri 可能先停下来询问会话应该保存在 Cookie 还是本地存储。随后它又可能弹出一个审批窗口，请求运行数据库迁移命令。两次暂停都在等待用户输入，用户承担的责任并不相同。

**结构化提问**补齐任务决策，答案会改变接下来的实现方向。**工具审批**只处理眼前的一次工具调用，放行不等于接受产品方案，也不等于给进程增加操作系统隔离。

## 结构化提问补齐任务条件

当 Agent 缺少一个会改变方案的选择时，TUI 会在消息区下方打开提问面板。问题可以包含单选、多选和自定义文本，多问题表单会要求用户处理尚未回答的项目，再把答案作为一组结构化结果送回当前任务。

这类问题适合承载产品取舍、范围选择和验收标准。回答之前应检查选项描述是否覆盖自己的约束，自定义答案则应写清选择、禁止事项和验证条件，避免只给一个缺少边界的方向词。下面的输入输出是演示示例，不是真实会话。

```text
Peri 提问
登录状态放在哪里

用户答案
使用 HttpOnly Cookie。不要把 Token 写入 localStorage。
验收包含刷新后会话恢复和登出后 Cookie 失效。
```

这个答案决定了实现路径，也给出了禁止事项和验收条件。它没有授权 Peri 执行迁移、删除数据或访问生产凭据，后续敏感操作仍要单独判断。

## 提问面板保留拒绝语义

按 Esc 不会直接把提问面板当作普通窗口关闭，而是进入拒绝确认。确认后会向 Agent 发送明确拒绝，告诉当前任务不要等待这组答案。

协议里还存在取消结果，主要用于界面生命周期发生变化时结束等待。取消与明确拒绝不是同一个结果，文章、日志和用户判断都不应把两者统一写成一次普通关闭。

## 工具审批展示当前执行内容

需要人工确认的工具调用会打开 **人工审批弹窗**。弹窗展示实际工具名和输入摘要，批量请求还会列出附加工具，用户应根据当前仓库、命令目标和可能副作用决定是否放行。

按 Enter 只批准这一次请求，按 Esc 则拒绝。当前交互没有永久允许选项，因此一次批准不能推导后续同类命令都会自动执行。

## 审批不替代其他安全边界

工具审批回答的是 Peri 是否把这次调用交给工具执行。它不证明命令内容安全，不提供操作系统沙箱，也不能替代代码评审、发布审批、生产变更授权或数据备份。

看到文件写入、Shell 命令或外部请求时，先核对目标和参数，再检查工作区是否可恢复。输入摘要过长时，弹窗可能只展示截断内容，信息不足就应拒绝并要求 Peri 先解释操作范围。

## 交互结果回到任务时间线

回答或审批成功后，时间线里的 pending 交互块会回写结果并收起。若响应发送失败，交互仍可能保持 pending，不能只凭面板关闭就判断 Agent 已经收到决定。

回到登录流程，Cookie 选择回答了做什么，迁移审批回答了这次工具能否运行。把需求决策和执行授权分开，用户才能既控制产品方向，也控制每一个有副作用的动作。

继续阅读 [权限模式](/peri-cool/docs/features/permissions/) 和 [凭据与权限](/peri-cool/docs/security/secrets-and-permissions/)。TUI 的基础操作见 [TUI 导航](/peri-cool/docs/guides/tui-navigation/)。

Source: https://konghayao.github.io/peri-cool/posts/product/ask-user-vs-approval/index.mdx
