现在位置: 首页 > Pi Agent > 正文

Pi Agent 非交互模式

除了交互式对话,Pi Agent 还提供了三种非交互模式,适用于脚本集成、自动化流程和程序间通信。


Print 模式(-p)

Print 模式是最常用的非交互模式,执行一次性问答后输出结果并退出。

基本用法

最简单的形式是在 -p 后面直接跟一句提问,AI 回答完就退出。

$ pi -p "帮我总结一下这个项目的结构"
这是一个 TypeScript + Vite 项目,源码集中在 src/ 目录下。
入口文件是 src/main.ts,工具函数位于 src/utils/,共 18 个模块。

用 @ 引用文件,让 AI 读取指定文件的内容:

$ pi -p @README.md "这段文档的主要内容是什么"
这份 README 介绍了安装步骤、环境变量配置和三条常用命令。

用管道把命令输出直接喂给 AI,适合处理日志、文档等文本:

$ cat README.md | pi -p "用三句话总结这段文字"
1. 项目要求 Node 20 以上版本。
2. 安装依赖后先把 .env.example 复制为 .env。
3. 日常调试用 npm run dev,发布构建用 npm run build。

@ 同样可以引用图片,让 AI 分析图像内容:

$ pi -p @screenshot.png "图片中显示的错误信息是什么"
截图中的报错是 Module not found: Can't resolve './utils/format',
说明 src/index.ts 里的相对路径拼写有误。

用 --name 给会话命名,之后可以在交互模式中接着这条线继续问:

$ pi --name "快速审查" -p "审查 src/ 目录下的代码质量"
代码整体质量良好,有 3 处可以改进:
1. src/api/user.ts 缺少对分页参数的校验。
2. src/utils/format.ts 的日期格式化未处理时区。
3. src/db/query.ts 的裸抛异常建议补充错误码。

指定模型

用 --provider 加 --model 指定模型,也可以把两者合并写成 provider/model 的组合形式。

$ pi --provider openai --model gpt-4o -p "帮我重构这段代码的逻辑"
重构建议:把 src/service/order.ts 中 120 行的 createOrder 拆成
校验参数、计算金额、落库三个函数,并为每个函数补充单元测试。

下面这种组合写法与上一条完全等价,写起来更短:

$ pi --model openai/gpt-4o -p "帮我重构这段代码的逻辑"

模型名后加冒号和推理等级,可以控制这次调用的思考深度:

$ pi --model sonnet:high -p "这个复杂的算法有什么潜在问题"
主要风险有三点:递归深度没有上限会导致栈溢出;
缓存键未包含用户身份,存在越权读取的可能;
批量写入缺少事务包裹,失败时会出现半提交状态。

--model 中的 :thinking 后缀(如 sonnet:high)与 --thinking 参数都能设定推理等级。

建议二选一,避免两处写法不一致时难以排查。

用 --models 限定可用的模型范围,多个模式之间用逗号分隔:

$ pi --models "claude-*,gpt-4o" -p "审查代码"
审查完成:共发现 2 个阻塞问题和 5 个改进建议,
详细列表已按严重程度排序。

工具控制

通过命令行参数控制 AI 能使用哪些工具,是让非交互模式安全跑在脚本里的关键。

Pi Agent 在非 Windows 平台内置 7 个工具:read、write、edit、bash、grep、find、ls。

Windows 下 bash 由 powershell 替代。

用 --tools 做白名单,只保留指定工具,例如不改动任何文件的只读模式:

$ pi --tools read,grep,find,ls -p "审查代码不修改"
审查结果:共 4 个问题,其中 1 个涉及并发写入,
完整报告已输出到终端,本次未修改任何文件。

用 --exclude-tools 排除指定工具:

$ pi --exclude-tools bash -p "分析代码但不执行命令"
分析结论:该模块的性能瓶颈在循环内的重复文件读取,
建议把目录列表提到循环外,预计可减少 80% 的 I/O。

用 --no-builtin-tools 禁用全部内置工具,AI 只能基于对话内容回答,扩展和自定义工具仍然可用:

$ pi --no-builtin-tools -p "纯问答"
Quicksort 的平均时间复杂度是 O(n log n),
最坏情况是 O(n^2),出现在已排序数组上选取首元素为主元时。

需要把扩展、自定义工具也一起禁用时,改用 --no-tools。


JSON 模式(--mode json)

JSON 模式将所有事件以 JSON 行(JSONL)格式输出,适合程序解析和处理。

$ pi --mode json "总结项目结构"
{"type":"session","version":3,"id":"019f8c2e-7a41-7b3d-9e5f-2c6a1d84b0e7","timestamp":"2026-08-31T02-40-11-000Z","cwd":"/Users/runoob/projects/runoob-demo"}
{"type":"agent_start"}
{"type":"turn_start"}
{"type":"message_start","message":{...}}
{"type":"message_update","usage":{...},"assistantMessageEvent":{...}}
{"type":"message_end","message":{...}}
{"type":"turn_end","message":{...},"toolResults":[]}
{"type":"agent_end","messages":[...]}

首行是会话元数据头,记录格式版本、会话 ID、时间戳和工作目录。

之后的每一行都是一个独立的 JSON 事件,包含事件类型和对应的数据。

这种模式适合以下场景:

场景说明
数据处理管道把事件流接入后处理脚本,逐行解析并加工
行为监控分析记录并分析 AI 的每一次工具调用与决策过程
自定义工具链在事件流之上构建自己的自动化工作流

RPC 模式(--mode rpc)

RPC 模式通过 stdin/stdout 的 JSONL 协议实现进程间通信。

它允许另一个程序通过标准输入发送命令,并从标准输出读取响应。

RPC 模式支持扩展 UI 协议,使远程客户端能够呈现 confirm 对话框、选择列表等交互元素。

这种模式适合以下场景:

场景说明
编辑器插件在 VS Code 等编辑器扩展中集成 Pi Agent
自定义前端基于 RPC 协议构建自己的 Pi Agent 界面
后台服务把 Pi Agent 作为子进程嵌入更大的系统

RPC 模式和 JSON 模式是面向开发者的高级特性。

作为初学者,你大概率只需要交互模式和 Print 模式。

当你需要将 Pi Agent 集成到工具链中时,可以再回来深入学习这两种模式。


模式对比

三种非交互模式的差异主要体现在交互性和输出格式上,按下表选择即可。

Pi Agent 交互、Print、JSON、RPC 四种运行模式的输入与输出对比

模式命令交互性输出格式适用场景
交互模式pi(默认)实时对话终端 TUI 渲染日常开发、交互式编程
Print 模式pi -p一次回答纯文本脚本集成、快速查询
JSON 模式pi --mode json事件流(非交互)JSONL 事件流程序解析、管道处理
RPC 模式pi --mode rpc持续通信JSONL 双向协议编辑器集成、进程通信

CLI 参数速查

下表按用途归类列出 pi 命令的常用参数,可与交互模式中的命令互相配合。

分类参数说明
模型选项--provider name指定 AI 提供商
模型选项--model pattern指定模型 ID,支持 provider/id 和 :thinking 格式
模型选项--api-key key直接传入 API Key(最高优先级)
模型选项--thinking level推理等级:off/minimal/low/medium/high/xhigh/max
模型选项--models patterns逗号分隔的模型列表,限制 Ctrl+P 循环范围
会话选项-c, --continue继续最近的会话
会话选项-r, --resume浏览并选择历史会话
会话选项--session path|id使用指定的会话文件或 UUID
会话选项--fork path|id从指定会话分叉出新会话
会话选项--name, -n name设置会话显示名称
会话选项--no-session不记录会话
会话选项--export <输入> [输出]导出会话为 HTML(输出路径可省略)
工具选项--tools, -t list白名单特定工具
工具选项--exclude-tools, -xt list禁用特定工具
工具选项--no-builtin-tools, -nbt禁用所有内置工具
工具选项--no-tools, -nt禁用所有工具(纯对话模式)
资源选项-e, --extension source加载扩展(可重复使用)
资源选项--skill path加载 Skill(可重复使用)
资源选项--theme path加载主题(可重复使用)
其他选项-a, --approve本次运行信任项目本地文件
其他选项--no-context-files, -nc禁用 AGENTS.md/CLAUDE.md 自动加载