Echo
/install echo-cue
echo-cue 🔔 (a.k.a. "echo")
A zero-build local patch for OpenClaw Control UI (webchat) that plays a short two-tone chime (A5 → E5, ~900ms) when an assistant reply finishes streaming. Designed as a stop-gap until upstream PR openclaw/openclaw#73894 (issue #69186) lands.
Why this exists
OpenClaw Control UI has no completion sound on main yet. PR #73894 implements
it but has been OPEN without review since 2026-04-29. This skill injects an
equivalent IIFE into the bundled UI dist so it works today, and gracefully
steps aside when upstream ships.
What you get
- Short ding-dong when the assistant finishes a reply
- Skipped for
NO_REPLY/ empty silent completions - Always rings by default (foreground + background); set
onlyHidden=onto limit to hidden tabs only - 4-second hard rate-limit + content-fingerprint dedup → never double-rings on streaming re-renders
- Per-browser localStorage toggles (no UI surface added)
- One-shot apply / remove with backup
- Cache-bust: rewrites
index.htmlto a new bundle filename so plain Cmd+R picks up the patch - Patches every detected OpenClaw install (brew + nvm + OPENCLAW_HOME) so it works
even when Gateway runs under a different node than
which openclawresolves - Auto-detects upstream PR landing → skips itself
Install
bash apply.sh
Then refresh your Control UI browser tab (regular Cmd+R is enough, the script cache-busts the bundle filename). Click or press a key once on the page to unlock the AudioContext (this happens automatically the first time you send a message).
Verify
DevTools console:
window.__milly_cue_v1__ // → true
Send a question, switch to another tab — you should hear a ding-dong when the assistant finishes.
Toggle (per browser)
// Disable entirely
localStorage.setItem('milly.completionCue', 'off')
// Re-enable
localStorage.removeItem('milly.completionCue')
// Ring even when the tab is in foreground (default behaviour as of 0.2.0):
localStorage.removeItem('milly.completionCue.onlyHidden')
// Limit ringing to hidden / unfocused tabs only:
localStorage.setItem('milly.completionCue.onlyHidden', 'on')
Uninstall
bash remove.sh
Restores the original bundle from index-*.js.milly.bak and the original
index.html from index.html.milly.bak.
After openclaw update
The update overwrites dist/control-ui/..., dropping the patch. Re-run:
bash apply.sh
apply.sh is idempotent and detects upstream:
- Already patched → skip
- Upstream
responseCompletionSoundshipped → skip + advise uninstall
Known limits
- Anchor:
.chat-group.assistantDOM class. If OpenClaw renames it the patch silently does nothing (fail-quiet, no breakage). - AudioContext requires one user gesture per page load (browser policy).
- Webchat only. TUI / iOS / macOS / Android clients are not covered (they have their own native notification stacks).
- Single audible cue per assistant turn regardless of message length.
File layout
| File | Purpose |
|---|---|
apply.sh |
Detect every OpenClaw install, idempotent inject IIFE, backup, cache-bust |
remove.sh |
Restore from .milly.bak files |
inject/completion-cue.iife.js |
The patch payload |
tests/manual.md |
7-step verify checklist |
Related
- Issue: openclaw/openclaw#69186
- Upstream PR (stop-gap target): openclaw/openclaw#73894
- Sibling skill (same pattern):
agent-tab-title
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install echo-cue - 安装完成后,直接呼叫该 Skill 的名称或使用
/echo-cue触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Echo 是什么?
Patch a locally installed OpenClaw Control UI so that finishing an assistant reply plays a short Web-Audio two-tone "ding-dong" chime in the browser tab. Loc... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 92 次。
如何安装 Echo?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install echo-cue」即可一键安装,无需额外配置。
Echo 是免费的吗?
是的,Echo 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Echo 支持哪些平台?
Echo 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Echo?
由 SymbolStar(@symbolstar)开发并维护,当前版本 v0.2.0。