Commit Graph
4 Commits
Author SHA1 Message Date
Anandan f401c66e81 polish: cut per-turn overhead, stabilize cache, add /new (#478)
* polish: cut per-turn overhead, stabilize cache, add /new

Context economy
- Compaction: preserveLast 8->6, triggerRatio 0.8->0.7 (both copies in sync).
- System prompt: kill the "ELABORATE summary" directive; scale summary to
  the work. Comment discipline moved into the core prompt for all model
  families (was Anthropic-only); Minimax/DeepSeek/Qwen/etc. now get it.
- Token-budget regression test ratchets the fixed per-turn overhead (base
  prompt + eager tool schemas) using the runtime's own estimator, so silent
  prompt/schema growth fails CI.

Response quality
- defaultResponseStyle balanced->concise. Reversible via /style.

Tool discovery
- <available_skills> block in the system prompt lists installed skills
  (name + one-line description) so the model loads the right one on the
  first call instead of guessing and reading the failure. Budget-capped at
  640 bytes with an "...and N more" fallback; renders nothing when no
  skills are installed (byte-identical to prior prompt).

Session lifecycle
- /new starts a fresh session in place; previous session stays on disk and
  is named in the confirmation for /resume. Guards against mid-run reset.
- /clear now notes that context persists and points to /new.

Performance & caching
- partitionTools no longer alpha-sorts the whole tools array every turn,
  which inserted a loaded deferred tool mid-array and shifted the cached
  prefix on every load. It now builds append-only regions
  [eager sorted] + [tool_search] + [loaded deferred sorted] so a
  mid-session load grows the tail instead of busting the eager prefix.
  Regression test asserts the eager block precedes any loaded tool.
- /context now shows cache hit rate (flags low rate over >5 turns as a
  possible unstable prefix) and rolling average turn latency with
  time-to-first-token. Both reset on /new.

Measured baselines (auto-mode, no workspace): base prompt 3162 tokens,
eager tool schemas 2433 across 12 tools. Budget ceilings set ~10% above.

Deliberately deferred (need a decision): inverted safety-policy rewrite
(sandbox doesn't catch ~half the B-tier rules), core-tool/web_fetch
deferral (activation-semantics blocker), aggressive prompt slim.

* fix(tui): clear staged attachments + queued message on /new

CodeRabbit: startNewSession reset conversation/usage/latency state but not
the staged input (pendingImages, pendingImageLabels, pendingDocuments,
queuedMessage), which is only consumed at prompt-submit. Without clearing it,
the fresh session's first prompt silently inherited the previous session's
images/documents/queued text. Test now stages all four and asserts they clear.
2026-07-04 20:56:52 +08:00
Anandan 212f1a0ff8 Fix token accounting and usage display (#304) 2026-06-24 08:18:34 +05:30
KRATOS 03784268ac token efficiency: lossless cost accounting + minified file reads (read_minified_file) (#256)
* token efficiency: lossless cost accounting + minified file reads

Two complementary improvements to how Zero handles tokens.

ACCOUNTING — make cost measurement lossless and correct:
- Carry all five token dimensions end-to-end (input, cache-read, cache-write,
  output, reasoning) in one Usage; add CacheWriteTokens (cache creation), which
  the Anthropic adapter previously parsed then discarded.
- Price cache-writes at their premium rate (Anthropic 1.25x input, derived per
  model). Regression-safe: a model without the rate bills cache-write at the
  input rate exactly as before.
- Persist cache-read/cache-write/reasoning in EventUsage so `zero usage report`
  reconstructs the SAME cost as the live tracker instead of over-pricing
  cache-heavy sessions. A single EventUsagePayload writer is paired with the
  reader so the JSON keys can't drift.
- Add a live context-window gauge to the status bar (used/window + percent,
  graded green/amber/red) using the last request's input tokens.

REDUCTION — read_minified_file, a dense token-cheap file view:
- New internal/minify package + read_minified_file tool returning a comment-free,
  line-number-free view: Go via the real go/parser AST; C/Java/CSS/SCSS/LESS/
  Python via a string-aware comment lexer (handles strings, char literals,
  triple-quotes, Java text blocks, Python f-strings incl. 3.12 same-quote
  nesting). Every other language falls back to whitespace-only, so the stripper
  can never corrupt content.
- ~32% fewer tokens on a realistic multi-file read; +~102 fixed tokens for the
  tool schema, recovered many times over by a single subsystem read.

Tests: cache-write pricing + fallback, lossless persistence round-trip, the
context gauge, comment-stripping golden cases per language (comment-chars in
strings, Java text blocks, Python f-string nesting, CSS has no //), and the
unsupported-language safe fallback. gofmt / vet / build / -race all green.

* specialist: register read_minified_file in the tool registry + read-only sets

Smoke caught TestKnownToolNamesMatchCoreRegistry drifting once read_minified_file
joined the core read-only tools: the specialist tool allowlist (knownToolNames),
the read-only/edit/execute categories, and the read-only auto-approve set did not
list it. It is a read-only companion to read_file, so it belongs alongside
read_file in all of them; updated the default-allowlist test accordingly.
2026-06-19 12:03:07 +05:30
KRATOSandKRATOS 152bb6b62d [codex] add Go observability backend commands (#59)
* feat(go): add observability backend primitives

* feat(go): add session search and doctor backends

* feat(go): expose observability cli commands

* fix(go): address observability review feedback

---------

Co-authored-by: KRATOS <[email protected]>
2026-06-04 21:43:23 +05:30