Files
sanguo_vnpy/research/vnpy/三国edict浅集成执行流程.md
T
2026-04-11 21:18:55 +08:00

11 KiB
Raw Blame History

三国量化团队 · edict浅集成执行流程

📋 核心原则:完全复用edict原生机制

> 不自己创造,直接用edict已有的 dispatch_for_state + openclaw agent + kanban_update.py


🎯 第一步:三国将军与edict三省六部的映射

edict原有映射

_STATE_AGENT_MAP = {
    'Taizi': 'taizi',        # 太子
    'Zhongshu': 'zhongshu',  # 中书省
    'Menxia': 'menxia',      # 门下省
    'Assigned': 'shangshu',  # 尚书省
    'Doing': None,           # 六部执行
    'Review': 'shangshu',    # 尚书省审查
    'Next': None,            # 待执行
    'Pending': 'zhongshu',   # 中书省待处理
}
_ORG_AGENT_MAP = {
    '礼部': 'libu', '户部': 'hubu', '兵部': 'bingbu',
    '刑部': 'xingbu', '工部': 'gongbu', '吏部': 'libu_hr',
    '中书省': 'zhongshu', '门下省': 'menxia', '尚书省': 'shangshu',
}

我们的三国映射(配置到 agent_config.json

修改 agent_config.json,添加/修改如下内容:

{
  "agents": [
    {
      "id": "zhongshu",
      "name": "诸葛亮",
      "workspace": "workspace-zhugeliang",
      "skills": []
    },
    {
      "id": "menxia",
      "name": "庞统",
      "workspace": "workspace-pangtong",
      "skills": []
    },
    {
      "id": "shangshu",
      "name": "司马懿",
      "workspace": "workspace-simayi",
      "skills": []
    },
    {
      "id": "hubu",
      "name": "赵云",
      "workspace": "workspace-zhaoyun",
      "skills": []
    },
    {
      "id": "bingbu",
      "name": "张飞",
      "workspace": "workspace-zhangfei",
      "skills": []
    },
    {
      "id": "libu",
      "name": "关羽",
      "workspace": "workspace-guanyu",
      "skills": []
    },
    {
      "id": "gongbu",
      "name": "姜维",
      "workspace": "workspace-jiangwei",
      "skills": []
    }
  ]
}

映射关系表:

edict角色 三国将军 agent_id 职责
中书省 诸葛亮 zhongshu 起草方案
门下省 庞统 menxia 审议方案
尚书省 司马懿 shangshu 派发任务/审查
户部 赵云 hubu 数据相关任务
兵部 张飞 bingbu 技术策略任务
礼部 关羽 libu 风控相关任务
工部 姜维 gongbu 基础设施任务

🏗️ 第二步:目录结构与数据流转

数据文件位置(复用edict原生)

/Users/chufeng/edict-data/          # 宿主机目录
├── tasks_source.json                # 任务源文件(用户/Agent修改)
├── live_status.json                 # 前端展示文件(自动生成)
├── sync_status.json                 # 同步状态文件
├── agent_config.json                # Agent配置文件
└── scripts/
    ├── refresh_live_data.py         # 数据刷新脚本
    └── kanban_update.py             # 看板更新工具

Docker容器内(挂载)

/app/data/                           # 容器内数据目录(挂载宿主机)
├── tasks_source.json
├── live_status.json
├── sync_status.json
└── agent_config.json
/app/scripts/                        # 容器内脚本目录
├── refresh_live_data.py
└── kanban_update.py

📋 第三步:完整任务流转示例

场景:皇上让赵云做一个数据分析任务


📝 阶段1:创建任务(皇上操作)

方式A:通过edict看板UI创建

  • 打开 http://192.168.2.153:7891
  • 点击"下旨"创建任务
  • 填写:
    • 任务ID: SG-20260401-001
    • 标题: 分析沪深300指数近30天走势
    • 目标部门: 户部 (赵云)
  • 提交!

方式B:直接修改 tasks_source.json(不推荐,最好用UI

[
  {
    "id": "SG-20260401-001",
    "title": "分析沪深300指数近30天走势",
    "state": "Pending",
    "org": "户部",
    "targetDept": "户部",
    "createdAt": "2026-04-01T09:00:00Z",
    "updatedAt": "2026-04-01T09:00:00Z",
    "now": "📋 待中书省处理",
    "flow_log": []
  }
]

📋 阶段2:中书省(诸葛亮)收到通知

edict自动做的事:

  1. 任务状态 Pending → 查找 _STATE_AGENT_MAP['Pending']'zhongshu'
  2. 后台调用:openclaw agent --agent zhongshu -m <通知消息>

诸葛亮(zhongshu Agent)收到消息:

📜 旨意已到中书省,请起草方案
任务ID: SG-20260401-001
旨意: 分析沪深300指数近30天走势
⚠️ 看板已有此任务记录,请勿重复创建。直接用 kanban_update.py state 更新状态。
请立即起草执行方案,走完完整三省流程(中书起草→门下审议→尚书派发→六部执行)。

诸葛亮的操作:

# 1. 更新任务状态为"中书省"
cd /Users/chufeng/edict-data
python3 scripts/kanban_update.py state SG-20260401-001 Zhongshu "中书省起草方案中"

# 2. 添加流转记录
python3 scripts/kanban_update.py flow SG-20260401-001 "皇上" "中书省" "📜 中书省开始起草方案"

# 3. 写方案,完成后流转到门下省
python3 scripts/kanban_update.py state SG-20260401-001 Menxia "方案已起草,送门下省审议"
python3 scripts/kanban_update.py flow SG-20260401-001 "中书省" "门下省" "📋 方案已提交审议"

🔍 阶段3:门下省(庞统)收到通知

edict自动做的事:

  1. 任务状态 Menxia → 查找 _STATE_AGENT_MAP['Menxia']'menxia'
  2. 后台调用:openclaw agent --agent menxia -m <通知消息>

庞统(menxia Agent)收到消息:

📋 中书省方案提交审议
任务ID: SG-20260401-001
旨意: 分析沪深300指数近30天走势
⚠️ 看板已有此任务,请勿重复创建。
请审议中书省方案,给出准奏或封驳意见。

庞统的操作:

# 1. 审议方案,准奏!
cd /Users/chufeng/edict-data
python3 scripts/kanban_update.py state SG-20260401-001 Assigned "门下省已准奏,送尚书省派发"
python3 scripts/kanban_update.py flow SG-20260401-001 "门下省" "尚书省" "✅ 准奏!请尚书省派发"

📮 阶段4:尚书省(司马懿)收到通知

edict自动做的事:

  1. 任务状态 Assigned → 查找 _STATE_AGENT_MAP['Assigned']'shangshu'
  2. 后台调用:openclaw agent --agent shangshu -m <通知消息>

司马懿(shangshu Agent)收到消息:

📮 门下省已准奏,请派发执行
任务ID: SG-20260401-001
旨意: 分析沪深300指数近30天走势
建议派发部门: 户部
⚠️ 看板已有此任务,请勿重复创建。
请分析方案并派发给六部执行。

司马懿的操作:

# 1. 派发给户部(赵云)
cd /Users/chufeng/edict-data
python3 scripts/kanban_update.py state SG-20260401-001 Doing "尚书省已派发,户部执行中"
python3 scripts/kanban_update.py flow SG-20260401-001 "尚书省" "户部" "📌 任务派发给户部(赵云)"

🚀 阶段5:户部(赵云)收到通知

edict自动做的事:

  1. 任务状态 Doing + 部门 户部 → 查找 _ORG_AGENT_MAP['户部']'hubu'
  2. 后台调用:openclaw agent --agent hubu -m <通知消息>

赵云(hubu Agent)收到消息:

📌 请处理任务
任务ID: SG-20260401-001
旨意: 分析沪深300指数近30天走势
⚠️ 看板已有此任务,请勿重复创建。直接用 kanban_update.py 更新状态。

赵云的操作:

# 1. 先更新看板,表示已接到任务
cd /Users/chufeng/edict-data
python3 scripts/kanban_update.py progress SG-20260401-001 "赵云接旨,开始收集数据" "数据收集🔄|分析处理|生成报告|提交成果"

# 2. 执行实际任务(做数据分析)
# ... 这里是赵云的实际工作代码 ...
# 比如:拉取数据、清洗、分析、生成报告等

# 3. 中期更新进度
python3 scripts/kanban_update.py progress SG-20260401-001 "数据收集完成,正在分析" "数据收集✅|分析处理🔄|生成报告|提交成果"

# 4. 完成任务!
python3 scripts/kanban_update.py progress SG-20260401-001 "分析完成,生成报告" "数据收集✅|分析处理✅|生成报告🔄|提交成果"

# 5. 提交成果给尚书省
python3 scripts/kanban_update.py state SG-20260401-001 Review "户部已完成,送尚书省审查"
python3 scripts/kanban_update.py flow SG-20260401-001 "户部" "尚书省" "✅ 任务完成,请审查"

# 6. 上报详细产出(可选)
python3 scripts/kanban_update.py todo SG-20260401-001 1 "数据分析报告" completed --detail "产出概要:
- 沪深300近30天涨幅:+2.3%
- 最高点:3,580点
- 最低点:3,420点
- 成交量:日均8,500亿
验证结果:通过"

阶段6:尚书省(司马懿)审查

edict自动做的事:

  1. 任务状态 Review → 查找 _STATE_AGENT_MAP['Review']'shangshu'
  2. 后台调用:openclaw agent --agent shangshu -m <通知消息>

司马懿的操作:

# 审查通过!完成任务!
cd /Users/chufeng/edict-data
python3 scripts/kanban_update.py state SG-20260401-001 Done "任务完成!"
python3 scripts/kanban_update.py flow SG-20260401-001 "尚书省" "皇上" "🎉 任务完成!"

🛠️ 第四步:各将军的SOUL.md补充规则

所有将军都要遵守的规则:

  1. 收到 openclaw agent 通知后,第一时间更新看板
  2. 所有看板操作必须用 /Users/chufeng/edict-data/scripts/kanban_update.py
  3. 不要直接读写 tasks_source.json
  4. 关键步骤要用 progress 命令上报进度

📋 第五步:kanban_update.py 完整命令参考

# 基本用法
python3 scripts/kanban_update.py state <任务ID> <新状态> "<说明>"
python3 scripts/kanban_update.py flow <任务ID> "<从哪里>" "<到哪里>" "<备注>"
python3 scripts/kanban_update.py progress <任务ID> "<当前进展>" "<步骤1|步骤2|步骤3>"
python3 scripts/kanban_update.py todo <任务ID> <todo_id> "<标题>" <状态> --detail "<详情>"

# 状态列表(参考)
# Pending, Taizi, Zhongshu, Menxia, Assigned, Doing, Review, Done, Blocked, Cancelled

# 示例
cd /Users/chufeng/edict-data

# 1. 更新状态
python3 scripts/kanban_update.py state SG-20260401-001 Doing "开始执行任务"

# 2. 流转记录
python3 scripts/kanban_update.py flow SG-20260401-001 "中书省" "门下省" "方案提交审议"

# 3. 上报进度
python3 scripts/kanban_update.py progress SG-20260401-001 "正在收集数据" "收集🔄|分析|报告"

# 4. 上报TODO
python3 scripts/kanban_update.py todo SG-20260401-001 1 "数据分析" completed --detail "产出概要:..."

🎯 总结:我们的浅集成方案

方面 方案
通知机制 完全复用 edict的 dispatch_for_state + openclaw agent
任务更新 完全复用 edict的 kanban_update.py 工具
数据存储 完全复用 edict的 tasks_source.json + live_status.json
webhook 不需要,不需要自己创造
定期轮询 不需要,不需要自己创造
Agent映射 配置到 agent_config.json 即可

这就是最纯粹的浅集成:直接用edict已有的一切! 🎉