auto-sync: 2026-05-29 19:48:52
This commit is contained in:
@@ -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 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`
|
||||
- `_process_mentions` → `deliver_to_main`
|
||||
- `_spawn_pangtong_review` → `deliver_to_main`
|
||||
|
||||
### Phase 3:Daemon 结果收集改造
|
||||
|
||||
- 移除 `--json` 同步等结果
|
||||
- 改为 ticker 轮询黑板状态变化
|
||||
- on_complete 改为基于黑板事件触发
|
||||
|
||||
### Phase 4:E2E 测试适配 + 验证
|
||||
|
||||
- 适配新的投递机制
|
||||
- 适配新的投递机制(不再依赖 `--session-id UUID`)
|
||||
- 验证 session 不爆炸
|
||||
- 验证 Agent 自主决策行为
|
||||
- 重跑 01-four-phase-loop 的 E2E 测试
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user