Tencent、Vibe Coding から AI 原生チームへ移行する実践的エンジニアリング手法を公開
本文の状態
日本語全文を表示中
詳細モードで約47分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Tencent Engineering
腾讯エンジニアリングチームは、Vibe Coding の限界を克服し、非開発者も AI を活用して業務システムを構築できる「AI 原生」な開発体制と基盤整備の具体的な実践例を公開した。
AI深層分析を開く2026年8月1日 03:11
AI深層分析
キーポイント
Vibe Coding から AI 原生への転換必要性
個人レベルでの Vibe Coding は便利だが、業務適用ではデータ連携や権限管理などの課題が発生するため、企業基盤を整備した AI 原生開発へ移行する必要がある。
VibeFlowing プロジェクトによる実装
「VibeFlowing」という AI 原生海外ネットワーク運営プラットフォームを構築し、AI が全コンポーネントを管理することで非エンジニアも開発プロセスに参加可能にした。
重複開発とデータ孤島の解消
個別の Vibe Coding で生じた重複造輪やデータ連携不全といった課題に対し、統一された基盤(ログ、認証、API 封入など)を提供して効率化を図る。
開発と製品の協働体制
複雑な要件はドキュメント化し、簡易な要件は対話で処理する仕組みにより、コード知識を持たない製品担当者が AI を介してシステム構築に参画できる環境を整えた。
非技術者の完全自律開発
運用担当者がコードや Git を使わずに自然言語で要求を出すだけで、AI が環境構築から実装・テスト・デプロイまでを自動完結させる。
重要な引用
AI 写个人玩具项目很顺手,但落到真实业务里就是另一回事了
Vibe Coding 适合写'一次性'的东西,但做不了'能持续迭代的系统'
真正 ROI 最高、见效最快的方式,是先让 AI Coding 运转起来,再让护栏随着实际需求逐步生长出来
人只管定义要什么,AI 负责怎么做
編集コメントを表示
編集コメント
この記事は、AI コーディングツールが単なる「便利さ」を超えて、組織の生産性革命を担うための具体的な戦略を示している点で価値が高い。特に非技術職の開発参画を可能にする仕組みは、多くの企業が直面する課題に対する実効性のある解決策として注目される。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
AI を使って個人で趣味のプロジェクトを作るのは簡単ですが、実際の業務に適用すると話は別です。
著者:masoncai
この記事では、AI 原生(ネイティブ)な研发团队を構築する過程で得た経験をまとめました。主な内容は以下の 4 つです。
- 汎用的な能力の構築方法
- Harness(ハルネス)のエンジニアリング実践
- 開発チームと製品チームの連携
- 失敗から学んだ教訓
私たちは職種の壁を打破し、コードを書けない製品担当者も AI の力を借りて、独自に内部運用ツールを定義・実装できるようにしたいと考えています。これにより、チーム全体の開発効率を一段階引き上げたいのです。
全体像
AI を 24 時間連続で稼働させることは、Harness Engineering が到達できる能力の上限を示す一例です。しかし、この手法はゼロから始める場合や、既存業務との関連性が低いタスクに適しています。トークンコストが高くなるうえ、日常の開発現場ではあまり使われません。
実際の開発現場では、既存プロジェクトへの機能追加やバグ修正が主流です。そのため、重厚な自動化工程を組む必要はなく、軽量な「Vibe Coding(バイブコーディング)」で十分対応できます。
したがって、この記事では AI コーディングの能力上限をどう高めるかではなく、より日常的な課題に焦点を当てます。「AI による開発における品質の下限を守りつつ、トークン効率をどう向上させるか」です。
業界では「Prompt Engineering」「Harness」「Agent Loop」といった概念が次々と登場し、それぞれに活躍の場があります。私自身が行っている多くの作業も、本質的にはこれらの「ハルネス(安全装置・枠組み)」を整備する行為そのものです。
しかし、チーム内の全員が最初からこうした概念を理解して適用する必要はありません。コードこそが、ビジネスロジックを最も正確かつ効率的に記述する言語です。多くの人にとって、まずは AI を高品質に使いこなしてコーディングタスクを完了させるスキルを身につけることが、最も現実的な第一歩となります。
ROI が最も高く、即効性があるのは、まず AI コーディングを稼働させ、その上で実際のニーズに応じてセキュリティや管理の「柵(ガードレール)」を着実に築いていくことです。
今回紹介するプロジェクト名は「Vibe Flowing」です。これは業務属性が極めて強い「AI 原生(ネイティブ)な海外ネットワーク運用プラットフォーム」であり、主に海外ネットワーク運用に関するビジネスシーンに特化しています。
私たちが定義する「AI 原生開発」とは、ページ機能や定時タスク、エージェント型 AI、オープン API、外部システムとの連携など、プロジェクトを構成するあらゆるコンポーネントと機能を AI が一元管理することを指します。
利用者は単に要件を記述すればよいのです。簡単な要望なら対話形式ですぐに完了しますが、複雑な案件はまずドキュメントとして整備し、開発プロセスで合意形成を図った後に実装に入ります。
この仕組みにより、チーム内ではコードが書けるかどうかに関わらず、誰もが参画できます。ネットワーク運用の担当者が開発者でなくても、要件定義からコーディング、そして検証までの一連の流れを完遂できるのです。
まさにこれこそが、AI がチームに与える恩恵を最も直感的に示す例です。参入障壁が十分に低くなれば、人間の関与範囲は自然と広がっていくものです。
課題はどこにあるのか
私たちがなぜこのアプローチを採用したのか、その理由を語る前に、まず現状の課題について整理しましょう。
Vibe Coding(AI によるコーディング)の参入障壁はすでに非常に低くなっています。ネットワーク運用担当者が AI コーディングプラットフォームを活用すれば、自分だけでウェブページを作成し、データを確認したりグラフを描いたりして、その場しのぎのニーズを満たすことが可能です。しかし、使い続けるうちに問題が顕在化してきました。
- 輪の再発明、データの非連携、独自解釈の横行
各担当者が作成したウェブサイトは、それぞれが異なるバックエンドシステムの API を呼び出しています。運用系、ネットワーク管理系、CMDB(構成管理データベース)、SNMP など、分野ごとにバラバラに開発が進み、互いの状況が把握できていません。
例えば、専用線の情報を検索する際にも、担当者が違うだけで同じデータを二度手間かけて取得することになります。さらに、認証方式やデータの定義基準さえも統一されておらず、混乱を招いています。厄介なのはデータが各システムに孤立しており、相互に関連付けて分析できない点です。もし専用線の流量に異常が発生した場合、流量の推移、パケットロス率、通信キャリアの品質などを同時に確認するために、複数のページを行き来する必要があり、かつデータ同士が一致しないという事態も頻発します。
こうしたページを一つのポータルに集約し、リンク一覧でアクセスしやすくしようとする試みもありました。しかし、実態は「草の根レベル」の対応に過ぎません。リンクが増え続ける一方で、ページデザインは統一されておらず、「どの情報が最新か」「現在も有効か」「問題発生時に誰に連絡すべきか」を明確に示すことができません。時間が経つとこれらは「レガシー化」し、誰も手をつけられず、かつ手をつけたがらない状態に陥ってしまいます。
- 本格的なシステム構築への障壁
運用担当者が、実際に使い続けられるシステムを作ろうとする際、最初の大きな壁となるのが各システムの API アクセス権限の取得です。ネットワーク管理システム、CMDB、データベースなど、それぞれにアクセス許可やアカウント発行が必要で、手続きや承認待ちが付き物です。
ようやく権限を取得できたとしても、API ドキュメントの不備、フィールドの意味不明確さ、認証方式のバラつきといった問題が残ります。AI に連携を任せても、こうした状況では失敗しやすいものです。AI に原因調査を依頼しても、試行錯誤の結果としてトークン(計算リソース)を大量に消費するだけで、肝心の核心にたどり着けないケースが多々あります。
これらは業務ロジックそのものよりもはるかに複雑な基盤レベルの問題であり、文脈がない状態では AI が効率的に問題を特定するのは困難です。
結論として、Vibe Coding は「その場限り」のツール作成には適していますが、「継続的に進化し続けるシステム」を構築するには不十分です。必要なのは AI の能力不足ではなく、プロの開発者が事前に用意した土台です。ログ管理、認証、権限制御、外部 API のラッパー化、データベース変更プロセス、定時タスクなど、基盤となる部分はまず整備しておく必要があります。
この土台が整っていれば、AI はその上で開発を進める際に毎回ゼロから始める必要がなく、インフラの問題に時間やトークンを浪費することもありません。
これが「Vibe Flowing」を構築した出发点です。まずは企業レベルの堅牢な基盤を整え、その上で AI が継続的に開発を進められるようにすることで、チーム全体の能力範囲を広げていくのです。
専門の開発者が作業を効率化するだけでなく、非エンジニアのメンバーも本格的な業務システムの構築に参加できるようになります。
効果の概観
具体的な手法を解説する前に、実際に稼働している 2 つの事例を見て、「AI 原生的な開発」がどのような体験をもたらすか実感してみましょう。
シナリオ 1:AI 原生による開発全体のフロー
運営担当者が「出口トラフィックを AS(Autonomous System)単位で集約したサンキー図を追加したい」と要望した場合、従来のように仕様書を作成したり開発チームにスケジュール調整を依頼したりする必要はありません。自分自身ですべて完結できます。
まず、「anydev」の開発コンテナをテンプレートから起動します。手動での設定は一切不要です。CodeBuddy を開き、AI に「トラフィック分析ページに、出口トラフィックを AS 単位で集約したサンキー図を追加したい。Top 20 の AS におけるトラフィック分布が見られるようにしてほしい」と伝えるだけで OK です。
AI はまず、どのような次元(ディメンション)を表示するか、データの出所はどこか、ページのどこに配置するかといった要件をすり合わせます。簡単な会話で要件が確定します。
その後、開発が始まります。バックエンドの API、フロントエンドのコンポーネント、データベースへのクエリなど、フルスタックの開発を一気に実行します。開発中も AI が自ら開発環境を起動し、テストを実行し、ログを確認してデバッグを行います。人間の介入は不要です。
開発が完了すると、AI は運営担当者にアクセス URL を通知します。担当者はブラウザで実際に動作を確認できます。
確認結果に満足すれば「OK」と返信するだけです。AI が自動的に静的解析とセーフティネットテストを実行し、コードをリモートブランチへプッシュして MR(Merge Request)を作成します。その後、管理者の承認を経てメイン環境へマージされます(現在は AI による自動承認の導入を進めています)。マージ完了前でも、運営担当者は自分自身の開発コンテナ上でその機能をすぐに使用可能です。
この一連のプロセスで、運営担当者が一行もコードを書いたり、Git を操作したり、「ブランチ」という概念を理解する必要さえありません。
下の画像は「Vibe Flowing」プロジェクトのコミット履歴です。基盤が整えば、チーム全員が AI を活用して自らの要望を実現できるようになります。
この AI 原生の開発体系は、すでに海外のネットワーク運用チームやコントローラー運用チームで実用化されています。統一された AI 開発インフラを基盤に、環境構築から完全自動化までわずか 3 分で完了し、誰でも開発に参加できる体制が整っています。
シナリオ 2:AI ネイティブなエージェント開発プロセス
ある運用担当者が「専用線の品質分析を行う AI エージェント」を作りたいと考えたとします。従来の Agent プラットフォームの構成方法に従うなら、他の開発チームが MCP(Model Context Protocol)やスキルを公開するのを待つ必要があります。その後、自分自身でプロンプトを書き、ツールを設定し、検証を実行しなければなりません。このプロセスは非常に時間がかかります。
しかし、新しいシステムでは、運用担当者は AI に以下のように指示するだけで済みます。
「専用線 ID を入力すると、自動的に流量の傾向、パケットロス率、遅延データを取得し、品質評価の結論と異常の原因を提示するエージェントを作りたい。验收基準は、任意の 1 本の専用線を選んでも、30 秒以内に構造化された分析レポートを出力できることだ」
この目標を受け取った AI は、自らコードリポジトリ内を探検します。
- 既存のデータモデルを確認し
- 再利用可能なサービスを見つけ出し
- そのまま使えるツール関数を選別する
そして、AI 自身がシステムプロンプトを作成してエージェントの行動規範と出力形式を定義し、ツール関数をパッケージ化してデータクエリ機能を統合します。最後に、これを Agent フレームワークに登録します。
次にデバッグフェーズです。AI は自らエンドツーエンドの検証を実行し、実際に 1 本の専用線を選んで出力結果を確認します。验收基準を満たさない場合は、プロンプトを調整したり、モデルを変更したり、ツールからの返却形式を変えたりして反復的に改善を行います。
このように、エージェントの開発プロセス全体で AI が自分自身と対話し、自ら検証を行うため、人間の監視は不要です。
開発が完了すると、AI は運用担当者に実際に使えるエージェントを渡します。運用担当者は Web 上の Agent チャットページにアクセスし、「専用線品質分析用エージェント」を選択するだけで、すぐに利用を開始できます。
具体的な例を示します。
- 自然言語による要件定義
- AI によるコーディングと自主的なテスト・反復
- エージェントの対話結果
まとめ
これらの 2 つのシナリオに共通するのは、「人間は『何を』定義し、AI が『どうやって』実現するかを担う」という点です。これが私たちが考える「AI ネイティブな開発」の本質です。単なる個人の生産性向上ツールではなく、チーム全体の新しい働き方そのものです。
では、具体的にどのような実践があるのか見ていきましょう。
玩具から企業級システムへ
1. 内部業務 SDK の連携
当社のネットワークプラットフォームには、多数の内部運用システムが存在します。これまでに Python 製の業務 SDK を開発し、網管システムや CMDB(構成管理データベース)、SNMP、七彩石、ログ解析など、多様なサードパーティ製サービスのインターフェースをカプセル化しました。
Vibe Coding で生成されたプロジェクトでは、まずこの SDK の統合が最優先事項となります。現行の運用を支える SDK は従来 Python 3.6.8 に固定されていましたが、昨年は Python 3.12 への移行実験を行いました。基礎的な依存関係を更新したため、新規プロジェクトではそのまま導入可能です。ただし、既存プロジェクトの場合は、事前に依存関係の互換性問題を解決しておく必要があります。
この SDK はプライベートパッケージであるため、CI パイプラインでプライベートリポジトリの認証設定が必要です。また、AI エージェントに SDK の機能を理解させるために、コードリポジトリへサブモジュールとして追加します。実際のコーディングでは、エージェント自身に探索させればよく、各インターフェースを説明するドキュメントを追加する必要はありません。
ログ出力や設定情報の取得といった基本的な機能については、IDE の Rules に数行の指示文を記述するだけで十分です。例えば、「ログは from nBroker.lib.logger import log を使用せよ」といったルールを設定すれば、AI はこれを記憶し、以降のコード生成で常に正しく利用します。
2. 汎用的な基盤機能
企業級運用システムには、以下の汎用的な機能が備わっている必要があります。
- ログ機能
- ページレベルの権限制御
- アクセス監査ログ
- 公開 API
- MCP ツール(Model Context Protocol)
- 定期タスク
- ワークフロー管理
これらの機能をプロジェクトごとにゼロから構築するのはコストが高すぎます。そのため、私たちはこれらを標準的なインフラとして確立し、新規プロジェクトではこれを継承して利用しています。以下に、それぞれの具体的な実装方法について解説します。
ログ管理
プロジェクト全体で SDK に用意された統一ログメソッドを直接再利用し、呼び出しシグネチャを一貫させることで、独自のロギング機構を再構築する必要はありません。AI がコード生成を行う際も、Rules ファイルに「このルールに従う」と一行記述するだけで十分です。毎回個別に指示を出す必要はありません。
ページレベルの権限制御
RBAC(ロールベースアクセスコントロール)モデルを実装しました。ユーザーの身份情報は太湖網から注入され、バックエンドでデコードされた後、login_name が取得されます。さらに人事システムを参照して所属する部門とチームを確認します。権限ルールはデータベースに保存されており、「ページ単位」と「操作単位」の 2 つの粒度で制御可能です。管理者リストは七彩石というリモート設定ツール経由で管理できるため、動的な調整が容易です。
この仕組みは AI には透明であり、AI が新しいページを作成する際も「リソースに制限があるか」を宣言するだけで、権限検証は自動的に適用されます。
ページアクセス監査
すべてのリクエストは認証ミドルウェアを経由します。ユーザーの身份、アクセスパス、API Token の使用履歴などはすべてデータベースに記録され、後から監査や追跡が可能になります。
公開 API
外部システムとの連携には API Token メカニズムを採用しています。Bearer Token とカスタムヘッダーの 2 つの方法をサポートします。各トークンには、アクセス可能なパスのホワイトリスト、管理者リスト、有効期限を設定できます。トークンの平文は管理者のみが閲覧可能で、一般ユーザーにはマスクされた表示となります。この仕組みにより外部システムの接続を安全かつ可控に保ちつつ、AI 自身も Token の作成と管理を自律的に行えます。
MCP ツール
FastMCP をベースに MCP Server を構築し、専用線分析やトポロジー分析といったコア機能を MCP ツールとしてパッケージ化しました。これにより他の AI クライアントから呼び出しが可能になります。MCP のパスは認証ホワイトリストに含まれており、外部システムとの統合がスムーズです。
定期タスク
APScheduler を活用して、デコレータ登録方式を実現しました。新しい定期タスクを追加する際は、@cron_job デコレータ関数を書くだけで十分です。タスク ID、実行間隔、説明を記述するだけで完了します。定期タスクは独立したプロセスで動作するため、API の処理をブロックしません。
フロントエンドからはタスクの一時停止・再開・間隔変更・手動トリガーが可能です。また、マルチコピー環境下ではデータベースによる競合制御(パイルアップ)により、1 つの指令が重複して実行されるのを防ぎます。AI が新しい定期タスクを追加する際も、業務ロジックの関数を書くだけでよく、スケジューリングや管理のための「足場」は自動的に準備されます。
ワークフロー
DBOS を活用して、シンプルなワークフロースケジューリング機能を実装しました。これによりプラットフォームは複雑なプロセスの実行を支えることができます。これらのプロセスには、人間の介入が必要な待機タスクや非同期コールバックの待ち時間を含めることが可能です。その結果、複雑なタスクが数ヶ月にわたって中断なく継続して実行されることが可能になります。万一中断しても、過去の状態から復元できるため、「耐久性のある関数(Durable Function)」として機能します。
小規模プラットフォームであってもこれらの機能が内蔵されていれば、AI がこれらをすべて処理できるようになり、システム間の複雑な連携を必要としません。これが AI 原生開発の基盤条件です。
Harness のエンジニアリング実践
1. マスターリポジトリ(大倉)の組織形態
私たちはモノレポ(単一リポジトリ)形式を採用しています。バックエンドの flo/ ディレクトリとフロントエンドの web/ ディレクトリは、同じ Git リポジトリ内に配置されています。
この形式の利点は、AI が 1 つのセッションで前後端のコードを同時に参照できることです。フルスタックの変更を行う際にも文脈が途切れることがなく、異なるリポジトリ間を行き来する必要がありません。
バックエンドのディレクトリ構造は、厳格な階層規約に従っています。呼び出し方向は「コントローラー(API 層)→ サービス(業務層)→ モデル(データ層)→ ソース(外部インターフェース)」と下流のみで、逆方向への依存や同層間の相互参照は禁止されています。
これに加え、「分析(analysis)」「定期タスク(cron)」「CLI ツール(cli)」「エージェント(agent)」などの独立したディレクトリも用意されています。これらの制約は AGENTS.md ファイルに明記されており、AI がコードを生成する際にも常に遵守されます。
各機能ディレクトリには _framework/ というサブディレクトリを設け、フレームワークレベルの「足場」コードを格納します。業務ロジックは業務関数の実装に集中し、スケジューリングやライフサイクル管理はフレームワーク側が担います。これにより、AI が新機能を実装する際もビジネスロジックに注力でき、インフラの詳細に邪魔されることはありません。
フロントエンドでも同様で、components/ は業務ドメインごとにディレクトリを分け、各コンポーネントには対応する Storybook の story ファイルを用意します。views/ ではコンポーネントの調整のみを行い、コードを整理保ちます。この構造は直感的で、AI がコードベースを検索する際も素早く特定でき、人間によるレビューもしやすくなります。
以下にフロントエンドのコンポーネント化例を示します。多くの再利用可能なコンポーネントが蓄積されており、これらは主に業務モジュールごとに分類されています:
2. Rules と Skills で AI に「ルール」と「スキル」をインストールする
大規模なディレクトリ構造は「コードをどう整理するか」を決めますが、Rules と Skills は「AI がどのように作業するか」を定義します。このステップが極めて重要です。制約を加えなければ AI は毎回「自由奔放」に動き、品質は運任せになります。一方、適切な制約を設ければ、作業の質には下限が保証されます。
Rules:シナリオ別に読み込まれるプロジェクトのガードレール
私たちは複数の階層を持つ Rules を設計し、シナリオに応じて自動的に AI のコンテキストに読み込むようにしています。
第一層はプロジェクトルートにある AGENTS.md です。これは CodeBuddy IDE や With 開発環境向けの汎用ルールファイルで、すべての開発ガードレールとエンジニアリングの嗜好を網羅しています。具体的には、ファイル作成の禁止事項、バックエンドの階層化規範、フロントエンドの工程規約、データベース変更の手順、トラフィックチャートの配色方針、ネットワークトポロジーの可視化における好みのスタイルなどが含まれます。AI は毎回のセッションでこのファイルを参照するため、実質的に「プロジェクト仕様書」を常に持ち歩いているようなものです。
第二層は .vscode/anydev_rule.md です。これは統一された開発コンテナ向けのルールファイルで、各開発者のコンテナ環境に自動的に読み込まれます。AGENTS.md がエンジニアリング規範に重点を置くのに対し、anydev_rule はより開発プロセスの制約とユーザー保護に焦点を当てています。その核心となるのは以下の鉄則です。
- 3 段階フローは必須:どんな小さな変更(テキストの修正など)であっても、「要件検討 → 実装 → 確認・コミット」の 3 段階を必ず踏まなければなりません。各段階の間にはユーザーによる明確な承認が必要で、AI が勝手に「小改动なら議論をスキップしてもよい」と判断することは禁止されています。
- ユーザーは非専門開発者:技術用語が登場する場合は、まず平易な言葉で説明し、実行前に方針を提示します。ユーザーに選択肢を選ばせるのではなく、迷った場合は必ず停止して確認を求めます。
- ブランチ管理は AI が代行:ユーザーがブランチを意識する必要はありません。AI が一貫して管理し、自動的に
dev-$ 用户名ブランチへ切り替え、リモートの dev ブランチと同期し、競合も処理します。 - Git 操作のガードレール:破壊的なコマンドの使用を禁止し、変更範囲は最小限に抑えます。ファイル削除の前には必ず確認を取得します。
製品担当者が陥りやすい誤解を事前に指摘する仕組みも重要です。例えばユーザーが「データを削除して」と指示した場合、AI は即座に「anydev アカウントには DELETE 権限がありません」と通知し、代わりにソフトデリート(論理削除)の利用を提案します。
第三の層は、社内版プラグイン「CodeBuddy」の記憶システムです。プロジェクトルールの中には「Memory(記憶)」として保存される項目があり、「データベースの時間フィールドは DATETIME を統一する」「フロントエンドコードを変更後は必ず type-check を実行する」「流量グラフでは入力が緑色、出力が青色」といった具体的な指針が含まれます。これらの記憶は AI が関連するタスクを実行する際に自動的に読み込まれ、毎回手動で説明する必要はありません。
このように 3 つのルール層を積み重ねることで、「AI はこのプロジェクトで何ができ、何ができず、どう行うべきか」という制約事項をほぼ網羅できます。設計の基本原則はただ一つ。「ルールは一元管理し、シーンごとに読み込み、重複させない」ことです。AI のコンテキストウィンドウ(文脈の容量)には限りがあります。ルールが散在していたり重複したりすれば、トークン消費が増えるだけでなく、AI が混乱を招く原因にもなります。
重要なルールとして、Anydev クラウド開発のガードレールと実際の開発例を示します。左側のファイルディレクトリには 4 つの主要な開発制約が表示されており、右側は AI が開発を完了し人間による検証に回す際のレスポンス例です:
Skills:AI に「専門スキルパッケージ」を事前インストールする
Rules が「ルールや規範」を管理するのに対し、Skills は「能力」を担います。私たちは開発プロジェクトで頻出するシーンに対応した一連の Skill を蓄積しています。
- Agent 作成:ReAct Agent の完全なワークフローを実装します。コード探索、プロンプト作成、ツール定義、登録、検証までを一貫して行います。
- ワークフロー作成:DBOS を基盤としたワークフローオーケストレーションにより、永続化やリトライが必要な複雑なタスクを処理します。
- Changelog 公開:changelog の項目を生成し、git tag を作成してバージョンリリースを完了させます。
- フロントエンドデザイン:「AI 特有の安っぽい雰囲気」を排除し、高品質な UI を構築するスキルです。
- Vue 開発:Vue3、Composition API、TypeScript に基づく開発規範とベストプラクティスを実装します。
- 工蜂(コードプラットフォーム)操作:リポジトリ管理、マージリクエスト、コードレビュー、Issue 管理などを行います。
- コードの腐化対策:これは特に重要です。AI 原生の開発が加速すると、コードベースの進化速度も劇的に上がりますが、その分「コードの腐化」も急速に進みます。そこで私たちは、責任を分離した 2 つのスキルを作成しました。1 つはコードの問題をスキャンして Issue を作成する役割、もう 1 つはその Issue を引き受け問題を修正する役割です。「審判と選手が同一人物」という状況を避け、Agent にこれらのスキルを定期的かつ小規模に実行させることで、リポジトリ全体のコード品質を保証します。
- iWiki:社内文書の検索と編集機能を提供します。
- スキル作成:新しい Skill の作成や既存スキルの最適化を行います。
これらの Skill は CodeBuddy 内版プラグインで自動的に読み込まれます。AI が対応するシーンに遭遇すると、人間が手動で呼び出すことなく自動的にトリガーされます。例えばユーザーが「専用線の品質分析を行う Agent を追加して」と指示した場合、「Agent 作成」のスキルが即座に起動し、定義されたワークフローに従って実行されます。具体的にはまず既存コードを探索してデータモデルを理解し、次にプロンプトとツールを作成、最後に登録と検証を行います。
Rules と Skills の関係は、前者が「ミスを防ぐ守り」、後者が「作業を速める攻め」です。Rules だけあれば AI は正確に動きますが、毎回手順を探る必要があり非効率です。一方、Skills だけあれば動作は速いものの、規範から外れるリスクがあります。両者を組み合わせれば、AI はルールを守りつつ効率的に動き、人間の介入コストを最小限に抑えることができます。
- TDD(テスト駆動開発)の実践と取舍
AI を活用したコーディングにおいて、TDD(テスト駆動開発)には微妙な課題があります。AI はテストコードを素早く作成できますが、その内容が「自欺欺人」になりがちです。具体的には、Happy Path(順調なケース)のみをカバーしたり、アサーション(検証条件)が甘すぎたりする問題です。
そのため、私たちは厳格な「先にテストを書く」というプロセスに固執するのではなく、ルールによる制約で品質を保証するアプローチを採用しています。
バックエンドでは pytest を、フロントエンドでは vitest を用いたコンポーネントテストと、Playwright による E2E テストを実施します。コードを提出する前には必ず静的解析チェックが必須です。バックエンドでは ruff(コードスタイル)と ty check(型チェック)、フロントエンドでは oxlint と vue-tsc を実行します。これらのコマンドは AGENTS.md に記載されており、AI が自ら実行するように設計されています。
「フロントエンドの機能テストでバックエンドまでカバーできるか」という問いに対して、私たちの経験則は以下の通りです。E2E テストは「フロントエンド → API → データベース」という全体の流れを検証できるため、ビジネスロジックの正しさを保証する上で価値があります。しかし、バックエンドのユニットテストには「問題箇所の特定」に特化した役割があります。E2E テストが失敗した際、それがフロントエンドのレンダリング不具合なのか、バックエンドのロジックエラーなのかを切り分けることができないからです。
したがって、私たちの取舍は以下の通りです。コアとなるビジネスロジックには必ずバックエンドのユニットテストを実装し、フロントエンドの E2E テストは主要なユーザーフローに焦点を当てます。両者は代替関係ではなく、補完関係にあります。
カバレッジ目標は 70% を目安としていますが、これは数値そのものを達成することが目的ではなく、開発を阻害する閾値ではありません。重要なのは、変更されたファイルに対してテストがカバーされているかどうかです。数字の追求よりも、実務的な改善を重視しています。
実際の運用では、「テスト」よりも「受入(アセスメント)」を重視しています。ネットワーク運営チームからの要求に対し、最終的な受入基準は「ページの挙動が期待通りであること」とします。この受入プロセス自体が、エンドツーエンドの検証として機能しています。AI が機能を開発した後、Playwright のヘッドレスモードでスクリーンショットを取得し、要件を提出した担当者が確認するフローを確立することで、開発から受入までの闭环を形成しています。
- 軽量 SDD(Spec Driven Development)
SDD(仕様駆動開発)は重厚なプロセスのように聞こえますが、多くのチームでは各種のオープンソース Spec フレームワークを用いて全体を管理しようとしています。しかし、私たちはあえて複雑なフレームワークを導入せず、シンプルなファイル命名規則だけで同等の効果を実現しています。
核となる考え方は、「要求仕様書こそが開発における唯一の入力である」という点です。簡単な要件は対話で完結させ、複雑なものは Markdown 形式のドキュメントとして記述します。AI はこのドキュメントを読み込み、議論を経て開発と受入へと進みます。
ドキュメントのフロールールは以下の通りです。
features/ ディレクトリに要求仕様書を配置し、「draft_」→「ready_」→「done/」という 3 つのフェーズを順次通過させます。
前缀:未确定的方案,AI 和人一起讨论迭代
ready_:方案对齐确认,可以开始开发
开发完成后移到 done/ 目录
方案讨论文档放在 ai_docs/running/ 目录,同样遵循 draft_ → ready_ 的命名约定,完成后移到 ai_docs/done/。
这套机制的好处是:AI 一次会话中读完一个 ready_ 文档就拥有了完整的需求上下文,不需要人来反复解释。而文档本身也是 AI 协助写的,运营同事口述需求,AI 整理成结构化文档,开发同事 review 确认后,AI 改前缀为 ready_,并开始开发。
一句话:文档命名约定就是工作流。不用额外的项目管理工具,文件名本身就在表达状态。
5、封装 CLI 工具
AI 在开发过程中经常需要做一些“运营性”操作:执行 DDL、回填数据、管理配置。如果让 AI 自己写临时脚本去 import db 跑,既不安全也不留痕。我们给 AI 封装了几个 CLI 工具,让这些操作有规可循。
flow-db-exec:数据库变更执行工具,是 DB 变更的唯一入口。支持单条 SQL 执行和按文件行号片段执行两种方式,还有 dry-run(干跑)模式。这个工具做了三件事:一是高危关键字(DROP/DELETE/TRUNCATE)硬拦截,和数据库账号权限互为双保险;二是强制留痕,SQL 必须先写到 changelog.sql 再执行;三是执行结果清晰可读,SELECT 结果格式化输出,写操作返回受影响行数。
flow-config:业务配置管理工具,支持增删改查和按前缀过滤,配置存在数据库里,方便运行时动态调整。多说一句:很多团队习惯把所有配置丢到远程配置中心去管,但实际用下来会发现,评审发布流程比较繁琐,配置和代码分属两个系统,割裂感强,AI 也很难直接操作。其实大部分业务配置,例如阈值、开关、参数等,没那么敏感,没必要搞那么重。我们直接用项目内部的数据库表管,配一个 CLI 加一个管理页面就够了。配置和代码同在一个仓库,AI 能直接读写,改完即生效,不用跨系统走流程。Key 按模块分层命名(如 threshold.surge_ratio),同模块配置聚合成 dict 读取,代码里统一走 app_config 模型,不直接拼 SQL。这套机制轻量、透明、AI 友好,运营同事也能在页面上自助改。
run-cron:定时任务独立进程入口,只启动调度器不启动 API,避免重任务阻塞线上接口。
这些 CLI 工具的设计理念是把高频运营操作封装成“安全、留痕、可重复”的命令,AI 用着高效,人审查也放心。AI 不用理解底层连接、事务这些细节,调一个命令就行。
6、前端组件化
フロントエンドのコンポーネント化はもはや常識ですが、AI によるコーディングという文脈では、特に重要な意味を持ちます。それは、コードレビューを可能にするからです。
もし Vue ファイルが 1000 行にも及ぶ場合、AI が一箇所を変更した際、その影響範囲を人間が即座に把握するのは困難です。しかし、100〜200 行の小さなコンポーネントに分割し、それぞれの役割を明確にしておけば、AI の変更は通常 1 つや 2 つのファイルに集中します。レビュー時には、これらの特定のファイルだけを確認すれば済みます。
私たちが定めたルールは以下の通りです。
- Vue SFC(Single File Component)は 500 行以内とし、超えた場合は分割する
- 独立した機能ドメインはサブコンポーネントとして切り出し、再利用可能なロジックは composable へ移す。ユーティリティ関数は
utils/ディレクトリに配置する - サブコンポーネントは 100〜200 行、composable は 30〜70 行を目安とする
- すべてのコンポーネントには Storybook の story を用意する
最後の項目が特に重要です。現在のプロジェクトではすでに 143 個の story ファイルが存在し、ほぼすべてのコンポーネントをカバーしています。Story はデザイナー向けの資料というだけでなく、AI と開発者に対する「コンポーネント仕様書」です。story には各コンポーネントの状態や props の組み合わせが定義されており、AI が新機能を開発する際、まず story を参照することで既存のコンポーネント能力を確認できます。これにより、不要な再実装(輪子の再作成)を防ぎます。また、新しいコンポーネントを実装した後に story を追加することは、一種の自己テストを行うことにもなります。
ページビュー層では「スマートコンポーネント+プレゼンテーションコンポーネント」のパターンを採用しています。View 層は調整役として機能し、専用 ID や出口 ID、時間範囲などを子コンポーネントに渡すだけです。各データカードは自らデータを取得(fetch)し、自らレンダリングを行います。View 層をクリーンに保つことで、新しいカードを追加してもメインファイルが肥大化するのを防いでいます。
これらの制約事項は AGENTS.md に明記されており、AI がフロントエンドコードを生成する際に自動的に遵守されます。稀にルール違反が発生した場合は、指摘するだけですぐに修正・分割できます。
- AI に「問題」を見せる
AI によるコーディングにおける最大のリスクは、処理が遅いことではなく、「間違えていることに気づかない」ことです。AI に「問題」を見せることが、品質保証の鍵となります。
私たちのアプローチは以下の 4 つの層で構成されています。
第一層:静的解析による即時フィードバック。バックエンドでは ruff と ty check を、フロントエンドでは oxlint と vue-tsc を使用しています。これらのツールの出力結果は AI が直接読み取ることができます。AI はコードを記述した直後に自らチェックを実行し、エラーが発生すれば自分で修正します。これは人間によるレビュー待ちよりもはるかに効率的です。
第二層:AGENTS.md によるルールの集約。プロジェクトのルートディレクトリにある AGENTS.md には、開発上のガードレールやエンジニアリングの嗜好がすべてまとめられています。具体的には、ファイルの制限、階層化の規範、コードスタイル、データベース変更のプロセスなどが含まれます。AI は毎回のセッションでこのファイルを参照するため、常にアクセス可能な「プロジェクト仕様書」を持っているようなものです。ルールを集中管理することで、AI の遵守率が高まります。
第三層:開發服務由 AI 自主管理。項目通過一個 dev.sh 腳本統一啟動前後端開發環境,這個腳本本身也是由 AI 編寫的。後續如何修改、日誌查看位置以及進程監控等細節,全部交由 AI 處理。開發者無需記憶這些技術細節,只需對 AI 發出「啟動開發環境」或「查看後端日誌」的指令即可。AI 對開發環境的掌控力越強,其自主發現和解決問題的能力也就越出色。
第四層:Playwright 驗證。AI 完成功能開發後,會利用 Playwright headless 模式進行截圖、檢查 API 請求並驗證交互行為。這相當於讓 AI 自行完成了一遍 QA 測試。
這四層機制疊加後,大部分問題都能在 AI 的對話過程中被發現並修復,等到人類審查時,代碼已經相對成熟。
8、數據庫變更管控
數據庫變更在生產系統中是最敏感的操作。為此,我們設計了一套「極簡、透明、可驗證」的管控流程。
極簡:所有 DDL/DML 操作均通過 flow-db-exec 單一入口執行,AI 無需編寫臨時腳本。對於常見的加字段、加索引或按主鍵更新等操作,直接執行並告知結果即可。
透明:任何變更必須先記錄在 changelog.sql 中(註明日期與目的),同步更新主結構定義文件,然後再按行號執行剛追加的片段。這樣既能追溯變更歷史,也能確保新環境重建數據庫時擁有完整的記錄。
可驗證:根據風險等級採取不同的處理方式。
| 操作類型 | 處理方式 |
|---|---|
| 加字段、加索引、按主鍵單行 UPDATE | 直接執行後告知結果 |
| ALTER(修改字段類型/名稱)或刪除字段 | 先提交方案,經用戶確認後再執行 |
| 無主鍵的批量 UPDATE | 先執行 SELECT COUNT(*) 評估影響範圍,確認後再執行 |
| DROP / DELETE / TRUNCATE | 硬性攔截,改用軟刪除或由人工執行 |
此外,時間字段統一使用 DATETIME 類型,禁止使用 BIGINT 時間戳,以方便運營人員理解。AI 在數據庫操作上擁有清晰的邊界感,既保證了效率,又確保了安全。
9、Agent 工作流
Agent(智能體)是該項目的核心能力之一。這裡想重點分享的並非 Agent 框架的技術細節,而是 AI 原生的 Agent 研發方式。
傳統做法是:開發者手動搭建 Agent 平台,在管理後台配置提示詞、註冊工具並設置參數,最後將能力對外暴露。在這種模式下,每新增一個 Agent 都需要人工在多系統間反覆操作,導致維護成本高企且迭代緩慢。
少し面白い話ですが、以前私は「設定型」を売りにしたエージェントプラットフォームの立ち上げを主導しました。ドラッグ&ドロップでフォームを埋めるだけで Agent を構築でき、Knot よりも早くリリースされたのです。
しかし現在、AI のコード生成能力が劇的に向上したことで、あえて重い仕組みを作る必要はなくなりました。むしろ、Agent をコードで記述する方が自然です。プロンプトはファイルとして、ツールは関数として、登録はデコレータとして扱う。「Everything as Code」こそが、AI 原生の研開発プロセスなのです。
私たちのアプローチは全く異なります。AI に「業務目標」を与えれば、既存のコードベースを基にエンドツーエンドで Agent を作成させるのです。
具体的には、「専用回線の品質分析」といった新しい Agent が必要になった際、AI に「どのような業務課題を解決し、どんな能力を持つべきか」を伝えるだけで十分です。残りの作業はすべて AI が行います。
- コードベースを検索し、既存のデータモデルやサービスインターフェース、ツール機能を理解する
- システムプロンプトを作成し、Agent の行動規範と出力フォーマットを定義する
- 必要なデータクエリや分析機能を Agent が呼び出せるツールとして、既存関数の再利用または新規作成を行う
- レジストリに登録し、統一されたセッション管理やストリーミング出力フレームワークに接続する
- Storybook の story を追加して検証を行う
外部システムへの手動設定も、管理画面でのフォーム入力も不要です。すべての成果物はコードベース内にあり、追跡可能でレビューでき、ロールバックも可能です。
ここで強調したいのは、より深い設計思想です。「システムにどのような能力があるか」は AI 自身が見つけます。プロジェクトの全要素——データモデル、サービスインターフェース、ツール関数、Agent プロンプト、フロントエンドコンポーネント、定期タスクなど——がすべて単一のコードベースに含まれており、AI はそれら全てにアクセスできます。これが「AI 原生」の設計です。能力を管理画面や外部システムに隠すのではなく、すべてコードとして公開し、AI が直接探索・理解・再利用できるようにするのです。
従来のエージェント組織形態は「プラットフォーム+管理画面設定」でした。Agent プラットフォームが中心となり、ツールやプロンプトは管理画面で維持され、人間が手動で登録や設定を行います。このモデルでは AI は全体像を把握できず、新しい能力を追加するたびに人間が平台に手動で「教える」必要があります。
一方、私たちのアプローチは「コード=設定」です。Agent のプロンプトはコードファイル、ツールはコード関数、登録はコードデコレータです。AI が必要な能力があれば、コードベース内で直接検索し、見つかったものをそのまま利用できます。中間工程は一切不要です。
この設計がもたらすメリットは明白です。AI が新しい Agent を追加する際、白紙から描き始めるのではなく、すでに豊富な機能を持つエコシステムの中で「レゴブロックを積み上げる」ような感覚で作業できます。既存のトラフィッククエリサービスがあればそれを再利用し、チャートレンダリング用のツールがあればそのまま接続し、他の Agent のプロンプト記法があれば参考にします。管理画面からゼロから設定するよりも、はるかに効率的です。
この仕組みを支えているのが、フレームワーク層での統一された抽象化です。ReactAgent ベースクラスがモデル設定、コンテキスト注入、ストリーミングイベント出力、セッション永続化などの共通機能を担います。新しい Agent を追加する際は、「名前」「システムプロンプト」「利用可能なツール」の 3 つだけを考えればよく、残りはベースクラスと登録メカニズムが自動的に処理してくれます。
さらにいくつかの設計上の工夫をご紹介します。
- Agent は SSE(Server-Sent Events)でストリーミング出力し、接続断に耐えるように設計されています。クライアント側でページを再読み込みしても、直前の切断位置から再開可能です。数分かかる分析タスクを実行中に刷新しても、進捗は失われません。
- ツールの蓄積には重要な規約があります。ツールからの返却値は、生 JSON ではなく Markdown 文字列として出力することです。これにより、Agent が内容を理解しやすくなり、トークン消費を大幅に削減できます。また、人間が画面で確認する際にも読みやすくなります。
以下の画像は Agent 作成機能の一部を示しています。完全な内容は、記事末尾のオリジナルコードリポジトリをご参照ください。
AI 原生型の Agent 開発における最大の価値は、人間が業務上の成果に集中できる点にあります。つまり、「どのような課題を解決し、何を導き出すか」という本質的な問いに注力するのです。
一方、プロンプトの記述方法やツールの連携、フレームワークの登録といった技術的な実装は、すべて AI がエンドツーエンドで処理します。人間のリソースは「正しい設定」を調整することに費やすのではなく、「正しい課題」を定義することに集中させるべきです。
- Anydev による統一開発環境
前述した Rules(ルール)、Skills(スキル)、CLI ツールなどは、AI に作業を遂行させるための安全装置のようなものです。しかし、それらを実装する前に解決すべき前提があります。それは「開発環境そのものをどう用意するか」という問題です。
従来の開発モデルでは、新入社員がプロジェクトに参加する際、開発環境の構築だけで数時間を要することが珍しくありません。システム依存関係のインストール、Python や Node のツールチェーン導入、プライベートリポジトリの認証設定、環境変数の生成、フロントエンドとバックエンドの依存関係のセットアップ、そして開発サービスの起動など、一連の手順が必要です。各工程でつまずくリスクがあり、例えばシステムパッケージのバージョン不一致や、プライベートリポジトリのアドレスを忘れること、あるいは環境変数の設定漏れによるサービス起動エラーなどが発生します。非エンジニアにとって、この参入障壁はほぼ克服不可能なレベルです。
私たちは、自動化された初期化スクリプトによってこの課題を解決しました。社内の Anydev クラウド開発コンテナを活用することで、コンテナ起動時にすべての設定が自動的に完了します。コンテナの作成から利用可能になるまで 3 分以内で、その間も人間の手を介することなく完了します。
具体的な実装は scripts/system/setup.sh スクリプトで行われ、7 つのサブステップを順に実行します。
最初のステップは開発環境の登録です。コンテナ起動直後に、自身の IP アドレスやフロントエンド・バックエンドサービスのアドレス、開発ブランチなどの情報を、プロジェクトの DevOps 管理ページへ自動登録します。これにより、運用担当者は Web ページ上で誰が開発環境を稼働させているか、そのアドレスがどこにあるかを即座に確認できます。リンクをクリックするだけで機能検証が可能となり、「あなたの開発環境のアドレスはどれですか?」といった問い合わせが不要になります。
2 つ目のステップはシステム依存関係のインストールです。mysql-devel、gcc、gettext など、コンパイルや実行に必要なシステムパッケージを自動的にインストールします。コンテナ内の dnf コマンドで稀にネットワークの不安定さが発生するため、最大 3 回のリトライ処理を実装しています。
3 つ目のステップはツールチェーンの導入です。Python パッケージ管理用の uv と、フロントエンド用パッケージ管理の pnpm、そして社内開発ツールである rtk をインストールします。インストール直後に環境変数をソース(読み込み)し、その後の手順で現在のシェルがすぐに利用できるように設定します。
4 つ目のステップは開発規範の注入です。.vscode/anydev_rule.md ファイルを .codebuddy/rules/ ディレクトリへコピーします。これにより、AI がコンテナ内で起動した瞬間に自動的にプロジェクトの規範を読み込みます。
原文を表示
原创 腾讯程序员 2026-07-21 18:03 广东
image
AI 写个人玩具项目很顺手,但落到真实业务里就是另一回事了。
image
作者:masoncai
导语 :AI 写个人玩具项目很顺手,但落到真实业务里就是另一回事了。这篇整理了我们在打造 AI 原生研发团队上摸出来的一些经验,主要讲四块:通用能力怎么搭、Harness 工程实践、开发跟产品怎么协同。我们希望打破职能边界,让不懂代码的产品同学也能借 AI 东风,自主定义并实现各类内部运营工具,从而带动整个团队的研发效能迈上新台阶。 还有踩完坑之后的一些 Lessons。希望能给大家点参考,尤其是正在琢磨怎么用 AI 把团队能力真正提升起来的同学。
整体概览
让 AI 连续跑一整天,代表了 Harness Engineering 所能达到的一种能力上限。但这种方式更适合从零起步或与现有业务关联度较低的任务,不仅 Token 成本高,日常开发中也很少用到。
日常开发更多是在现有项目中增加功能、修复 Bug,没有必要上那么重的自动化工程,轻量的 Vibe Coding 就足够了。因此,本文不讨论如何把 AI Coding 的能力上限推得更高,而是重点解决一个更日常的问题:如何守住这类需求的质量下限,同时提高 Token 效率。
圈子里的各种概念层出不穷——Prompt Engineering、Harness、Agent Loop——各有各的用武之地。事实上,我自己做的很多事情,本质上也是在搭护栏(Harness)。
但说实话,团队里的每个人并不需要一上来就理解并应用这些概念。代码本身就是描述业务逻辑最精确、最高效的语言。对大多数人来说,更实际的起点,是先学会高质量地使用 AI 完成编码任务。
真正 ROI 最高、见效最快的方式,是先让 AI Coding 运转起来,再让护栏随着实际需求逐步生长出来。
文中涉及的项目叫 Vibe Flowing,是一个业务属性很强的“AI 原生海外网络运营平台”,主要服务于海外网络运营相关的业务场景。
所谓“AI 原生研发”,在我们这里指的是:项目的所有组件和能力,包括页面功能、定时任务、Agent 智能体、开放 API、外部接口对接等,都由 AI 统一维护。
使用者只需要描述需求。简单需求可以通过对话直接完成;复杂需求则先写成文档,经过研发流程对齐后再进行开发。
在这套机制下,团队里不管会不会写代码,每个人都能参与进来。网络运营同事即使不是开发人员,也能完成提需求、写代码、做验收的完整流程。
这正是 AI 赋能团队最直观的体现:当门槛降得足够低,人的参与面自然就打开了。
问题在哪
在聊我们的做法之前,先说说为什么要这么做。
VibeCoding 的门槛已经很低了。网络运营同事用各类 AI 编码平台,自己就能写个网页,查查数据、画个图表,满足一时之需。但用着用着问题就来了:
1、重复造轮子、数据不互通、只有自己说得清
每个人写的网页都在各自调用后端系统接口:运营的、网管的、CMDB 的、SNMP 的,各写各的,互不知道。同样是查一条专线的信息,张三的页面查一遍,李四的页面又查一遍,鉴权方式、数据口径还不一样。更麻烦的是数据散落在各个孤岛里,没法关联分析。比如专线流量异常了,想同时看流量趋势、丢包率、运营商质量,得开三四个页面来回切,数据还对不上。
有人尝试把这些页面聚合到一个入口里,放个超链接列表方便大家跳转。但说实话,这有点草台班子:链接越来越多,页面风格五花八门,哪个是最新的、哪个还能用、哪个出了问题找谁,谁也说不清。时间一长就成了"历史遗产",没人敢动也没人想动。
2、想正经做点事,拦路虎太多
运营同事真想做一个能持续用的系统,第一道坎就是各种系统接口权限的申请。网管系统要开权限,CMDB 要开权限,数据库要开账号,每一个都是流程、审批、等待。好不容易权限拿到了,接口文档不全、字段含义不清、鉴权方式各异,AI 想帮忙对接也经常踩坑。出问题了让 AI 排查,一通操作猛如虎,token 烧了不少,往往还没问到点子上。
因为这些底层问题的复杂性远超业务逻辑本身,AI 在没有上下文的情况下很难高效定位。
说到底,Vibe Coding 适合写"一次性"的东西,但做不了"能持续迭代的系统"。缺的不是 AI 的能力,而是一个专业开发先搭好的架子:日志、鉴权、权限控制、外部接口封装、数据库变更流程、定时任务等,都得先打通。有了这个底座,AI 在上面开发就不必每次从零开始,也不在基础设施问题上浪费时间和 token。
这就是做 VibeFlowing 的出发点:先搭好企业级底座,再让 AI 在上面持续开发,把整个团队的能力边界往外推。
不只是专业开发干活更快,非开发人员也能参与建设真正有用的业务系统。
效果概览
展开讲怎么做之前,先看两个实际跑通的场景,感受一下"AI 原研发"到底是什么体验。
场景一:AI 原生的研发整体流程
运营同事想加一个新功能,比如"出口流量按 AS 聚合的桑基图",他不需要写需求文档,不需要找开发排期,自己就能搞定。
首先,从模板创建一个 anydev 开发容器,不需要手动配置任何东西,打开 CodeBuddy 后直接告诉 AI 需求:"我想在流量分析页加一个出口流量按 AS 聚合的桑基图,能看到 Top 20 AS 的流量分布。"AI 先和他对齐需求:要展示哪些维度、数据从哪来、放在页面哪个位置,用白话聊几句就确认了。
然后 AI 开始开发。后端接口、前端组件、数据库查询,全栈一把梭。开发过程中 AI 自己启动开发服务、自己跑测试、自己查日志排错,不需要人介入。开发完成后,AI 告诉运营同事开发服务的访问地址,让他自己在浏览器里验证。
运营同事打开链接,看到效果满意了,回一句“OK”。AI 自动跑完静态检查和兜底测试,推送代码到远程分支,创建 MR,等管理员审批合并到统一环境(正在引入 AI 审批)。在合并之前,运营同事在自己的开发容器上就能正常使用这个功能,不用等流水线跑完。
整个过程,运营同事没有写一行代码,没有碰过 git,甚至不需要知道"分支"这个概念。
下图是 Vibe Flowing 项目仓库提交记录,可以看到,架子搭好之后,整个团队都能接住 AI 来实现自己的需求。
这套 AI 原生的开发体系已经在海外网络运营、控制器运营团队应,团队基于统一的 AI 研发基础设施,能够在 3 分钟内全自动完成环境配置,人人可以参与开发。
场景二:AI 原生的 Agent 开发流程
运营事想做一个专线质量分析智能体,按照已有 Agent 平台配置开发的方式,得等其他研发同学把 MCP 或者 Skills 开放出来,然后他得自己写提示词、配工具,还得自己跑验证,整个过程非常费时间。
现在在这套体系里,他只需要跟 AI 说:"我想要一个能分析专线质量的 Agent,输入专线 ID,它自动查流量趋势、丢包率、时延数据,给出质量评估结论和异常原因。验收标准是:随便选一条专线,它能在 30 秒内输出结构化的分析报告。"
AI 拿到这个目标后,自己去代码仓库里探索:
看看现有的数据模型有哪些
有哪些 service 可以复用
哪些工具函数能直接用
然后自己写系统提示词,定义 Agent 的行为规范和输出格式;自己封装工具函数,把数据查询能力接进来;自己注册到 Agent 框架里。
接下来是调式,AI 自己跑端到端验证,选一条专线试一下,看输出效果。不满足验收标准,就调提示词、换模型、改工具返回格式,反复迭代。
整个 Agent 的开发过程 AI 自己跟自己对话、自己验收,不需要人盯着。
达到效果后,AI 交给运营同事一个能用的智能体。运营同事到网页上的 Agent 聊天页,选这个专线质量 Agent,直接就能用。
下面是一个例子:
1、自然语言描述需求:
2、AI 编码实现并进行自主测试迭代
3、Agnt 对话效果:
小结
这两个场景的共同点是:人只管定义要什么",AI 负责"怎么做"。这就是我们理解的 AI 原生研发:不是一个人的提效工具,而是一个团队的新工作方式。
接下来,我们来看看具体实践是怎样的。
从玩具到企业级
1、对接内部业务 SDK
网平内部运营系统有很多接口,此前我们已经开发了 Python 本的业务 SDK,封装了各类第三方接口,比如网管系统、CMDB、SNMP 乃至七彩石、日志等能力,在 Vibe 出来的项目中,首先要考虑的是集成这类 SDK。
支撑现网运行的 SDK 此前固定了仅支持 python 3.6.8,去年我们做过升级到 Python 3.12 的探索,将基础依赖都进行了升级,可以直接在新项目中引入,如果是老项目,则需要提前处理好依赖的兼容性问题。
由于此 SDK 是私有包,需要在 CI 流水线中配置私有源认证。为了让 Agent 能理解 SDK 中具备的能力,将该 SDK 作为 sub module 的方式加入到代码仓库,实际编码时,让 Agent 自行探索即可,不需要额外写文档去解释每个接口。
对于一些日志、配置获取等基础常用能力,在 IDE 的 Rules 里写几行说明就行,比如"打日志用 from nBroker.lib.logger import log",AI 记住后每次写代码都会用对。
2、通用底层能力
一个企业级运营系统应该具备几个通用能力,包括:
日志
页面权限控制
页面访问审计
开放 API
MCP 工具
定时任务
工作流
这些能力每写一个项目都从头搭,成本太高。我们把它沉淀成一套标准设施,新项目直接继承。下面逐个说怎么做的。
日志:直接复用 SDK 中的统一日志方法,全项目统一调用签名,不自己造轮子。AI 写代码时只需要在 Rules 里写一行说明就够了,不需要每次都教。
页面权限控制:我们实现了 RBAC 权限模型。用户的身份信息由太湖网关注入,后端解码后拿到 login_name,再从人事系统查到部门和组。权限规则存在数据库里,支持按页面和操作两个粒度控制,管理员列表走七彩石远程配置,方便动态调整。这套机制对 AI 透明,AI 写新页面时,只需要声明是否受限资源,权限校验自动生效。
页面访问审计:所有请求都经过鉴权中间件,用户身份、访问路径、API Token 使用记录都落库留痕,方便审计追踪。
开放 API:外部系统集成走 API Token 机制,支持 Bearer Token 和自定义 Header 两种方式。每个 Token 可以配置允许访问的路径白名单、管理员列表、过期时间。Token 明文仅管理员可见,其他人看到的是掩码。这套机制让外部系统接入安全可控,AI 也能自助创建和管理 Token。
MCP 工具:基于 FastMCP 搭建了 MCP Server,把专线分析、拓扑分析等核心能力封装成 MCP 工具,供其他 AI 客户端调用。MCP 路径在鉴权白名单中,方便外部集成。
定时任务:基于 APScheduler 实现了装饰器注册机制,新增定时任务只需写一个 @cron_job 装饰器函数,声明任务 ID、执行间隔和描述即可。定时任务独立进程运行,不阻塞 API。支持前端页面暂停/恢复/修改间隔/手动触发,多副本环境下通过数据库抢占保证一条指令只执行一次。AI 新增定时任务时,只需要写业务函数,调度和管理的"脚手架"自动就位。
工作流:基于 DBOS 实现了简单的工作流调度能力,让平台能够支撑复杂流程的运行,这些流程中间可以有人工待办、异步回调等待,从而让一个复杂的任务能够持续跑一个月甚至更长时间而不间断,即使中断了也能从历史状态恢复,即所谓的 Durable Function。
小平台内置这些能力,就意味着 AI 能够帮我们把这些都搞定,而不需要跨系统交互,这是 AI 原生研发的基础条件。
Harness工程实践
1、大仓组织形式
我们采用单仓 monorepo 的形式,后端 flo/ 和前端 web/ 在同一个 Git 仓库里。好处是 AI 在一次会话中可以同时看到前后端代码,做全栈改动时上下文完整,不需要跨仓库切换。
后端的目录结构遵循严格的分层约定:controllers(API 层)→ services(业务层)→ models(数据层)→ source(外部接口),调用方向只能向下,禁止反向依赖或同层互调。此外还有 analysis(数据分析)、cron(定时任务)、cli(命令行工具)、agent(智能体)等独立目录。这个约束写在 AGENTS.md 里,AI 每次写代码都会遵守。
关键设计是每个职能目录下都有一个 _framework/ 子目录,存放框架级的"脚手架"代码。业务代码只管写业务函数,框架代码负责调度和生命周期管理。这样 AI 写新功能时聚焦业务逻辑,不会被基础设施的细节干扰。
前端同理,components/ 按业务域分目录,每个组件配套 Storybook story 文件。views/ 只做组件协调,保持整洁。这套结构符合直觉,AI 探索代码库时能快速定位,人也容易审查。
下面是前端组件化示例,可以看到积累了相当多可复用的组件,这些组件主要是按照业务模块划分:
2、用 Rules 和 Skills 给 AI 立规矩、装技能
大仓结构解决"代码怎么组织",Rules 和 Skills 解决"AI 怎么干活"。这一环很关键,不做约束,AI 每次都是"自由发挥",质量全看运气;做了约束,行为就有了下限保障。
Rules:分场景加载的项目护栏
我们设计了多层 Rules,按场景自动加载到 AI 的上下文中:
第一层是 AGENTS.md,放在项目根目录。这是面向 CodeBuddy IDE 和 With 开发环境的通用规则文件,集中了所有开发护栏和工程偏好——文件红线、后端分层规范、前端工程约定、DB 变更流程、流量图表配色、网络拓扑可视化偏好等。AI 每次会话都会读这个文件,相当于随身带着一本"项目规范手册"。
第二层是 .vscode/anydev_rule.md,这是面向统一研发容器的规则文件,会自动加载到每个开发同事的容器环境中。相比 AGENTS.md 侧重工程规范,anydev_rule 更侧重研发流程约束和用户保护,核心是几条铁律:
三阶段流程不可绕过:任何需求,哪怕改一个文案,都必须走"需求讨论 → 开发实现 → 确认提交"三阶段,每个阶段之间需要用户明确确认,禁止 AI 自行判断"小改动可以跳过讨论"
用户是非专业开发:出现技术名词必须用白话先解释,方案先讲再动手,不让用户做选择题,拿不准就停下来问
分支管理对用户透明:用户不需要关心分支,AI 全程管理(自动切到 dev-$用户名 分支、自动同步远程 dev、自动处理冲突)
Git 操作护栏:禁止破坏性命令,改动范围最小化,删除文件前必须确认
产品同学常见误区主动提醒:比如用户说"把数据清掉",AI 要主动告知 anydev 账号没有 DELETE 权限,建议改用软删除
第三层是 CodeBuddy 内网版插件的记忆系统。项目规则中有一部分以 Memory 形式存在,比如"数据库时间字段统一用 DATETIME"、"前端代码修改后必须跑 type-check"、"流量图表入流量绿色、出流量蓝色"等。这些记忆会在 AI 相关场景自动触发,不需要每次重复说明。
三层 Rules 叠加,基本覆盖了"AI 在这个项目里什么能做、不能做、怎么做"的全部约束。设计原则就一条:规则集中、分场景加载、不重复。AI 上下文有限,规则散乱或重复既费 token 又容易让 AI 混淆。
关键 Rule:Anydev 云开发护栏以及开发示例如下,左侧文件目录中可以看到有 4 个关键开发约束,右侧是 AI 完成开发后交给人验证时回复的效果:
Skills:给 AI 预装"专业技能包"
Rules 管的是"规矩",Skills 管的是"能力"。我们沉淀了一批常用 Skill,覆盖项目开发的高频场景:
Agent 创建:新增 ReAct Agent 的完整工作流,探索代码、写提示词、创建工具、注册、验证
工作流创建:基于 DBOS 的工作流编排,处理需要持久化和重试的复杂任务
Changelog 发布:生成 changelog 条目并创建 git tag,处理版本发布
前端设计:创建有设计质量的前端界面,避免"AI 审美"的通用感
Vue 开发:Vue3 + Composition API + TypeScript 的开发规范和最佳实践
工蜂:代码平台操作,仓库管理、合并请求、代码审查、Issue 管理
代码腐化处理:这个特别重要,AI 原生研发跑起来之后,代码仓库的演进速度会特别快,但硬币的另一面是代码腐化也来得更快,我们创建了 2 个职责分离的代码去腐化技能,扫描代码问题、创建 issue,以及认领 issue、修复代码问题,避免“既当裁判又当运动员”。让 Agent 高频小批量定期运行这两个技能,保障仓库代码质量
iWiki:企业内部文档的检索和编辑
技能创建:创建新的 Skill 或优化已有 Skill
这些 Skill 在 CodeBuddy 内网版插件中会自动加载。AI 在遇到对应场景时自动触发,不需要人手动调用。比如用户说"新增一个专线质量分析 Agent",Agent 创建 Skill 就会自动激活,AI 按照 Skill 里定义的工作流一步步执行:先探索现有代码理解数据模型,再写提示词和工具,然后注册和验证。
Rules 和 Skills 的关系:Rules 保底线(不犯错),Skills 提效率(干活快)。光有 Rules,AI 不犯错但每次得摸索怎么干;光有 Skills,AI 干得快但可能不合规范。两者一结合,AI 既守规矩又高效,人的介入成本就降到最低。
3、TDD 实践与取舍
TDD(测试驱动开发)在 AI 编码场景下有一个微妙的问题:AI 写测试很快,但也很容易写出"自欺欺人"的测试,例如只覆盖 happy path,或者断言太弱。我们的做法是用规则约束来兜底,而非追求严格的"先写测试"。
后端用 pytest,前端用 vitest 做组件测试、Playwright 做 E2E。提交前必须通过静态检查:后端跑 ruff(代码风格)+ ty check(类型检查),前端跑 oxlint + vue-tsc。这些检查命令都写在 AGENTS.md 里,AI 会自觉执行。
关于"前端功能测试能否覆盖后端"这个问题,我们的经验是:前端 E2E 测试能验证整条链路(前端 → API → DB),对于业务逻辑的正确性保障是有价值的。但后端单元测试的价值在于快速定位——E2E 挂了你不知道是前端渲染问题还是后端逻辑问题。所以我们的取舍是:核心业务逻辑必须有后端单元测试,前端 E2E 主要覆盖关键用户流程,两者互补而非替代。
覆盖率目标定在 70%,作为参考值不阻断。重要的是改动的文件要有测试覆盖,而不是盲目追求数字。
实际操作中,我们更看重"验收"而非"测试"。对于网络运营同事提的需求,最终验收标准是"页面表现符合预期",这个验收过程本身就是在做端到端验证。AI 开发完一个功能后,用 Playwright headless 截图验证,再交由提需求的人确认,形成闭环。
4、轻量 SDD
SDD(Spec Driven Development,规格驱动开发)听起来很重,大家一般会使用各类开源 Spec 框架来保障整体流程,但我们用一套极简的文件命名约定就实现了类似的效果。
核心思路:需求文档就是开发的唯一输入。简单的需求直接对话,复杂的写成 Markdown 文档,AI 读完文档后讨论、开发、验收。
文档流转规则:
features/ 目录存放需求文档,按 draft_ → ready_ → done/ 三阶段流转
draft_ 前缀:未确定的方案,AI 和人一起讨论迭代
ready_ 前缀:方案对齐确认,可以开始开发
开发完成后移到 done/ 目录
方案讨论文档放在 ai_docs/running/ 目录,同样遵循 draft_ → ready_ 的命名约定,完成后移到 ai_docs/done/。
这套机制的好处是:AI 一次会话中读完一个 ready_ 文档就拥有了完整的需求上下文,不需要人来反复解释。而文档本身也是 AI 协助写的,运营同事口述需求,AI 整理成结构化文档,开发同事 review 确认后,AI 改前缀为 ready_,并开始开发。
一句话:文档命名约定就是工作流。不用额外的项目管理工具,文件名本身就在表达状态。
5、封装 CLI 工具
AI 在开发过程中经常需要做一些"运营性"操作:执行 DDL、回填数据、管理配置。如果让 AI 自己写临时脚本去 import db 跑,既不安全也不留痕。我们给 AI 封装了几个 CLI 工具,让这些操作有规可循。
flow-db-exec:数据库变更执行工具,是 DB 变更的唯一入口。支持单条 SQL 执行和按文件行号片段执行两种方式,还有 dry-run 干跑模式。这个工具做了三件事:一是高危关键字(DROP/DELETE/TRUNCATE)硬拦截,和数据库账号权限互为双保险;二是强制留痕,SQL 必须先写到 changelog.sql 再执行;三是执行结果清晰可读,SELECT 结果格式化输出,写操作返回受影响行数。
flow-config:业务配置管理工具,支持增删改查和按前缀过滤,配置存在数据库里,方便运行时动态调整。多说一句:很多团队习惯把所有配置丢到远程配置中心去管,但实际用下来会发现,评审发布流程比较繁琐,配置和代码分属两个系统,割裂感强,AI 也很难直接操作。其实大部分业务配置,例如阈值、开关、参数等,没那么敏感,没必要搞那么重。我们直接用项目内部的数据库表管,配一个 CLI 加一个管理页面就够了。配置和代码同在一个仓库,AI 能直接读写,改完即生效,不用跨系统走流程。Key 按模块分层命名(如 threshold.surge_ratio),同模块配置聚合成 dict 读取,代码里统一走 app_config 模型,不直接拼 SQL。这套机制轻量、透明、AI 友好,运营同事也能在页面上自助改。
run-cron:定时任务独立进程入口,只启动调度器不启动 API,避免重任务阻塞线上接口。
这些 CLI 工具的设计理念是把高频运营操作封装成"安全、留痕、可重复"的命令,AI 用着高效,人审查也放心。AI 不用理解底层连接、事务这些细节,调一个命令就行。
6、前端组件化
前端组件化是老生常谈,但在 AI 编码场景下有一个特殊价值:组件化让审查变得可行。
如果一个 Vue 文件有 1000 行,AI 改了一处,人很难快速判断影响面。但如果拆成 100~200 行的子组件,每个组件职责单一,AI 的改动通常集中在一两个组件里,审查时只需看这几个文件。
我们的规则是:
Vue SFC 控制在 500 行内,超过即拆
独立功能域抽子组件,可复用逻辑抽 composable,工具函数移 utils/
子组件 100~200 行,composable 30~70 行
所有组件配套 Storybook story
最后一条特别重要,目前项目里有 143 个 story 文件,覆盖了几乎所有组件。Story 不只是给设计师看的,更是给 AI 和开发者提供的"组件说明书",这是因为 story 里定义了组件的各种状态和 props 组合,AI 开发新功能时可以先看 story 了解已有组件能力,避免重复造轮子。开发完新组件后补 story,也相当于做了一次自测。
页面视图层走"智能组件 + 展示组件"模式。View 层只协调,把专线 ID、出口 ID、时间范围传给子组件,每个数据卡片自己 fetch、自己渲染。View 层保持整洁,新增卡片不会让主文件膨胀。
这套约束写在 AGENTS.md 里,AI 写前端时会自觉遵守。偶尔超了,提醒一句就拆好了。
7、让 AI 看见问题
AI 编码最大的风险不是写得慢,而是写错了不知道。让 AI 能“看见"问题是质量保障的关键。
我们的做法分四层:
第一层:静态检查即反馈。后端 ruff + ty check,前端 oxlint + vue-tsc,这些工具的输出 AI 都能直接读到。AI 写完代码后自己跑检查,有报错自己修。这比等人来 review 高效得多。
第二层:AGENTS.md 汇总规则。项目根目录的 AGENTS.md 集中了所有开发护栏和工程偏好,包括文件红线、分层规范、代码风格、DB 变更流程等。AI 每次会话都会读这个文件,相当于有一个"项目规范手册"随时可查。规则越集中,AI 遵守得越好。
第三层:开发服务 AI 自主管理。项目通过一个 dev.sh 脚本统一启动前后端开发服务,这个脚本本身就是 AI 写的,后续怎么改、日志在哪儿看、进程怎么查,全部交给 AI 管理。开发者不需要记这些细节,跟 AI 说一声"启动开发环境"或"看下后端日志"就行。AI 对开发环境的掌控力越强,自己发现和解决问题的能力就越强。
第四层:Playwright 验证。AI 开发完功能后用 Playwright headless 截图、检查 API 请求、验证交互行为。这相当于 AI 自己做了一遍 QA。
四层叠加,大部分问题 AI 会话内就能发现和修复,到人审查时已经比较成熟了。
8、DB 变更管控
DB 变更在生产系统里是最敏感的操作。我们设计了一套"极简、透明、可验证"的流程。
极简:所有 DDL/DML 通过 flow-db-exec 一个入口执行,AI 不需要写临时脚本。常用的加字段、加索引、按主键更新,直接执行后告知即可。
透明:任何变更必须先落到 changelog.sql(注明日期与目的),同步更新主结构定义文件,然后按行号执行刚追加的片段。这样变更历史可追溯,新环境重建数据库也有完整记录。
可验证:按风险分级处理。
操作处理方式
加字段、加索引、按主键单行 UPDATE直接执行后告知
ALTER 改字段类型/名/删字段先讲方案,用户确认后再执行
不带主键的批量 UPDATE先 SELECT COUNT(*) 评估,确认后执行
DROP / DELETE / TRUNCATE硬拦截,改用软删除或人工执行
时间字段统一用 DATETIME,禁止 BIGINT 时间戳,方便运营同学理解。AI 在数据库操作上有清晰边界感,既高效又安全。
9、Agent 工作流
Agent 智能体是这个项目的重要能力。这里想重点分享的不是 Agent 框架的技术细节,而是AI 原生的 Agent 研发方式。
传统做法是:开发者手动搭建 Agent 平台,在某个管理后台配置提示词、注册工具、设置参数,再把能力暴露出去。这种模式下,每新增一个 Agent 都需要人在多个系统间来回操作,维护成本高,迭代慢。
说起来有点意思,我之前牵头搞过一个智能体平台,主打配置化,拖拽填表就能搭 Agent,上线比 Knot 还早。但现在 AI 写代码能力大幅提升之后,也许没必要整那么重,直接用代码描述 Agent:提示词是文件,工具是函数,注册是装饰器。Everything as Code,这才是 AI 原生的研发流程。
我们的做法完全不同:给 AI 一个业务目标,让它自己基于现有代码仓库端到端地完成 Agent 的创建。
具体来说,当我们需要一个新 Agent,例如"专线质量分析",只需要跟 AI 说清楚这个 Agent 要解决什么业务问题、应该具备什么能力。AI 会自己完成全部工作:
探索代码仓库,理解现有的数据模型、服务接口和工具能力
编写系统提示词,定义 Agent 的行为规范和输出格式
复用或创建工具函数,把需要的数据查询和分析能力封装成 Agent 可调用的工具
在注册表中登记,接入统一的会话管理和流式输出框架
补充 Storybook story 做验证
整个过程不需要去任何外部系统手动配置,不需要在管理后台填表单,所有产物都在代码仓库里,可追踪、可 review、可回滚。
这里有一个更深层的设计理念需要强调:系统中有什么能力,AI 自己去看。项目的所有内容,包括数据模型、服务接口、工具函数、Agent 提示词、前端组件、定时任务等,都在同一个代码仓库里,AI 都可以获取到。这就是面向 AI 原生的设计:不把能力藏在某个管理后台或外部系统里,而是全部以代码形式存在,让 AI 能直接探索、理解、复用。
传统的智能体组织形式是 "平台 + 后台配置":Agent 平台是中心,工具和提示词在管理后台维护,人要去后台注册和配置。这种模式下,AI 看不到全貌,每接一个新能力都需要人手动"告诉"平台。而我们的做法是"代码即配置":Agent 的提示词是代码文件,工具是代码函数,注册是代码装饰器。AI 需要什么能力,直接在代码仓库里找,找到了就能用。不需要任何中间环节。
这种设计带来的好处是显而易见的:AI 新增一个 Agent 时,不是在白纸上画画,而是在一个已经充满能力的生态里"搭积木",看到有现成的流量查询 service 就复用,看到有现成的图表渲染工具就直接接,看到有其他 Agent 的提示词写法就参考。整个过程的效率,远高于在管理后台从零开始配置。
这背后的支撑是我们在框架层做了统一抽像:一个 ReactAgent 基类负责模型配置、上下文注入、流式事件输出、会话持久化等通用能力。新增 Agent 只需关注三件事:叫什么名字、系统提示词是什么、有哪些工具,基类和注册机制把其余的都包了。
还有几个设计细节值得提一下:
1、Agent 通过 SSE 流式输出,支持断连重连,客户端刷新页面后能从上次断开的位置继续,跑几分钟的分析任务中途刷新不会丢失;
2、工具沉淀有一个重要约定:工具返回值尽量是 markdown 字符串而非原始 JSON,一来 Agent 更好理解,二来大幅减少 token 消耗,此外人在页面上也看起来更方便。
下图展示了 Agent 创建技能的部分内容,完整内容的可以去文末的原始代码仓库中查看:
AI 原生的 Agent 研发方式,核心价值就是:人只关注业务价值,即这个 Agent 要解决什么问题、输出什么结论。
至于提示词怎么写、工具怎么对接、框架怎么注册,全由 AI 端到端搞定。人的精力花在定义"对的问题"上,而不是"对的配置"上。
10、Anydev 统一研发环境
前面讲的 Rules、Skills、CLI 工具都是"AI 怎么干活"的护栏,但还有一个前提问题:开发环境本身怎么准备好。
传统模式下,一个新同事加入项目,光是准备开发环境就要折腾半天。比如装系统依赖、装 Python 和 Node 工具链、配置私有源认证、生成环境变量文件、装前后端依赖、启动开发服务。每一步都可能踩坑:系统包版本不对、私有源地址记不住、环境变量漏配导致服务启动报错。对非开发同事来说,这道门槛几乎不可逾越。
我们用一套自动化初始化脚本解决了这个问题。基于公司的 Anydev 云研发容器,开发环境在容器启动时自动完成全部配置,从创建容器到可用,3 分钟以内,全程零人工介入。
具体实现在 scripts/system/setup.sh,按顺序串起 7 个子步骤:
第一步:上报开发环境。容器启动后第一时间把自己的 IP、前后端服务地址、开发分支等信息注册到项目的 devops 管理页面。这样运营同事在网页上就能看到谁的开发环境在线、地址是什么,直接点链接就能验收功能,不用问"你的开发环境地址是多少"。
第二步:安装系统依赖。自动安装 mysql-devel、gcc、gettext 等编译和运行所需的系统包。考虑到容器内 dnf 偶发网络抖动,做了最多 3 次重试。
第三步:安装工具链。安装 uv(Python 包管理)和 pnpm(前端包管理),以及 rtk(内部研发工具)。装完立即 source 环境变量,让后续步骤的当前 shell 就能用。
第四步:注入开发规范。把 .vscode/anydev_rule.md 拷贝到 .codebuddy/rules/ 目录。这样 AI 在容器里一启动就自动加载项目规范,
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み