pi- 自动调制
Claude Code-style 为 Pi 设计的自动模式.
这是护栏的延伸 它会截取执行前的代理工具呼叫,并屏蔽与许可匹配的动作拒绝规则,确定硬性检查,或者自动模式分类器的块决定.
这不是沙盒。 扩展运行于 Pi 进程 。 恶意扩展可以做任何用户账户可以做的.
Pi- automode 不守护用户 ! 或者说 !! 贝壳命令。 它只保护代理工具呼叫。 用它来减少不安全的自主工具使用. 不要将其作为OS安全边界.
兼容性
Pi-automode)支持Pi和Oh My Pi(OMP) 18. 它会自动使用OMP的后遗症完成API. 整合不需要办公室管理计划的具体配置.
安装
从 npm :
pi install npm:@czottmann/pi-automode
从本地取出 :
pi install .
一次从本地取出:
pi -e ./extensions/auto-mode.ts
图标
/automode status # current state, rules, and classifier
/automode on # re-enable for this session
/automode off # disable for this session
/automode reload # reload config from disk
/automode reset # reset denial counters only
/automode defaults # print the built-in rule lists
/automode config # effective config, resolved log file path, + diagnostics
/automode denials # denial history for this session
/automode model # open classifier model selector and save to ~/.pi/agent/extensions/pi-automode/config.json
/automode model provider/model-id # save classifier model to ~/.pi/agent/extensions/pi-automode/config.json
/auto-mode 是一个别名.
代理诊断
软件包登记了一个可调用、只读的工具:
automode_inspect 接受一个 action数字 :
status: 活动状态和计数器config: 主动有效的配置、日志路径和诊断defaults: 内置规则列表denials: 最近的拒绝时间戳、类型和工具名称
该工具读取了相同的内存配置并声明由护栏执行. 允许和确定性检查在绕行前运行.
绕道不会改变自动码计数器,持续状态,或可观察日志. 扩展在应用豁免前核查工具的来源。 因此,名称相撞并不能使一个工具免于另一个扩展.
该工具不能启用或禁用自动模式 。 它不能重新装入配置, 重新设置状态, 选择一个模型, 或更改配置 .
Pi向当前模型发送工具输出. 这个 status 财务报告和审定财务报表 denials 视图忽略了否定理由和动作有效载荷.
如果诊断需要理由,则检查当地可观察性日志中已知的安全条目。 这个 config 视图包括有效的规则文本。 它从诊断中移除了原始的JSON解析器细节.
不要把证书或其他秘密放在自动码规则中.
捆绑起来 automode-diagnostics 技能使用此工具来诊断出意料的决定,而不要求用户复制斜线命令的输出. 配置编辑和自动模式状态变化仍然由用户控制. 见 代理诊断 检查合同、隐私限制和诊断工作流程.
状态线
当 Pi TUI 可用时, 扩展会让持续状态线:
AM ● a:12 d:2 ca:5 cd:1
AM——自动模版前缀.●表示已启用.○表示通过配置被禁用或/automode off。 。 。 .a:迄今允许的动作(选中负数被拒绝).d:迄今以任何理由(许可规则、确定性硬性规定或分类)拒绝采取行动.ca:编号 :cd:——分类决定分为允许和拒绝. 这些段出现在第一个分类器调用后.d:算上所有的否认,所以d:总是>= cd:。 。 。 .
文档
在分类器之前运行的
在任何允许或分类决定之前,扩展块 :
permissions.deny匹配- 拒绝
permissions.ask匹配 - shell 配置文件写入
- SSH 服务器
authorized_keys写入 - cron、发射剂和系统服务持久性
- TLS/证书/自动削弱模式
- 根、家和系统路径的破坏性删除。 经审定的发射装置申报的临时目录的子树被视为可支配的。 被宣布为别名的根
HOME, (中文(简体) ),/,或系统根,或包含HOME,改为拒绝. - 编辑到
.pi/automode*, (中文(简体) ),.pi自动模式文件, 此扩展名的安全控制文件
这些检查之后,Pi -automode应用 permissions.allow保护 write 财务报告和审定财务报表 edit 目标继续到分类器.
接受的询问规则也延续到分类者。 他们不能使用允许级别。 然后允许只读工具 read, (中文(简体) ), grep, (中文(简体) ), find,以及 ls。其余的每个动作都转到分类器.
A 类 permissions.allow 规则故意跳过分类策略,包括分类策略 hard_deny 规则。 使用狭义的图案和用户拥有的配置. 确定性硬性规定和路径控制仍然是无条件的.
设定 classifyReadOnlyTools: true (默认) false)通过分级器路径只读工具。 这种配置值增加了模型调用,耐用性和会话成本.
皮-自流体块a deniedPaths 在分类审查或允许等级前匹配。 因此,文件工具不能向模型发送匹配的秘密或系统路径.
清单没有规定 bash. 分类和确定性硬性检查管理外壳进入这些路径.
数值 allowInsideWorkingDirectory: true 允许本地工作目录内的文件访问。 Pi-automode向分类器发送所有外部文件访问,包括读取.
分类从保守的一键过滤器开始. 如果过滤器请求审查, pi- automode 请求一个内部 classifier_decision 工具调用.
该工具仅存在于嵌入式分类器请求中. 未在 pi.registerTool(),而主要代理人不能称它.
Pi AI 请求使用 chema- contracted 采样 strict: "prefer"。支持提供者在生成时执行计划。 Pi-automode 本地验证每个返回的工具调用.
两个阶段都收到专用信件中完整的当前工具输入. 转写截图无法删除动作内容 。 如果准确的输入不能与分类器上下文相适应,自动模式会阻断调用.
两个阶段都使用分类器特定的会话键. 他们要求从支持它的提供者那里保留简短的缓存. 缺少模型, 提供者失败, 或无效的响应会阻碍动作 .
Pi-automode 解析 Bash 结构 unbash 未经批准,并进行确定性硬性检查。 分析内容包括嵌入式命令和字面的 shell-wrapper脚本. Bash 解析错误会阻碍动作 .
实例
examples/automode.local.json: 复制到.pi/automode.local.json在工程中编辑域、桶和源控 og .- 权限配方: 使用狭义的示例进行通用许可并进行分类政策修改.
已知限制
Claude Code的真正分类器和精确的内置规则都是私人的. 此软件包执行被记录的先行和配置行为,并带有本地分类器的即时和决定性硬性检查.
发展
npm run check
npm test
npm pack --dry-run
试验涉及这些安全敏感领域:
- 范围权限匹配
- 页:1
permissions.allow等级及其优先顺序 - 配置源优先和诊断
$defaults行为- 确定硬密度检查和Bash AST分析
- 分类器路由
write财务报告和审定财务报表edit - 协同-意识安全控制检查
- 选择已编入预算的记录
- 阶段分类器工具调用解析和缓存行为
- 钩位允许并屏蔽行为
出版
当一个维护者发布一个 GitHub 发布时, GitHub Actions 将软件包发布到 npm. 需要的释放标签格式是 v<version>编辑 <version> 值必须与版本相同 package.json。例如,版本 1.0.0 需要标记 v1.0.0。 。 。 .
工作流程使用npm Trusted Publishing,因此不需要npm 令牌秘密. 使用此寄存器和工作流程文件配置 npm 上的此软件包( S).github/workflows/publish.yml) (中文(简体) ). 工作流程构建软件包, 运行 npm run check,并用 npm出处出版.
释放标记必须指向版本的凸起
发布工作流程检查发布标记所识别的承诺. 它比较版本在 package.json 标记名称.
标记必须识别包含新版本的承诺 .
- 提交版本更改方式
chore: release X.Y.Z。 。 。 . - 推开
main。 。 。 . - 从中创建 GitHub 释放 .
如果标签识别出旧版本,则 Check release tag 步骤失败。 报告 Release tag (vX.Y.Z) does not match package.json version (x.y.z)。 。 。 .
不要移动正确的释放标签 。 移动标记会更改已公布的引用 .
- 如果标记识别出错误的实现,则强制将其移动到版本更改实现.
- 强行推出校正的标签 .
- 运行
gh workflow run publish.yml --ref vX.Y.Z。 。 。 .
当 GitHub 创建标记时 release 事件发生。 失败的重运行 release 工作流程使用原始参考. 它不使用已移动的标签 .
作者
卡罗・佐特曼, 卡尔洛@zottmann.dev
- 网站: https://actions.work (英语)
- GitHub : (中文(简体) ) https://github.com/czottmann (中文(简体) )
- 布鲁斯基: https://bsky.app/profile/zottmann.dev 互联网档案馆的存檔,存档日期2013-12-21
- 马斯托登: https://norden.social/@czottmann