auto-sync: 2026-05-29 19:48:52

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