Print 模式与 CI/CD 工程化
让 CLI 走出终端,进入你的生产线
当 CLI 能进流水线,AI 编程才真正成为团队基础设施「进不了流水线」的三个拦路虎
交互式 TUI 很好,但自动化场景它玩不转
CI 里无法弹窗确认
GitHub Actions 跑 AI 代码审查,但 TUI 要人确认权限 —— 流水线卡住等不到人。
输出没办法被程序解析
AI 给的文字评论是人类看的,你想解析成 JSON 存进数据库 —— 没有结构化输出。
多个任务无法定时跑
想每天凌晨让 AI 跑代码质量分析、自动汇总 —— 做不到自助和定时。
Print 模式
非交互运行——CLI 走进流水线的钥匙
Print 模式用 -p(或 --print)触发:CLI 接收一个提示词,执行后直接把结果打印到标准输出,不进入交互界面。
qodercli -p "审查这个仓库的代码质量,给出关键问题"
(CLI 执行后,结果直接打印到 stdout,然后退出)
交互式 TUI
- 需要人参与对话
- 适合本地开发
- 输出给人看
- 无法在 CI 运行
Print 模式
- 一次性执行,无需交互
- 适合脚本和 CI
- 输出给程序处理
- 是流水线里的"命令"
ask 都转为 deny。所以必须预先配好 allow 规则或选对模式(见第 11 章)。
输出格式
三种格式,适配不同的下游处理需求
用 --output-format 选择输出格式:
| 格式 | 说明 | 适用场景 |
|---|---|---|
text |
纯文本(默认) | 人读、简单脚本、日志 |
json |
结构化 JSON | 程序解析、存数据库、后续处理 |
stream-json |
流式 JSON(逐条输出) | 实时监控、长任务进度 |
# JSON 输出,方便程序解析
qodercli -p "列出这个项目的安全风险" \
--output-format json \
--permission-mode auto > risks.json
# 流式输出,实时看 AI 思考过程
qodercli -p "分析这个架构" \
--output-format stream-json
CI/CD 集成
实战:在 GitHub Actions 里跑 AI 代码审查
这是 Print 模式 + 权限 + JSON 输出的综合应用。一个典型的 PR 自动审查工作流:
# .github/workflows/ai-review.yml
name: AI Code Review
on: pull_request
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Qoder CLI
run: curl -fsSL https://qoder.com/install | bash
- name: Run AI Review
env:
QODER_PERSONAL_ACCESS_TOKEN: ${{ secrets.QODER_TOKEN }}
run: |
qodercli -p "审查本次 PR 的改动,按 critical/major/minor 分级输出问题" \
--output-format json \
--permission-mode auto \
--disallowed-tools 'Write,Edit' \
> review.json
- name: Post Review
run: # 解析 review.json,把问题作为 PR 评论发出
auto 模式不弹窗;③ --disallowed-tools 'Write,Edit' 物理禁止 AI 改代码,只读审查;④ JSON 输出可解析。这是"自主又安全"的 CI 范式。
后台与定时
让 AI 任务在后台或按计划运行
后台任务
耗时任务(如完整测试套件、大规模重构)可以放到后台运行,你继续干别的,完成时通知。
用 /tasks 查看后台任务状态。
定时任务
调度能力启用时,可以创建定时任务:每天早上跑一次代码体检、每周生成一次项目报告。
结合 Hook 通知
后台/定时任务完成时,用第 09 章的 Hook 触发通知:
osascript -e 'display notification \
"AI 任务完成" with title "Qoder"'
无人值守 Quest
把第 12 章的 Quest 放进 CI,让 AI 在夜间自主完成开发任务,早上你 review 成果。
排错指南
工程化相关的高频问题
Print 模式啥都没做就退出
原因:非交互下 ask 转 deny,AI 没权限。修复:配 allow 规则;用 accept_edits/auto 模式;检查 --disallowed-tools 是否过严。
JSON 输出解析失败
原因:AI 输出含额外文字,或流式中途中断。修复:确保用 --output-format json;流式用 stream-json 并按行解析;提示词里明确"只输出 JSON"。
CI 中 Credits 烧太快
原因:每次 PR 都跑全量分析。修复:只在特定路径变更时触发;用低 effort;限制 max-turns;非高峰时段跑。
后台任务状态看不清
原因:后台任务不显示实时输出。修复:用 qodercli jobs 查看;用 stream-json 输出重定向到日志文件;设置通知 hook。
动手练习
把 CLI 接进真实的自动化流程
练习 1:体验 Print 模式
- 运行 qodercli -p "总结这个项目的 README" 跑一次
- 对比加上 --output-format json 的输出差异
练习 2:搭建一个 CI 审查
- 参考本章的 GitHub Actions 示例
- 在你的测试库配一个 PR 自动审查工作流
- 推一次 PR 验证 AI 审查是否生效
练习 3:定时任务
- 用 qodercli schedule 创建一个每日代码质量检查
- 用 qodercli jobs 查看执行结果
本章回顾
带走的三条核心认知
Print 模式是桥梁
非交互 + 结构化输出,让 CLI 能进流水线。
CI = Print + 权限 + JSON
这三者组合是「自主又安全」的工程化范式。
自动化 = 后台 + 定时 + Hook
让 AI 任务按计划跑,结果自动汇总。
最后一章,走到最深处 —— 用 Agent SDK 把 AI 能力嵌入你自己的程序。