Skip to content

Nudge agents toward batching: a post-single-call system-reminder #102

Description

@tony

The ask

After an agent makes a lone tmux tool call that could have travelled in a batch, deliver a
short system-reminder-style nudge encouraging it to batch next turn — the way
claude-in-chrome nudges toward browser_batch after a single MCP call:

You used a single tool call this turn. Prefer tmux_batch to execute multiple actions in
one call — it is significantly faster. Batch your next sequence of sends, waits, captures,
and layout changes together.

This is the runtime, in-loop counterpart to the tmux_batch front door (#101): the tool
gives the agent something to reach for; the reminder teaches it to actually reach.

Why

Every MCP tool call is a round-trip and an agent turn. The batch surface exists — and under
engine-ops (#87) it is genuinely powerful, with two levels of folding/pipelining — but
agents rarely find or use it. The generic wrappers appear in no server instructions
segment, and nothing at runtime points an agent back toward batching once it has fallen into
one-call-at-a-time behavior. Every reactive string the server emits today is error-path only
(bad-argument suggestions, tier denials, per-op batch rejections); none fires on a clean
single call. Static docs do not change in-loop habits; a per-call reminder does.

Desired behavior (acceptance)

  • After a qualifying single (non-batch) tmux call, the agent receives brief guidance —
    delivered as guidance, not an error — that names the concrete batch tool to use.
  • Tier-aware target. Name the engine-ops plan tools (execute_plan / build_workspace)
    when LIBTMUX_MCP_ENGINE_OPS=1; otherwise send_keys_batch / call_*_tools_batch (or
    tmux_batch once tmux_batch: one discoverable front door for multi-action batches #101 lands).
  • Never blocks, delays, or alters the tool's own result. Batching stays opt-in — the
    reminder never forces a batch or rejects a single call.
  • Restrained enough not to fire on every call forever (behavioral intent — thresholds and
    suppression are for the implementer).

Non-goals

Prior art / relationship

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions