- Tech highlights: EventBus, Outbox Relay, state machine audit, parallel dispatch, DAG orchestrator - Project structure: add edict/backend, auth.py, agent groups, new scripts - Launch: one-click start.sh, systemd production deploy - Roadmap Phase 2: mark 8 items as completed
26 KiB
⚔️ Edict · マルチエージェント・オーケストレーション
中国1,300年の帝国統治をモデルにしたAIマルチエージェントシステムを構築しました。
古代の官僚制度は、現代のAIフレームワークよりも三権分立を深く理解していたのです。
12のAIエージェント(11の業務ロール+1の互換ロール)が三省六部を構成:太子が振り分け、中書省が立案、門下省が審査、尚書省が配分、六部が実行。
CrewAIにはない制度的レビューゲート。AutoGenにはないリアルタイムダッシュボード。
🎬 デモ · 🚀 クイックスタート · 🏛️ アーキテクチャ · 📋 機能 · 中文 · English · Contributing
🎬 デモ
🎥 フルデモ:三省六部によるAIマルチエージェント協調
🐳 OpenClawをお持ちでない場合
docker run -p 7891:7891 cft0808/edictを実行すれば、シミュレーションデータでダッシュボード全機能をお試しいただけます。
💡 コンセプト
多くのマルチエージェントフレームワークでは、AIエージェントが自由に会話し、監査や介入が困難な不透明な結果を生み出します。Edict は根本的に異なるアプローチを取ります — 中国を1,400年間統治した行政システムを借用しています:
あなた(皇帝) → 太子(振り分け) → 中書省(立案) → 門下省(審査) → 尚書省(配分) → 六部(実行) → 回奏
皇上 太子 中書省 門下省 尚書省 六部 回奏
これは単なる比喩ではありません。AIのための真の三権分立です:
- 太子(Crown Prince) がメッセージを振り分け — 雑談は自動返信、実際の指令はタスク化
- 中書省(Planning) が指令を実行可能なサブタスクに分解
- 門下省(Review) が計画を監査 — 却下して再立案を強制可能
- 尚書省(Dispatch) が承認済みタスクを専門部署に割り当て
- 七部 が並列で実行、それぞれ異なる専門性を持つ
- データサニタイズ がファイルパス、メタデータ、不要データをタスクタイトルから自動除去
- すべてがリアルタイムダッシュボードを通じて流れ、監視・介入が可能
🤔 なぜEdictなのか?
「1つのAIがすべてを間違えるのではなく、9つの専門エージェントが互いの成果をチェックします。」
| CrewAI | MetaGPT | AutoGen | Edict | |
|---|---|---|---|---|
| レビュー/拒否権の組み込み | ❌ | ⚠️ | ⚠️ | ✅ 専任レビュアー |
| リアルタイムかんばん | ❌ | ❌ | ❌ | ✅ 10パネルダッシュボード |
| タスク介入 | ❌ | ❌ | ❌ | ✅ 停止 / キャンセル / 再開 |
| 完全な監査証跡 | ⚠️ | ⚠️ | ❌ | ✅ 奏摺アーカイブ |
| エージェント健全性監視 | ❌ | ❌ | ❌ | ✅ ハートビート検知 |
| LLMモデルのホットスワップ | ❌ | ❌ | ❌ | ✅ ダッシュボードから切替 |
| スキル管理 | ❌ | ❌ | ❌ | ✅ 閲覧 / 追加 |
| ニュース集約 | ❌ | ❌ | ❌ | ✅ デイリーダイジェスト + Webhook |
| セットアップの複雑さ | 中 | 高 | 中 | 低 · ワンクリック / Docker |
コアの差別化要素:制度的レビュー + 完全な可観測性 + リアルタイム介入
🔍 なぜ「門下省(Review Department)」がキラー機能なのか(クリックで展開)
CrewAIやAutoGenのエージェントは**「完了、出荷」**モードで動作します — 出力の品質を誰もチェックしません。QA部門のない会社でエンジニアがコードを直接本番にプッシュするようなものです。
Edictの門下省(Review Department) はまさにこのために存在します:
- 📋 計画品質の監査 — 中書省の分解は完全かつ妥当か?
- 🚫 低品質な出力の拒否 — 警告ではなく、再立案を強制するハードリジェクト
- 🔄 必須やり直しループ — 基準を満たすまで何も通過しない
これはオプションのプラグインではありません — アーキテクチャの一部です。すべての指令は門下省を通過しなければなりません。例外はありません。
複雑なタスクでEdictが信頼性の高い結果を出せるのはこのためです:実行に到達する前に必須の品質ゲートがあります。唐の太宗は1,300年前にこれを理解していました — チェックされない権力は必ず誤りを生むのです。
✨ 機能
🏛️ 十二部エージェントアーキテクチャ
- 太子(Crown Prince)メッセージ振り分け — 雑談は自動返信、実際の指令はタスク作成
- 三省(中書省・門下省・尚書省)による統治
- 七部(戸部・礼部・兵部・刑部・工部・吏部・朝報)による実行
- 厳格な権限マトリクス — 誰が誰にメッセージを送れるかを強制
- 各エージェント:独自のワークスペース、スキル、LLMモデル
- データサニタイズ — ファイルパス、メタデータ、無効なプレフィックスをタイトル/備考から自動除去
📋 コマンドセンター・ダッシュボード(10パネル)
| パネル | 説明 |
|---|---|
| 📋 勅令かんばん | 状態別タスクカード、フィルター、検索、ハートビートバッジ、停止/キャンセル/再開 |
| 🔭 部署モニター | パイプライン可視化、分布チャート、ヘルスカード |
| 📜 奏摺アーカイブ | 5フェーズタイムラインの自動生成アーカイブ |
| 📜 勅令テンプレート | 9つのプリセット+パラメータフォーム、コスト見積もり、ワンクリック発令 |
| 👥 官員一覧 | トークンリーダーボード、活動統計 |
| 📰 朝報ブリーフィング | 自動キュレーションニュース、購読管理、Feishuプッシュ |
| ⚙️ モデル設定 | エージェント別LLM切替、Gateway自動再起動 |
| 🛠️ スキル設定 | インストール済みスキルの表示、新規追加 |
| 💬 セッション | チャネルラベル付きリアルタイムセッション監視 |
| 🎬 朝議セレモニー | 統計付き没入型デイリーオープニングアニメーション |
🖼️ スクリーンショット
勅令かんばん
🚀 クイックスタート
Docker
docker run -p 7891:7891 cft0808/edict
フルインストール
前提条件: OpenClaw · Python 3.9+ · macOS/Linux
git clone https://github.com/cft0808/edict.git
cd edict
chmod +x install.sh && ./install.sh
インストーラーが自動的に以下を行います:
- 全部署のワークスペースを作成(
~/.openclaw/workspace-*、太子/吏部/朝報を含む) - 各部署のSOUL.mdパーソナリティファイルを作成
- エージェント+権限マトリクスを
openclaw.jsonに登録 - データディレクトリの初期化+初回同期
- Gatewayの再起動
起動
# 方法1:ワンクリック起動(推奨)
chmod +x start.sh && ./start.sh
# 方法2:手動起動
bash scripts/run_loop.sh & # データ同期ループ
python3 dashboard/server.py # ダッシュボードサーバー
# ブラウザを開く
open http://127.0.0.1:7891
🖥️ 本番環境デプロイ(systemd)
# systemdサービスのインストール
sudo cp edict.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable edict
sudo systemctl start edict
# または管理スクリプトを使用
bash edict.sh start # 起動
bash edict.sh status # ステータス確認
bash edict.sh restart # 再起動
bash edict.sh stop # 停止
📖 詳細なウォークスルーはスタートガイドをご覧ください。
🏛️ アーキテクチャ
┌───────────────────────────────────┐
│ 👑 皇帝(あなた) │
│ Feishu · Telegram · Signal │
└─────────────────┬─────────────────┘
│ 勅令発布
┌─────────────────▼─────────────────┐
│ 👑 太子(Crown Prince) │
│ 振り分け:雑談→返信 / 指令→タスク │
└─────────────────┬─────────────────┘
│ 勅令転送
┌─────────────────▼─────────────────┐
│ 📜 中書省(Planning Dept) │
│ 受領 → 立案 → 分解 │
└─────────────────┬─────────────────┘
│ 審査提出
┌─────────────────▼─────────────────┐
│ 🔍 門下省(Review Dept) │
│ 監査 → 承認 / 却下 🚫 │
└─────────────────┬─────────────────┘
│ 承認 ✅
┌─────────────────▼─────────────────┐
│ 📮 尚書省(Dispatch Dept) │
│ 割当 → 調整 → 収集 │
└───┬──────┬──────┬──────┬──────┬───┘
│ │ │ │ │
┌─────▼┐ ┌───▼───┐ ┌▼─────┐ ┌───▼─┐ ┌▼─────┐
│💰 戸部│ │📝 礼部│ │⚔️ 兵部│ │⚖️ 刑部│ │🔧 工部│
│Finance│ │ Docs │ │ Eng. │ │ Law │ │ Ops │
└──────┘ └──────┘ └──────┘ └─────┘ └──────┘
┌──────┐
│📋 吏部│
│ HR │
└──────┘
エージェントの役割
| 部署 | エージェントID | 役割 | 専門分野 |
|---|---|---|---|
| 👑 太子 | taizi |
振り分け、要約 | 雑談検出、意図抽出 |
| 📜 中書省 | zhongshu |
受領、立案、分解 | 要件定義、アーキテクチャ |
| 🔍 門下省 | menxia |
監査、門番、拒否権 | 品質、リスク、基準 |
| 📮 尚書省 | shangshu |
割当、調整、収集 | スケジューリング、追跡 |
| 💰 戸部 | hubu |
データ、リソース、経理 | データ処理、レポート |
| 📝 礼部 | libu |
文書、基準、報告書 | テクニカルライティング、APIドキュメント |
| ⚔️ 兵部 | bingbu |
コード、アルゴリズム、チェック | 開発、コードレビュー |
| ⚖️ 刑部 | xingbu |
セキュリティ、コンプライアンス、監査 | セキュリティスキャン |
| 🔧 工部 | gongbu |
CI/CD、デプロイ、ツール | Docker、パイプライン |
| 📋 吏部 | libu_hr |
エージェント管理、研修 | 登録、権限管理 |
| 🌅 朝報 | zaochao |
デイリーブリーフィング、ニュース | 定期レポート、要約 |
権限マトリクス
| 送信元 ↓ \ 送信先 → | 太子 | 中書省 | 門下省 | 尚書省 | 六部 |
|---|---|---|---|---|---|
| 太子 | — | ✅ | |||
| 中書省 | ✅ | — | ✅ | ✅ | |
| 門下省 | ✅ | — | ✅ | ||
| 尚書省 | ✅ | ✅ | — | ✅ 全部 | |
| 六部 | ✅ |
ステートマシン
皇帝 → 太子振り分け → 中書省立案 → 門下省審査 → 割当 → 実行中 → ✅ 完了
↑ │ │
└── 却下 ──┘ ブロック ──
📁 プロジェクト構成
edict/
├── agents/ # 12エージェントのパーソナリティテンプレート(SOUL.md)
│ ├── taizi/ # 太子(振り分け)
│ ├── zhongshu/ # 中書省
│ ├── menxia/ # 門下省
│ ├── shangshu/ # 尚書省
│ ├── hubu/ libu/ bingbu/ # 戸部 / 礼部 / 兵部
│ ├── xingbu/ gongbu/ # 刑部 / 工部
│ ├── libu_hr/ # 吏部
│ └── zaochao/ # 朝報
├── dashboard/
│ ├── dashboard.html # ダッシュボード(単一ファイル、依存関係ゼロ、すぐに使える)
│ ├── dist/ # ビルド済みReactフロントエンド(Dockerイメージに含む)
│ ├── auth.py # ダッシュボードログイン認証
│ ├── court_discuss.py # 朝堂議政(マルチエージェントLLM討論エンジン)
│ └── server.py # APIサーバー(stdlib、依存関係ゼロ)
├── edict/backend/ # 非同期バックエンドサービス(SQLAlchemy + Redis)
│ ├── app/models/
│ │ ├── task.py # タスクモデル + ステートマシン
│ │ ├── audit.py # 監査ログモデル
│ │ └── outbox.py # Outboxメッセージモデル
│ ├── app/services/
│ │ ├── event_bus.py # Redis Streams EventBus
│ │ └── task_service.py # タスクサービス層
│ └── app/workers/
│ ├── dispatch_worker.py # 並列ディスパッチ + リトライ + リソースロック
│ ├── orchestrator_worker.py # DAGオーケストレータ
│ └── outbox_relay.py # トランザクショナルOutbox Relay
├── agents/
│ ├── <agent_id>/SOUL.md # エージェントパーソナリティテンプレート
│ ├── GLOBAL.md # グローバルエージェント設定
│ └── groups/ # エージェントグループ(sansheng / liubu)
├── scripts/ # データ同期&自動化スクリプト
│ ├── kanban_update.py # かんばんCLI(データサニタイズ + ステートマシン付き)
│ ├── agentrec_advisor.py # エージェントモデル推薦(功過簿 + コスト最適化)
│ ├── refresh_watcher.py # データ変更ウォッチャー
│ └── ... # fetch_morning_news、syncなど
├── tests/
│ ├── test_e2e_kanban.py # かんばんサニタイズテスト(17アサーション)
│ └── test_state_machine_consistency.py # ステートマシン一貫性テスト
├── data/ # ランタイムデータ(gitignore対象)
├── docs/ # ドキュメント+スクリーンショット
├── install.sh # ワンクリックインストーラー
├── start.sh # ワンクリック起動(ダッシュボード + データ同期)
├── edict.service # systemdサービス設定(本番デプロイ)
├── edict.sh # サービス管理スクリプト(start/stop/restart/status)
└── LICENSE # MIT
🔧 技術的ハイライト
| React 18フロントエンド | TypeScript + Vite + Zustand、13コンポーネント |
| stdlibバックエンド | server.py(http.serverベース、依存関係ゼロ) |
| EventBus | Redis Streams Pub/Subによるサービス間疑結合通信 |
| Outbox Relay | トランザクショナルOutboxパターンによる信頼性の高いイベント配信(at-least-once) |
| ステートマシン監査 | 厳格なライフサイクル状態遷移 + 完全な監査ログ(audit.py) |
| 並列ディスパッチ | Dispatch Worker:並列実行、指数バックオフリトライ、リソースロック |
| DAGオーケストレータ | DAGベースのタスク分解と依存関係解決 |
| エージェント思考の可視化 | エージェントの思考、ツール呼び出し、結果をリアルタイム表示 |
| ワンクリックインストール / 起動 | install.shで自動設定、start.shで全サービス起動 |
| systemd本番デプロイ | edict.serviceでデーモンプロセス、起動時自動開始 |
| 15秒自動同期 | カウントダウン付きライブデータリフレッシュ |
| ダッシュボード認証 | auth.pyでログイン認証 |
| 朝議セレモニー | 没入型オープニングアニメーション |
🗺️ ロードマップ
コントリビューション機会を含む完全なロードマップ:ROADMAP.md
フェーズ1 — コアアーキテクチャ ✅
- 十二部エージェントアーキテクチャ+権限管理
- 太子振り分けレイヤー(雑談 vs タスクの自動ルーティング)
- リアルタイムダッシュボード(10パネル)
- タスク停止 / キャンセル / 再開
- 奏摺アーカイブ(5フェーズタイムライン)
- 勅令テンプレートライブラリ(9プリセット)
- 朝議セレモニーアニメーション
- デイリーニュース+Feishu Webhookプッシュ
- LLMモデルのホットスワップ+スキル管理
- 官員一覧+トークン統計
- セッション監視
- 勅令データサニタイズ(タイトル/備考のクリーニング、不正データの拒否)
- 重複タスク上書き保護
- E2Eかんばんテスト(17アサーション)
フェーズ2 — 制度的深化 🚧
- 御裁可モード(ヒューマン・イン・ザ・ループ)
- 功過簿(エージェントスコアリング + モデル推薦 + コスト最適化)
- EventBus(Redis Streams疑結合通信)
- Outbox Relay(トランザクショナルイベント配信)
- ステートマシン監査(厳格なライフサイクル + 監査ログ)
- 並列ディスパッチエンジン(指数バックオフリトライ + リソースロック)
- DAGオーケストレータ(タスク分解 + 依存関係解決)
- ダッシュボード認証(ログイン認証)
- ワンクリック起動 / systemd本番デプロイ
- 急使(エージェント間メッセージ可視化)
- 翰林院(ナレッジベース+引用)
フェーズ3 — エコシステム
- Docker Compose+デモイメージ
- Notion / Linearアダプター
- 年次考課(年間パフォーマンスレポート)
- モバイルレスポンシブ+PWA
- ClawHubマーケットプレイス掲載
🤝 コントリビューション
あらゆる貢献を歓迎します!CONTRIBUTING.mdをご覧ください
- 🎨 UI — テーマ、レスポンシブ、アニメーション
- 🤖 新エージェント — 専門ロール
- 📦 スキル — 部署専用パッケージ
- 🔗 インテグレーション — Notion · Jira · Linear · GitHub Issues
- 🌐 i18n — 日本語 · 韓国語 · スペイン語
- 📱 モバイル — レスポンシブ、PWA
📖 使用例
examples/ディレクトリには実際のエンドツーエンドのユースケースが含まれています:
| 使用例 | コマンド | 部署 |
|---|---|---|
| 競合分析 | 「CrewAI vs AutoGen vs LangGraphを分析せよ」 | 中書省→門下省→戸部+兵部+礼部 |
| コードレビュー | 「このFastAPIコードのセキュリティ問題をレビューせよ」 | 中書省→門下省→兵部+刑部 |
| 週次レポート | 「今週のエンジニアリングチームレポートを生成せよ」 | 中書省→門下省→戸部+礼部 |
各ケースには以下が含まれます:完全なコマンド → 中書省の提案 → 門下省のフィードバック → 六部の出力 → 最終レポート。
📄 ライセンス
📮 WeChat · 舞台裏
古代中国では、「邸報」が帝国全土に勅令を届けました。今日、私たちにはWeChatアカウントがあります。
ここで見つかるもの:
- 🏛️ アーキテクチャの深掘り — 12エージェントがどのように三権分立を実現するか
- 🔥 実戦記 — エージェントが争い、トークンを消費し、ストライキを起こした時の話
- 💡 トークン節約のコツ — フルパイプラインを1/10のコストで運用
- 🎭 SOUL.mdの裏側 — AIエージェントにキャラクターを維持させるプロンプトの書き方












