Skip to content

v0.25.4

Choose a tag to compare

@yuanhao yuanhao released this 13 Oct 23:20
· 100 commits to main since this release
1cafdf1

ToolGate judges large calls whole, and commands only whole

Feature decision; #309, #310, #311.

  • Before: every string argument over 2,000 characters was cut to its head and tail.
    • A 100k-character write_file was judged on 2k of its content.
    • A long bash script with rm -rf in the middle was judged without that line.
    • A call still over 12k after that was denied.
  • Now, whole when it fits: arguments are sent whole when they fit with_max_argument_chars (default 48,000) and the decision backend's token limits (the strictest in an or chain).
  • Now, cut only as needed: a call that does not fit has only its longest strings cut, and only as far as needed. A cut is never made where its marker would grow the call. The state lists every cut under tool_call.omitted, so the decision model knows it is judging a partial view.
  • Full views: some arguments are judged whole or denied, never cut (with_full_view(tool, json_pointer); by default bash's /command; without_default_full_views drops it). Calls are never judged in pieces.
  • Logging: a partial view is logged at info (which arguments, how many characters the gate did not see), and so is every refusal based on the model's answer.

Behaviour change: a bash command too large to review whole (about 48,000 characters serialized, or the backend's token limit if smaller) is now denied instead of judged from its head and tail. More calls are sent in full, so large calls cost more decision-model input tokens.

Also: the agent skill's "What changed" covers this release, and the installation page's snippet now says yoagent = "0.25".

Full notes: CHANGELOG.