我如何使用 n8n 和 coding agent API 自动化我的 bug backlog

发布: (2026年2月16日 GMT+8 00:38)
6 分钟阅读
原文: Dev.to

Source: Dev.to

抱歉,我需要您提供要翻译的完整文本内容(除代码块和 URL 之外的部分),才能为您进行简体中文翻译。请将文章的正文粘贴在这里,我会按照要求保留原有的格式、Markdown 语法以及技术术语进行翻译。

解决方案

我在 OpenCode 之上构建了一个工作流,能够自动处理工单:

  1. 触发器 – 当 Linear(或 Jira)中出现带有特定标签的新工单时,会触发一个 webhook。
  2. 编排器 – n8n 接收该 webhook 并调用 CodeCloud API。
  3. 执行层 – CodeCloud 启动一个 AI 编码代理,克隆仓库,实施修复,并打开一个 pull request。

n8n 工作流实际上只有两个节点:一个触发器和一个 HTTP 请求。

有效的做法

更改类型示例工单结果
描述详尽的 bug“注册按钮在 Safari 上无法提交,因为我们使用了没有 polyfill 的 FormData。”代理添加 polyfill 并打开 PR。
繁琐的大批量更改“将所有错误信息更新为使用新的 i18n 格式。”代理使用 grep,进行更新并打开 PR。
文档“为 /lib 中的所有导出函数添加 JSDoc 注释。”机械性工作自动处理。

关键洞察: 工单质量决定输出质量。此工作流迫使团队编写更好的工单,即使代理遗漏,也是一种副收益。

前置条件

  • 一个 n8n 实例(云端或自行托管)。
  • 一个已连接 GitHub 的 CodeCloud 账户。
  • 一个 Linear(或 Jira)工作区。

Linear API 密钥

Settings → API → Personal API keys 创建 API 密钥。

CodeCloud Header Auth 凭证

名称
AuthorizationBearer YOUR_CODECLOUD_API_KEY

构建 n8n 工作流

节点

节点配置
Linear Trigger资源: Issue
团队: 选择你的团队
HTTP Request方法: POST
URL: https://codecloud.dev/api/v1/agents
认证: Header Auth(上面的凭证)
正文 (JSON): 见下方

请求体 (JSON)

{
  "repo": "your-org/your-repo",
  "prompt": "Please fix the bug or issue described in this ticket:\n{{ $json.data.title }}\n\n{{ $json.data.description }}",
  "model": "claude-sonnet-4-5",
  "provider": "anthropic",
  "auto_create_pr": true
}

{{ $json.data.title }}{{ $json.data.description }} 表达式从 Linear 的 webhook 负载中提取工单内容。

过滤工单

在触发器和 HTTP 请求之间添加一个 IF 节点:

Condition: {{ $json.data.labelIds }} contains YOUR_AUTO_PR_LABEL_ID

只有明确标记为自动化的工单才会被处理。

可导入的工作流 JSON

您可以通过 Workflows → Import from File 直接在 n8n 中导入以下 JSON:

{
  "name": "Linear to CodeCloud PR",
  "nodes": [
    {
      "parameters": {
        "resource": "issue",
        "teamId": "{{ YOUR_TEAM_ID }}"
      },
      "id": "linear-trigger",
      "name": "Linear Trigger",
      "type": "n8n-nodes-base.linearTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://codecloud.dev/api/v1/agents",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"repo\": \"your-org/your-repo\",\n  \"prompt\": \"Please fix the bug or issue described in this ticket: \\n {{ $json.data.title }}\\n\\n{{ $json.data.description }}\",\n  \"model\": \"claude-sonnet-4-5\",\n  \"provider\": \"anthropic\",\n  \"auto_create_pr\": true\n}"
      },
      "id": "http-request",
      "name": "Create CodeCloud Run",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [480, 300]
    }
  ],
  "connections": {
    "Linear Trigger": {
      "main": [[{ "node": "Create CodeCloud Run", "type": "main", "index": 0 }]]
    }
  }
}

YOUR_TEAM_IDyour-org/your-repo 替换为实际值,然后附加您之前创建的 Header Auth 凭证。

使用 Jira 替代 Linear

将 Linear 触发器替换为 Jira 触发器(事件:issue_created)。调整请求体以匹配 Jira 的负载:

{
  "repo": "your-org/your-repo",
  "prompt": "{{ $json.issue.fields.summary }}\n\n{{ $json.issue.fields.description }}",
  "model": "claude-sonnet-4-5",
  "auto_create_pr": true
}

有用的 API 参数

参数描述
mode: "plan"返回一个实现计划而不进行实际更改——适合在执行前进行审查。
webhook_url在运行结束时收到通知的 URL;可用于将 PR 链接发送回 Slack 或更新工单状态。

提示与注意事项

  • 工作流可能会生成不完美的 PR;将其视为草稿,开发者可以快速润色。
  • 失败的尝试常常会暴露出模糊的工单细节或边缘情况,从而促使更好的文档编写。
  • 首先在 Linear 中创建一个 auto‑PR label,标记几个描述清晰的 bug,激活工作流并观察结果。

下一步

CodeCloud 是一个用于运行 AI 编码代理的 API。如果您有任何问题或想分享您构建的内容,欢迎评论或查看官方文档。

0 浏览
Back to Blog

相关文章

阅读更多 »