Skip to content

feat: fast talks auto mode#85104

Merged
vincentkoc merged 27 commits into
openclaw:release/2026.6.8from
alexph-dev:feat/fast-talks-auto
Jun 18, 2026
Merged

feat: fast talks auto mode#85104
vincentkoc merged 27 commits into
openclaw:release/2026.6.8from
alexph-dev:feat/fast-talks-auto

Conversation

@alexph-dev

@alexph-dev alexph-dev commented May 21, 2026

Copy link
Copy Markdown
Contributor

Fixes #85087

Summary

  • adds fast: auto alongside fast: on/off, with the default 60s cutoff and configurable fast_seconds
  • resolves effective fast mode dynamically so follow-up model calls after the cutoff can run without priority/fast tier where the backend supports retiering
  • emits channel-visible fast progress notices in the tool/progress stream: 💨Fast: auto-off(...) at the next tool-execution boundary after the cutoff, then 💨Fast: auto-on at turn reset
  • shows the current effective fast mode directly in Telegram /fast, including the configured auto threshold in status text and the native menu button
  • updates TUI/UI/ACP/protocol/docs/tests for the new auto mode
Screenshot 2026-06-17 at 15-39-25 Screenshot 2026-06-09 at 17-13-48

Verification

  • git diff --check
  • OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs extensions/telegram/src/bot-message-dispatch.test.ts extensions/telegram/src/config-schema.test.ts src/plugin-sdk/channel-streaming.test.ts src/auto-reply/reply/dispatch-from-config.test.ts src/auto-reply/reply/agent-runner-execution.test.ts src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts src/agents/fast-mode.test.ts src/agents/pi-embedded-runner/run.fast-mode-auto.test.ts src/auto-reply/reply/commands-session-usage.test.ts ui/src/ui/chat/slash-commands.browser-import.test.ts
  • pnpm --config.verify-deps-before-run=false test:bundled
  • pnpm --config.verify-deps-before-run=false protocol:check
  • pnpm --config.verify-deps-before-run=false ui:i18n:check
  • pnpm --config.verify-deps-before-run=false check:architecture
  • pnpm --config.verify-deps-before-run=false build
  • pnpm --config.verify-deps-before-run=false openclaw gateway restart
  • pnpm --config.verify-deps-before-run=false openclaw gateway status
  • Live Telegram Desktop proof via Computer Use against the managed LaunchAgent gateway from this checkout
  • Earlier broad local PATH="/tmp/openclaw-swiftlint:$PATH" pnpm --config.verify-deps-before-run=false check:changed passed through conflict markers, changelog attributions, dependency/package guards, core/core-test/extension/extension-test typecheck, core/extensions/scripts lint; local lint apps failed because portable SwiftLint cannot load SourceKit without full Xcode on this host

Real behavior proof

Behavior addressed: fast: auto starts with effective fast mode enabled, disables fast mode for later model calls after the configured threshold, reports the cutoff in channel progress, resets with 💨Fast: auto-on, and shows current fast status in Telegram /fast without requiring /fast status.

Real environment tested: local managed Gateway LaunchAgent, CLI/Gateway 2026.5.21, Telegram plugin in a real Telegram Desktop DM, config fastMode: auto with fast_seconds: 15, real provider openai-codex/gpt-5.5, and shell tool calls around an ~18s sleep.

Exact steps or command run after this patch:

pnpm --config.verify-deps-before-run=false build
pnpm --config.verify-deps-before-run=false openclaw gateway restart
pnpm --config.verify-deps-before-run=false openclaw gateway status

Telegram mixed-order prompt used after restart:

Run exactly three shell tool calls, one at a time, wait for each output before next: first command `python3 -c 'print("tool_a_before")'`; second command `python3 -c 'import time; s=int(time.time()*1000); time.sleep(18); e=int(time.time()*1000); print(f"sleep_start_ms={s}"); print(f"sleep_end_ms={e}"); print(f"sleep_duration_ms={e-s}")'`; third command `python3 -c 'print("tool_b_after")'`. Do not combine commands. Do not use loops. Final reply exactly: tool_a_before, observed sleep_duration_ms, tool_b_after.

Evidence after fix: Telegram Desktop showed one progress draft containing normal shell tool lines before 💨Fast: auto-off(32s>=15s), then more normal shell tool lines before 💨Fast: auto-on. The final Telegram reply reported tool_a_before, sleep_duration_ms=18003, and tool_b_after. Screenshots are intentionally not attached here because the live Telegram window contains PII; reviewer/maintainer can attach a redacted screenshot separately.

Observed result after fix: gateway status probe was ok on port 18789, the managed LaunchAgent command pointed at this checkout's dist/index.js, the progress draft kept the fast events in the tool list, and the final reply arrived after all tool results.

What was not tested: local SwiftLint app lint, because portable SwiftLint on this host fails to load sourcekitdInProc.framework without full Xcode. CI macOS should cover that lane. Config hot reload for normal Telegram reply dispatch remains future work; per reviewer/user direction, this PR does not add per-message config rereads. In a real provider turn, 💨Fast: auto-on is the end-of-turn reset event, so it is not expected to have a later tool line in the same turn; the Telegram renderer unit test covers the synthetic mixed-draft order where both fast callbacks are surrounded by ordinary tool lines.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui gateway Gateway runtime commands Command implementations agents Agent runtime and tooling extensions: anthropic extensions: codex extensions: xai size: XL proof: supplied External PR includes structured after-fix real behavior proof. labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper review: did not complete due to Codex infrastructure failure. Reviewed June 17, 2026, 4:09 AM ET / 08:09 UTC.

Summary
Review failed before ClawSweeper could summarize the requested change.

Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path.

Review metrics: none identified.

Stored data model
Persistent data-model change detected: persistent cache schema: src/agents/embedded-agent-runner/extra-params.sampling.test.ts, persistent cache schema: src/agents/embedded-agent-runner/extra-params.ts, serialized state: packages/gateway-protocol/src/schema/sessions.ts, serialized state: ui/src/ui/controllers/sessions.test.ts, serialized state: ui/src/ui/controllers/sessions.ts, serialized state: ui/src/ui/views/sessions.ts, and 5 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Not assessed.
Failure reason: invalid structured output.

This is a ClawSweeper/Codex infrastructure failure, not a PR readiness or patch-quality verdict.
Keep any merge decision on the normal maintainer review path until ClawSweeper can complete a fresh review.

Risk before merge

  • [P1] No close action taken because the review did not complete.

Maintainer options:

  1. Decide the mitigation before merge
    Retry the Codex review after fixing the execution failure.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • Review did not complete, so no work-lane recommendation was made.
Review details

Best possible solution:

Retry the Codex review after fixing the execution failure.

Do we have a high-confidence way to reproduce the issue?

Unclear. The review failed before ClawSweeper could establish a reproduction path.

Is this the best way to solve the issue?

Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction.

AGENTS.md: unclear because the file could not be read completely.

Codex review notes: model internal, reasoning high; reviewed against d1923085e307.

Label changes

Label changes:

  • remove mantis: telegram-visible-proof: Current Telegram visible-proof status is not_needed.
  • remove P2: Current review triage priority is none.
  • remove rating: 🦐 gold shrimp: Current review failed before PR readiness was assessed, so no rating label should remain.
  • remove merge-risk: 🚨 compatibility: Current PR review selected no merge-risk labels.
  • remove merge-risk: 🚨 auth-provider: Current PR review selected no merge-risk labels.
  • remove merge-risk: 🚨 message-delivery: Current PR review selected no merge-risk labels.
  • remove status: ⏳ waiting on author: Current PR status no longer selects a status label.
  • remove proof: 🎥 video: Current real behavior proof evidence kind is not_applicable.
Evidence reviewed

What I checked:

  • failure reason: invalid structured output.
  • codex failure detail: Codex review failed for this PR with exit 0 and wrote invalid JSON or schema-invalid output to /home/runner/work/clawsweeper/clawsweeper/artifacts/event/codex/85104.json: decision.rootCauseCluster.currentItemRelationship fixed_by_candidate requires a canonical PR.
  • codex stderr: No stderr captured.
  • codex stdout: ":"The PR changes fast-tier request shaping across provider routing and Codex app-server paths."},{"label":"merge-risk: 🚨 message-delivery","reason":"The PR changes Telegram/channel progress delivery for fast-auto status events and tool output handling."}],"itemCategory":"feature","reproductionStatus":"source_reproducible","reproductionConfidence":"high","requiresNewFeature":true,"requiresNewConfigOption":true,"requiresProductDecision":true,"reproductionAssessment":"Yes for the identified review finding: source inspection shows fast_seconds / fastSeconds are not read by the cutoff resolver while fastAutoOnSeconds is read. For the overall feature request, reproduction is not applicable because this adds new behavior.","solutionAssessment":"No until the cutoff contract is aligned; the overall implementation may be close, but merging with advertised ignored keys is not the best maintainab.

Likely related people:

  • unknown: Codex failed before it could trace repository history. (role: review did not complete; confidence: low)
How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@alexph-dev
alexph-dev force-pushed the feat/fast-talks-auto branch from 6394800 to 017e94b Compare May 21, 2026 22:04
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 21, 2026
@alexph-dev
alexph-dev force-pushed the feat/fast-talks-auto branch from 017e94b to 8262c23 Compare May 21, 2026 22:11
@alexph-dev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated after the latest rebase and proof cleanup:

  • rebased onto current main; PR is mergeable on head 8262c23f5403d1b40c7e2ee04f8ff28714982302
  • PR body now uses redacted Gateway/Telegram proof links only
  • local post-rebase proof passed:
    • git diff --check
    • node scripts/format-docs.mjs --check docs/gateway/protocol.md
    • OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/run-vitest.mjs src/gateway/protocol/index.test.ts src/auto-reply/reply/get-reply-directives.target-session.test.ts src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/dispatch-from-config.test.ts extensions/codex/src/app-server/run-attempt.test.ts src/agents/pi-embedded-runner/run.fast-mode-auto.test.ts -> 8 files, 488 tests passed
    • pnpm --config.verify-deps-before-run=false build

@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 21, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 21, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. labels May 21, 2026
@alexph-dev
alexph-dev force-pushed the feat/fast-talks-auto branch from 8c3cb70 to d00e72a Compare May 21, 2026 23:17
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 21, 2026
@openclaw-barnacle

Copy link
Copy Markdown

This assigned pull request has been automatically marked as stale after being open for 27 days.
Please add updates or it will be closed.

@vincentkoc

Copy link
Copy Markdown
Member

/landpr

Head: a006273511d771c9c0758fe98163b742825a4f29
Base: release/2026.6.8

Maintainer fixes pushed on top of the contributor branch:

  • 401f608d3418ebc1de50a3fa5a94980f0d77312a honors the documented fastSeconds / fast_seconds cutoff aliases in the shared fast-auto resolver.
  • 875f8edf4ce76a6ec721714c3f2da1a72df4e2b0 repairs the CI regressions exposed after that patch: live model-switch mocking, follow-up commentary forwarding, and two fire-and-forget Codex app-server events.
  • a006273511d771c9c0758fe98163b742825a4f29 retries the workflow-sanity base-ref fetch after the observed timeout-only actionlint failure.

Local / delegated proof after the final head:

  • node scripts/run-vitest.mjs src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/followup-runner.test.ts src/agents/fast-mode.test.ts
  • node scripts/run-bundled-extension-oxlint.mjs
  • node scripts/run-vitest.mjs extensions/codex/src/app-server/run-attempt.test.ts
  • actionlint .github/workflows/workflow-sanity.yml
  • git diff --check
  • .agents/skills/autoreview/scripts/autoreview --mode local clean
  • Crabbox run_e2c93b01137d on Azure lease cbx_2a2da251d067 passed delegated pnpm check:changed for final head.

Current GitHub state at handoff: no failing checks on a006273511d771c9c0758fe98163b742825a4f29; quick checks including Workflow Sanity/actionlint, Real behavior proof, dependency guard, TUI PTY, and security-sensitive guard are green. Blacksmith/CodeQL/OpenGrep jobs are still queued rather than failed, so please hold if the land gate treats those as blocking.

@vincentkoc

Copy link
Copy Markdown
Member

Land-ready after maintainer fix pass.

  • Source head: alexph-dev@a006273
  • Base: release/2026.6.8
  • Final status: GitHub check rollup is pass/skip only; PR merge state is CLEAN.
  • Maintainer fixes included:

Verification:

  • node scripts/run-vitest.mjs src/agents/agent-command.live-model-switch.test.ts src/auto-reply/reply/followup-runner.test.ts src/agents/fast-mode.test.ts
  • node scripts/run-bundled-extension-oxlint.mjs
  • node scripts/run-vitest.mjs extensions/codex/src/app-server/run-attempt.test.ts
  • actionlint .github/workflows/workflow-sanity.yml
  • git diff --check
  • .agents/skills/autoreview/scripts/autoreview --mode local clean
  • Crabbox run_e2c93b01137d on Azure lease cbx_2a2da251d067 passed delegated pnpm check:changed for the final head.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling app: web-ui App: web-ui channel: telegram Channel integration: telegram commands Command implementations docs Improvements or additions to documentation extensions: anthropic extensions: codex extensions: xai feature: ✨ showcase ClawSweeper spotlight: unusually compelling feature idea for maintainer attention. gateway Gateway runtime merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. scripts Repository scripts size: XL stale Marked as stale due to inactivity

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add automatic fast-mode: on for talks, off for longer runs; auto-off after X seconds

2 participants