重构 API 路由并新增工作流编排功能

后端:
- 重构 agents, heartbeats, locks, meetings, resources, roles, workflows 路由
- 新增 orchestrator 和 providers 路由
- 新增 CLI 调用器和流程编排服务
- 添加日志配置和依赖项

前端:
- 更新 AgentsPage、SettingsPage、WorkflowPage 页面
- 扩展 api.ts 新增 API 接口

其他:
- 清理测试 agent 数据文件
- 新增示例工作流和项目审计报告

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Code
2026-03-10 16:36:25 +08:00
parent 7a5a58b4e5
commit 1719d1f1f9
54 changed files with 3175 additions and 612 deletions
@@ -0,0 +1,57 @@
{
"meeting_id": "dinner-proposals",
"title": "晚饭提议",
"date": "2026-03-10",
"attendees": [
"chef-claude",
"health-kimi",
"budget-opencode"
],
"steps": [
{
"step_id": "step_1",
"label": "提议",
"status": "completed",
"completed_at": "2026-03-10T15:05:07.995673"
},
{
"step_id": "step_2",
"label": "讨论",
"status": "pending",
"completed_at": ""
},
{
"step_id": "step_3",
"label": "共识",
"status": "completed",
"completed_at": "2026-03-10T15:05:27.690590"
}
],
"discussions": [
{
"agent_id": "chef-claude",
"agent_name": "美食家 (Claude)",
"content": "这是 **Swarm Command Center** 中「晚饭提议」工作流的模拟场景。\n\n## 场景说明\n\n在这个场景中,多个 AI Agent 会扮演不同角色(大厨、健康顾问、预算管理员等)来讨论晚餐选择,最终达成共识。\n\n**讨论流程**\n1. **提议** - 各 Agent 依次发言(2-3句话)\n2. **讨论** - 记录到会议系统\n3. **共识** - 生成最终决议\n\n**角色设定**`workflow_orchestrator.py:108-141`):\n- **chef**(美食达人)- 关注口味、食材\n- **health**(健康顾问)- 关注营养均衡\n- **budget**(预算管理)- 关注性价比\n- **pm**(产品经理)- 综合决策\n\n---\n\n你想做什么?\n\n1. **启动工作流** - 运行完整的晚饭决策流程\n2. **查看运行状态** - 查看之前的编排结果\n3. **创建/修改工作流定义** - 编辑 `.doc/workflow/dinner-decision.yaml`\n4. **查看现有 Agent 状态** - 确认参与讨论的 Agent 是否已注册",
"timestamp": "2026-03-10T15:04:31.968972",
"step": "讨论"
},
{
"agent_id": "health-kimi",
"agent_name": "营养师 (Kimi)",
"content": "建议晚餐采用\"蔬菜占一半、蛋白质占四分之一、主食占四分之一\"的搭配原则,优先选择\n清蒸、炖煮等低油烹饪方式。控制总热量在500-700千卡之间,避免高盐高糖的加工食品\n。如果有外卖计划,请选择卫生评级B级以上的商家。",
"timestamp": "2026-03-10T15:04:48.638259",
"step": "讨论"
},
{
"agent_id": "budget-opencode",
"agent_name": "预算管家 (OpenCode)",
"content": "您好!请告诉我您希望我扮演什么角色,以及讨论的具体场景是什么?这样我才能给出合适的观点和建议。",
"timestamp": "2026-03-10T15:05:07.977497",
"step": "讨论"
}
],
"status": "completed",
"created_at": "2026-03-10T15:01:32.839808",
"ended_at": "2026-03-10T15:05:27.690584",
"consensus": "根据营养师的专业建议和讨论情况,晚餐共识如下:\n\n我们决定晚餐遵循\"蔬菜占一半、蛋白质占四分之一、主食占四分之一\"的健康搭配原则,\n优先采用清蒸、炖煮等低油烹饪方式,将总热量控制在500-700千卡之间。如需外卖,必\n须选择卫生评级B级以上的商家,同时避免高盐高糖的加工食品。请按此标准准备或订购\n今晚的晚餐。"
}
@@ -0,0 +1,69 @@
# 晚饭提议
**会议 ID**: dinner-proposals
**日期**: 2026-03-10
**状态**: completed
**参会者**: chef-claude, health-kimi, budget-opencode
## 会议进度
-**提议** (2026-03-10T15:05:07.995673)
-**讨论**
-**共识** (2026-03-10T15:05:27.690590)
## 讨论记录
### 美食家 (Claude) - 2026-03-10T15:04:31
*步骤: 讨论*
这是 **Swarm Command Center** 中「晚饭提议」工作流的模拟场景。
## 场景说明
在这个场景中,多个 AI Agent 会扮演不同角色(大厨、健康顾问、预算管理员等)来讨论晚餐选择,最终达成共识。
**讨论流程**
1. **提议** - 各 Agent 依次发言(2-3句话)
2. **讨论** - 记录到会议系统
3. **共识** - 生成最终决议
**角色设定**`workflow_orchestrator.py:108-141`):
- **chef**(美食达人)- 关注口味、食材
- **health**(健康顾问)- 关注营养均衡
- **budget**(预算管理)- 关注性价比
- **pm**(产品经理)- 综合决策
---
你想做什么?
1. **启动工作流** - 运行完整的晚饭决策流程
2. **查看运行状态** - 查看之前的编排结果
3. **创建/修改工作流定义** - 编辑 `.doc/workflow/dinner-decision.yaml`
4. **查看现有 Agent 状态** - 确认参与讨论的 Agent 是否已注册
### 营养师 (Kimi) - 2026-03-10T15:04:48
*步骤: 讨论*
建议晚餐采用"蔬菜占一半、蛋白质占四分之一、主食占四分之一"的搭配原则,优先选择
清蒸、炖煮等低油烹饪方式。控制总热量在500-700千卡之间,避免高盐高糖的加工食品
。如果有外卖计划,请选择卫生评级B级以上的商家。
### 预算管家 (OpenCode) - 2026-03-10T15:05:07
*步骤: 讨论*
您好!请告诉我您希望我扮演什么角色,以及讨论的具体场景是什么?这样我才能给出合适的观点和建议。
## 共识
根据营养师的专业建议和讨论情况,晚餐共识如下:
我们决定晚餐遵循"蔬菜占一半、蛋白质占四分之一、主食占四分之一"的健康搭配原则,
优先采用清蒸、炖煮等低油烹饪方式,将总热量控制在500-700千卡之间。如需外卖,必
须选择卫生评级B级以上的商家,同时避免高盐高糖的加工食品。请按此标准准备或订购
今晚的晚餐。
---
**创建时间**: 2026-03-10T15:01:32.839808
**结束时间**: 2026-03-10T15:05:27.690584
+57
View File
@@ -0,0 +1,57 @@
{
"meeting_id": "dinner-vote",
"title": "讨论与投票",
"date": "2026-03-10",
"attendees": [
"chef-claude",
"health-kimi",
"budget-opencode"
],
"steps": [
{
"step_id": "step_1",
"label": "提议",
"status": "completed",
"completed_at": "2026-03-10T15:06:51.426835"
},
{
"step_id": "step_2",
"label": "讨论",
"status": "pending",
"completed_at": ""
},
{
"step_id": "step_3",
"label": "共识",
"status": "completed",
"completed_at": "2026-03-10T15:07:36.101402"
}
],
"discussions": [
{
"agent_id": "chef-claude",
"agent_name": "美食家 (Claude)",
"content": "我无法直接访问 `.doc/` 目录中的会议和工作流数据。请帮我确认一下你的具体需求:\n\n**关于「讨论与投票」场景,你希望:**\n\n1. **创建一个新的会议** - 用于团队讨论和投票某个议题?\n2. **查看当前进行中的会议** - 是否有 ID 或名称?\n3. **在工作流中添加步骤** - 将「讨论与投票」作为工作流的一个阶段?\n4. **模拟/记录讨论内容** - 记录团队成员的讨论发言?\n\n如果是创建会议,请提供:\n- 会议主题/标题\n- 参与讨论的 Agent ID 列表(如:claude-001, kimi-001\n- (可选)具体要讨论和投票的内容\n\n请告诉我具体想做什么,我来协助你操作。",
"timestamp": "2026-03-10T15:06:13.624257",
"step": "讨论"
},
{
"agent_id": "health-kimi",
"agent_name": "营养师 (Kimi)",
"content": "作为营养师,我认可上一轮达成的\"蔬菜半盘、蛋白和主食各四分之一\"的餐盘比例共识,\n这是符合《中国居民膳食指南》的黄金搭配。清蒸和炖煮确实能最大程度保留营养并减少\n油脂摄入,建议大家在点餐或烹饪前先用手机备忘录规划好食材比例,避免临时决策导致\n热量超标。另外提醒一点,外卖酱料包往往藏有隐形盐分,尽量选择独立包装的酱料并只\n使用三分之一。",
"timestamp": "2026-03-10T15:06:31.458353",
"step": "讨论"
},
{
"agent_id": "budget-opencode",
"agent_name": "预算管家 (OpenCode)",
"content": "我明白了,但您还没有告诉我需要扮演什么角色以及讨论的场景是什么,请提供更多背景信息。",
"timestamp": "2026-03-10T15:06:51.411820",
"step": "讨论"
}
],
"status": "completed",
"created_at": "2026-03-10T15:05:27.693693",
"ended_at": "2026-03-10T15:07:36.101395",
"consensus": "根据讨论记录,各参与者对「讨论与投票」场景的理解尚未对齐:美食家询问具体需求方\n向,营养师分享了健康饮食建议,预算管家则表示未收到角色设定。显然讨论缺乏统一的\n场景背景和明确的议题目标。共识是需要先明确角色扮演场景、统一讨论主题,并建立基\n本的沟通框架。下一步行动方案是:由主持人重新定义场景和角色任务,确保所有参与者\n围绕同一议题展开讨论,然后再进行实质性交流和投票决策。"
}
+60
View File
@@ -0,0 +1,60 @@
# 讨论与投票
**会议 ID**: dinner-vote
**日期**: 2026-03-10
**状态**: completed
**参会者**: chef-claude, health-kimi, budget-opencode
## 会议进度
-**提议** (2026-03-10T15:06:51.426835)
-**讨论**
-**共识** (2026-03-10T15:07:36.101402)
## 讨论记录
### 美食家 (Claude) - 2026-03-10T15:06:13
*步骤: 讨论*
我无法直接访问 `.doc/` 目录中的会议和工作流数据。请帮我确认一下你的具体需求:
**关于「讨论与投票」场景,你希望:**
1. **创建一个新的会议** - 用于团队讨论和投票某个议题?
2. **查看当前进行中的会议** - 是否有 ID 或名称?
3. **在工作流中添加步骤** - 将「讨论与投票」作为工作流的一个阶段?
4. **模拟/记录讨论内容** - 记录团队成员的讨论发言?
如果是创建会议,请提供:
- 会议主题/标题
- 参与讨论的 Agent ID 列表(如:claude-001, kimi-001
- (可选)具体要讨论和投票的内容
请告诉我具体想做什么,我来协助你操作。
### 营养师 (Kimi) - 2026-03-10T15:06:31
*步骤: 讨论*
作为营养师,我认可上一轮达成的"蔬菜半盘、蛋白和主食各四分之一"的餐盘比例共识,
这是符合《中国居民膳食指南》的黄金搭配。清蒸和炖煮确实能最大程度保留营养并减少
油脂摄入,建议大家在点餐或烹饪前先用手机备忘录规划好食材比例,避免临时决策导致
热量超标。另外提醒一点,外卖酱料包往往藏有隐形盐分,尽量选择独立包装的酱料并只
使用三分之一。
### 预算管家 (OpenCode) - 2026-03-10T15:06:51
*步骤: 讨论*
我明白了,但您还没有告诉我需要扮演什么角色以及讨论的场景是什么,请提供更多背景信息。
## 共识
根据讨论记录,各参与者对「讨论与投票」场景的理解尚未对齐:美食家询问具体需求方
向,营养师分享了健康饮食建议,预算管家则表示未收到角色设定。显然讨论缺乏统一的
场景背景和明确的议题目标。共识是需要先明确角色扮演场景、统一讨论主题,并建立基
本的沟通框架。下一步行动方案是:由主持人重新定义场景和角色任务,确保所有参与者
围绕同一议题展开讨论,然后再进行实质性交流和投票决策。
---
**创建时间**: 2026-03-10T15:05:27.693693
**结束时间**: 2026-03-10T15:07:36.101395
@@ -0,0 +1,41 @@
{
"meeting_id": "meeting-1773107507",
"title": "API 测试会议",
"date": "2026-03-10",
"attendees": [
"test-api-001"
],
"steps": [
{
"step_id": "step_1",
"label": "讨论",
"status": "completed",
"completed_at": "2026-03-10T09:51:52.976775"
},
{
"step_id": "step_2",
"label": "决策",
"status": "pending",
"completed_at": ""
},
{
"step_id": "step_3",
"label": "总结",
"status": "pending",
"completed_at": ""
}
],
"discussions": [
{
"agent_id": "test-api-001",
"agent_name": "Test Agent",
"content": "这是一条测试讨论",
"timestamp": "2026-03-10T09:51:50.702079",
"step": "讨论"
}
],
"status": "completed",
"created_at": "2026-03-10T09:51:47.358700",
"ended_at": "2026-03-10T09:51:52.976766",
"consensus": "测试共识"
}
@@ -0,0 +1,28 @@
# API 测试会议
**会议 ID**: meeting-1773107507
**日期**: 2026-03-10
**状态**: completed
**参会者**: test-api-001
## 会议进度
-**讨论** (2026-03-10T09:51:52.976775)
-**决策**
-**总结**
## 讨论记录
### Test Agent - 2026-03-10T09:51:50
*步骤: 讨论*
这是一条测试讨论
## 共识
测试共识
---
**创建时间**: 2026-03-10T09:51:47.358700
**结束时间**: 2026-03-10T09:51:52.976766
@@ -0,0 +1,49 @@
{
"meeting_id": "test-record-001",
"title": "测试记录会议",
"date": "2026-03-10",
"attendees": [
"agent-001",
"agent-002"
],
"steps": [
{
"step_id": "step_1",
"label": "步骤1",
"status": "completed",
"completed_at": "2026-03-10T09:46:02.676469"
},
{
"step_id": "step_2",
"label": "步骤2",
"status": "pending",
"completed_at": ""
},
{
"step_id": "step_3",
"label": "步骤3",
"status": "pending",
"completed_at": ""
}
],
"discussions": [
{
"agent_id": "agent-001",
"agent_name": "Agent1",
"content": "这是第一条讨论",
"timestamp": "2026-03-10T09:46:02.643824",
"step": ""
},
{
"agent_id": "agent-002",
"agent_name": "Agent2",
"content": "这是第二条讨论",
"timestamp": "2026-03-10T09:46:02.654028",
"step": ""
}
],
"status": "completed",
"created_at": "2026-03-10T09:46:02.633420",
"ended_at": "2026-03-10T09:46:02.676459",
"consensus": "达成共识:继续开发"
}
@@ -0,0 +1,31 @@
# 测试记录会议
**会议 ID**: test-record-001
**日期**: 2026-03-10
**状态**: completed
**参会者**: agent-001, agent-002
## 会议进度
-**步骤1** (2026-03-10T09:46:02.676469)
-**步骤2**
-**步骤3**
## 讨论记录
### Agent1 - 2026-03-10T09:46:02
这是第一条讨论
### Agent2 - 2026-03-10T09:46:02
这是第二条讨论
## 共识
达成共识:继续开发
---
**创建时间**: 2026-03-10T09:46:02.633420
**结束时间**: 2026-03-10T09:46:02.676459