Pi Jev 自动模式

为 Pi 的命令与文件操作提供默认拒绝的自动权限判断。

Star 数
★ 33
最近更新
19 天前
License
MIT
主语言
TypeScript

30 秒速览

运行形态
Agent 插件 / 技能命令行工具
可在哪里用
平台专用
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
Pi 编码智能体用于 Jev 语义判断的 TypeSafe API 密钥Shell / 命令行网络访问本地文件系统
典型场景
经常让 Pi 连续执行开发任务、希望减少普通命令确认,同时不愿让未知操作自动放行的开发者。
不适合
  • 不使用 Pi 编码代理的团队
  • 无法接受合法操作被默认拦截的团队

这个 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 则保存并渲染判断记录。

  1. 经常让 Pi 连续执行开发任务、希望减少普通命令确认,同时不愿让未知操作自动放行的开发者。
  2. 需要将 npm publish、sudo、git reset --hard 或潜在破坏性删除交给额外策略判断的项目维护者。
  3. 希望保护 .env、.git、~/.ssh、.pi、.github/workflows 或 AGENTS.md 等敏感位置的团队。
  4. 希望按本机环境为测试、类型检查等命令建立 safeCommands 快速通道,同时保留危险操作记录的用户。
  5. 需要查看每条语义条件的概率并按实际工作负载校准阈值的高级用户。

如何安装或部署这个 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-mode

Jev 语义层需要 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 有哪些优点和局限?

优点
  • 采用确定性策略与语义判断两层结构,硬性拒绝不会交给模型重新解释。
  • 默认失败关闭;不确定区间、网络错误、超时、取消和无效响应不会静默放行。
  • 默认 gateScope=all 会判断所有未被本地规则明确担保的调用,而不只依赖危险命令黑名单。
  • 语义请求不包含文件内容、差异、助手输出或工具输出,并会脱敏多类明显凭据。
  • 支持逐规则阈值、概率记录、全局与受信任项目配置,便于审计和针对实际工作负载调校。
局限
  • 核心集成专用于 Pi coding agent,未提供 ChatGPT、Codex、Claude 或通用 API 的适配路径。
  • 完整语义判断依赖 TypeSafe 的 Jev 服务和 API key;Jev 处于早期访问阶段,账户可能需要等待。
  • 被判断的调用会产生约 193–642 毫秒的实测延迟,并需要向 api.typesafe.ai 发送经过截断和脱敏的调用上下文。
  • 默认不确定即拒绝可能中断合法操作;要减少误拦截,用户可能需要调整规则措辞、阈值或快速通道。
  • 项目级配置仅对受信任项目生效,迁移现有权限习惯时需要分别规划全局与项目设置。

这个 Agent 与同类方案有什么区别?

其确定性模式目录改编自 @nilskluewer/pi-auto-permission-gate,并沿用类似的“快速通道、硬规则、分类器”三层思路;README 也指出这一结构与 Qwen Code Auto Mode 相近。该项目的具体区别是把 TypeSafe Jev 作为判断层,并强调失败关闭、双侧阈值、每次判断一个请求以及逐条件概率记录。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Pi Jev 自动模式 当前 73 · 存在缺口 Agent 插件 / 技能免费 + 模型费 ★ 33 19 天前 TypeScript —
Magic Context 54 · 缺口较多 命令行工具免费 + 模型费 ★ 2.5k 5 天前 TypeScript —
Pi Subagent 65 · 存在缺口 Agent 插件 / 技能免费 + 模型费 ★ 82 28 天前 JavaScript —
Pi MCP 上下文适配器 60 · 存在缺口 Agent 插件 / 技能免费 ★ 1.6k 今天 TypeScript —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
73/ 100 五分制 3.7 / 5
本评测基于 2026年9月20日 的源码;此后该项目发布了 2 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 18/29
可靠稳定 9/14
适用触发 15/18
规范维护 14/18
有效结果 12/13
证据核验 5/8
查看各维度的扣分理由
信任安全18 / 29 · 3.1/5

最小权限方面,门控仅覆盖 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;发布者身份仍按要求视为未知。

可靠稳定9 / 14 · 3.2/5

实现说明、离线 CI 和多组测试覆盖了硬拒绝优先、无密钥、超时、取消、异常和无 UI 等路径。然而 README 明确称不确定区间默认 deny,extension 测试却明确称默认放行并断言成功,这是安全关键的自相矛盾,因此自洽性仅 1。依赖可用性方面说明了 Node 版本、Pi 对等依赖、Jev 早期访问和无密钥降级行为,但 Jev 账户可能候补、运行依赖远程服务,且未提供离线语义替代,故为 2。失败消息能区分未连接、超时、取消、引擎异常和用户拒绝,记录来源及理由,并提示登录操作,测试证据充分,故为 3。

适用触发15 / 18 · 4.2/5

文档清楚面向 Pi 用户、交互使用和 CI,覆盖普通开发、高风险命令、项目内外写入及无 API 密钥情景,故受众与场景为 3。能力边界明确限定工具、快速路径、硬规则、语义层、发送数据和不支持的判断状态,故为 3。触发规则包含硬拒绝、用户模式、危险形状、受保护路径及 all/matched 范围,且测试覆盖顺序;但通配模式和危险形状仍有漏检风险,safeCommands 可越过危险匹配,matched 会让未知调用不经判断,因此精度为 2。环境适配支持全局和可信项目配置、环境变量、无 UI 失败关闭及 macOS/Linux CI;但要求 Node 22.19、Pi、远程 Jev 服务,未见 Windows CI或更广兼容证据,故为 2。

规范维护14 / 18 · 3.9/5

README 的安装、使用、配置、调优、数据流、发布、开发和文件职责结构清楚,信息架构及安装说明均为 3。命令、配置键和包名总体稳定,但只有单一快照且存在默认不确定策略的文档/测试冲突,命名稳定性为 2。示例丰富但没有完整 FAQ,且被引用的设计、安全、校准文档未包含在本次材料中,故示例与 FAQ 为 2。已披露延迟、早期访问、模式识别边界、无密钥行为及部分已知限制,但关键默认行为冲突削弱可信度,故限制说明为 2。MIT 元数据与完整 LICENSE 一致,给 3。README 描述 Unreleased、版本、标签和发布流程,package 为 0.4.1,但未提供 CHANGELOG 内容或现有标签证据,故版本与变更记录为 2。作者、仓库、问题入口和私密安全通报渠道明确,但没有团队、响应时限或长期维护承诺,且身份未经注册表验证,故维护责任为 2。

有效结果12 / 13 · 4.6/5

状态栏、命令界面、可展开决策记录、概率表、明确阻止原因和即时配置使输出可直接操作,故可用性为 3。它为原本没有内建权限系统的 Pi 提供确定性规则加语义门控、失败关闭和数据最小化,具有明确增量价值,故为 3。快速路径避免调用成本,并披露约 193–642 毫秒延迟;但需要早期访问的外部 API、可能阻塞正常工作,而且默认不确定策略存在冲突,因此成本收益仅 2。

证据核验5 / 8 · 3.1/5

许多主张可追到具体源文件职责和测试,例如脱敏、意图提取、硬拒绝、失败关闭和记录;但 171 个测试、实测概率、延迟及全部阈值依赖未提供的校准或完整测试材料,且默认不确定行为相互冲突,故可追溯性为 2。README、SECURITY.md、package、CI 和测试对若干安全及安装主张形成交叉印证,但缺少实际实现文件、锁文件、设计/校准/详细安全文档和变更日志,故交叉佐证为 2。文档通常区分测量、配置选择和设计主张,也明确阈值不是事实;不过对“默认失败关闭”的概括与测试期望不符,部分实测结论无法由所给材料独立核对,故事实与推断分离为 2。

风险与缓解建议
  • README 声称不确定判定默认阻止,但 test/extension.test.ts 明确断言默认放行;在解决此安全关键矛盾前,不应依赖默认设置。
  • gateScope="matched" 会让未匹配的调用绕过语义判断;仅在接受该覆盖缺口时使用。
  • safeCommands 可优先于危险匹配且不记录决策;应将其视为高信任本机白名单并保持最小化。
  • 语义判断会把命令、路径、工作目录、近期用户消息和策略注释发送到 api.typesafe.ai;正则脱敏不能保证识别所有自定义凭据。
  • Jev 早期访问、账户候补或服务故障会阻止所有需要语义判断的调用;应预先验证无密钥和离线工作流。
  • 所给材料缺少锁文件、实现源文件、CHANGELOG 以及被引用的设计、校准和详细安全文档,因此无法静态核实依赖解析、全部阈值依据或“171 tests”声明。
证据充分度:低 评估于 2026年9月20日 审查版本 06a560430881 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v0.6.0
    发布说明摘录
    - Add explicit decision backends for Perplexity Decisions, Cloudflare Clef/Clef-flash, OpenAI Decisions (gpt-6-luna), and a loopback Strands Decider server. TypeSafe remains the default; provider selection is environment-only and credentials are never reused across providers. - Validate each REST contract, including Cloudflare's result envelope and finite noul probabilities for every requested question. Errors remain blocked under every uncertain policy. Bound retries, preserve cancellation, and serialize local Strands requests. …
    在 GitHub 查看 ↗
  2. v0.5.0 0.5.0
    发布说明摘录
    - Decision records are compact by default. An approval is drawn as one line — status, tool, latency, and the command — and a block as two, keeping the rationale. Each record used to take five padded blocks, so a long session was mostly gate records. /jev-auto-mode display full (or "display": "full") restores the previous view, and the expanded view shows every detail in either mode.
    在 GitHub 查看 ↗
  3. v0.4.1 0.4.1
    发布说明摘录
    - An unclear answer passes by default. uncertain defaulted to deny, which meant a judgment the model was unsure about stopped the call. That is the interruption an auto mode exists to remove; clear rejections still block. uncertain deny and uncertain ask remain available for anyone who wants the stricter behaviour. - Without a key the gate says so and stops, instead of inventing a verdict and blocking with an unexplained reason. The message names the fix: /jev-auto-mode login, or …
    在 GitHub 查看 ↗

常见问题

没有 TypeSafe API key 还能使用吗?
可以,但功能受限。本地只读快速通道、用户声明的安全命令和硬性拒绝仍会运行;任何需要语义判断且无人担保的调用都会被阻止。
它会把源代码或文件内容发送到外部吗?
不会。升级到 Jev 的调用会发送工具名、截断后的 bash 命令、write/edit 的目标路径、工作目录、策略原因、有限的近期用户消息和策略说明;不会发送文件内容、差异、助手输出或工具输出。
模型无法确定时会发生什么?
默认 uncertain=deny,中间概率区间会被阻止。可以改为 ask 显示确认对话框,或改为 allow;没有引擎、超时、响应异常和取消等其他不可判断情况仍会失败关闭。
能否只判断已匹配危险模式的命令?
可以。/jev-auto-mode scope matched 恢复仅匹配模式的行为;默认 scope all 会把所有未被确定性层明确担保的调用交给 Jev。
如何安全地减少日常命令的延迟?
可将本机可信的测试或类型检查命令加入 safeCommands,使其无需语义请求和决策记录即可运行;若要覆盖危险模式,应使用 allowedCommands,覆盖行为仍会留下记录。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents