Hi Ian,
Thanks for the plugin. I've been using it with a self-hosted SGLang backend (Kimi K3, variants low/high/max) and hit a pattern I'd like your take on. From 20 level_4 tasks each:
1. With the default-style system-prompt injection (plugin's experimental.chat.system.transform pushing guidance as a second system message), the agent called set_reasoning_effort a few times — but spuriously: no mention of the tool in the preceding reasoning, no expressed intent, appearing "out of nowhere" right after an unrelated intended action (e.g. after "Let me read the source"). The effort change was never integrated into the chain of thought.
2. After I fixed that (removed the plugin's injection, so it no longer pushes a separate system message), I kept the tool guidance — but moved it into our own AGENTS.md (tool exists, valid levels, when to raise/lower, budget trade-off). So the agent still sees the tool in its tool list and still has explicit guidance about when to use it. Yet in 20 level_4 tasks it never once called set_reasoning_effort, and never mentioned it in reasoning. The spurious calls disappeared, but so did all calls.
So: how is the tool meant to be used? Is it supposed to be active turn-by-turn self-modulation, or an occasional override? In practice an agent solving a task doesn't seem to spontaneously decide "I should change my own reasoning effort" — it either gets nudged by a per-turn imperative prompt (then fires spuriously, without reasoning about it), or it ignores the tool entirely even when the guidance is present.
Is there an intended usage pattern that makes the agent actually use it? Have you seen similar behavior (agents not calling it, or calling it spuriously) in your own usage? (Related: with PR #21 merging guidance into system[0], would the spurious calls remain?)
Happy to share trajectory evidence if useful.