Pi Jev 自动模式
为 Pi 的命令与文件操作提供默认拒绝的自动权限判断。
按维度查看评分与理由
最小权限方面,门控仅覆盖 bash、write、edit,并区分只读、项目内写入、受保护路径和硬拒绝,但启用的自动模式仍可在没有逐次确认的情况下批准高影响命令,因此为 2。用户确认可配置为 ask,且无 UI 时会阻止,不过确认不是默认路径;更重要的是 README 声称不确定区间默认阻止,而测试明确期望默认放行,故仅 1。数据流披露具体列出了发送到 TypeSafe 的字段、排除的内容、端点、截断和上下文边界,给满分。敏感数据有常见凭据脱敏、文件内容不外发、密钥验证和 0600 存储,并有测试支撑;但基于模式的脱敏不可能覆盖所有秘密格式,命令、路径、工作目录、用户消息和策略仍会外发,故为 2。依赖声明简洁且官方 SDK 为唯一运行时依赖,但未提供锁文件、依赖审计、固定提交或漏洞处置证据,故依赖安全为 1。外部影响分类、记录和高风险升级较清楚,但语义引擎仍能批准 git reset --hard 等危险操作,matched 范围还允许未匹配调用绕过判断,故为 2。存在关闭模式、logout、policy clear 和 threshold reset 等配置恢复手段,但已执行的 shell、写入或编辑没有事务性回滚,故为 1。README 明确归因借鉴的项目、Qwen Code、官方 SDK及 MIT 来源,LICENSE 和包元数据也一致,故来源归因为 3;发布者身份仍按要求视为未知。
实现说明、离线 CI 和多组测试覆盖了硬拒绝优先、无密钥、超时、取消、异常和无 UI 等路径。然而 README 明确称不确定区间默认 deny,extension 测试却明确称默认放行并断言成功,这是安全关键的自相矛盾,因此自洽性仅 1。依赖可用性方面说明了 Node 版本、Pi 对等依赖、Jev 早期访问和无密钥降级行为,但 Jev 账户可能候补、运行依赖远程服务,且未提供离线语义替代,故为 2。失败消息能区分未连接、超时、取消、引擎异常和用户拒绝,记录来源及理由,并提示登录操作,测试证据充分,故为 3。
文档清楚面向 Pi 用户、交互使用和 CI,覆盖普通开发、高风险命令、项目内外写入及无 API 密钥情景,故受众与场景为 3。能力边界明确限定工具、快速路径、硬规则、语义层、发送数据和不支持的判断状态,故为 3。触发规则包含硬拒绝、用户模式、危险形状、受保护路径及 all/matched 范围,且测试覆盖顺序;但通配模式和危险形状仍有漏检风险,safeCommands 可越过危险匹配,matched 会让未知调用不经判断,因此精度为 2。环境适配支持全局和可信项目配置、环境变量、无 UI 失败关闭及 macOS/Linux CI;但要求 Node 22.19、Pi、远程 Jev 服务,未见 Windows CI或更广兼容证据,故为 2。
README 的安装、使用、配置、调优、数据流、发布、开发和文件职责结构清楚,信息架构及安装说明均为 3。命令、配置键和包名总体稳定,但只有单一快照且存在默认不确定策略的文档/测试冲突,命名稳定性为 2。示例丰富但没有完整 FAQ,且被引用的设计、安全、校准文档未包含在本次材料中,故示例与 FAQ 为 2。已披露延迟、早期访问、模式识别边界、无密钥行为及部分已知限制,但关键默认行为冲突削弱可信度,故限制说明为 2。MIT 元数据与完整 LICENSE 一致,给 3。README 描述 Unreleased、版本、标签和发布流程,package 为 0.4.1,但未提供 CHANGELOG 内容或现有标签证据,故版本与变更记录为 2。作者、仓库、问题入口和私密安全通报渠道明确,但没有团队、响应时限或长期维护承诺,且身份未经注册表验证,故维护责任为 2。
状态栏、命令界面、可展开决策记录、概率表、明确阻止原因和即时配置使输出可直接操作,故可用性为 3。它为原本没有内建权限系统的 Pi 提供确定性规则加语义门控、失败关闭和数据最小化,具有明确增量价值,故为 3。快速路径避免调用成本,并披露约 193–642 毫秒延迟;但需要早期访问的外部 API、可能阻塞正常工作,而且默认不确定策略存在冲突,因此成本收益仅 2。
许多主张可追到具体源文件职责和测试,例如脱敏、意图提取、硬拒绝、失败关闭和记录;但 171 个测试、实测概率、延迟及全部阈值依赖未提供的校准或完整测试材料,且默认不确定行为相互冲突,故可追溯性为 2。README、SECURITY.md、package、CI 和测试对若干安全及安装主张形成交叉印证,但缺少实际实现文件、锁文件、设计/校准/详细安全文档和变更日志,故交叉佐证为 2。文档通常区分测量、配置选择和设计主张,也明确阈值不是事实;不过对“默认失败关闭”的概括与测试期望不符,部分实测结论无法由所给材料独立核对,故事实与推断分离为 2。
- README 声称不确定判定默认阻止,但 test/extension.test.ts 明确断言默认放行;在解决此安全关键矛盾前,不应依赖默认设置。
- gateScope="matched" 会让未匹配的调用绕过语义判断;仅在接受该覆盖缺口时使用。
- safeCommands 可优先于危险匹配且不记录决策;应将其视为高信任本机白名单并保持最小化。
- 语义判断会把命令、路径、工作目录、近期用户消息和策略注释发送到 api.typesafe.ai;正则脱敏不能保证识别所有自定义凭据。
- Jev 早期访问、账户候补或服务故障会阻止所有需要语义判断的调用;应预先验证无密钥和离线工作流。
- 所给材料缺少锁文件、实现源文件、CHANGELOG 以及被引用的设计、校准和详细安全文档,因此无法静态核实依赖解析、全部阈值依据或“171 tests”声明。
这个 Agent 能做什么,适合哪些场景?
Pi Jev 自动模式是 Pi coding agent 的扩展,为 bash、write 和 edit 工具调用增加权限闸门。它先执行确定性策略,处理硬性拒绝、用户规则、危险命令、受保护路径和可信快速通道,再把需要判断的调用交给 TypeSafe 的 Jev 决策模型。默认 gateScope 为 all,凡是确定性规则无法担保的操作都会进入语义判断;模型不确定、超时、响应异常或不可用时均默认阻止。扩展通过 /jev-auto-mode 命令管理启用状态、凭据、作用域、不确定区间、策略说明和逐规则阈值,并在会话中生成可展开的决策记录。它作为 Pi 扩展运行,配置和密钥保存在 Pi 的代理目录中;语义判断依赖 api.typesafe.ai,但无密钥时本地规则仍会执行。
每次 Pi 发起 bash、write 或 edit 调用时,src/extension.ts 负责组织处理流程。src/policy.ts 首先检查硬性拒绝、allowedCommands、disallowedCommands、safeCommands、危险命令模式和受保护路径:明确拒绝的调用直接拦截,内置只读命令、用户声明的安全命令以及未受保护的项目内写入可走快速通道。需要升级的调用由 src/call.ts 构造判断状态,对命令和上下文做截断与凭据脱敏;write/edit 只发送目标路径,不发送文件内容或差异。src/intent.ts 仅提取近期用户消息,src/jev/engine.ts 对每次判断发起一个 Jev 请求,src/jev/decide.ts 根据各条件的概率、mode、severity 和双侧阈值产生 allow 或 block。失败、取消、超时、格式错误、没有引擎或没有密钥时,无法判断的调用被阻止;src/records.ts 则保存并渲染判断记录。
- 经常让 Pi 连续执行开发任务、希望减少普通命令确认,同时不愿让未知操作自动放行的开发者。
- 需要将 npm publish、sudo、git reset --hard 或潜在破坏性删除交给额外策略判断的项目维护者。
- 希望保护 .env、.git、~/.ssh、.pi、.github/workflows 或 AGENTS.md 等敏感位置的团队。
- 希望按本机环境为测试、类型检查等命令建立 safeCommands 快速通道,同时保留危险操作记录的用户。
- 需要查看每条语义条件的概率并按实际工作负载校准阈值的高级用户。
这个 Agent 有哪些优点和局限?
- 采用确定性策略与语义判断两层结构,硬性拒绝不会交给模型重新解释。
- 默认失败关闭;不确定区间、网络错误、超时、取消和无效响应不会静默放行。
- 默认 gateScope=all 会判断所有未被本地规则明确担保的调用,而不只依赖危险命令黑名单。
- 语义请求不包含文件内容、差异、助手输出或工具输出,并会脱敏多类明显凭据。
- 支持逐规则阈值、概率记录、全局与受信任项目配置,便于审计和针对实际工作负载调校。
- 核心集成专用于 Pi coding agent,未提供 ChatGPT、Codex、Claude 或通用 API 的适配路径。
- 完整语义判断依赖 TypeSafe 的 Jev 服务和 API key;Jev 处于早期访问阶段,账户可能需要等待。
- 被判断的调用会产生约 193–642 毫秒的实测延迟,并需要向 api.typesafe.ai 发送经过截断和脱敏的调用上下文。
- 默认不确定即拒绝可能中断合法操作;要减少误拦截,用户可能需要调整规则措辞、阈值或快速通道。
- 项目级配置仅对受信任项目生效,迁移现有权限习惯时需要分别规划全局与项目设置。
如何安装或部署这个 Agent?
需要先有 Pi coding agent。安装 npm 包:
pi install npm:pi-jev-auto-mode也可直接从 GitHub 安装:
pi install git:github.com/jomatsu/pi-jev-auto-mode无需安装即可试用:
pi -e npm:pi-jev-auto-modeJev 语义层需要 TypeSafe API key。可在 Pi 中运行 /jev-auto-mode login,密钥经 GET /v1/models 验证后以 0600 权限保存;也可设置 TYPESAFE_API_KEY。TYPESAFE_DEFAULT_MODEL 可选择模型,默认是 jev-latest。
如何使用这个 Agent?
安装后运行 /jev-auto-mode on 启用自动模式,或以 pi --jev-auto-mode 启动。用 /jev-auto-mode 查看当前设置和密钥来源;/jev-auto-mode scope all|matched 控制语义判断范围,默认 all;/jev-auto-mode uncertain deny|ask|allow 设置中间概率区间的处理方式,默认 deny。运行 /jev-auto-mode threshold 查看各规则阈值和最近概率,使用 /jev-auto-mode threshold <rule> <0.5-1> 写入覆盖值。全局配置位于 $PI_CODING_AGENT_DIR/jev-auto-mode.json,受信任项目可使用 <cwd>/.pi/jev-auto-mode.json 覆盖;可在其中配置 safeCommands、allowedCommands、disallowedCommands、extraProtectedPaths、timeoutMs 和其他选项。无 API key 时,明确安全的快速通道和硬性拒绝仍然生效,但需要 Jev 判断的调用会以“Not connected to Jev”阻止。
这个 Agent 与同类方案有什么区别?
其确定性模式目录改编自 @nilskluewer/pi-auto-permission-gate,并沿用类似的“快速通道、硬规则、分类器”三层思路;README 也指出这一结构与 Qwen Code Auto Mode 相近。该项目的具体区别是把 TypeSafe Jev 作为判断层,并强调失败关闭、双侧阈值、每次判断一个请求以及逐条件概率记录。