2024年12月、3日間で ai-multiagent を集中開発。ユーザーリクエストからフルスタックコードを Agent 分割で生成。
Agent 構成
src/agents/ に役割ごとのクラスを並べた。
| Agent | 役割 |
|---|---|
| RequirementsAgent | 要件定義 Markdown 生成 |
| BackendAgent | Hono + API 実装 |
| FrontendAgent | React UI |
| InfraAgent | インフラ設定 |
| DocumentationAgent | ドキュメント生成 |
| FullstackAgent | 一括生成版 |
| IntegratorAgent | 統合 |
LLM 呼び出しは src/utils/llm.ts に寄せて、各 Agent はプロンプトと出力ファイルだけ持つ形にした。server.ts / api.ts でリクエストを受けて、vitest も入れてある。
export class RequirementsAgent {
async run(userRequest: string) {
const result = await callLLM({
systemRole: 'You are a highly skilled software architect.',
userPrompt: `ユーザー要求: "${userRequest}" ...`,
});
return { result, file: { 'requirements.md': result } };
}
}
コミットログ
- 12/15 ファイル分割・API エンドポイント実装
- 12/19 フルスタックバージョン完成
学び
Agent 分割は コンテキスト長と責務分離 に効く。1 Agent に全部任せるより、Requirements → 各実装 Agent の順が安定する。要件を先に Markdown で固めて、それを後段の Agent が読む、という流れにすると、各 Agent のプロンプトが短く保てて出力もブレにくかった。
逆に FullstackAgent(全部1発)も用意して比べたけど、責務を分けた方が結果が安定する、という体感だった。この「分けると安定する」が、2025年の並列管理 UI や MetricShip の方向につながっていく。ChatGPT 模倣 → MetricShip シリーズの第3章。