告别YAML:使用自然语言实现代码库自动化
目录 什么是 GitHub Agentic Workflows?安全至上:为何这不仅仅是“把钥匙交给 AI”直播演示:我们构建了什么快速上手体验更进一步:以智能代理方式将上游变更移植到下游项目观看回放!
如果你维护着一个繁忙的代码库,你肯定深有体会:日常的繁杂事务包括分类处理 Issue、撰写状态报告、更新文档以及追踪失败的 CI 构建。如果你的仓库能使用自然语言,而不是复杂且脆弱的脚本来为你处理这些例行维护工作,那会怎样?
你甚至可以用英语以外的语言编写!
在本周的 “橡皮鸭周四”直播中,Cassidy Williams 和我 深入探讨了 GitHub Agentic Workflows。我们探讨了如何超越确定性的 if-then 脚本,拥抱“持续 AI”,在这个世界里,你的仓库真正拥有理解上下文并为你安全执行任务的代理能力。
如果你错过了直播,这里是我们构建内容的详细解析、安全模型的实际工作原理、如何快速上手,以及我一直在构建的一些 Java 专用工具,旨在将这一技术推向更深层次。
什么是 GitHub Agentic Workflows?
从核心上讲,GitHub Agentic Workflows 代表了向自然语言编程的转变。你不再需要编写错综复杂的 YAML 配置来处理仓库操作,而是用普通的英语 Markdown 文件来描述所需的行为。
然后,工作流由 gh aw CLI 处理,它将你的指令编译成加固的 GitHub Actions .lock.yml 文件,该文件会引用回工作流的提示词。当被触发时,一个 AI 编码代理(如 Copilot、Claude 或 Codex)在容器化环境中初始化,读取仓库的上下文,并根据你的指令采取行动。
安全至上:为何这不仅仅是“把钥匙交给 AI”
在直播中,我们讨论的最重要的事情之一是 安全输出 的概念和内置的防护机制。
人们对 AI 代理的一个普遍担忧是提示词注入:如果恶意用户创建一个 Issue,诱骗代理删除仓库或泄露机密信息怎么办?Agentic Workflows 采用“纵深防御”架构设计。默认情况下,代理以只读权限运行。如果它需要执行写操作(如创建 Issue 或 Pull Request),它必须通过明确定义的“安全输出”来进行。
例如,我在测试期间注意到,代理在 Issue 中生成的 URL 被编辑遮盖了。工程团队解释说,这是为了防止代理被诱骗生成恶意 URL,从而将机密信息发送到外部服务器。除非你在工作流的前置元数据沙箱中明确授权这些特定工具,否则代理无法修改代码、推送提交或运行任意命令。
直播演示:我们构建了什么
在直播中,我们在终端中实时构建并触发了几个工作流:
1. 每日仓库状态报告(在 javaevolved 仓库上) 我将此应用到我维护的一个名为 Java Evolved 的项目中,这是一个将传统 Java 模式与现代替代方案进行比较的静态站点。我们设置了一个按计划运行的工作流,分析仓库最近的 Pull Request 和 Issue,并创建一个充满活力的每日状态报告作为新的 GitHub Issue。我们特意告诉代理“适度使用表情符号”,以免它做得过火!
2. 使用斜杠命令的 IssueOps 我们演示了如何仅通过在 Issue 上评论来触发代理。我们创建了一个 /new ideas 命令。每当有人在 Issue 评论中输入该命令时,代理会读取周围的上下文,并直接在该讨论串中自动生成可执行的改进建议或架构思路。
3. DataOps:精选的 Hacker News 摘要 我们还构建了一个工作流,它从 Hacker News 获取前 30 个故事,根据特定的“专业开发者”角色进行过滤,并生成仅与该角色相关的文章精选摘要。这是将确定性提取(调用 API)与概率性 AI 推理(总结和过滤)结合使用的完美示例。
快速上手体验
准备自己试试了吗?快速上手过程非常顺畅无阻。
- 确保你已安装 GitHub CLI 和 Copilot CLI。
- 在终端中,导航到你的仓库并运行
gh aw init。这将初始化必要的代理文件。 - 编写你的 Markdown 工作流(定义你的触发器、权限和自然语言指令)。
- 运行
gh aw compile来验证你的配置并生成安全的.lock.ymlGitHub Actions 文件。
一旦提交,你的智能代理工作流就会通过 GitHub Actions 实时且安全地运行。
更进一步:以智能代理方式将上游变更移植到下游项目
作为一名 Java 开发人员,我想将智能代理的力量直接带入 Java 生态系统。为此,我一直在开发 Java 版 Copilot SDK。这个社区驱动的 SDK 跟踪官方的 GitHub Copilot SDK,允许你直接从 Java 代码中以编程方式控制 Copilot 代理运行时。
该 Java SDK 主要通过一个 Agentic Workflow 进行维护,该工作流检出官方 SDK,然后评估最近的提交,以了解是否有值得移植回 Java SDK 的近期变更。
查看该 工作流!
观看回放!
如果你厌倦了手动维护仓库的繁琐工作,我强烈建议查看直播回放,看看这些工作流是如何实际运行的。自然语言正成为仓库自动化的新基准,而 GitHub Agentic Workflows 中内置的防护机制使其足以投入实际生产应用。
本文 Stop Writing YAML: Automating Your Repo with Plain Natural Language 首发于 foojay。