Skip to content

Measure whether diagnose_service/diagnose_pvc belong on the small-model tool surface #221

Description

@hellices

Problem

diagnose_service and diagnose_pvc were added to all three surfaces, including small_agent. Measured cost on the small profile today:

tools schema
current 16 8,107 chars
without the two 14 7,046 chars

That is +14% tools and +15% schema, retransmitted on every request. diagnose_pvc now has the longest description of all 16 tools (233 chars), and the four diagnose_* tools occupy the top four places by description length.

This was never costed against the small profile's design premise.

Why it matters

The small profile exists to shrink the surface for 3B-14B local models. Its own module docstring cites BFCL: small models are competitive on simple single-function calls but fall behind sharply on multi-function selection, and degrade with context length well below their advertised windows. Its budgets are sized for a ~4k-token serving context.

Adding two tools to that surface may be a net win — a single bounded call can replace a multi-step read sequence, which is exactly what a small model is bad at — or a net loss, because the selection space grew and every request pays for the schema. Both are plausible. Neither has been measured.

Published work says the schema is the high-leverage variable, so this is not a rounding error: EasyTool and Tool Documentation both find tool-description quality dominates prompt preamble for tool-selection accuracy.

Proposal

Fold this into the matched baseline-versus-diagnostic evaluation already planned in #176, as a third arm rather than a separate study:

  1. baseline — ordinary read tools only
  2. diagnostic (full surface) — current small surface, 16 tools
  3. diagnostic (full/mcp only) — the two tools removed from small_agent, 14 tools

Metrics that decide it: tool-selection accuracy on tasks where the diagnostic tool is not the right answer (does the bigger surface cause misselection?), evidence coverage, tool-call count, and tokens per turn.

Outcomes:

  • arm 3 wins → restrict surfaces to _FULL_AND_MCP, a one-line registry change;
  • arm 2 wins → keep as-is, and the cost is justified by measurement rather than assumed;
  • no measurable difference → keep as-is and record that the surface size is not the binding constraint at this scale.

Not urgent

Nothing is broken. This is a question the evaluation should answer while it is already set up to answer the adjacent one. Blocked on the same eval-harness gaps that block #176: the Service scenarios seed legacy Endpoints while diagnose_service reads EndpointSlice, and no bundled scenario exercises either tool.

Context: #191 (closed as not planned), #213, #216.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions