v2.1.1
An agent turn stops re-reading the conversation
In code mode, prefill used to crawl as the rounds piled up: the
prompt could no longer reproduce what the model had just generated,
so the cache died at the first assistant turn every step — and a
model whose memory cannot rewind answered that by re-reading the
whole conversation. A turn is now recorded so the next prompt is a
true append, and how to record it is probed per model on each engine
rather than assumed.
Second agent step, reused prompt tokens: Qwen3.5 0.8B 0 → 233,
Qwen3.8 27B 0 → 202, Qwen3.6 35B-A3B 0 → 233, Qwen3.5 4B (GGUF)
0 → 62. Only the genuinely new tail is computed, and the reused span
grows with the transcript instead of the cost doing so. Gemma 4, QwQ
and the Qwen3 line report identical counts before and after.
Thinking off no longer costs a full prefill every turn: the empty
reasoning block Chaty prefills after the assistant header was
missing from stored turns, so round two diverged right there. 0% KV
reuse on Qwen3.5 and LFM2 before, 100% after — and thinking off is
code mode's default.
LFM2's tool calls run. The engine rendered control tokens as
nothing, so <|tool_call_start|>[read_file(path='x')]<|tool_call_end|>
reached Chaty as ordinary prose and the call never fired.
A screenshot the model has already seen is no longer re-encoded.
Three consecutive tool-result rounds on Qwen3.5 4B cost 2826ms,
5596ms and 5741ms before; they now cost about 150ms each, and a
fresh screenshot encodes only itself. Dropping stale screenshots
turned out to make llama.cpp slower, not faster, so it keeps them.
A chat reply now travels the way the model wrote it — stripping the
reasoning out of stored turns meant every reply re-read the whole
conversation. Attached pictures count toward the context budget.
Context compaction now condenses the work with a model-written
summary instead of a 60-character index per turn, and leaves room to
breathe rather than skimming the limit: the same task on an 8k
window went from 63 rounds and 633 seconds to 18 rounds and 132
seconds. Chat and code also share one token budget now, calibrated
against what the engine actually charges.
Install
| Platform | File |
|---|---|
| Windows x64 | Chaty_*_x64-setup.exe — per-user installer, no admin |
| macOS (Apple Silicon) | Chaty_*_aarch64.dmg |
| Linux x64 (beta) | Chaty_*_amd64.AppImage — chmod +x and run. First Linux release — please report anything odd |
⚠️ macOS first launch — "Apple could not verify…" / "damaged"
Chaty is ad-hoc signed but not notarized (no paid Apple Developer
account), so Gatekeeper flags it on first launch. The app is safe —
everything runs locally. Clear the download quarantine once, in Terminal:
xattr -dr com.apple.quarantine /Applications/Chaty.appThen open Chaty normally. (Alternatively: try to open it once, then go to
System Settings → Privacy & Security → Open Anyway.)
Full Changelog: v2.1.0...v2.1.1