<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Gatekeeping on ROBOCO</title>
    <link>https://roboco.io/ja/tags/gatekeeping/</link>
    <description>Recent content in Gatekeeping on ROBOCO</description>
    <generator>Hugo</generator>
    <language>ja</language>
    <lastBuildDate>Fri, 27 Mar 2026 00:00:00 +0900</lastBuildDate>
    <atom:link href="https://roboco.io/ja/tags/gatekeeping/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>OpenClawの5層ゲートキーピング：AIエージェント時代の品質管理</title>
      <link>https://roboco.io/ja/posts/openclaw-gatekeeping-architecture/</link>
      <pubDate>Fri, 27 Mar 2026 00:00:00 +0900</pubDate>
      <guid>https://roboco.io/ja/posts/openclaw-gatekeeping-architecture/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;31万スターのプロジェクトに押し寄せる数千件のPRと、8つのAIエージェントによる並列コミット。この混沌のなかで品質が崩れない秘訣は、5層の自動化されたゲートキーピングにあります。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://roboco.io/posts/images/Dohyun.png&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;チョン・ドヒョン - ROBOCO首席コンサルタント&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;以前の記事では、OpenClawの&lt;a href=&#34;https://roboco.io/ja/posts/openclaw-agents-md-productivity-secrets/&#34;&gt;AGENTS.mdに込められた生産性の原則&lt;/a&gt;を分析しました。あの記事の核心は「ルールを書くこと」でした。しかし、ルールを書くことと、ルールを&lt;strong&gt;強制すること&lt;/strong&gt;はまったく別の問題です。&lt;/p&gt;&#xA;&lt;p&gt;OpenClawはGitHubで最も多くのスターを集めたリポジトリ（31万以上）であり、バイブコーディングの代表的な事例です。&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; このプロジェクトは、2つの極端な圧力を同時に受けています。1つはメンテナーのPeter Steinbergerが3〜8個のAIエージェントを同時に走らせながら生み出す&lt;strong&gt;内部変更&lt;/strong&gt;であり、もう1つは世界中のコントリビューターがAIの補助で作成して提出する&lt;strong&gt;数千件の外部PR&lt;/strong&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;AGENTS.mdに「これをするな」と書くのはソフトガードレールです。AIエージェントはたいてい従いますが、常に従うとは限りません。外部コントリビューターは、そのルールの存在すら知らない可能性があります。そこでOpenClawは、ルールの上に&lt;strong&gt;5層の自動化された強制メカニズム&lt;/strong&gt;を積み上げました。この記事では、そのメカニズムを解剖します。&lt;/p&gt;&#xA;&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OpenClawの品質管理はルール文書だけではなく、プリコミット、&lt;code&gt;pnpm check&lt;/code&gt;、CI、PR自動化、リリースゲートが重なった5層構造で機能しています。&lt;/li&gt;&#xA;&lt;li&gt;自動修正できる問題はツールが直し、型エラー・セキュリティ・アーキテクチャ境界のような危険な問題は遮断するという形で、多層防御をつくります。&lt;/li&gt;&#xA;&lt;li&gt;バイブコーディング時代の目標は、AIが悪いコードを絶対に書かないようにすることではなく、悪いコードが本番に到達しないようにすることです。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;第1層コミット前に捕まえる--ローカルのプリコミット&#34;&gt;第1層：コミット前に捕まえる — ローカルのプリコミット&lt;/h2&gt;&#xA;&lt;p&gt;OpenClawの最初の防衛線は、コードがリポジトリに到達する前から機能します。&lt;a href=&#34;https://github.com/openclaw/openclaw/tree/main/git-hooks&#34;&gt;&lt;code&gt;git-hooks/pre-commit&lt;/code&gt;&lt;/a&gt;は&lt;code&gt;package.json&lt;/code&gt;の&lt;code&gt;prepare&lt;/code&gt;スクリプトを通じて自動的に有効化され、コミットのたびに実行されます。&lt;/p&gt;&#xA;&lt;p&gt;動作の順序が興味深いところです。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;ステージされたファイルを種類別にフィルタリング&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;oxlint&lt;/strong&gt; &lt;code&gt;--type-aware --fix&lt;/code&gt; — リントエラーを&lt;strong&gt;自動修正&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;oxfmt&lt;/strong&gt; &lt;code&gt;--write&lt;/code&gt; — フォーマットを&lt;strong&gt;自動修正&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;修正されたファイルを再びステージング&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;pnpm check&lt;/code&gt; — 品質ゲート全体を実行&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;核となる設計は&lt;strong&gt;自動修正と遮断の分離&lt;/strong&gt;です。フォーマットやリントエラーのように機械的に直せる問題は、フックが自分で直して通します。しかし、型エラーやアーキテクチャ境界の違反のように判断を要する問題は、コミット自体を遮断します。この区別がないと、エージェントは些細なフォーマットエラーで止まるか、構造的な欠陥をそのまま通してしまうかのどちらかになります。&lt;/p&gt;&#xA;&lt;p&gt;これに加えて&lt;a href=&#34;https://github.com/openclaw/openclaw/blob/main/.pre-commit-config.yaml&#34;&gt;&lt;code&gt;.pre-commit-config.yaml&lt;/code&gt;&lt;/a&gt;は、CIの&lt;code&gt;security-fast&lt;/code&gt;ジョブでも実行される17個のセキュリティ・品質フックを定義しています。&lt;code&gt;detect-private-key&lt;/code&gt;と&lt;code&gt;detect-secrets&lt;/code&gt;でシークレットの流出を遮断し、&lt;code&gt;zizmor&lt;/code&gt;でGitHub Actionsワークフローのセキュリティを監査し、&lt;code&gt;pnpm-audit-prod&lt;/code&gt;で本番依存関係の既知の脆弱性を検査します。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;第2層1つのコマンドで10種類を検証する--pnpm-check&#34;&gt;第2層：1つのコマンドで10種類を検証する — &lt;code&gt;pnpm check&lt;/code&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;pnpm check&lt;/code&gt;は、ローカルのフックとCIの両方で実行される&lt;strong&gt;単一の品質ゲート&lt;/strong&gt;です。1つのコマンドの背後に10個以上のチェックがチェーンされています。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pnpm check =&#xA;  check:no-conflict-markers          # マージコンフリクトマーカーがないこと&#xA;  check:host-env-policy:swift         # Swiftホスト環境のセキュリティポリシー&#xA;  check:base-config-schema            # 設定スキーマのドリフトチェック&#xA;  check:bundled-plugin-metadata       # プラグインメタデータの一貫性&#xA;  check:bundled-provider-auth-env-vars # プロバイダー認証の環境変数の一貫性&#xA;  format:check (oxfmt)                # フォーマット検証&#xA;  tsgo                                # TypeScriptネイティブ型チェック&#xA;  plugin-sdk:check-exports            # プラグインSDKのエクスポート一貫性&#xA;  lint (oxlint --type-aware)          # 型認識リンティング&#xA;  + 約15個のカスタムアーキテクチャ境界リントスクリプト&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ここで最も注目すべきは最後の行です。一般的なリンターは「使われていない変数」や「セミコロンの欠落」といったコードレベルの問題を捕まえます。しかしOpenClawのカスタム境界ガードスクリプトは、&lt;strong&gt;アーキテクチャレベルの違反&lt;/strong&gt;を捕まえます。Extensionがコアの&lt;code&gt;src/**&lt;/code&gt;を直接インポートしたり、プラグインSDKの内部パスを参照したり、パッケージルートの外へ相対パスを伸ばしたりするのを検出します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
