Nanobot
Nanobot drops compaction chatter on QQ while bounding reasoning replay
Nanobot merged channel-level suppression of compaction announcements on QQ, preventing permanent message flooding on platforms without in-place editing. Reasoning replay now bounds historic thinking blocks to the latest turn, protecting conversation token budgets during multi-turn provider sessions.
Nanobot merged PR #5799 on September 17, 2026, addressing channel noise caused by automatic context compaction on messaging platforms like QQ. While Telegram and Discord allow bots to update a single status notice in place or edit messages ephemerally, QQ's bot API lacks message modification and recall capabilities for group and direct chats. Consequently, compaction cycles were posting standalone 'Compressing context...' and 'Context compacted.' messages into user conversations. The fix adds a channel-level capability flag that suppresses lifecycle notices by default on QQ. Concurrently, PR #5611 introduces bounded reasoning replay, preventing past-turn thinking blocks from consuming prefill token budgets on subsequent model queries, while PR #5779 adds atomic session file locks.
The facts
- PR #5799 resolved issue #5784 by introducing BaseChannel.show_compaction_notices, disabled by default for the QQ channel adapter. - QQ's official botpy SDK only supports POST messages for group and C2C channels, making in-place status collapsing impossible on that platform. - Users can explicitly re-enable notices via channels.qq.showCompactionNotices: true if verbose lifecycle updates are desired. - PR #5611 adds agents.defaults.replayReasoning: recent, ensuring historical thinking blocks are omitted from subsequent prompt prefill budgets. - PR #5779 introduces AsyncFileLock and atomic file replacements to eliminate race conditions during concurrent session tool executions.
Why it matters
Chat applications have widely diverging API affordances. Treating every chat platform as if it has rich editing, message recall, and ephemeral typing indicators leads to dreadful user experiences on simpler messaging protocols. Dropping intrusive system notifications on platforms that lack in-place updates keeps the agent conversational. Simultaneously, bounding thinking block replay solves an acute operational cost issue, where long-running multi-turn sessions pay exorbitant prefill costs to re-read their own historical reasoning blocks.
Current
Inspected on 2026-09-18. The Nanobot stable-channel baseline is v0.3.5 published 2026-09-15T19:05:37Z. The primary source was merged 2026-09-17T16:45:59Z when captured. Mainline merges, open proposals and packaged releases are distinct availability states; the release baseline does not establish that a proposal has shipped.
Evidence
Primary evidence: HKUDS/nanobot PR #5799 (https://github.com/HKUDS/nanobot/pull/5799). Supporting context: HKUDS/nanobot issue #5784 (https://github.com/HKUDS/nanobot/issues/5784); HKUDS/nanobot PR #5611 (https://github.com/HKUDS/nanobot/pull/5611). The source bodies and linked context were inspected. Test results quoted from contributors remain attributed reports, not independently reproduced experiments.
Operator take
Small engineering decisions like silencing compaction notices on QQ reflect real-world operational maturity. For operators deploying self-hosted agents across Asian messaging ecosystems, chat hygiene is as important as model accuracy. The reasoning replay fix is an immediate cost saver for anyone running DeepSeek or Anthropic reasoning models, preserving session context without inflating prefill token invoices on every follow-up question.
Caveat
Suppressing compaction notices means QQ users will not see visual indicators when background context optimization runs. The reasoning replay boundary applies at request dispatch time only; full reasoning blocks remain stored on disk in session JSONL files for auditability. File locking requires a filesystem supporting standard POSIX lock primitives.
Suppressing compaction notices means QQ users will not see visual indicators when background context optimization runs. The reasoning replay boundary applies at request dispatch time only; full reasoning blocks remain stored on disk in session JSONL files for auditability. File locking requires a filesystem supporting standard POSIX lock primitives.