Factory v2 設計書
Factory v2 設計書
概要
Factoryは、AI駆動の自動ソフトウェア開発システムである。タスク管理システム(Plane)からの入力を受け、AIエージェント(OpenClaw)が自律的に実装・テスト・デプロイを行う。
ビジョン
「Issue作成から本番デプロイまで、人間の介入なしに完了する」
最終目標
- 完全自動化された開発パイプライン
- 国際標準規格(ISO/CNCF/AAIF)準拠
- 機械的判断による信頼性の高い処理
- 人間へのエスカレーション機能
- 自己改善能力(学習ループ)
アーキテクチャ
コンポーネント構成
┌─────────────────────────────────────────────────────────┐
│ コントロールプレーン │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Plane Cloud │ │ Inngest │ │ Grafana │ │
│ │ (タスク管理) │ │ (オーケストラ)│ │ (監視) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────▲──────┘ │
│ │ CloudEvents │ A2A │ OTLP │
└─────────┼────────────────┼────────────────┼─────────────┘
│ │ │
▼ ▼ │
┌─────────────────────────────────────────────────────────┐
│ 実行プレーン │
│ ┌────────────────────────────────────────────────────┐ │
│ │ OpenClaw Agent │ │
│ │ Clone → 実装 → テスト → Push → CI確認 → マージ │ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
役割分担
| コンポーネント | 役割 | 責任 |
|---|---|---|
| Plane Cloud | タスク管理 | Issue作成、優先度、ラベル |
| Inngest | オーケストレーター | 状態管理、ポーリング、リトライ判断 |
| OpenClaw | エグゼキューター | 自律的な実装作業、状態報告 |
| Grafana | 監視基盤 | トレース、ログ、メトリクス |
| GitLab | ソースコード管理 | リポジトリ、CI/CD |
設計原則
1. 機械的判断
推論ではなく、観測可能なデータから機械的に判断する。
✗ AIが推論で「これは型エラーだから...」
✓ exit_code != 0 かつ log contains "TypeError" → 型エラー対応ルール適用
2. ルールベース対応
エラー種別ごとに定義済みルールを適用する。
rules:
TypeError:
action: check_tsconfig
retry: true
ImportError:
action: check_dependencies
retry: true
Unknown:
action: escalate
retry: false
3. エスカレーション
自動で解決できない場合は人間に通知する。
retry >= MAX_RETRIESerrorType == Unknowntimeout >= 30m
4. 監査ログ
全ての判断・アクションを記録する(ISO 42001準拠)。
{
"timestamp": "2026-03-23T06:00:00Z",
"task_id": "issue-42",
"action": "retry",
"reason": "ci_failed:TypeError",
"actor": "openclaw",
"result": "initiated"
}
標準規格準拠
Phase 1: Core(現在)
| 規格 | 用途 | 状態 |
|---|---|---|
| OpenTelemetry | 監視 | △ 部分的 |
| MCP | ツール接続 | △ 部分的 |
| A2A | エージェント間 | △ 部分的 |
| CloudEvents | イベント | ✓ 実装済 |
Phase 2: Quality(次)
| 規格 | 用途 | 状態 |
|---|---|---|
| ISO 29119 | テスト計画・設計 | ❌ 未実装 |
| ISO 25010 | 品質ゲート | ❌ 未実装 |
| ISO 42001 | 監査ログ | ❌ 未実装 |
Phase 3: Security(その次)
| 規格 | 用途 | 状態 |
|---|---|---|
| SLSA | ビルド完全性 | ❌ 未実装 |
| SBOM | 部品表 | ❌ 未実装 |
| ISO 27001 | ISMS | ❌ 未実装 |
Phase 4: Enterprise(将来)
| 規格 | 用途 | 状態 |
|---|---|---|
| ISO 12207 | ライフサイクル | ❌ 未実装 |
| PMBOK | PM | ❌ 未実装 |
| TOGAF | EA | ❌ 未実装 |
Phase 5: Advanced(発展)
| 規格 | 用途 | 状態 |
|---|---|---|
| OpenLineage | データ系譜 | ❌ 未実装 |
| OPA | ポリシー | ❌ 未実装 |
| NIST AI RMF | リスク | ❌ 未実装 |
モジュラーパイプライン
設計
ステージをモジュールとして定義し、設定で有効/無効を切り替え可能にする。
# pipeline.yaml
version: "1.0"
project: cycletree/factory
stages:
plan:
enabled: true
implement:
enabled: true
executor: openclaw
lint:
enabled: true
tools: [eslint, tsc]
security:
enabled: false
tools: [npm-audit, trivy]
test:
enabled: true
command: npm test
coverage:
enabled: true
threshold: 80
audit:
enabled: true
store: grafana-loki
merge:
enabled: true
requireApproval: false
rules:
maxRetries: 3
timeout: 30m
escalation:
channel: discord
target: "#factory-alerts"
ツールマップ
| ステージ | ツール | コスト |
|---|---|---|
| lint | ESLint, TSC, Prettier | 無料 |
| security | npm audit, Trivy, Snyk | 無料/無料枠 |
| test | Jest | 無料 |
| coverage | Jest --coverage, Codecov | 無料/無料枠 |
| audit | Grafana Loki | 無料枠 |
通信プロトコル
Plane → Inngest (CloudEvents)
{
"event": "issue",
"action": "created",
"data": {
"id": "...",
"name": "Add feature X",
"priority": "high"
}
}
Inngest ↔ OpenClaw (A2A)
// タスク開始
{ "type": "task.start", "task_id": "issue-42", "payload": {...} }
// ステータス確認
{ "type": "task.status", "task_id": "issue-42" }
// ステータス応答
{ "type": "task.status.response", "status": "working", "phase": "testing" }
// 完了通知
{ "type": "task.completed", "result": { "merged": true } }
ロードマップ
2026 Q1(現在)
- 基本フロー構築
- Plane Webhook連携
- OpenClaw経由のAI実装
- 監査ログ実装
- 機械的判断ルール
2026 Q2
- Phase 2 (Quality) 完成
- モジュラーパイプライン
- ドッグフーディング開始
2026 Q3
- Phase 3 (Security) 開始
- SaaS化検討
2026 Q4
- β版リリース
- 外部ユーザーテスト