🏛️ 三省六部制 · OpenClaw Multi-Agent Orchestration System — 9 specialized AI agents with real-time dashboard, model config, and full audit trails
What's inside
🐳 没有 OpenClaw? 跑一行
docker run -p 7891:7891 cft0808/edict即可体验完整看板 Demo(预置模拟数据)。
大多数 Multi-Agent 框架的套路是:
"来,你们几个 AI 自己聊,聊完把结果给我。"
然后你拿到一坨不知道经过了什么处理的结果,无法复现,无法审计,无法干预。
三省六部的思路完全不同 —— 我们用了一个在中国存在 1400 年的制度架构:
你 (皇上) → 太子 (分拣) → 中书省 (规划) → 门下省 (审议) → 尚书省 (派发) → 六部 (执行) → 回奏
这不是花哨的 metaphor,这是真正的分权制衡:
| CrewAI | MetaGPT | AutoGen | 三省六部 | |
|---|---|---|---|---|
| 审核机制 | ❌ 无 | ⚠️ 可选 | ⚠️ Human-in-loop | ✅ 门下省专职审核 · 可封驳 |
| 实时看板 | ❌ | ❌ | ❌ | ✅ 军机处 Kanban + 时间线 |
| 任务干预 | ❌ | ❌ | ❌ | ✅ 叫停 / 取消 / 恢复 |
| 流转审计 | ⚠️ | ⚠️ | ❌ | ✅ 完整奏折存档 |
| Agent 健康监控 | ❌ | ❌ | ❌ | ✅ 心跳 + 活跃度检测 |
| 热切换模型 | ❌ | ❌ | ❌ | ✅ 看板内一键切换 LLM |
| 技能管理 | ❌ | ❌ | ❌ | ✅ 查看 / 添加 Skills |
| 新闻聚合推送 | ❌ | ❌ | ❌ | ✅ 天下要闻 + 飞书推送 |
| 部署难度 | 中 | 高 | 中 | 低 · 一键安装 / Docker |
核心差异:制度性审核 + 完全可观测 + 实时可干预
CrewAI 和 AutoGen 的 Agent 协作模式是 "做完就交"——没有人检查产出质量。就像一个公司没有 QA 部门,工程师写完代码直接上线。
三省六部的 门下省 专门干这件事:
这不是可选的插件——它是架构的一部分。每一个旨意都必须经过门下省,没有例外。
这就是为什么三省六部能处理复杂任务而结果可靠:因为在送到执行层之前,有一个强制的质量关卡。1300 年前唐太宗就想明白了——不受制约的权力必然会出错。
📋 旨意看板 · Kanban
🔭 省部调度 · Monitor
📜 奏折阁 · Memorials
📜 旨库 · Template Library
👥 官员总览 · Officials
📰 天下要闻 · News
⚙️ 模型配置 · Models
🛠️ 技能配置 · Skills
💬 小任务 · Sessions
🎬 上朝仪式 · Ceremony
🏛️ 朝堂议政 · Court Discussion











docker run -p 7891:7891 cft0808/sansheng-demo
打开 http://localhost:7891 即可体验军机处看板。
如果你在 x86/amd64 机器(如 Ubuntu、WSL2)上看到:
exec /usr/local/bin/python3: exec format error
这是因为镜像架构不匹配。请使用 --platform 参数:
docker run --platform linux/amd64 -p 7891:7891 cft0808/sansheng-demo
或使用 docker-compose(已内置 platform: linux/amd64):
docker compose up
git clone https://github.com/cft0808/edict.git
cd edict
chmod +x install.sh && ./install.sh
安装脚本自动完成:
openclaw.jsonsessions.visibility all,解决消息不可达问题)⚠️ 首次安装:需先配置 API Key:
openclaw agents add taizi,然后重新运行./install.sh同步到所有 Agent。
# 方式 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 服务
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 # 停止
💡 看板即开即用:
server.py内嵌dashboard/dashboard.html,Docker 镜像包含预构建的 React 前端
💡 详细教程请看 Getting Started 指南
┌───────────────────────────────────┐
│ 👑 皇上(你) │
│ Feishu · Telegram · Signal │
└─────────────────┬─────────────────┘
│ 下旨
┌─────────────────▼─────────────────┐
│ � 太子 (taizi) │
│ 分拣:闲聊直接回 / 旨意建任务 │
└─────────────────┬─────────────────┘
│ 传旨
┌─────────────────▼─────────────────┐
│ 📜 中书省 (zhongshu) │
│ 接旨 → 规划 → 拆解子任务 │
└─────────────────┬─────────────────┘
│ 提交审核
┌─────────────────▼─────────────────┐
│ 🔍 门下省 (menxia) │
│ 审议方案 → 准奏 / 封驳 🚫 │
└─────────────────┬─────────────────┘
│ 准奏 ✅
┌─────────────────▼─────────────────┐
│ 📮 尚书省 (shangshu) │
│ 派发任务 → 协调六部 → 汇总回奏 │
└───┬──────┬──────┬──────┬──────┬───┘
│ │ │ │ │
┌─────▼┐ ┌───▼───┐ ┌▼─────┐ ┌───▼─┐ ┌▼─────┐
│💰 户部│ │📝 礼部│ │⚔️ 兵部│ │⚖️ 刑部│ │🔧 工部│
│ 数据 │ │ 文档 │ │ 工程 │ │ 合规 │ │ 基建 │
└──────┘ └──────┘ └──────┘ └─────┘ └──────┘
┌──────┐
│📋 吏部│
│ 人事 │
└──────┘
| 部门 | Agent ID | 职责 | 擅长领域 |
|---|---|---|---|
| � 太子 | taizi | 消息分拣、需求整理 | 闲聊识别、旨意提炼、标题概括 |
| 📜 中书省 | zhongshu | 接旨、规划、拆解 | 需求理解、任务分解、方案设计 |
| 🔍 门下省 | menxia | 审议、把关、封驳 | 质量评审、风险识别、标准把控 |
| 📮 尚书省 | shangshu | 派发、协调、汇总 | 任务调度、进度跟踪、结果整合 |
| 💰 户部 | hubu | 数据、资源、核算 | 数据处理、报表生成、成本分析 |
| 📝 礼部 | libu | 文档、规范、报告 | 技术文档、API 文档、规范制定 |
| ⚔️ 兵部 | bingbu | 代码、算法、巡检 | 功能开发、Bug 修复、代码审查 |
| ⚖️ 刑部 | xingbu | 安全、合规、审计 | 安全扫描、合规检查、红线管控 |
| 🔧 工部 | gongbu | CI/CD、部署、工具 | Docker 配置、流水线、自动化 |
| 📋 吏部 | libu_hr | 人事、Agent 管理 | Agent 注册、权限维护、培训 |
| 🌅 早朝官 | zaochao | 每日早朝、新闻聚合 | 定时播报、数据汇总 |
不是想发就能发 —— 真正的分权制衡
| From ↓ \ To → | 太子 | 中书 | 门下 | 尚书 | 户 | 礼 | 兵 | 刑 | 工 | 吏 |
|---|---|---|---|---|---|---|---|---|---|---|
| 太子 | — | ✅ | ||||||||
| 中书省 | ✅ | — | ✅ | ✅ | ||||||
| 门下省 | ✅ | — | ✅ | |||||||
| 尚书省 | ✅ | ✅ | — | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 六部+吏部 | ✅ |
皇上 → 太子分拣 → 中书规划 → 门下审议 → 已派发 → 执行中 → 待审查 → ✅ 已完成
↑ │ │
└──── 封驳 ─┘ 阻塞 Blocked
⚡ 状态转换受保护:
kanban_update.py内置_VALID_TRANSITIONS状态机校验, 非法跳转(如 Doing→Taizi)会被拒绝并记录日志,确保流程不可绕过。🔄 异步事件驱动:服务间通过 Redis Streams EventBus 解耦通信,Outbox Relay 保障事件可靠投递。 所有状态变更自动写入审计日志(
audit.py),支持完整追溯。
edict/
├── agents/ # 12 个 Agent 的人格模板
│ ├── taizi/SOUL.md # 太子 · 消息分拣(含旨意标题规范)
│ ├── zhongshu/SOUL.md # 中书省 · 规划中枢
│ ├── menxia/SOUL.md # 门下省 · 审议把关
│ ├── shangshu/SOUL.md # 尚书省 · 调度大脑
│ ├── hubu/SOUL.md # 户部 · 数据资源
│ ├── libu/SOUL.md # 礼部 · 文档规范
│ ├── bingbu/SOUL.md # 兵部 · 工程实现
│ ├── xingbu/SOUL.md # 刑部 · 合规审计
│ ├── gongbu/SOUL.md # 工部 · 基础设施
│ ├── libu_hr/ # 吏部 · 人事管理
│ └── zaochao/SOUL.md # 早朝官 · 情报枢纽
├── dashboard/
│ ├── dashboard.html # 军机处看板(单文件 · 零依赖 · ~2500 行)
│ ├── dist/ # React 前端构建产物(Docker 镜像内包含,本地可选)
│ ├── auth.py # Dashboard 登录鉴权
│ ├── court_discuss.py # 朝堂议政(多官员 LLM 讨论引擎)
│ └── server.py # API 服务器(Python 标准库 · 零依赖 · ~2300 行)
├── 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 # 各省部 Agent 人格模板
│ ├── GLOBAL.md # 全局 Agent 配置
│ └── groups/ # Agent 分组(sansheng / liubu)
├── scripts/
│ ├── run_loop.sh # 数据刷新循环(每 15 秒)
│ ├── kanban_update.py # 看板 CLI(含旨意数据清洗 + 标题校验 + 状态机)
│ ├── skill_manager.py # Skill 管理工具(远程/本地 Skills 添加、更新、移除)
│ ├── agentrec_advisor.py # Agent 模型推荐(功过簿 + 成本优化)
│ ├── linucb_router.py # LinUCB 智能路由
│ ├── refresh_watcher.py # 数据变更监听
│ ├── sync_from_openclaw_runtime.py
│ ├── sync_agent_config.py
│ ├── sync_officials_stats.py
│ ├── fetch_morning_news.py
│ ├── refresh_live_data.py
│ ├── apply_model_changes.py
│ └── file_lock.py # 文件锁(防多 Agent 并发写入)
├── tests/
│ ├── test_e2e_kanban.py # 端到端测试(17 个断言)
│ └── test_state_machine_consistency.py # 状态机一致性测试
├── data/ # 运行时数据(gitignored)
├── docs/
│ ├── task-dispatch-architecture.md # 📚 详细架构文档:任务分发、流转、调度的完整设计(业务+技术)
│ ├── getting-started.md # 快速上手指南
│ ├── wechat-article.md # 微信文章
│ └── screenshots/ # 功能截图(11 张)
├── install.sh # 一键安装脚本
├── start.sh # 一键启动(Dashboard + 数据刷新)
├── edict.service # systemd 服务配置(生产部署)
├── edict.sh # 服务管理脚本(start/stop/restart/status)
├── CONTRIBUTING.md # 贡献指南
└── LICENSE # MIT License
通过 Feishu / Telegram / Signal 给中书省发消息:
给我设计一个用户注册系统,要求:
1. RESTful API(FastAPI)
2. PostgreSQL 数据库
3. JWT 鉴权
4. 完整测试用例
5. 部署文档
然后坐好,看戏:
全程可在军机处看板实时监控,随时可以叫停、取消、恢复。
看板 → 📜 旨库 → 选模板 → 填参数 → 下旨
9 个预设模板:周报生成 · 代码审查 · API 设计 · 竞品分析 · 数据报告 · 博客文章 · 部署方案 · 邮件文案 · 站会摘要
编辑 agents/<id>/SOUL.md 即可修改 Agent 的人格、职责和输出规范。
三种方式添加 Skills:
看板 → 🔧 技能配置 → ➕ 添加远程 Skill
→ 输入 Agent + Skill 名称 + GitHub URL
→ 确认 → ✅ 完成
# 从 GitHub 添加 mmx_cli skill 到门下省
python3 scripts/skill_manager.py add-remote \
--agent menxia \
--name mmx_cli \
--source https://raw.githubusercontent.com/MiniMax-AI/cli/main/skill/SKILL.md \
--description "MiniMax 多模态 CLI 技能"
# 一键导入默认 skills 到指定 agents
python3 scripts/skill_manager.py import-official-hub \
--agents menxia,shangshu
# 列出所有已添加的远程 skills
python3 scripts/skill_manager.py list-remote
# 更新某个 skill 到最新版本
python3 scripts/skill_manager.py update-remote \
--agent menxia \
--name mmx_cli
# 添加远程 skill
curl -X POST http://localhost:7891/api/add-remote-skill \
-H "Content-Type: application/json" \
-d '{
"agentId": "menxia",
"skillName": "mmx_cli",
"sourceUrl": "https://raw.githubusercontent.com/MiniMax-AI/cli/main/skill/SKILL.md",
"description": "MiniMax 多模态 CLI 技能"
}'
# 查看所有远程 skills
curl http://localhost:7891/api/remote-skills-list
默认可导入 Skill:
支持的 Skills:
mmx_cli — MiniMax 多模态 CLI 技能(文本、图像、视频、语音、音乐、搜索)如果你有自己的 Skills Hub,可以通过 OPENCLAW_SKILLS_HUB_BASE 或 ~/.openclaw/skills-hub-url 配置自定义源。
| 特点 | 说明 |
|---|---|
| React 18 前端 | TypeScript + Vite + Zustand 状态管理,13 个功能组件 |
| 纯 stdlib 后端 | server.py 基于 http.server,零依赖,同时提供 API + 静态文件服务 |
| EventBus 事件总线 | Redis Streams 发布/订阅,服务间解耦通信 |
| Outbox Relay | 事务性 Outbox 模式,保障事件可靠投递(至少一次语义) |
| 状态机审计 | 严格生命周期状态转换 + 完整审计日志(audit.py) |
| 并行调度引擎 | Dispatch Worker 支持并行执行、指数退避重试、资源锁 |
| DAG 编排器 | Orchestrator 基于 DAG 的任务分解与依赖解析 |
| Agent 思考可视 | 实时展示 Agent 的 thinking 过程、工具调用、返回结果 |
| 一键安装 / 一键启动 | install.sh 自动配置,start.sh 一条命令启动全部服务 |
| systemd 生产部署 | edict.service 支持 systemd 守护进程,开机自启 |
| 15 秒同步 | 数据自动刷新,看板倒计时显示 |
| Dashboard 鉴权 | auth.py 提供看板登录认证 |
| 每日仪式 | 首次打开播放上朝开场动画 |
| 远程 Skills 生态 | 从 GitHub/URL 一键导入能力,支持版本管理 + CLI + API + UI |
📖 任务分发流转完整架构 — 必读文档
🎓 远程 Skills 资源管理指南 — Skills 生态
⚡ Remote Skills 快速入门 — 5 分钟上手
🚀 快速上手指南 — 新手入门
🤝 贡献指南 — 想参与贡献?从这里开始
症状:六部或尚书省已完成任务,但太子收不到回报,最终超时。
排查步骤:
curl -s http://127.0.0.1:7891/api/agents-status | python3 -m json.tool
确认 taizi agent 的 statusLabel 是 alive。
ls /tmp/openclaw/ | tail -5 # 找到最新日志
grep -i "error\|fail\|unknown" /tmp/openclaw/openclaw-*.log | tail -20
常见原因:
main → taizi)ps aux | grep openclaw 检查)强制重试:
# 手动触发巡检扫描(自动重试卡住的任务)
curl -X POST http://127.0.0.1:7891/api/scheduler-scan \
-H 'Content-Type: application/json' -d '{"thresholdSec":60}'
症状:exec /usr/local/bin/python3: exec format error
原因:镜像架构(arm64)与主机架构(amd64)不匹配。
解决:
# 方法 1:指定平台
docker run --platform linux/amd64 -p 7891:7891 cft0808/sansheng-demo
# 方法 2:使用 docker-compose(已内置 platform)
docker compose up
症状:python3 scripts/skill_manager.py import-official-hub 报错。
排查:
# 测试网络连通性
curl -I https://raw.githubusercontent.com/MiniMax-AI/cli/main/skill/SKILL.md
# 如果超时,使用代理
export https_proxy=http://your-proxy:port
python3 scripts/skill_manager.py import-official-hub --agents menxia
常见原因:
完整路线图及参与方式:ROADMAP.md
欢迎任何形式的贡献!详见 CONTRIBUTING.md
特别欢迎的方向:
examples/ 目录收录了真实的端到端使用案例:
| 案例 | 旨意 | 涉及部门 |
|---|---|---|
| 竞品分析 | "分析 CrewAI vs AutoGen vs LangGraph" | 中书→门下→户部+兵部+礼部 |
| 代码审查 | "审查这段 FastAPI 代码的安全性" | 中书→门下→兵部+刑部 |
| 周报生成 | "生成本周工程团队周报" | 中书→门下→户部+礼部 |
每个案例包含:完整旨意 → 中书省规划 → 门下省审核意见 → 各部执行结果 → 最终奏折。
如果这个项目让你会心一笑,请给个 Star ⚔️
古有邸报传天下政令,今有公众号聊 AI 架构。
你会看到:
"朕让 AI 上朝,结果 AI 比朕还卷。" —— 关注后你会懂的。
.dockerignore
.github/
CODEOWNERS
dependabot.yml
ISSUE_TEMPLATE/
bug_report.md
config.yml
feature_request.md
question.md
labeler.yml
pull_request_template.md
workflows/
auto-label.yml
ci.yml
docker-publish.yml
stale.yml
.gitignore
agents/
agents.json
bingbu/
SOUL.md
GLOBAL.md
gongbu/
SOUL.md
groups/
liubu.md
sansheng.md
hubu/
SOUL.md
libu/
libu_hr/
SOUL.md
SOUL.md
menxia/
SOUL.md
qintianjian/
SOUL.md
shangshu/
SOUL.md
taizi/
SOUL.md
xingbu/
SOUL.md
zaochao/
SOUL.md
zhongshu/
SOUL.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
dashboard/
auth.py
court_discuss.py
dashboard.html
dist/
assets/
index-DQ-p_wPk.js
index-NQIHw-yB.css
index.html
server.py
data/
schema.json
docker/
docker-compose.yml
demo_data/
agent_config.json
last_model_change_result.json
live_status.json
model_change_log.json
morning_brief.json
officials_stats.json
openclaw.json
pending_model_changes.json
tasks_source.json
Dockerfile
docs/
Agent_video_Pippit_20260225121727.mp4
assets/
wechat-qrcode.jpg
dashboard-upgrade-plan.md
demo.gif
design-docker.md
design-imperial-review.md
design-mobile-responsive.md
getting-started.md
performance-baseline-plan.md
remote-skills-guide.md
remote-skills-quickstart.md
screenshots/
01-kanban-main.png
01-task-board-archived.png
02-monitor.png
02-task-board-all.png
03-memorial-hall.png
03-task-detail.png
04-model-config.png
04-officials-overview.png
05-dispatch.png
05-skills-config.png
06-model-config.png
06-official-overview.png
07-news.png
07-sessions.png
08-memorials.png
08-skills.png
09-court-discuss.png
09-templates.png
10-morning-briefing.png
10-task-detail.png
11-ceremony.png
article-01-completed-tasks.png
article-02-cancelled-tasks.png
article-03-task-detail-top.png
article-04-task-detail-rejection.png
article-05-security-audit-top.png
article-06-security-audit-rejection.png
article-07-officials.png
article-08-model-config.png
article-09-dispatch.png
dashboard-full.png
dashboard-main.png
dashboard-scrolled.png
README.md
task-dispatch-architecture.md
wechat-article.md
wechat.md
edict/
edict_agent_architecture.md
edict.service
edict.sh
.env.example
alembic.ini
backend/
app/
__init__.py
api/
__init__.py
admin.py
agents.py
events.py
legacy.py
tasks.py
websocket.py
channels/
__init__.py
base.py
discord.py
feishu.py
qq.py
slack.py
telegram.py
webhook.py
wecom.py
config.py
db.py
main.py
models/
__init__.py
audit.py
event.py
outbox.py
task.py
thought.py
todo.py
services/
__init__.py
event_bus.py
task_service.py
workers/
__init__.py
dispatch_worker.py
orchestrator_worker.py
outbox_relay.py
requirements.txt
docker-compose.yml
Dockerfile
frontend/
.env.development
Dockerfile
index.html
nginx.conf
package-lock.json
package.json
postcss.config.js
src/
api.ts
App.tsx
components/
ConfirmDialog.tsx
CourtCeremony.tsx
CourtDiscussion.tsx
EdictBoard.tsx
MemorialPanel.tsx
ModelConfig.tsx
MonitorPanel.tsx
MorningPanel.tsx
OfficialPanel.tsx
SessionsPanel.tsx
SkillsConfig.tsx
TaskModal.tsx
TemplatePanel.tsx
Toaster.tsx
index.css
main.tsx
store.ts
time.ts
vite-env.d.ts
tailwind.config.js
tsconfig.json
vite.config.ts
migration/
env.py
migrate_json_to_pg.py
script.py.mako
versions/
001_initial.py
scripts/
kanban_update_edict.py
朝堂议政_开发规格.md
examples/
code-review.md
competitive-analysis.md
README.md
weekly-report.md
install.ps1
install.sh
LICENSE
README_EN.md
README_JA.md
README.md
requirements.txt
ROADMAP.md
scripts/
agentrec_advisor.py
apply_model_changes.py
fetch_morning_news.py
file_lock.py
kanban_update.py
linucb_router.py
record_demo.py
refresh_live_data.py
refresh_watcher.py
run_loop.ps1
run_loop.sh
skill_manager.py
sync_agent_config.py
sync_from_openclaw_runtime.py
sync_officials_stats.py
take_screenshots.py
utils.py
SECURITY.md
start.sh
tests/
test_cwe22_file_url.py
test_dashboard_dispatch.py
test_dashboard_review_action.py
test_e2e_kanban.py
test_file_lock.py
test_kanban.py
test_server.py
test_skill_manager.py
test_state_machine_consistency.py
test_sync_agent_config.py
test_sync_symlinks.py
test_task_mutation_race.py
uninstall.sh
WINDOWS_INSTALL_CN.mdFAQ
edict is a Claude Code plugin with hand-picked skills for automation work, indexed on Flowy. Install it with the command on its page. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.