重构 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:
@@ -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
|
||||
@@ -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围绕同一议题展开讨论,然后再进行实质性交流和投票决策。"
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user