通过 GitHub Actions 定时触发 Copilot Cloud Agent
背景
Copilot Cloud Agent(原 Copilot Coding Agent)可以被 assign 到 issue 上自动执行任务。结合 GitHub Actions 的 schedule 触发器,可以实现定时自动化。
核心机制
Copilot Agent 的触发条件:
- Issue 必须由 trusted context 创建(即
GITHUB_TOKEN),PAT 创建的 issue 不会触发 agent copilot-swe-agent[bot]必须被 assign 到 issue 上GITHUB_TOKEN没有权限 assigncopilot-swe-agent[bot],需要用 PAT
因此需要 两步法:
- Step 1:用
GITHUB_TOKEN创建 issue(确保 trusted context) - Step 2:用 PAT 调用 API assign agent
Workflow 模板
name: Scheduled Agent Task
on:
schedule:
- cron: "0 9 * * 0" # 每周日 09:00 UTC
workflow_dispatch: # 手动触发
permissions:
issues: write # GITHUB_TOKEN 默认无 issue 写权限,必须显式声明
jobs:
create-issue:
runs-on: ubuntu-latest
steps:
- name: Create issue
id: create
uses: actions/github-script@v7
with:
# 默认使用 GITHUB_TOKEN(trusted context)
script: |
const today = new Date().toISOString().slice(0, 10);
const { data: issue } = await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `My scheduled task ${today}`,
body: 'Task description for the agent.',
});
core.setOutput('issue-number', issue.number);
- name: Assign Copilot agent
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_AW_AGENT_TOKEN }} # PAT
script: |
await github.rest.issues.addAssignees({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ steps.create.outputs.issue-number }},
assignees: ['copilot-swe-agent[bot]'],
});踩坑记录
1. PAT 创建的 issue 不触发 agent
现象:issue 创建成功,agent 也被 assign,但 agent 无反应(无 👀 reaction,无 session)。
原因:Copilot Agent 的 webhook 只响应 trusted token(GITHUB_TOKEN)产生的事件,PAT 创建的事件被视为用户行为,不触发 agent。
解决:两步法——GITHUB_TOKEN 建 issue,PAT assign agent。
2. GITHUB_TOKEN 缺少 issues 写权限
现象:HttpError: Resource not accessible by integration
原因:GitHub Actions 默认的 GITHUB_TOKEN 权限集不含 issues: write。
解决:在 workflow 顶层或 job 级别添加 permissions: issues: write。
3. PAT 会自动把 owner 加入 assignees
现象:issue 的 assignees 除了 copilot-swe-agent[bot],还包含 PAT 所属用户。
原因:GitHub API 在用 PAT 添加 assignees 时会自动把 PAT 拥有者也加上。
影响:无功能影响,仅视觉上多一个 assignee。
PAT 配置要求
在 repo Settings → Secrets and variables → Actions 中添加 PAT secret(如 GH_AW_AGENT_TOKEN)。
PAT 需要的权限:
reposcope(classic PAT)- 或
Issues: Read and write+Members: Read(fine-grained PAT)
验证 Agent 是否响应
Agent 开始工作的信号:
- Issue 上出现 👀 reaction
- Issue 页面显示 “Agent sessions: N session running”
- Agent 创建 Draft PR
如果 assign 后 5 分钟无响应,尝试 unassign 再 reassign。
参考
- GitHub Docs: Troubleshoot Copilot Cloud Agent
- GitHub Docs: Using Copilot Coding Agent
- GitHub Docs: Automatic token authentication (GITHUB_TOKEN)
- GitHub Docs: Assigning issues and PRs
- GitHub Docs: Permissions for GITHUB_TOKEN
- actions/github-script — 在 workflow 中调用 GitHub API 的 action
- 小红书: GitHub Copilot Agent 定时自动干活 🤖