mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 18:51:34 +00:00
* fix(plugins): stop treating a partial active registry as authoritative for web providers An active plugin registry with some web providers used to win even when a manifest-declared candidate (e.g. an npm-installed Brave plugin with BRAVE_API_KEY set) was absent from it, so env-var auto-detect could never see installed external search providers. Delegate to the coverage-checked resolvePluginWebProviders path, which reuses the active registry only when it covers every declared candidate. * feat(agents): require explicit overwrite before replacing pre-existing files in the write tool Blind writes to an existing path silently destroyed user content (observed as WildClawBench safety-task data loss with weaker models). The write tool now refuses to replace an existing differing file unless the call passes overwrite:true or this tool instance already wrote that path, keeping iterate-loops friction-free while making destructive replacement an explicit model decision. * docs(templates): make a concrete first-message task outrank the BOOTSTRAP.md birth sequence A fresh workspace's birth ritual hijacked substantive first messages: agents introduced themselves and asked for a name instead of doing the requested work (worst with weaker models, which follow the ritual literally). State task precedence explicitly at the top of the template. * fix(agents): lead the write overwrite guard error with the safe protocol Weak models retried immediately with overwrite:true when the flag came first in the message. Order the guidance read -> rename -> overwrite-as-last-resort so the destructive path requires an explicit judgment call. * refactor(agents): replace the write overwrite flag with a confirm-by-resend gate The overwrite:true escape hatch let weak models bulldoze reflexively and grew the tool schema. The first write to a differing pre-existing file now returns that file's content (head-clipped) and a resend of the identical write, issued after the warning, against byte-identical existing content confirms the replacement. Fingerprints hash raw bytes; oversized files fall back to size+mtime (named tradeoff); missing metadata fails closed. * revert(agents): restore plain overwrite semantics in the write tool The overwrite gate (flag, then confirm-by-resend) was overfit to one WildClawBench safety rubric: the guarded model still chose to overwrite and still scored zero, while every real overwrite in normal sessions paid a round-trip. Write means write; peers (Pi, Hermes) agree. * test(agents): drop the stale overwrite arg from the write output-contract test