Skip to content

审批与问卷浮层 ​

agent 需要用户裁决时,Mayfly 以全宽上拉面板应答。面板采用 editor 槽位替换挂载:面板真实占据编辑器的 dock 槽位,编辑器整体退场(离树但状态存活),面板之下只有两行 footer——不是"盖在上面",编辑器框不会从面板边缘露出来。关闭面板即恢复编辑器并还焦,草稿无损。

审批面板 ​

工具调用需要授权时,弹出标题为 Approve {tool}? 的面板,上方显示工具理由(过长时可滚动),下方是一行选项:

[ Reject ]  Allow once  Allow {tool} for this session  Reject with feedback
  • 默认聚焦 Reject,误按 Enter 不会放行。用 ← / → 或 Tab 在选项间移动,Enter 执行;这个关卡没有数字快捷键。
  • 会话级记住 —— Allow {tool} for this session 为当前 Agent 记下该工具,同一 Agent 同一工具的后续请求不再弹窗、直接放行。切换显示视图(例如 F7)不会丢失该许可,Agent 被销毁时才失效。
  • 拒绝带反馈 —— 在第二页打开理由输入框;Enter 发送,Alt+Enter 换行,Esc 先结束编辑、再按一次返回选项页。发送后以用户消息形式 steer 给 agent(User rejected …: <理由>),agent 能看到拒绝原因;空理由等价于普通 Reject。
  • Escape 拒绝;请求中止时定案取消。
  • FIFO 串行 —— 并发审批请求排队,同一时刻只显示一个面板。

来自其他 agent(非当前显示的 agent)的请求不会弹面板,而是沿 waterfall 交给下一个应答者。

问卷面板 ​

ctx.userQuestions 请求(澄清问题等)打开一个面板,每个问题一页:

  • 每个问题一个 tab(显示其 header 或 Q{n})表示进度,已作答的步骤带 ✓。标签栏上用 ← / →、任意位置用 Alt+← / Alt+→ 切换问题,向前切换会像 Next 一样校验当前问题;
  • 选项带编号:1–9 或 ↑↓ + Enter 选择,单选会前进到下一题(最后一题直接提交)。单选题末尾有 No selection;多选用 Space 勾选、Enter 确认;
  • 每题都有 Other 输入框(没有选项时只有它):输入即开始作答,Enter 前进或提交,Alt+Enter 换行;
  • 每题下方有 Back 与 Next 按钮;面板底部是 Submit answers 与 Cancel;
  • Esc 先结束编辑;带着未保存的回答离开时会弹出共享的“放弃未保存的修改?”确认,确认放弃即拒绝该请求。请求中止同样会关闭并拒绝。

问卷回答作为用户可见内容进入会话,模型可以看到。

确认 ​

所有确认——完全访问、停止子 Agent、移除插件、删除 provider、归档活动会话、放弃未保存的修改——都是同一个共享 decision:标题是问题,可附一句后果说明,然后是 否(默认聚焦)与 是(或 Enable、Stop 这类具体标签)。在“否”上按 Enter、按 Esc 或 Ctrl+C 都会取消并回到原面板,状态完整保留;只有“是”才会继续。/update 在开始前使用同样的形态。

当某个操作对所选行不可用时——one-shot 或未运行的子 Agent、已安装的插件——该操作会在标签旁说明原因,且不会进入确认。

多字段表单 ​

provider 引导、provider 与设置编辑等面板使用同一个表单模型:

  • 每个字段是一行紧凑的 label: value;聚焦行带 →,折行内容在其下方继续;
  • Up / Down 永远在字段间移动;直接输入或 Enter 开始编辑文本,Enter 确认并前进(多行字段用 Alt+Enter 换行);
  • 下拉字段用 Left / Right 直接切换取值(跳过不可用选项),或用 Enter 打开列表;多选字段用 Enter 或 Space 打开;Tab 应用打开的列表或文本编辑并切到下一组;
  • 继承取值的设置在值后标注 (继承) 或 (显式覆盖);修改取值即成为显式覆盖,在显式覆盖的字段上按 Delete 恢复为继承值;
  • Escape 先结束编辑;带着未保存的修改离开时会先确认;
  • 校验错误直接渲染在出错字段下方,不关闭面板;任何编辑都会清除它;
  • 值按面板宽度截断,长粘贴 key 不会撑破边框。

计划评审面板 ​

agent 调用 exit_plan_mode 收尾计划时,计划渲染进对话流,评审决策在编辑器槽位打开:

1. <批准标签>
2. <拒绝标签>
3. Other — 输入反馈以修改计划
  • 默认聚焦拒绝行;数字 1–3 或 ↑↓ 只在决策间移动,Enter 确认聚焦的决策,因此批准一定需要显式按 Enter;
  • c 复制计划,o 打开反馈输入;PageUp / PageDown / Shift+↑↓ 滚动上方的计划;
  • 反馈用 Enter 提交,作为带反馈的拒绝(harness 将其并入 "their feedback: …"),agent 据此迭代计划;空提交会回到决策列表;
  • 请求中止时以取消码(ASK_CANCELLED)关闭面板。

Shift+Tab 只在 normal 与 plan 间切换(见会话模式),保留当前权限。YOLO 由 /permission 单独控制,不会跳过计划评审;footer 可同时显示 plan 与 yolo。

权限预设面板 ​

/permissions 打开 Mayfly 的权限预设选择器(与 /sessions、/preset 相同的单选列表形态):每个预设(沙箱模式 + 审批策略的具名组合)一行带编号,当前生效的标记 ← current。1–9 或 ↑↓ + Enter 通过宿主同一条写路径切换;完全访问会先弹出共享确认并写明沙箱后果。推导出的 custom 状态会显示但不可选,并说明原因。原生 /permission <name> 命令保留自己的名称与参数形式,可直接切换。

预览版 · v0.1.4-rc.1