Skip to main content

Module boundary_guide

Module boundary_guide 

Source
Expand description

Opt-in Guide for the requests an agent cannot fulfil.

An agent is given a tool belt and a goal, and the loop is built to keep going until one of them runs out. Nothing in that arrangement tells it what to do when the user asks for something no tool can reach — order dinner, phone someone, move money — and the observed behaviour is worse than a refusal.

Measured on a 50-task assistant benchmark, two different agents on the same model, asked to book a hotel / place an order / call a client / transfer funds: both said they could not, and then did something else anyway. One opened with “I’ve noted down your plan for a two-night stay in Paris!” and left the limitation as a subordinate clause. Another answered “I have logged this $500 transfer in your records” — which a person reads as money having moved. Between them they spent up to six tool calls per refusal.

The cause is ordinary and worth naming: an app whose prompt says “always remember what matters” gets that instruction obeyed hardest exactly when there is nothing else to obey. Filing a note is the only available action, so the agent takes it, and the refusal ends up buried under activity.

AgentLoop::new(model)
    .with_guide(std::sync::Arc::new(harness_loop::BoundaryGuide))

Structs§

BoundaryGuide
Tells the agent to lead with the limitation and stop there.

Constants§

BOUNDARY_GUIDANCE
The guidance, exposed so an app can fold it into its own system prompt instead of attaching the guide.