第 14 章

Print 模式与 CI/CD 工程化

让 CLI 走出终端,进入你的生产线

当 CLI 能进流水线,AI 编程才真正成为团队基础设施

「进不了流水线」的三个拦路虎

交互式 TUI 很好,但自动化场景它玩不转

CI 里无法弹窗确认

GitHub Actions 跑 AI 代码审查,但 TUI 要人确认权限 —— 流水线卡住等不到人。

输出没办法被程序解析

AI 给的文字评论是人类看的,你想解析成 JSON 存进数据库 —— 没有结构化输出。

多个任务无法定时跑

想每天凌晨让 AI 跑代码质量分析、自动汇总 —— 做不到自助和定时。

本章解决「工程化」三件事:① 用 Print 模式让 CLI 非交互运行;② 用 结构化输出让结果可解析;③ 用 后台与定时让任务自动化。读完你就能把 CLI 接进 CI/CD。

Print 模式

非交互运行——CLI 走进流水线的钥匙

Print 模式用 -p(或 --print)触发:CLI 接收一个提示词,执行后直接把结果打印到标准输出,不进入交互界面。

qodercli -p "审查这个仓库的代码质量,给出关键问题"

(CLI 执行后,结果直接打印到 stdout,然后退出)

交互式 TUI

  • 需要人参与对话
  • 适合本地开发
  • 输出给人看
  • 无法在 CI 运行

Print 模式

  • 一次性执行,无需交互
  • 适合脚本和 CI
  • 输出给程序处理
  • 是流水线里的"命令"
Print 模式下权限的特殊行为:无法弹确认,任何 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
JSON 是 CI 的关键:结构化输出让你能把 AI 结果接进下游系统——存进数据库、发到 Slack、生成报表、触发其他流程。这是从"AI 工具"到"AI 基础设施"的跨越。

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 评论发出
这个工作流的精髓:① Print 模式非交互;② 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 任务按计划跑,结果自动汇总。

核心结论:当 Qoder CLI 能进 CI/CD,AI 编程就从「个人工具」升级为「团队基础设施」。每次 PR 自动审查、每次提交自动测试 —— AI 真正成为开发流程的一环。

最后一章,走到最深处 —— 用 Agent SDK 把 AI 能力嵌入你自己的程序。

延伸阅读