KyongSik-Yoon/claude-mods/tree/main/smooth-stream
smooth-stream
ストリーミング中のアシスタント返信を、各チャンクを一度に表示する代わりに滑らかなタイプライター効果で見せる Claude Code mod。
この mod について
smooth-stream
ストリーミング中のアシスタント返信を、各チャンクを一度に表示する代わりに滑らかなタイプライター効果で見せる Claude Code mod です。
- 毎秒約 30 フレームで、1フレームに少なくとも数文字を表示
- 大きなバーストにも1秒未満で追いつくため、モデルから大きく遅れません
- アニメーションするのはモデルのストリーミング中に届いた返信だけです。リサイズやスクロールで再描画された古いメッセージは一度に表示します
- ターミナルとデスクトップ アプリの Code タブで動作
インストール
claude plugin marketplace add KyongSik-Yoon/claude-mods
claude plugin install smooth-stream@kyongsik-mods
その後 /reload-plugins を実行するか、新しいセッションを開始します。mods 対応の Claude Code ビルドが必要です(2.1.289 でテスト済み)。
オプション
デフォルトは normal で、設定は不要です。変更するには /plugin configure smooth-stream@kyongsik-mods(または /config)を実行し、Reveal speed を設定します。
仕組み
AssistantMessage の ui.render hook が返信テキストのプレフィックスをエンジンに渡し、33 ms の $.clock タイマーが $.state を通してそのプレフィックスを伸ばします。turn.step hook はメイン ループがストリーミング中か追跡します。
インストール
まず作者の README で marketplace とプラグイン名を確認してください。コマンドはリポジトリの構成によって変わる場合があります。
claude plugin marketplace add KyongSik-Yoon/claude-mods claude plugin install smooth-stream
原文 / README
smooth-stream
A Claude Code mod that reveals streaming assistant replies with a smooth typewriter effect, instead of dropping each chunk on screen at once.
- ~30 frames per second, at least a couple of characters per frame
- Catches up on large bursts within a fraction of a second, so it never falls far behind the model
- Only replies that arrive while the model is streaming are animated; old messages redrawn on resize or scroll show whole
- Works in the terminal and the desktop app's Code tab
Install
claude plugin marketplace add KyongSik-Yoon/claude-mods
claude plugin install smooth-stream@kyongsik-mods
Then run /reload-plugins or start a new session. Requires a Claude Code build with mods support (tested on 2.1.289).
Options
Defaults to normal; no setup needed. To change it, run /plugin configure smooth-stream@kyongsik-mods (or open /config) and set Reveal speed:
| Value | Feel |
| --- | --- |
| slow | 1+ char per frame, drains a burst in ~0.8 s |
| normal (default) | 2+ chars per frame, drains a burst in ~0.4 s |
| fast | 4+ chars per frame, drains a burst in ~0.2 s |
How it works
A ui.render hook on AssistantMessage hands the engine a prefix of the reply text, and a 33 ms $.clock timer grows that prefix through $.state, so each frame redraws only the message being typed. A turn.step hook tracks whether the main loop is streaming, which is how already-finished messages are left alone.
Develop
claude plugin validate .
claude plugin test .
