docs: update README (zh/en/ja) for Week 0-4 features

- 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
This commit is contained in:
cft0808
2026-04-04 12:29:08 +08:00
parent 74d8130391
commit f6af76bc6c
3 changed files with 206 additions and 28 deletions

View File

@@ -311,16 +311,36 @@ chmod +x install.sh && ./install.sh
#### 启动
```bash
# 终端 1数据刷新循环
bash scripts/run_loop.sh
# 方式 1一键启动(推荐)
chmod +x start.sh && ./start.sh
# 终端 2看板服务器
python3 dashboard/server.py
# 方式 2分别启动
bash scripts/run_loop.sh & # 数据刷新循环
python3 dashboard/server.py # 看板服务器
# 打开浏览器
open http://127.0.0.1:7891
```
<details>
<summary><b>🖥️ 生产环境部署systemd</b></summary>
```bash
# 安装 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 # 停止
```
</details>
> 💡 **看板即开即用**`server.py` 内嵌 `dashboard/dashboard.html`Docker 镜像包含预构建的 React 前端
> 💡 详细教程请看 [Getting Started 指南](docs/getting-started.md)
@@ -403,6 +423,9 @@ open http://127.0.0.1:7891
> ⚡ **状态转换受保护**`kanban_update.py` 内置 `_VALID_TRANSITIONS` 状态机校验,
> 非法跳转(如 Doing→Taizi会被拒绝并记录日志确保流程不可绕过。
>
> 🔄 **异步事件驱动**:服务间通过 Redis Streams EventBus 解耦通信Outbox Relay 保障事件可靠投递。
> 所有状态变更自动写入审计日志(`audit.py`),支持完整追溯。
---
@@ -425,12 +448,32 @@ edict/
├── 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含旨意数据清洗 + 标题校验)
│ ├── 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
@@ -439,7 +482,8 @@ edict/
│ ├── apply_model_changes.py
│ └── file_lock.py # 文件锁(防多 Agent 并发写入)
├── tests/
── test_e2e_kanban.py # 端到端测试17 个断言)
── test_e2e_kanban.py # 端到端测试17 个断言)
│ └── test_state_machine_consistency.py # 状态机一致性测试
├── data/ # 运行时数据gitignored
├── docs/
│ ├── task-dispatch-architecture.md # 📚 详细架构文档:任务分发、流转、调度的完整设计(业务+技术)
@@ -447,6 +491,9 @@ edict/
│ ├── wechat-article.md # 微信文章
│ └── screenshots/ # 功能截图11 张)
├── install.sh # 一键安装脚本
├── start.sh # 一键启动Dashboard + 数据刷新)
├── edict.service # systemd 服务配置(生产部署)
├── edict.sh # 服务管理脚本start/stop/restart/status
├── CONTRIBUTING.md # 贡献指南
└── LICENSE # MIT License
```
@@ -560,9 +607,16 @@ curl http://localhost:7891/api/remote-skills-list
|------|------|
| **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` 自动完成全部配置 |
| **一键安装 / 一键启动** | `install.sh` 自动配置`start.sh` 一条命令启动全部服务 |
| **systemd 生产部署** | `edict.service` 支持 systemd 守护进程,开机自启 |
| **15 秒同步** | 数据自动刷新,看板倒计时显示 |
| **Dashboard 鉴权** | `auth.py` 提供看板登录认证 |
| **每日仪式** | 首次打开播放上朝开场动画 |
| **远程 Skills 生态** | 从 GitHub/URL 一键导入能力,支持版本管理 + CLI + API + UI |
@@ -697,7 +751,14 @@ python3 scripts/skill_manager.py import-official-hub --agents zhongshu
### Phase 2 — 制度深化 🚧
- [ ] 御批模式(人工审批 + 一键准奏/封驳)
- [ ] 功过簿Agent 绩效评分体系
- [x] 功过簿Agent 绩效评分 + 模型推荐 + 成本优化
- [x] EventBus 事件总线Redis Streams 解耦通信)
- [x] Outbox Relay事务性事件投递
- [x] 状态机审计(严格生命周期 + 审计日志)
- [x] 并行调度引擎(指数退避重试 + 资源锁)
- [x] DAG 编排器(任务分解 + 依赖解析)
- [x] Dashboard 鉴权(登录认证)
- [x] 一键启动 / systemd 生产部署
- [ ] 急递铺Agent 间实时消息流可视化)
- [ ] 国史馆(知识库检索 + 引用溯源)

View File

@@ -214,16 +214,36 @@ The installer automatically:
### Launch
```bash
# Terminal 1: Data sync loop (every 15s)
bash scripts/run_loop.sh
# Option 1: One-click launch (recommended)
chmod +x start.sh && ./start.sh
# Terminal 2: Dashboard server
python3 dashboard/server.py
# Option 2: Manual launch
bash scripts/run_loop.sh & # Data sync loop
python3 dashboard/server.py # Dashboard server
# Open browser
open http://127.0.0.1:7891
```
<details>
<summary><b>🖥️ Production deployment (systemd)</b></summary>
```bash
# Install systemd service
sudo cp edict.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable edict
sudo systemctl start edict
# Or use management script
bash edict.sh start # Start
bash edict.sh status # Check status
bash edict.sh restart # Restart
bash edict.sh stop # Stop
```
</details>
> 📖 See [Getting Started Guide](docs/getting-started.md) for detailed walkthrough.
---
@@ -318,15 +338,40 @@ edict/
├── dashboard/
│ ├── dashboard.html # Dashboard (single file, zero deps, works out of the box)
│ ├── dist/ # Pre-built React frontend (included in Docker image)
│ ├── auth.py # Dashboard login authentication
│ ├── court_discuss.py # Court discussion (multi-agent LLM debate engine)
│ └── server.py # API server (stdlib, zero deps)
├── edict/backend/ # Async backend services (SQLAlchemy + Redis)
│ ├── app/models/
│ │ ├── task.py # Task model + state machine
│ │ ├── audit.py # Audit log model
│ │ └── outbox.py # Outbox message model
│ ├── app/services/
│ │ ├── event_bus.py # Redis Streams EventBus
│ │ └── task_service.py # Task service layer
│ └── app/workers/
│ ├── dispatch_worker.py # Parallel dispatch + retry + resource lock
│ ├── orchestrator_worker.py # DAG orchestrator
│ └── outbox_relay.py # Transactional Outbox Relay
├── agents/
│ ├── <agent_id>/SOUL.md # Agent personality templates
│ ├── GLOBAL.md # Global agent config
│ └── groups/ # Agent groups (sansheng / liubu)
├── scripts/ # Data sync & automation scripts
│ ├── kanban_update.py # Kanban CLI with data sanitization (~300 lines)
── ... # fetch_morning_news, sync, screenshots, etc.
├── tests/ # E2E tests
── test_e2e_kanban.py # Kanban sanitization tests (17 assertions)
│ ├── kanban_update.py # Kanban CLI with data sanitization + state machine
── agentrec_advisor.py # Agent model recommendation (merit + cost optimization)
│ ├── linucb_router.py # LinUCB smart routing
── refresh_watcher.py # Data change watcher
│ └── ... # fetch_morning_news, sync, etc.
├── tests/
│ ├── test_e2e_kanban.py # Kanban sanitization tests (17 assertions)
│ └── test_state_machine_consistency.py # State machine consistency tests
├── data/ # Runtime data (gitignored)
├── docs/ # Documentation + screenshots
├── install.sh # One-click installer
├── start.sh # One-click launch (Dashboard + data sync)
├── edict.service # systemd service config (production deploy)
├── edict.sh # Service management (start/stop/restart/status)
└── LICENSE # MIT
```
@@ -338,9 +383,16 @@ edict/
|---|---|
| **React 18 Frontend** | TypeScript + Vite + Zustand, 13 components |
| **stdlib Backend** | `server.py` on `http.server`, zero dependencies |
| **EventBus** | Redis Streams pub/sub for decoupled service communication |
| **Outbox Relay** | Transactional outbox pattern for reliable event delivery (at-least-once) |
| **State Machine Audit** | Strict lifecycle transitions + full audit logging (`audit.py`) |
| **Parallel Dispatch** | Dispatch Worker with parallel execution, exponential backoff retry, resource locking |
| **DAG Orchestrator** | Task decomposition and dependency resolution via DAG |
| **Agent Thinking Visible** | Real-time display of agent thinking, tool calls, results |
| **One-click Install** | Workspace creation to Gateway restart |
| **One-click Install / Launch** | `install.sh` auto-configures, `start.sh` launches all services |
| **systemd Production Deploy** | `edict.service` for daemon process, auto-restart on boot |
| **15s Auto-sync** | Live data refresh with countdown |
| **Dashboard Auth** | `auth.py` provides login authentication |
| **Daily Ceremony** | Immersive opening animation |
---
@@ -367,7 +419,14 @@ edict/
### Phase 2 — Institutional Depth 🚧
- [ ] Imperial approval mode (human-in-the-loop)
- [ ] Merit/demerit ledger (agent scoring)
- [x] Merit/demerit ledger (agent scoring + model recommendation + cost optimization)
- [x] EventBus (Redis Streams decoupled communication)
- [x] Outbox Relay (transactional event delivery)
- [x] State machine audit (strict lifecycle + audit logging)
- [x] Parallel dispatch engine (exponential backoff retry + resource lock)
- [x] DAG orchestrator (task decomposition + dependency resolution)
- [x] Dashboard authentication (login auth)
- [x] One-click launch / systemd production deploy
- [ ] Express courier (inter-agent message visualization)
- [ ] Imperial Archives (knowledge base + citation)

View File

@@ -214,16 +214,36 @@ chmod +x install.sh && ./install.sh
### 起動
```bash
# ターミナル1データ同期ループ15秒間隔
bash scripts/run_loop.sh
# 方法1ワンクリック起動推奨
chmod +x start.sh && ./start.sh
# ターミナル2ダッシュボードサーバー
python3 dashboard/server.py
# 方法2手動起動
bash scripts/run_loop.sh & # データ同期ループ
python3 dashboard/server.py # ダッシュボードサーバー
# ブラウザを開く
open http://127.0.0.1:7891
```
<details>
<summary><b>🖥️ 本番環境デプロイsystemd</b></summary>
```bash
# 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 # 停止
```
</details>
> 📖 詳細なウォークスルーは[スタートガイド](docs/getting-started.md)をご覧ください。
---
@@ -318,15 +338,39 @@ edict/
├── 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データサニタイズ付き、約300行
── ... # fetch_morning_news、sync、screenshotsなど
├── tests/ # E2Eテスト
│ └── test_e2e_kanban.py # かんばんサニタイズテスト17アサーション
│ ├── 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
```
@@ -338,9 +382,16 @@ edict/
|---|---|
| **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ベースのタスク分解と依存関係解決 |
| **エージェント思考の可視化** | エージェントの思考、ツール呼び出し、結果をリアルタイム表示 |
| **ワンクリックインストール** | ワークスペース作成からGateway再起動まで |
| **ワンクリックインストール / 起動** | `install.sh`で自動設定、`start.sh`で全サービス起動 |
| **systemd本番デプロイ** | `edict.service`でデーモンプロセス、起動時自動開始 |
| **15秒自動同期** | カウントダウン付きライブデータリフレッシュ |
| **ダッシュボード認証** | `auth.py`でログイン認証 |
| **朝議セレモニー** | 没入型オープニングアニメーション |
---
@@ -367,7 +418,14 @@ edict/
### フェーズ2 — 制度的深化 🚧
- [ ] 御裁可モード(ヒューマン・イン・ザ・ループ)
- [ ] 功過簿(エージェントスコアリング)
- [x] 功過簿(エージェントスコアリング + モデル推薦 + コスト最適化
- [x] EventBusRedis Streams疑結合通信
- [x] Outbox Relayトランザクショナルイベント配信
- [x] ステートマシン監査(厳格なライフサイクル + 監査ログ)
- [x] 並列ディスパッチエンジン(指数バックオフリトライ + リソースロック)
- [x] DAGオーケストレータタスク分解 + 依存関係解決)
- [x] ダッシュボード認証(ログイン認証)
- [x] ワンクリック起動 / systemd本番デプロイ
- [ ] 急使(エージェント間メッセージ可視化)
- [ ] 翰林院(ナレッジベース+引用)