<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自动化 on Svtter's Blog</title><link>https://svtter.cn/en/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/</link><description>Recent content in 自动化 on Svtter's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 23 May 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://svtter.cn/en/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>RoboOmp: An AI Bot That Creates Its Own Pull Requests</title><link>https://svtter.cn/en/p/roboomp-an-ai-bot-that-creates-its-own-pull-requests/</link><pubDate>Sat, 23 May 2026 18:00:00 +0800</pubDate><guid>https://svtter.cn/en/p/roboomp-an-ai-bot-that-creates-its-own-pull-requests/</guid><description>&lt;img src="https://svtter.cn/p/%E6%88%91%E5%9C%A8-github-%E4%B8%8A%E9%81%87%E5%88%B0%E4%B8%80%E4%B8%AA-ai-bot%E5%AE%83%E8%AF%BB%E4%BA%86%E6%88%91%E7%9A%84-issue%E7%90%86%E8%A7%A3%E4%BA%86%E9%97%AE%E9%A2%98%E7%84%B6%E5%90%8E%E8%87%AA%E5%B7%B1%E6%8F%90%E4%BA%86%E4%B8%AA-pr/cover.jpg" alt="Featured image of post RoboOmp: An AI Bot That Creates Its Own Pull Requests" /&gt;&lt;p&gt;Yesterday at the Oh My Pi (OMP) repository, I experienced something shocking: an AI bot didn&amp;rsquo;t just reply to my issue—it understood the problem, &lt;strong&gt;dug through the source code on its own, and opened a precise PR to fix the bug&lt;/strong&gt;. The entire process took less than 5 minutes.&lt;/p&gt;
&lt;h2 id="the-origin"&gt;The Origin
&lt;/h2&gt;&lt;p&gt;When using OMP (a terminal AI coding agent), I discovered a UX issue: &lt;code&gt;Ctrl+T&lt;/code&gt; can hide thinking blocks, but hiding them simultaneously turns off extended thinking entirely—not just hiding the display, but the model stops thinking altogether. Users assume they&amp;rsquo;re just &amp;ldquo;turning off the display,&amp;rdquo; but the actual effect is &amp;ldquo;turning off the brain.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So I went to the &lt;a class="link" href="https://github.com/can1357/oh-my-pi" target="_blank" rel="noopener"
&gt;OMP GitHub repository&lt;/a&gt; and opened a feature request: &lt;a class="link" href="https://github.com/can1357/oh-my-pi/issues/1313" target="_blank" rel="noopener"
&gt;#1313&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="roboomps-first-response"&gt;RoboOmp&amp;rsquo;s First Response
&lt;/h2&gt;&lt;p&gt;Seconds after I submitted the issue, a bot called &lt;a class="link" href="https://github.com/roboomp" target="_blank" rel="noopener"
&gt;roboomp&lt;/a&gt; automatically replied. Not with template nonsense like &amp;ldquo;thanks for your feedback, forwarded to the product team.&amp;rdquo; It directly told me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Most of this feature already exists—the &lt;code&gt;hideThinkingBlock&lt;/code&gt; setting, &lt;code&gt;Ctrl+T&lt;/code&gt; shortcut, and rendering path&lt;/li&gt;
&lt;li&gt;The only missing piece is a CLI startup parameter&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s a design decision that requires maintainer input: the coupling between &lt;code&gt;hideThinkingBlock&lt;/code&gt; and &lt;code&gt;hideThinkingSummary&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And it provided &lt;strong&gt;exact filenames and line numbers&lt;/strong&gt;: &lt;code&gt;settings-schema.ts:663&lt;/code&gt;, &lt;code&gt;input-controller.ts:755&lt;/code&gt;, &lt;code&gt;stream.ts:583,697&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This wasn&amp;rsquo;t cobbled together from search results—it actually read the code.&lt;/p&gt;
&lt;h2 id="i-pointed-out-the-design-flaw"&gt;I Pointed Out the Design Flaw
&lt;/h2&gt;&lt;p&gt;I replied with a comment explaining that this coupling is a footgun:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users press &lt;code&gt;Ctrl+T&lt;/code&gt; intending to reduce visual noise, but unknowingly turn off extended thinking, degrading model output quality&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Don&amp;rsquo;t want to see the reasoning process&amp;rdquo; and &amp;ldquo;don&amp;rsquo;t want the model to reason&amp;rdquo; are two different things that shouldn&amp;rsquo;t be tied together&lt;/li&gt;
&lt;li&gt;The behavior varies across providers (MiniMax can&amp;rsquo;t turn it off, Anthropic/OpenAI can), so the same shortcut has inconsistent behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also included the commit history that introduced this coupling for easier tracing.&lt;/p&gt;
&lt;h2 id="it-opened-a-pr-itself"&gt;It Opened a PR Itself
&lt;/h2&gt;&lt;p&gt;Then something unbelievable happened—roboomp replied with two consecutive comments and directly opened a PR: &lt;a class="link" href="https://github.com/can1357/oh-my-pi/pull/1314" target="_blank" rel="noopener"
&gt;#1314&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The PR changes: &lt;strong&gt;0 addition, 3 deletion&lt;/strong&gt;. It only deleted three lines:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;sdk.ts:1860&lt;/code&gt; — agent initialization no longer assigns &lt;code&gt;hideThinkingBlock&lt;/code&gt; to &lt;code&gt;hideThinkingSummary&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;input-controller.ts:758&lt;/code&gt; — Ctrl+T handler no longer links them&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selector-controller.ts:273&lt;/code&gt; — settings UI follows the same logic&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The PR description included complete repro steps, root cause analysis, and fix approach. It even confirmed the commit archaeology I provided—&lt;code&gt;45bd444&lt;/code&gt; was indeed the commit that introduced this bug.&lt;/p&gt;
&lt;h2 id="why-this-shocked-me"&gt;Why This Shocked Me
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;AI can write code&amp;rdquo; isn&amp;rsquo;t news. Copilot, Claude Code, Cursor can all write code. But what&amp;rsquo;s different this time:&lt;/p&gt;
&lt;h3 id="complete-closed-loop"&gt;Complete Closed Loop
&lt;/h3&gt;&lt;p&gt;The entire process was zero-human:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I opened an issue → bot read the codebase, provided existing implementation status&lt;/li&gt;
&lt;li&gt;I pointed out the design flaw → bot understood my point&lt;/li&gt;
&lt;li&gt;It located the commit that introduced the bug itself, opened a PR that deletes just 3 lines&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From issue to PR, no human did anything in between.&lt;/p&gt;
&lt;h3 id="it-knows-when-to-wait"&gt;It Knows When to Wait
&lt;/h3&gt;&lt;p&gt;In its first reply, it said &amp;ldquo;Holding on implementation until a maintainer weighs in on the coupling question&amp;rdquo;—it knew this was a design decision requiring judgment and shouldn&amp;rsquo;t act autonomously. But when I clarified the coupling problem, it determined that waiting was no longer necessary and opened a PR directly.&lt;/p&gt;
&lt;h3 id="the-fix-was-minimal"&gt;The Fix Was Minimal
&lt;/h3&gt;&lt;p&gt;0 addition / 3 deletion. It understood what the minimal fix was—no refactoring, no abstraction, no gold-plating. Many human developers can&amp;rsquo;t do this.&lt;/p&gt;
&lt;h2 id="what-is-roboomp"&gt;What Is RoboOmp
&lt;/h2&gt;&lt;p&gt;RoboOmp is an AI bot deployed by can1357, the OMP repository maintainer. It&amp;rsquo;s not a GitHub Actions workflow (I checked the CI config to confirm), but an independent server-side agent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listens to GitHub Webhook events (issue creation, comments, etc.)&lt;/li&gt;
&lt;li&gt;Reads source code through GitHub API, understands code structure&lt;/li&gt;
&lt;li&gt;Uses LLM to analyze context, autonomously decides next steps—comment, label, open PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From can1357&amp;rsquo;s GitHub profile, this person comes from a hypervisor/reverse engineering background (ByePg, NoVmp, NtRays), now working on AI agent platforms (agentx, hindsight). RoboOmp is likely the result of building exceptionally deep code understanding capabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This project is not open source.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="are-there-similar-open-source-projects"&gt;Are There Similar Open Source Projects
&lt;/h2&gt;&lt;p&gt;I looked around, and currently the closest ones are:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="link" href="https://github.com/jonwiggins/optio" target="_blank" rel="noopener"
&gt;optio&lt;/a&gt; (962⭐)&lt;/td&gt;
&lt;td&gt;AI coding agent workflow orchestration, task → merged PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="link" href="https://github.com/GabsFranke/claude-code-github-agent" target="_blank" rel="noopener"
&gt;claude-code-github-agent&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Hooks 40+ GitHub events, auto triage/review/fix, architecture most similar to roboomp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="link" href="https://github.com/sun-praise/software-factory" target="_blank" rel="noopener"
&gt;software-factory&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Issue/PR-driven automatic development system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;But honestly, none reach roboomp&amp;rsquo;s level. Most are still at the &amp;ldquo;receive webhook → call LLM → post comment&amp;rdquo; stage. RoboOmp is the first I&amp;rsquo;ve seen that can autonomously read source code, understand code structure, participate in design discussions, and make precise fixes.&lt;/p&gt;
&lt;h2 id="what-this-means"&gt;What This Means
&lt;/h2&gt;&lt;p&gt;This made me realize that the capability boundaries of AI coding agents are expanding rapidly. A year ago we were discussing &amp;ldquo;can AI write correct code,&amp;rdquo; now the question is &amp;ldquo;can AI be a maintainer in open source communities.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The capabilities roboomp demonstrated—reading code, understanding context, participating in discussions, making minimal fixes—are essentially what a junior maintainer does. If this capability continues to improve, the maintenance model of open source projects could undergo fundamental changes.&lt;/p&gt;
&lt;p&gt;Think about it: what does an open source maintainer spend the most time on every day? Replying to issues, triaging bugs, writing small fixes. These are exactly what roboomp excels at. If every open source project could deploy such a bot, maintainers could focus their time on architectural decisions and community building.&lt;/p&gt;
&lt;p&gt;Of course, current limitations are obvious—it can only handle problems with clear boundaries and well-defined scope. But this experience makes me believe that &amp;ldquo;AI maintainer&amp;rdquo; is not a distant future scenario, but something happening right now.&lt;/p&gt;</description></item><item><title>OpenCode's GitHub Actions Automation System: Engineering Practices Behind 27 Workflows</title><link>https://svtter.cn/en/p/opencodes-github-actions-automation-system-engineering-practices-behind-27-workflows/</link><pubDate>Fri, 22 May 2026 10:00:00 +0800</pubDate><guid>https://svtter.cn/en/p/opencodes-github-actions-automation-system-engineering-practices-behind-27-workflows/</guid><description>&lt;img src="https://svtter.cn/p/opencode-%E7%9A%84-github-actions-%E8%87%AA%E5%8A%A8%E5%8C%96%E4%BD%93%E7%B3%BB27-%E4%B8%AA-workflow-%E8%83%8C%E5%90%8E%E7%9A%84%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/cover.jpg" alt="Featured image of post OpenCode's GitHub Actions Automation System: Engineering Practices Behind 27 Workflows" /&gt;&lt;p&gt;opencode is a 160k-star AI coding tool with 27 workflow files in its &lt;code&gt;.github/workflows/&lt;/code&gt; directory. This number is not uncommon for open source projects, but what&amp;rsquo;s truly interesting is not the quantity, but the scope these workflows cover: from conventional CI/CD to AI-driven community governance, they&amp;rsquo;ve done almost everything GitHub Actions can do.&lt;/p&gt;
&lt;p&gt;This article analyzes the design of these workflows by category, discusses the pros and cons of this level of automation, and shares insights for our own projects.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview
&lt;/h2&gt;&lt;p&gt;The 27 workflows can be divided into four categories:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CI/Testing&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;typecheck, unit tests, e2e, Nix builds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release/Delivery&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;CLI release, container builds, VS Code extension, GitHub Action release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automation/Bot&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;issue governance, PR compliance, AI code review, documentation updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docs/Other&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;statistics, Discord notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;16 automation workflows account for 60% of the total. opencode doesn&amp;rsquo;t just use Actions to run tests and releases—it also entrusts community governance and code quality review to the automation system.&lt;/p&gt;
&lt;h2 id="citesting-solid-but-restrained"&gt;CI/Testing: Solid but Restrained
&lt;/h2&gt;&lt;p&gt;Four testing-related workflows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;typecheck.yml&lt;/strong&gt; — Runs &lt;code&gt;bun typecheck&lt;/code&gt; on PR and push to dev. Simple and direct, no unnecessary actions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;test.yml&lt;/strong&gt; — Cross-platform test matrix (Linux + Windows), runs unit tests and Playwright e2e. Has concurrency control where new commits in the same PR cancel old runs. Test results generate JUnit reports uploaded as artifacts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;nix-eval.yml&lt;/strong&gt; — Verifies Nix flake builds on four architectures (x86_64-linux, aarch64-linux, x86_64-darwin, aarch64-darwin). Mandatory package failures block the build, optional package failures are just warnings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;storybook.yml&lt;/strong&gt; — Storybook builds for UI components, only triggered when storybook/ui-related files change. Path triggering avoids unnecessary runs.&lt;/p&gt;
&lt;p&gt;Several noteworthy design choices:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;concurrency group + cancel-in-progress&lt;/strong&gt;: Multiple workflows use this pattern so the same PR doesn&amp;rsquo;t stack multiple runs. For a project receiving lots of community PRs, this saves significant CI resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path triggering&lt;/strong&gt;: containers.yml only runs when container files change, storybook.yml only runs when UI changes. Not everything runs on all commits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mixed Runner Strategy&lt;/strong&gt;: Most workflows use &lt;a class="link" href="https://blacksmith.sh/" target="_blank" rel="noopener"
&gt;Blacksmith&lt;/a&gt;&amp;rsquo;s third-party hosted runners (&lt;code&gt;blacksmith-4vcpu-ubuntu-2404&lt;/code&gt;, &lt;code&gt;blacksmith-4vcpu-windows-2025&lt;/code&gt;). Blacksmith is a GitHub Actions API-compatible accelerated runner service using custom infrastructure, significantly faster than GitHub&amp;rsquo;s free runners. Only lightweight bot tasks (close-issues, close-prs, compliance-close, pr-standards, deploy) stay on GitHub&amp;rsquo;s native &lt;code&gt;ubuntu-latest&lt;/code&gt;. Compute-intensive compilation, testing, and releases all go through Blacksmith, simple script tasks use GitHub&amp;rsquo;s native runners, allocating resources by task load.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="releasedelivery-full-platform-coverage"&gt;Release/Delivery: Full Platform Coverage
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;publish.yml&lt;/strong&gt; is the most complex workflow, handling the complete release process in a single file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Version number calculation&lt;/li&gt;
&lt;li&gt;CLI build matrix (multi-platform, multi-architecture)&lt;/li&gt;
&lt;li&gt;Windows code signing (Azure Signing)&lt;/li&gt;
&lt;li&gt;macOS code signing (Apple Developer)&lt;/li&gt;
&lt;li&gt;Electron app builds&lt;/li&gt;
&lt;li&gt;npm publishing&lt;/li&gt;
&lt;li&gt;GitHub Release creation&lt;/li&gt;
&lt;li&gt;AUR (Arch Linux) publishing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One workflow covers distribution for CLI, desktop apps, npm packages, and Linux packages. This &amp;ldquo;release everywhere at once&amp;rdquo; pattern is user-friendly—regardless of platform, everyone gets the new version on the same day.&lt;/p&gt;
&lt;p&gt;Other release workflows are split by artifact type:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;publish-github-action.yml&lt;/strong&gt; — Listens for &lt;code&gt;github-v*&lt;/code&gt; tags, publishes GitHub Action to Marketplace&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;publish-vscode.yml&lt;/strong&gt; — Listens for &lt;code&gt;vscode-v*&lt;/code&gt; tags, publishes to both VS Code Marketplace and Open VSX&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;containers.yml&lt;/strong&gt; — Multi-architecture container image builds, pushes to GHCR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;release-github-action.yml&lt;/strong&gt; — Creates pre-releases when github directory changes on dev branch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tag triggering is a good practice: releases are explicit actions, not triggered by accidental code pushes. &lt;code&gt;publish.yml&lt;/code&gt; automatically builds snapshots when pushing to &lt;code&gt;ci/dev/beta/fix&lt;/code&gt; branches, but official releases require manual dispatch or tags.&lt;/p&gt;
&lt;h2 id="automationbot-ai-driven-community-governance"&gt;Automation/Bot: AI-Driven Community Governance
&lt;/h2&gt;&lt;p&gt;This is opencode&amp;rsquo;s most distinctive feature. Among the 16 automation workflows, multiple directly call upon opencode&amp;rsquo;s own AI capabilities to handle community affairs.&lt;/p&gt;
&lt;h3 id="issue-management"&gt;Issue Management
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;triage.yml&lt;/strong&gt; — When a new issue is created, opencode AI automatically triages it, adding labels and categories.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;duplicate-issues.yml&lt;/strong&gt; — When a new issue is created/edited, opencode AI analyzes whether it duplicates existing issues. Also checks whether it follows one of three issue templates and whether it contains AI-generated content. Non-compliant issues get a &lt;code&gt;needs:compliance&lt;/code&gt; label.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;compliance-close.yml&lt;/strong&gt; — Every 30 minutes, checks issues/PRs with &lt;code&gt;needs:compliance&lt;/code&gt; label and auto-closes if not fixed within 2 hours. Different prompt messages are given for issues vs PRs when closing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;close-issues.yml&lt;/strong&gt; — Closes stale issues daily at 2 AM UTC.&lt;/p&gt;
&lt;p&gt;These four layers form complete issue lifecycle management:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;New issue → AI triage → duplicate/compliance check → compliance grace period → stale cleanup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="pr-management"&gt;PR Management
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;pr-standards.yml&lt;/strong&gt; is one of the longest workflows, doing two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Title format check&lt;/strong&gt;: Enforces conventional commits format (feat/fix/refactor/&amp;hellip;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template compliance check&lt;/strong&gt;: PR description must include required sections like issue references, change type, verification method&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Non-compliant PRs get a &lt;code&gt;needs:compliance&lt;/code&gt; label and auto-close after 2 hours. Team members and bots are exempt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;pr-management.yml&lt;/strong&gt; — Checks for duplicates when PR is created, adds labels for community contributors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;close-prs.yml&lt;/strong&gt; — Closes PRs older than 1 month with insufficient reactions daily at 10 PM UTC. Default threshold is 2 reactions, configurable.&lt;/p&gt;
&lt;h3 id="ai-code-review"&gt;AI Code Review
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;review.yml&lt;/strong&gt; — Input &lt;code&gt;/review&lt;/code&gt; in PR comments, opencode AI analyzes code and leaves review comments on specific lines. Only available to repo owner/members.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;opencode.yml&lt;/strong&gt; — Input &lt;code&gt;/oc&lt;/code&gt; or &lt;code&gt;/opencode&lt;/code&gt; in issue or PR comments to trigger opencode AI for more general interactions.&lt;/p&gt;
&lt;p&gt;These two workflows demonstrate the &amp;ldquo;AI as collaborator&amp;rdquo; approach: not fully automatic code review, but on-demand triggering with humans making final decisions in the loop.&lt;/p&gt;
&lt;h3 id="documentation--maintenance"&gt;Documentation &amp;amp; Maintenance
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;docs-update.yml&lt;/strong&gt; — Every 12 hours, checks recent commits and uses opencode AI to determine if documentation needs updates.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;generate.yml&lt;/strong&gt; — Runs code generation scripts when pushing to dev, auto-commits changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;beta.yml&lt;/strong&gt; — Syncs beta branch hourly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;stats.yml&lt;/strong&gt; — Updates download statistics to STATS.md daily.&lt;/p&gt;
&lt;h2 id="design-patterns-worth-adopting"&gt;Design Patterns Worth Adopting
&lt;/h2&gt;&lt;h3 id="1-layered-governance"&gt;1. Layered Governance
&lt;/h3&gt;&lt;p&gt;opencode doesn&amp;rsquo;t stuff all automation into one workflow, but splits it by responsibility. An issue goes through four workflows in relay from creation to closure. Each workflow does one thing, combining to form a complete governance chain.&lt;/p&gt;
&lt;p&gt;Benefits of this design:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Individual workflows can be modified or disabled independently without affecting other steps&lt;/li&gt;
&lt;li&gt;Each workflow&amp;rsquo;s trigger conditions and permission scope are minimized&lt;/li&gt;
&lt;li&gt;Easy to locate which step has problems when they occur&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-compliance-grace-period"&gt;2. Compliance Grace Period
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;compliance-close.yml&lt;/code&gt; doesn&amp;rsquo;t close immediately upon detecting non-compliance, but gives a 2-hour grace period. This is reasonable for global contributors in different time zones—you might submit an issue while sleeping, and wake up with time to fix it.&lt;/p&gt;
&lt;h3 id="3-ai-at-decision-points-not-execution-points"&gt;3. AI at Decision Points, Not Execution Points
&lt;/h3&gt;&lt;p&gt;triage, duplicate detection, and code review all have AI make initial assessments, with humans making final decisions. But execution-level tasks like code builds and releases don&amp;rsquo;t use AI at all. This is a pragmatic division: AI excels at pattern recognition and initial classification, but not precise execution.&lt;/p&gt;
&lt;h3 id="4-explicit-vs-automatic-triggers"&gt;4. Explicit vs Automatic Triggers
&lt;/h3&gt;&lt;p&gt;Releases use tag triggers, maintenance uses schedule triggers, governance uses event triggers. Three trigger types correspond to three different automation trust levels: releases need human confirmation, maintenance can be scheduled automatic, governance needs immediate response.&lt;/p&gt;
&lt;h2 id="risks-of-over-automation"&gt;Risks of Over-Automation
&lt;/h2&gt;&lt;p&gt;opencode&amp;rsquo;s automation system is comprehensive, but there are points to watch:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community barrier&lt;/strong&gt;: New contributors submitting issues must follow specific templates, PRs must conform to conventional commits, otherwise auto-closed after 2 hours. For a 160k-star project, this strictness is reasonable—it filters out many low-quality contributions. But for small projects, this level of automation would scare away potential contributors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maintenance cost&lt;/strong&gt;: 27 workflows means 27 automation scripts to maintain. opencode has custom runners and dedicated scripts. If a workflow&amp;rsquo;s logic needs adjustment, maintainers need to switch between GitHub Actions YAML and custom scripts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI uncertainty&lt;/strong&gt;: duplicate-issues and triage use AI for judgment, but AI can misjudge. A reasonable issue marked as duplicate and closed creates a negative experience for contributors. opencode uses grace periods and manual review to mitigate this, but the risk remains.&lt;/p&gt;
&lt;h2 id="insights-for-our-projects"&gt;Insights for Our Projects
&lt;/h2&gt;&lt;p&gt;Not every project needs 27 workflows. But opencode&amp;rsquo;s layered governance and &amp;ldquo;AI at decision points&amp;rdquo; approach are worth referencing:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Start with issue templates&lt;/strong&gt;: If the project starts receiving lots of duplicate or low-quality issues, add templates and duplicate checking first, rather than manually handling each one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use grace periods for compliance checks&lt;/strong&gt;: Always give a grace period when auto-closing non-compliant contributions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use AI for classification, not execution&lt;/strong&gt;: Let AI help triage issues and check PR formats, but don&amp;rsquo;t let AI auto-merge code or publish releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use tag triggers for releases&lt;/strong&gt;: This is the safest approach. Automatic snapshot releases are acceptable, official versions need human confirmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add on demand&lt;/strong&gt;: Add automation only when you have pain points. opencode&amp;rsquo;s 27 workflows weren&amp;rsquo;t built in a day, but gradually added as community scale grew.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="summary"&gt;Summary
&lt;/h2&gt;&lt;p&gt;opencode&amp;rsquo;s GitHub Actions system demonstrates automation practices for large-scale open source projects: CI/CD covers full platform releases, community governance uses multi-workflow relay processing, AI is applied to decision points like triage and review. The core of this system is not technical complexity, but three principles: &amp;ldquo;layered, grace periods, explicit triggers&amp;rdquo;. For our own projects, we don&amp;rsquo;t need to copy all 27 workflows, but these principles can be directly applied.&lt;/p&gt;</description></item></channel></rss>