Pi Agent: 非交互模式

最后更新:2026-08-31

交互模式适合探索,非交互模式适合生产——无人值守、批量处理、流水线编排。


1. 什么是非交互模式

非交互模式(Non-interactive Mode)指 Agent 接收输入后自动执行,无需人工干预。适用于:


2. CLI 非交互用法

(1) 单次执行

BASH
pi-agent run "解释这段代码的作用:def fib(n): return n if n < 2 else fib(n-1) + fib(n-2)"

(2) 从文件读取输入

BASH
pi-agent run --input code.py "审查这个文件的代码质量"

(3) 从标准输入管道

BASH
cat error.log | pi-agent run "分析这些错误日志,找出最常见的问题"

(4) 输出到文件

BASH
pi-agent run --input data.csv "分析数据趋势" --output report.md

3. Python 批处理

(1) 基本批处理

PYTHON
from pi_agent import Agent

agent = Agent(name="reviewer", system_prompt="你是代码审查专家")

files = ["main.py", "utils.py", "config.py"]

for f in files:
    result = agent.run(f"审查 {f} 的代码质量,给出评分和改进建议")
    print(f"=== {f} ===")
    print(result)
    print()

(2) 并行批处理

PYTHON
import asyncio
from pi_agent import AsyncAgent

async def review_file(filename):
    agent = AsyncAgent(name="reviewer")
    result = await agent.run(f"审查 {filename}")
    return filename, result

async def main():
    files = ["main.py", "utils.py", "config.py", "tests.py"]
    tasks = [review_file(f) for f in files]
    results = await asyncio.gather(*tasks)
    
    for filename, result in results:
        print(f"=== {filename} ===")
        print(result)

asyncio.run(main())

4. 管道与脚本集成

▶ 示例 1:Git 提交消息生成器(难度⭐⭐)

BASH
git diff --staged | pi-agent run "根据代码变更生成一条简洁的 git commit message"

▶ 示例 2:日志分析管道(难度⭐⭐)

BASH
tail -100 /var/log/app.log | pi-agent run --skill log_analyzer "提取错误和警告,按频率排序"

▶ 示例 3:自动化测试报告(难度⭐⭐⭐)

PYTHON
from pi_agent import Agent
import subprocess

agent = Agent(
    name="qa",
    system_prompt="你是 QA 工程师,分析测试结果并生成报告"
)

result = subprocess.run(["pytest", "--tb=short"], capture_output=True, text=True)
report = agent.run(f"分析以下测试结果并生成报告:\n{result.stdout}\n{result.stderr}")

with open("test_report.md", "w") as f:
    f.write(report.text)

5. 退出码与错误处理

非交互模式用退出码表示执行状态:

退出码 含义
0 成功
1 一般错误
2 配置错误
3 API 调用失败
4 工具执行错误

在脚本中判断:

BASH
pi-agent run "检查部署状态" --skill devops
if [ $? -eq 0 ]; then
    echo "检查通过"
else
    echo "检查失败,退出码: $?"
fi

Python 方式:

PYTHON
from pi_agent import Agent, AgentError

agent = Agent(name="checker")
try:
    result = agent.run("验证配置文件")
    print("验证通过:", result.text)
except AgentError as e:
    print(f"执行失败: {e}")
    print(f"错误码: {e.code}")

6. 定时任务集成

BASH
# crontab -e
0 9 * * * pi-agent run --skill daily_report "生成今日项目进度报告" --output /reports/daily.md
0 0 * * 0 pi-agent run --skill code_review "审查本周代码变更" --output /reports/weekly.md

Bob 说:"非交互模式是 Pi Agent 的'劳动模式'——你配置好,它替你干活,结果发到你邮箱。"


❓ 常见问题

Q 非交互模式支持流式输出吗?
A 默认不支持,但可以用 --stream 标志启用。不过管道场景下通常不需要流式。
Q 管道输入有长度限制吗?
A 没有硬性限制,但受模型上下文窗口约束。超长输入会被自动截断或分段处理。
Q 批处理时 API 限流怎么办?
A Pi Agent 内置重试机制。也可以在代码中加 asyncio.sleep() 控制请求频率。

📖 小节


📝 作业

  1. 基础题(难度⭐):用 pi-agent run 单次执行一个任务,把结果保存到文件。
  2. 进阶题(难度⭐⭐):写一个批处理脚本,审查指定目录下所有 Python 文件的代码质量。
  3. 挑战题(难度⭐⭐⭐):搭建一个 git hook,在 commit 前自动用 Pi Agent 生成 commit message。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏