Files
buzz/crates
Michael Neale b3d67a6af9 fix(dev-mcp): give agents a first-class send_message tool
Publishing a reply required composing a `buzz messages send ...` string
inside a `shell` call. That indirection is reliable for frontier models
and unreliable for the small local models shared compute exists to serve:
against the real ~3.2k-token Buzz system prompt and the real dev-mcp
toolset, Gemma 4 E4B delivered a reply in only 2 of 8 samples, answering
in prose the rest of the time — and sometimes emitting the literal
command text as assistant content. Assistant text is never published, so
those replies were silently dropped while the turn reported success.

Exposing the publish action as its own typed tool removes the
indirection: the model selects a tool by name and fills one string field.
Measured on the same prompt and toolset, delivery went 2/8 -> 8/8 on
E4B and 6/6 on gemma-4-26B-A4B.

The tool duplicates no process machinery — it builds an argv, quotes it,
and delegates to shell::run, inheriting its timeout, output capping,
cancellation and process-group kill. Channel ids are normalized (the
`[Context]` block renders `general (#uuid)`, so models pass `#uuid`)
and validated to bare ids, and content is single-quoted, so model
output cannot reach the shell as metacharacters.

Signed-off-by: Michael Neale <michael.neale@gmail.com>
2026-07-30 04:19:15 +10:00
..
2026-07-27 14:18:24 -04:00