$ cat ~/map/pi-quiet-ask.md
pi-quiet-ask
以规则引擎把 Jev 判断接进 pi 的五类钩子:JSON 规则包决定阻断、确认、批注与引导。
extensions✓ 9月20日
事实速查
- GitHub Stars
- ★ 12
- Forks
- 0
- 许可证
- MIT
- npm / 月
- —
- 最后推送
- 2026年9月18日
安装
运行 pi install git:github.com/HyunjunJeon/pi-quiet-ask(要求 pi 0.85 或更高版本),然后通过环境变量、~/.pi/agent/pi-quiet-ask.json 或项目 .env 设置 TYPESAFE_API_KEY;可选的 triage 裁判需要配合 @eko24ive/pi-ask 扩展的 ask_user 工具。## 速览
一个把 TypeSafe Jev 判断接进 pi 的 JSON 规则引擎:规则包挂载在贯穿会话生命周期的钩子上,五个内置包覆盖危险命令门控、泄密输出检查、意图标记、完工诚实度检查与卡死循环识别,默认全部运行在 shadow 模式。
## 要点
- $五个内置包各守一类钩子、各有默认动作:gate 在 tool_call 阶段对 bash/write/edit 判断破坏性、外泄、越界与影响(默认 shadow,触发 warn);output 检查 bash 的 tool_result 是否泄露密钥并归类失败原因(批注结果);intent 在 before_agent_start 给任务打标(标签加页脚);honest_finish 在 agent_end 追问声称完成的工作是否验证过(默认 shadow,warn 并点名检查);stuck 在 turn_end 盯住同一失败的重复出现(默认 shadow,warn 并点名命令)。
- $两个裁判在规则包体系之外,因为动作各自特殊:triage 依据上下文回答 ask_user 的提问(建议或自动作答),任务图谱追踪每轮所处的流程阶段(HUD 加 steer);工作状态证据账本记录已改文件与最近验证,全程不调用 Jev。
- $规则包是纯 JSON,有四种来源——五个内置包、用户级的 ~/.pi/agent/pi-quiet-ask/packs/ 文件、受信任项目下的 .pi/pi-quiet-ask/packs/ 项目级文件,以及配置里的 packs.<name> 条目。包内 on 指定钩子,when 是 Jev 之前的廉价过滤,mode 取 shadow(默认)或 enforce,questions 是类型化的 noul/choice/score 提问,有序规则中所有命中的动作都会生效、allow 终止求值;README 里的 force.json 示例拦截 git 历史改写,一次真实的 git push --force 在 0.97 概率处被阻断。
- $规则写起来像阈值:裸的问题 id 就是其主值,and/or/not 加括号与比较在其上组合,未知路径按 false 处理,规则里没有任何执行代码的途径。
- $状态按包选择、离开机器前先脱敏:来源从当前参数、最近几轮到证据账本不等,凭据在本地先行移除,被移除的值以 redactions 出现在规则作用域里。
- $shadow 语义是显式的:干预类动作(block、confirm、steer、set_thinking、set_tools)只记录 would-block 字样、实际不拦截,而 always 类动作(annotate、warn、status、tag)两种模式都执行;steer 受 maxPerPrompt 限制,默认 1。
- $代理一侧也配合:随附的 quiet-ask skill 教会 pi 代理留下循环可见的痕迹、只提封闭式问题;jev_ask 与 jev_choose 把 Jev 作为工具暴露给模型;Claude Code/Codex 一侧则使用独立的 jev-judgment skill(HyunjunJeon/jev-judgment)。
## 常见问题
Q 没有 TypeSafe 密钥时会怎样?
扩展不注册任何钩子、零开销。设置密钥后,页脚会显示活跃的裁判(quiet packs:5 triage:auto graph),/quiet 打印完整状态。
Q 默认会拦截我的命令吗?
不会——默认是 shadow 模式:干预类动作以 would-block 警告的形式报告并记录,实际不拦截。把规则包切换到 enforce 后,它的 block 与 confirm 动作才会真正执行。
Q 可以加项目专属规则吗?
可以——在受信任项目的 .pi/pi-quiet-ask/packs/ 下放一个 JSON 文件即可。README 的 force.json 示例拦截 git 历史改写,一次真实的 git push --force 在 0.97 概率处被阻断。
## 参考链接
## 相关条目
## 教程
最后更新: 2026年9月20日