Repository navigation
feat(openclaw): opencode-acp ACP-runtime agent (#2229 mechanism 1) - #2237
Conversation
Mechanism 1 of #2229: an agents.entries entry whose runtime is the OpenCode harness over acpx (runtime.type=acp, runtime.acp.agent= opencode, backend acpx, mode oneshot, cwd home). Per the pinned OpenClaw 2026.10.7 schema and docs (tools/acp-agents/runbook), an entry configured this way is a valid sessions_spawn runtime=acp target: OpenClaw resolves runtime.acp.agent as the underlying harness id, so dispatchers can spawn agentId=opencode-acp and land in the fleet OpenCode, whose default model is the workhorse route. Heartbeat cadence disabled for this agent: dispatch is explicit.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 12 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 917d200c2a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # must never wake itself into OpenCode hourly. | ||
| opencode-acp = { | ||
| name = "OpenCode (ACP harness)"; | ||
| heartbeat.every = "0m"; |
There was a problem hiding this comment.
Preserve heartbeat enrollment for the main agent
Adding this per-agent heartbeat block also disables the existing hourly heartbeat for main. In the pinned OpenClaw version, resolveHeartbeatAgentIds selects only agents with an explicit heartbeat block whenever any exist; main has none, so only opencode-acp is selected, and its 0m cadence disables execution. This silently stops the monitoring checks in workspace/HEARTBEAT.md despite agents.defaults.heartbeat.every = "1h". Explicitly enroll main as well so disabling the ACP agent does not disable monitoring. See the upstream enrollment logic.
Useful? React with 👍 / 👎.
Part of #2229 (mechanism 1 of 3). Drew's direction: build all three mechanisms.
Adds
opencode-acptoagents.entriesinhome/openclaw/default.nix:runtime.type = "acp",runtime.acp.agent = "opencode",backend = "acpx",mode = "oneshot",cwd = homeDir— validated against the pinned OpenClaw 2026.10.7 zod schema (AgentRuntimeSchema/AgentRuntimeAcpSchema; mode is an enum of persistent|oneshot).docs/tools/acp-agents/runbook.md): an entry configured withruntime.type="acp"is a validsessions_spawn({runtime:"acp"})target, and OpenClaw usesruntime.acp.agentas the underlying harness id. Dispatch therefore lands in the fleet OpenCode (acpx override already wired), whose default model isopencode-route/workhorse.heartbeat.every = "0m"for this agent: dispatch is explicit; it must not wake itself into OpenCode hourly.Direct
openclaw agent --agent opencode-acpturns remain embedded by design — this entry is the standing dispatch target/defaults holder, exercised viasessions_spawn(mechanism 2, #2229) and channel bindings.Live verification on the laptop (scratch config + scratch gateway, pre-switch): the entry passes
openclaw config getvalidation (initialmode="run"draft was rejected by the schema, corrected tooneshot). The end-to-end spawn proof rides mechanism 2's surface and is reported on #2229.Need help on this PR? Tag
@codesmith-botwith what you need.