Skip to content

Argus feels fast: early words in chat, reasoning effort by need (rule 3) - #324

Merged
lbx154 merged 1 commit into
devfrom
perf/fast-feel
Oct 24, 2026
Merged

lbx154 merged 1 commit into
devfrom
perf/fast-feel

Conversation

@lbx154

@lbx154 lbx154 commented Oct 24, 2026

Copy link
Copy Markdown
Owner

Design rule 3 (no waiting in the dark), measured by the scenario eval.

What changed

Early words. While a Manager turn runs, its first model message (for example "我先看一下 core.py") is written to the shared Activity stream right away. It is a ui.argus row marked in_progress/live and carries the turn's message id (argus/webapi/manager_bridge.py). The final reply uses the same id and replaces it. Only the final reply goes into the transcript. The web feed hides a draft once its final reply, a later draft, or any later message exists (dropSupersededDrafts in frontend/web/src/lib/conversationEvents.ts). Map trace and map view skip drafts when they close a turn. The SSE route already streamed live deltas; this change also covers the blocking POST, page reloads, and other tabs.

Effort by need (argus/core/effort_policy.py, one place):

  • Manager chat turn: medium. High only while the turn rules on a team stage question, because that decides where the project goes next.
  • Bounded mission (direct mode, not a research/paper vertical, not a paper mission): Engineer round 1 and the Reviewer run at medium. A Reviewer-requested later round runs at high.
  • Research, paper, and staged work: high.
  • Nothing defaults to xhigh.
  • An operator's explicit effort still wins: env, a /config switch, or hosting. ARGUS_SKILL_SELF_/MANAGER_REASONING_EFFORT sets the Manager. ARGUS_SKILL_ENGINEER_[INITIAL_]REASONING_EFFORT and ARGUS_SKILL_REVIEWER_REASONING_EFFORT set the team roles.

Scenario eval (20/20, checks 96/96 both runs)

Baseline runs/20261024-085712 vs this branch runs/20261024-092946. Medians in seconds:

Category First response before → after Completion before → after
Simple Q&A 20 → 2.6 30 → 20
Small code 32 → 3.0 65 → 62
Medium engineering 42 → 3.2 126 → 100
Research/writing 66 → 3.6 101 → 70

The whole run cost 105 quota units, down from 195 (estimated API price $1.81, down from $4.81).

First response now counts the in-progress first line, because that is when the person first sees words in the chat. Completion is when the answer or work is ready.

Tests

  • New: tests/test_effort_policy.py.
  • New vitest cases in frontend/web/src/test/conversationEvents.test.ts.
  • pytest: tests/webapi, daemon, apps, manager, core, release_tools.
  • Web: full vitest and tsc.
  • ruff.
  • Release artifacts rebuilt.

🤖 Generated with Claude Code

Early words: the Manager's first message of a turn ("我先看一下 core.py")
goes on the shared Activity stream at once as a ui.argus row marked
in_progress/live, with the turn's message id. The final reply carries the
same id and replaces it; only the final reply is journaled. The web feed
drops a draft once its final reply, a later draft, or any later message
exists; map trace/view ignore drafts when closing a turn.

Effort by need (argus/core/effort_policy.py): Manager chat turns run at
medium, high while ruling on a team stage question. Bounded missions
(direct, not research/paper vertical) run Engineer round one and the
Reviewer at medium; later rounds, research, paper and staged work at high.
Nothing defaults to xhigh. An explicit role effort (env, /config switch,
hosting) still wins.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lbx154
lbx154 merged commit 4f98cb3 into dev Oct 24, 2026
4 of 5 checks passed
@lbx154
lbx154 deleted the perf/fast-feel branch October 24, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant