删掉一些
This commit is contained in:
+12
-36
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
### 1.1 目标
|
### 1.1 目标
|
||||||
|
|
||||||
在软件工程任务场景下,构建一个**可灵活定义和编排多 Agent 的实验平台**,支持多种协作/竞争方案的快速切换与对比,最终通过系统性评测验证出性能最优的 Agent 交互方案,并以此为核心产出学术论文。
|
在软件工程任务场景下,构建一个**可灵活定义和编排多 Agent 的实验平台**,支持多种协作/竞争方案的快速切换与对比,最终通过系统性评测验证出性能最优的 Agent 交互方案。
|
||||||
|
|
||||||
### 1.2 核心研究问题(来自 GQM v2)
|
### 1.2 核心研究问题(来自 GQM v2)
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
### 3.1 Agent 定义层(Agent Definition)
|
### 3.1 Agent 定义层(Agent Definition)
|
||||||
|
|
||||||
每个 Agent 通过配置文件(YAML / Python dataclass)灵活定义,无需改动核心代码:
|
每个 Agent 通过配置文件(YAML / Python dataclass)定义:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
agent:
|
agent:
|
||||||
@@ -66,7 +66,7 @@ agent:
|
|||||||
interaction_mode: cooperative | competitive
|
interaction_mode: cooperative | competitive
|
||||||
```
|
```
|
||||||
|
|
||||||
**预定义角色:**
|
**例子:**
|
||||||
|
|
||||||
| 角色 | 职责 |
|
| 角色 | 职责 |
|
||||||
|------|------|
|
|------|------|
|
||||||
@@ -78,7 +78,7 @@ agent:
|
|||||||
|
|
||||||
### 3.2 方案编排层(Scheme Orchestrator)
|
### 3.2 方案编排层(Scheme Orchestrator)
|
||||||
|
|
||||||
支持通过配置描述 Agent 之间的拓扑与交互方式,平台自动执行:
|
支持通过配置描述 Agent 之间的拓扑与交互方式:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
scheme:
|
scheme:
|
||||||
@@ -99,13 +99,13 @@ scheme:
|
|||||||
output: test_result
|
output: test_result
|
||||||
```
|
```
|
||||||
|
|
||||||
**支持的拓扑结构(对应 M10 Topology Efficiency):**
|
**支持的拓扑结构:**
|
||||||
|
|
||||||
- `pipeline`:线性流水线,每步输出作为下步输入
|
- `pipeline`:线性流水线,每步输出作为下步输入
|
||||||
- `star`:中心协调者分发任务给多个 worker agent
|
- `star`:中心协调者分发任务给多个 worker agent
|
||||||
- `debate`:多 agent 对同一问题给出方案并投票/仲裁
|
- `debate`:多 agent 对同一问题给出方案并投票/仲裁
|
||||||
- `parallel`:多 agent 并行执行后 merge
|
- `parallel`:多 agent 并行执行后 merge
|
||||||
- `graph`:任意有向图(最通用)
|
- `graph`:任意有向图
|
||||||
|
|
||||||
### 3.3 运行时引擎(Agent Runtime)
|
### 3.3 运行时引擎(Agent Runtime)
|
||||||
|
|
||||||
@@ -113,7 +113,6 @@ scheme:
|
|||||||
- Agent 实例化与生命周期管理
|
- Agent 实例化与生命周期管理
|
||||||
- 消息路由(Agent 间通信)
|
- 消息路由(Agent 间通信)
|
||||||
- 工具执行(代码运行、文件操作、测试调用)
|
- 工具执行(代码运行、文件操作、测试调用)
|
||||||
- 状态快照(支持断点续跑)
|
|
||||||
- 全程日志采集(供评测层使用)
|
- 全程日志采集(供评测层使用)
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -134,7 +133,7 @@ Task Output + Metrics Log
|
|||||||
|
|
||||||
### 3.4 Agent 间通信机制(MessageBus)
|
### 3.4 Agent 间通信机制(MessageBus)
|
||||||
|
|
||||||
**核心原则:拓扑决定路由规则,不决定通信接口。** Agent 只调用 `send` / `receive`,由 Orchestrator 持有路由表按拓扑转发,Agent 本身不感知自己处于哪种拓扑。
|
**拓扑决定路由规则,不决定通信接口。** Agent 只调用 `send` / `receive`,由 Orchestrator 持有路由表按拓扑转发,Agent 本身不感知自己处于哪种拓扑。
|
||||||
|
|
||||||
#### 统一消息结构
|
#### 统一消息结构
|
||||||
|
|
||||||
@@ -193,26 +192,7 @@ class HumanGateAgent:
|
|||||||
|
|
||||||
触发条件判断在 Orchestrator 路由层完成——不满足则跳过 Human Gate 节点,满足才投递消息到其 inbox。这样 Human Gate 可以插入任意拓扑的任意位置,不影响其他 Agent 的通信逻辑。
|
触发条件判断在 Orchestrator 路由层完成——不满足则跳过 Human Gate 节点,满足才投递消息到其 inbox。这样 Human Gate 可以插入任意拓扑的任意位置,不影响其他 Agent 的通信逻辑。
|
||||||
|
|
||||||
### 3.5 人类介入机制(Human-in-the-Loop Gate)
|
### 3.5 评测采集层(Metrics Collector)
|
||||||
|
|
||||||
对应 GQM Q5(M20-M23),人类介入点可配置触发条件:
|
|
||||||
|
|
||||||
| 触发条件 | 说明 |
|
|
||||||
|----------|------|
|
|
||||||
| `always` | 每次必经人工审核 |
|
|
||||||
| `on_low_confidence` | Agent 置信度低于阈值时触发 |
|
|
||||||
| `on_conflict` | Agent 间出现冲突时触发 |
|
|
||||||
| `on_failure` | 测试失败时触发 |
|
|
||||||
|
|
||||||
介入操作类型:
|
|
||||||
- **Approve**:直接通过
|
|
||||||
- **Reject**:打回重做,附反馈
|
|
||||||
- **Modify**:人类直接修改 Agent 输出
|
|
||||||
- **Redirect**:重新指定策略或文件范围
|
|
||||||
|
|
||||||
平台记录每次介入的时间戳、操作类型、修改量(用于计算 HIF、HTC、HER、AR)。
|
|
||||||
|
|
||||||
### 3.6 评测采集层(Metrics Collector)
|
|
||||||
|
|
||||||
自动从运行日志中计算 GQM 定义的 23 项指标:
|
自动从运行日志中计算 GQM 定义的 23 项指标:
|
||||||
|
|
||||||
@@ -220,7 +200,7 @@ class HumanGateAgent:
|
|||||||
- M1: Task Success Rate(SWE-bench)
|
- M1: Task Success Rate(SWE-bench)
|
||||||
- M2: Code Correctness pass@k(HumanEval)
|
- M2: Code Correctness pass@k(HumanEval)
|
||||||
- M3: Requirement Formalization Consistency(TVR tuple-level F1 + CPR)
|
- M3: Requirement Formalization Consistency(TVR tuple-level F1 + CPR)
|
||||||
- M4: Verification Alignment(STC + ABC)
|
- M4: Verification Alignment(STC + ABC)?
|
||||||
- M5: Implementation Alignment(Recall/Precision on changed files)
|
- M5: Implementation Alignment(Recall/Precision on changed files)
|
||||||
|
|
||||||
**Q2 协作有效性:**
|
**Q2 协作有效性:**
|
||||||
@@ -320,8 +300,6 @@ class HumanGateAgent:
|
|||||||
class TaskInput:
|
class TaskInput:
|
||||||
task_id: str # 唯一标识,如 "HumanEval/42" 或 "MBPP/301"
|
task_id: str # 唯一标识,如 "HumanEval/42" 或 "MBPP/301"
|
||||||
description: str # 自然语言问题描述(作为 Agent 的输入)
|
description: str # 自然语言问题描述(作为 Agent 的输入)
|
||||||
entry_point: str # 函数名(用于拼接测试调用)
|
|
||||||
tests: list[str] # 单元测试代码列表
|
|
||||||
source: str # "humaneval" | "mbpp"
|
source: str # "humaneval" | "mbpp"
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -425,8 +403,6 @@ metrics.json(每次实验一份,写入 SQLite 汇总表)
|
|||||||
| HumanEval(OpenAI 2021) | 164 题 | 函数级代码生成,对标 SOTA | M2 pass@k |
|
| HumanEval(OpenAI 2021) | 164 题 | 函数级代码生成,对标 SOTA | M2 pass@k |
|
||||||
| MBPP(Google 2021) | 500 题(test split) | 每题 3 条单元测试,题量充足支撑 ablation | M2 pass@k、M11、M12 |
|
| MBPP(Google 2021) | 500 题(test split) | 每题 3 条单元测试,题量充足支撑 ablation | M2 pass@k、M11、M12 |
|
||||||
|
|
||||||
> 注:其他数据集(SWE-bench 等)待导师确认后纳入。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. 技术选型
|
## 6. 技术选型
|
||||||
@@ -434,10 +410,10 @@ metrics.json(每次实验一份,写入 SQLite 汇总表)
|
|||||||
| 模块 | 选型 |
|
| 模块 | 选型 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| Agent 框架基础 | 自研(参考 AutoGen 设计,保留最大灵活性) |
|
| Agent 框架基础 | 自研(参考 AutoGen 设计,保留最大灵活性) |
|
||||||
| LLM 调用 | Anthropic Claude API(claude-sonnet-4-6 / opus-4-7) |
|
| LLM 调用 | 待定|
|
||||||
| 工具执行沙箱 | Docker 容器隔离 |
|
| 工具执行沙箱 | Docker 容器隔离 |
|
||||||
| 消息传递 | 内存队列(单机)/ Redis(分布式扩展) |
|
| 消息传递 | 内存队列(单机)|
|
||||||
| 指标存储 | SQLite(实验记录)+ JSON log |
|
| 指标存储 | SQLite(实验记录)+ JSON log |
|
||||||
| 评测脚本 | Python,对接 SWE-bench / HumanEval 官方评测接口 |
|
| 评测脚本 | Python,对接 SWE-bench / HumanEval 官方评测接口 |
|
||||||
| 可视化(可选) | Gradio / 简单 Web UI,展示 Agent 通信流程和指标 |
|
| 可视化(可选) | cli |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user