AI 编程教程中文版
官方教程中文版CLI 与自动化

GitHub Actions

基于 Cursor 官方 GitHub Actions 文档解释 CI 安装、CURSOR_API_KEY、full autonomy、restricted autonomy、permissions 和 secrets 配置。

在 GitHub Actions 中使用 Cursor CLI,本质上是把 agent -p 放进 CI。核心不是能不能跑,而是权限、secrets、git 操作和 PR 评论由谁控制。

阅读目标:读完本章,你应该能写出一个只读 CI 审查 workflow,并能解释 full autonomy 和 restricted autonomy 的差别。

1. 基础安装方式

官方 GitHub Actions 示例包含两步:安装 CLI,把 binary 目录写入 GITHUB_PATH,然后用 CURSOR_API_KEY 运行 agent -p

- name: Install Cursor CLI
  run: |
    curl https://cursor.com/install -fsS | bash
    echo "$HOME/.cursor/bin" >> $GITHUB_PATH

- name: Run Cursor Agent
  env:
    CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
  run: |
    agent -p "Review the current pull request for risky changes" --model gpt-5.2

Windows runner 使用 PowerShell 安装入口:

irm 'https://cursor.com/install?win32=true' | iex

如果组织有供应链要求,不要直接在生产 CI 里 pipe 远程脚本。先做脚本审查或放进受管 runner image。

2. Secrets 配置

先在 Cursor dashboard 生成 API key,再放进 GitHub secrets。

# Repository secret
gh secret set CURSOR_API_KEY --repo OWNER/REPO --body "$CURSOR_API_KEY"

# Organization secret
gh secret set CURSOR_API_KEY --org ORG --visibility all --body "$CURSOR_API_KEY"

workflow 中只通过环境变量注入:

env:
  CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}

不要把 API key 写入 workflow 文件、日志、PR 评论或 Agent prompt。CI 日志通常会长期保留,泄露成本比本地终端高。

3. Full autonomy

Full autonomy 是让 Agent 自己处理 git、GitHub CLI、分支、commit、push、PR comment 和错误恢复。

典型 prompt 会明确给 Agent git、GitHub CLI 和 PR 操作权限,让它自己完成 docs update、branch、commit、push 和 comment。

它配置简单,但需要很高信任。适合低风险仓库、实验 workflow 或人工触发任务,不适合作为默认生产 CI 模式。

风险点:

  • Agent 可能创建分支、commit、push。
  • Agent 可能调用 gh 与外部 API。
  • Agent 可能把日志或上下文写进 PR comment。
  • 失败恢复由 Agent 自己决定,可审计性弱。

4. Restricted autonomy

官方更推荐 production CI 使用 permission-based restrictions。思路是:让 Agent 做复杂分析和文件修改,但关键发布动作由 deterministic workflow step 执行。

Agent step 只负责生成文件改动,并在 prompt 中明确禁止 branch、commit、push 和 PR comment。后续 publish step 再用固定 shell 命令执行 git checkoutgit addgit commitgit push 和 PR comment。

这种模式更适合商业项目:Agent 做不确定性高的理解和修改,CI 做可预测的 git 和发布动作。

5. Permissions 配置

官方示例使用 permissions 限制读写和 shell。

{
  "permissions": {
    "allow": [
      "Read(**/*.md)",
      "Write(docs/**/*)",
      "Shell(grep)",
      "Shell(find)"
    ],
    "deny": ["Shell(git)", "Shell(gh)", "Write(.env*)", "Write(package.json)"]
  }
}

生产 CI 的默认策略建议:

类型建议
Read只开放完成任务需要的目录
Write只开放产物目录或明确模块
Shell只开放 grepfind、测试、lint 等稳定命令
Git / gh交给 deterministic step
Secrets明确 deny .env*、凭据目录和配置文件

6. 推荐 workflow 结构

flowchart TD
  Trigger["pull_request / workflow_dispatch"] --> Checkout["actions/checkout"]
  Checkout --> Install["Install Cursor CLI"]
  Install --> Agent["agent -p with restricted prompt"]
  Agent --> Diff["git diff / artifact"]
  Diff --> Tests["lint / tests"]
  Tests --> Publish["deterministic publish step"]
  Publish --> Review["PR comment / artifact"]

不要让 Agent 同时负责“理解问题、修改文件、决定发布、push 分支、评论 PR”。这些职责拆开,CI 才可审计。

7. 其他 CI 系统

官方说明其他 CI/CD 只需要满足三类条件:

  • 能执行 shell script。
  • 能通过 environment variables 配置 API key。
  • 有互联网连接访问 Cursor API。

迁移到 GitLab CI、CircleCI、Buildkite 或自托管 runner 时,核心检查项不变:安装、PATH、secret、网络、权限、日志和退出码。

深读:为什么生产 CI 默认用 restricted autonomy

CI 的优势是确定性:固定触发器、固定权限、固定日志、固定退出码。Agent 的优势是理解和生成。把这两者混在一个大 prompt 里,会把确定性变成自然语言承诺。

Restricted autonomy 把不确定性限制在文件修改范围内,分支、commit、push、评论和发布仍由可审计脚本执行。

本章自检

完成本章后,用这 3 个问题检查自己是否真正理解:

  1. 为什么 CURSOR_API_KEY 必须走 GitHub secrets?
  2. full autonomy 和 restricted autonomy 最大的责任边界差异是什么?
  3. 为什么生产 CI 里通常要 deny Shell(git)Shell(gh)

通过标准:你能写出一个 restricted autonomy workflow,并把安装、API key、permissions、diff、测试和发布步骤分开。

官方来源

接下来去哪

本页目录