auto-sync: 2026-05-29 19:48:52
This commit is contained in:
@@ -218,47 +218,50 @@ Agent 收到消息后的自主行为(不是硬编码步骤):
|
|||||||
|
|
||||||
### 5.1 Spawner 新增方法
|
### 5.1 Spawner 新增方法
|
||||||
|
|
||||||
|
复用 Mail 的 `use_main_session=True` 模式,将三条路径统一:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
async def deliver_to_main(self, agent_id: str, message: str,
|
async def deliver_to_main(self, agent_id: str, message: str,
|
||||||
task_id: str = None,
|
task_id: str = None,
|
||||||
on_complete: Callable = None) -> str:
|
on_complete: Callable = None) -> str:
|
||||||
"""投递到 Agent main session(不创建新 session)
|
"""投递到 Agent main session
|
||||||
|
|
||||||
用 openclaw agent --agent <id> --message "..." 投递,
|
复用 spawn_full_agent(use_main_session=True),不传 --session-id。
|
||||||
Gateway 自动路由到 main session。
|
Gateway 自动路由到 main session。
|
||||||
"""
|
"""
|
||||||
cmd = [
|
return await self.spawn_full_agent(
|
||||||
"openclaw", "agent",
|
agent_id=agent_id,
|
||||||
"--agent", agent_id,
|
message=message,
|
||||||
"--message", message,
|
use_main_session=True, # 关键:走 main session
|
||||||
"--json",
|
task_id=task_id,
|
||||||
"--timeout", str(int(self.gateway_timeout)),
|
on_complete=on_complete,
|
||||||
]
|
)
|
||||||
# ... 执行 + 监控,和 spawn_full_agent 类似但不传 --session-id
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**不需要新建方法**,只需调用 `spawn_full_agent(use_main_session=True)`。Mail 路径已验证此模式。
|
||||||
|
|
||||||
### 5.2 Ticker 改动
|
### 5.2 Ticker 改动
|
||||||
|
|
||||||
| 方法 | 改动 |
|
| 方法 | 改动 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `_broadcast_and_dispatch` | 调用 `deliver_to_main` 替代 `spawn_full_agent` |
|
| `_broadcast_and_dispatch` | `spawn_full_agent(..., use_main_session=True)` |
|
||||||
| `_process_mentions` | 调用 `deliver_to_main` 替代 `spawn_full_agent` |
|
| `_process_mentions` | `spawn_full_agent(..., use_main_session=True)` |
|
||||||
| `_spawn_pangtong_review` | 调用 `deliver_to_main` 替代 `spawn_full_agent` |
|
| `_spawn_pangtong_review` | `spawn_full_agent(..., use_main_session=True)` |
|
||||||
| `_check_round_complete` | 保留 `reviewing` 中间态逻辑 |
|
| `_check_round_complete` | 保留 `reviewing` 中间态逻辑 |
|
||||||
| `_handle_review_conclusion` | 保留,但改为从 main session 的回复中解析 |
|
| `_handle_review_conclusion` | 改为从黑板检查状态变化(复用 Mail 的 `_task_auto_complete` 模式) |
|
||||||
|
|
||||||
### 5.3 Dispatcher 改动
|
### 5.3 Dispatcher 改动
|
||||||
|
|
||||||
确定性路由也改用 `deliver_to_main`:
|
- 所有路由统一走 `use_main_session=True`
|
||||||
- 移除 `use_main_session` 参数(全部走 main session)
|
- 移除 `new_session` 参数(不再需要)
|
||||||
- 移除 `new_session` 参数
|
- 新增 `_task_auto_complete`(复用 Mail 的 `_mail_auto_complete` 模式,检查 outputs + status)
|
||||||
- counter 逻辑简化(per main session 粒度)
|
- counter 逻辑不变(main session 粒度,per key = `agent:main`)
|
||||||
|
|
||||||
### 5.4 废弃代码
|
### 5.4 废弃代码
|
||||||
|
|
||||||
- `spawn_full_agent` 的 `new_session` / `use_main_session` 参数标注废弃
|
- `spawn_full_agent` 的 `new_session` 参数标注废弃(所有调用改为 `use_main_session=True`)
|
||||||
- `gateway-fallback-*` session 的产生路径消失
|
- `gateway-fallback-*` session 的产生路径消失
|
||||||
- 续杯逻辑简化(`reuse_session_id` 不再需要)
|
- 续杯简化:main session 的续杯由 Gateway 排队 + ticker 超时兜底处理
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -384,28 +387,18 @@ def _task_auto_complete(self, task_id, agent_id, db_path):
|
|||||||
|
|
||||||
## 九、实施计划
|
## 九、实施计划
|
||||||
|
|
||||||
### Phase 1:spawner 新增 `deliver_to_main`
|
### Phase 1:统一投递到 main session
|
||||||
|
|
||||||
- 新增方法,不改动现有 `spawn_full_agent`
|
- 所有 `spawn_full_agent` 调用改为 `use_main_session=True`
|
||||||
|
- 新增 `_task_auto_complete`(复用 Mail 模式)
|
||||||
- 单元测试覆盖
|
- 单元测试覆盖
|
||||||
|
|
||||||
### Phase 2:Ticker 三条路径切换
|
### Phase 2:E2E 测试适配 + 验证
|
||||||
|
|
||||||
- `_broadcast_and_dispatch` → `deliver_to_main`
|
- 适配新的投递机制(不再依赖 `--session-id UUID`)
|
||||||
- `_process_mentions` → `deliver_to_main`
|
|
||||||
- `_spawn_pangtong_review` → `deliver_to_main`
|
|
||||||
|
|
||||||
### Phase 3:Daemon 结果收集改造
|
|
||||||
|
|
||||||
- 移除 `--json` 同步等结果
|
|
||||||
- 改为 ticker 轮询黑板状态变化
|
|
||||||
- on_complete 改为基于黑板事件触发
|
|
||||||
|
|
||||||
### Phase 4:E2E 测试适配 + 验证
|
|
||||||
|
|
||||||
- 适配新的投递机制
|
|
||||||
- 验证 session 不爆炸
|
- 验证 session 不爆炸
|
||||||
- 验证 Agent 自主决策行为
|
- 验证 Agent 自主决策行为
|
||||||
|
- 重跑 01-four-phase-loop 的 E2E 测试
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user