diff --git a/agents/openclaw-main/current.md b/agents/openclaw-main/current.md index 2230b61..40a668b 100644 --- a/agents/openclaw-main/current.md +++ b/agents/openclaw-main/current.md @@ -2,6 +2,17 @@ - role: OpenClaw 主控智能体(mac-5 控制面) - memory_source_of_truth: collective-memory-repo + remote memory-gateway +- stable_runtime_facts: + - mac-5 / mac-6 / mac-7 都运行 oMLX,本地模型目录统一为 `~/MLXModels` + - 三台机器均有 `com.lingyuzeng.omlx` launchd plist 用于开机启动 oMLX + - oMLX OpenAI 兼容接口:mac-5=`http://100.64.0.19:8000/v1`,mac-6=`http://100.64.0.21:8000/v1`,mac-7=`http://100.64.0.23:8000/v1` + - 当前 OpenClaw 本地 subagent / worker 统一使用 `Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` + - mac-5 `~/.openclaw/openclaw.json` 已注册 `omlx_mac5/6/7` 三个 provider + - mac-5 默认 subagent 模型为 `omlx_mac5/Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` + - mac-5 已定义 worker agents: `local-mac5`, `local-mac6`, `local-mac7` + - `main` agent 已允许把 subagent 任务定向到上述 3 个 local worker agents + - mac-6 / mac-7 也已补写本机 `~/.openclaw/openclaw.json`,记录各自 oMLX provider + 默认 subagent 模型 - next_actions: - - 完成远程 memory-gateway 联调 - - 按任务将阶段结论沉淀到 shared/long-term + - 验证 gateway 重启后新 provider / agent 是否全部生效 + - 实测 `local-mac5/local-mac6/local-mac7` 的 subagent 调度链路 + - 继续定位 `nodes run -> opencode/acpx` 超时根因 diff --git a/agents/openclaw-main/subagent-scheduling-v1.1.md b/agents/openclaw-main/subagent-scheduling-v1.1.md new file mode 100644 index 0000000..c5f9e41 --- /dev/null +++ b/agents/openclaw-main/subagent-scheduling-v1.1.md @@ -0,0 +1,62 @@ +# OpenClaw 本地多节点 subagent 智能调度规则 v1.1 + +## 适用范围 +适用于当前 OpenClaw 控制面(mac-5)在本地/尾网多节点环境下,为 subagent 选择推理 provider 的调度规则。 + +当前候选推理后端: +- mac-5 oMLX +- mac-6 oMLX +- mac-7 oMLX +- fallback / speed-first: `vllm_messages/Qwen3.5-27B` + +## 核心原则 +1. **派发前先探测可用性**:在真正派发 subagent 前,先对目标后端做一次轻量 `curl` 或等价请求,确认目标模型当前可调用。 +2. **模型名按后端分别处理**:mac-5/6/7 上的 oMLX 模型名与 `vllm_messages/Qwen3.5-27B` 不同,探测和调度时必须使用对应后端自己的模型名,不能混用。 +3. **默认本机优先**:如果当前任务不强调极致速度,优先尝试当前机器本地 provider。 +4. **本机优先 localhost**:当任务落到本机 oMLX 时,优先使用 `127.0.0.1` / `localhost`,不要优先走 tailscale IP,避免 tailscale 网卡不稳定导致推理失败。 +5. **速度优先任务优先 vLLM**:对响应速度要求较高的 subagent 任务,优先尝试 `vllm_messages/Qwen3.5-27B`。 +6. **vLLM 失败再 fallback 本地节点**:如果 `vllm_messages/Qwen3.5-27B` 当前不可调用,再回退到 mac-5/mac-6/mac-7 的 oMLX 节点池。 +7. **繁忙避让**:若节点 GPU 负载高于 50%,视为该节点当前有 GPU 任务,不优先派发新的 subagent。 +8. **逐个派发逐个判断**:因为 subagent 一般是一个接一个启动,调度时每次都重新判断各候选节点的可用性和负载状态。 +9. **全部繁忙时的最终回退**:当 mac-5/mac-6/mac-7 都繁忙或不可用时,可回退到 `100.64.0.5:8000` 对应的 `vllm_messages/Qwen3.5-27B`(前提是其可调用)。 + +## 候选后端与模型 +### oMLX 节点 +- mac-5 + - endpoint: 本机优先 `http://127.0.0.1:8000/v1`,远程可用 `http://100.64.0.19:8000/v1` + - model: `Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` +- mac-6 + - endpoint: `http://100.64.0.21:8000/v1` + - model: `Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` +- mac-7 + - endpoint: `http://100.64.0.23:8000/v1` + - model: `Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` + +### vLLM fallback / speed-first +- endpoint: 当前配置中的 `vllm_messages` +- model: `Qwen3.5-27B` +- 注意:该模型名与 oMLX 的 Huihui 模型名不同,探测与实际请求都必须分开处理。 + +## 推荐调度顺序 +### 普通任务 +1. 当前机器本机 oMLX(localhost 优先) +2. 其他空闲 oMLX 节点(检查 GPU 负载和可调用性) +3. `vllm_messages/Qwen3.5-27B` + +### 速度优先任务 +1. `vllm_messages/Qwen3.5-27B` +2. 当前机器本机 oMLX(localhost 优先) +3. 其他空闲 oMLX 节点 + +## 派发前最低检查 +在选中某个后端前,至少做两件事: +1. **模型调用探测** + - 用 `curl` 或等价 OpenAI-compatible 请求,发一个最小 completion/chat 请求 + - 确认目标模型名正确且当前能返回结果 +2. **GPU 负载检查** + - 检查该机器当前 macOS GPU 负载 + - 若 >50%,视为繁忙,不优先选择 + +## 重要提醒 +- 该规则首先是 **推理后端调度规则**,不自动等价于“工具执行一定在同一台机器上运行”。 +- 后续如果要实现真正自动负载均衡,可考虑引入统一 `omlx_pool` / inference gateway;在此之前,先按本规则做显式 agent/provider 选择。 diff --git a/daily/2026-03-17.md b/daily/2026-03-17.md new file mode 100644 index 0000000..db98b0a --- /dev/null +++ b/daily/2026-03-17.md @@ -0,0 +1,41 @@ +# 2026-03-17 + +## OpenClaw / oMLX / subagent 配置记录 + +- mac-5 / mac-6 / mac-7 三台机器都已安装并运行 `oMLX`,模型权重统一放在 `~/MLXModels` +- 三台机器都存在 `com.lingyuzeng.omlx` 的 launchd plist,用于开机自动启动 oMLX 服务 +- 三台机器的 oMLX OpenAI 兼容接口分别为: + - mac-5: `http://100.64.0.19:8000/v1` + - mac-6: `http://100.64.0.21:8000/v1` + - mac-7: `http://100.64.0.23:8000/v1` +- 当前用于 OpenClaw 本地子智能体 / worker 的本地模型统一为: + - `Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` +- mac-5 的 `~/.openclaw/openclaw.json` 已新增 3 个 provider: + - `omlx_mac5` + - `omlx_mac6` + - `omlx_mac7` +- mac-5 的 `agents.defaults.subagents.model` 已设置为: + - `omlx_mac5/Huihui-Qwen3.5-27B-Claude-4.6-Opus-abliterated-4bit` +- mac-5 额外新增了 3 个本地 worker agent: + - `local-mac5` + - `local-mac6` + - `local-mac7` +- 这些 worker agent 分别绑定到对应机器的 oMLX endpoint,供后续 subagent / team 并行编排使用 +- `main` agent 已放开 `subagents.allowAgents`,允许调度: + - `local-mac5` + - `local-mac6` + - `local-mac7` +- mac-6 / mac-7 也已补写 `~/.openclaw/openclaw.json`,保存各自本机 oMLX provider 与默认 subagent 模型定义,便于后续本地 OpenClaw/agent 复用 +- 新增一份 OpenClaw 私域记忆:`agents/openclaw-main/subagent-scheduling-v1.1.md` +- v1.1 新增的关键调度原则: + - 派发 subagent 前先对目标后端做轻量 curl/等价请求,确认对应模型当前可调用 + - mac-5/6/7 的 Huihui 模型名与 fallback `vllm_messages/Qwen3.5-27B` 的模型名不同,不能混用 + - 对速度要求高的 subagent 任务,优先使用 `vllm_messages/Qwen3.5-27B` + - 若 vLLM 不可用,再 fallback 到 mac-5/mac-6/mac-7 的 oMLX 节点 + - 本机优先使用 localhost/127.0.0.1,减少 tailscale 网卡不稳定带来的失败 +- 目前已确认: + - provider / model 注册已完成 + - gateway 已执行重启调度以加载新配置 +- 仍需后续继续验证: + - `sessions_spawn(runtime="subagent")` 在 `local-mac5/local-mac6/local-mac7` 上的真实调度行为 + - `nodes run -> harness/opencode/acpx` 超时根因