4.6.1 — 部屋と、大量出力に負けないグリッド
2026-08-06 に書いたスナップショットです(MulmoTerminal 4.6.1)。 ここに書いた挙動はその日に 出荷されたものです。古くなっていくのは想定どおりなので、最新の内容は各節からリンクしている ガイド本体を見てください。
npx mulmoterminal@latest
設定はほぼ不要です。 性能の修正は 4.6.1 を動かした時点で効いています。部屋は、いま使っている フォームに1つ入力欄が増え、ツールバーにアイコンが1つ増えるだけです。数字として見るべきなのは 後述の sessionIdleReapDays だけです。
部屋 — 会話が置かれる場所
4.6.0 の round table は、あるセルの返答を次のセルの入力欄に運んでいました。動きはしましたが、 会話は流れている間だけ存在し、どこにも残らず、セル以外は参加できませんでした。
部屋は、その会話をセルから切り離して置いておくものです。~/.mulmoterminal/rooms/<id>.jsonl に1行1 JSON で追記される、追記専用のファイル1つです。
始める
部屋は round table のピッカーに room という入力欄1つとして現れます。
- 空のままにすると、実行ごとに新しい部屋ができます(
table-2026-08-06-…)。 - 名前を書くとその部屋で話します。その部屋が既にあれば会話は続きます — 各席は、話す前に それまでのターンを読み返します。前に使った standup に戻るというのは、
standupでテーブルを 始め直すことと同じです。
名前は小文字・数字・-、先頭は文字か数字、64 文字までです。それ以外は黙って新しい部屋に すり替えるのではなく拒否されます。
読む、自分で参加する
ツールバーの Rooms(Pull requests の隣の forum アイコン)で全部の会話が開きます。左に部屋、 右にメッセージ、下に自分で書き込む欄です。動いているテーブルの部屋へは、セルの forum メニューの read the conversation から1クリックで行けます。部屋の隣のゴミ箱アイコンで削除できます。
この書き込み欄は「あると便利」なものではありません。エージェントは runner に打ち込まれるだけで 自分からは何も呼べないので、人間は外から会話に参加します — シェルや CI が使うのと同じ入口 です。書いた内容は、次の話者が読む窓の中に入ります。
シェルから、CI から
mulmoterminal room list
mulmoterminal room read standup
mulmoterminal room post standup --from ci "tests passed on main"
-- の後ろは全部メッセージ本文なので、フラグを含む投稿もそのまま通ります。
mulmoterminal room post standup -- we should use --force carefully here
動いている MulmoTerminal に loopback で話します(ポートを変えたなら --port)。--from は 表示用のラベルで、認証はしていません。
HTTP 側(GET /api/rooms、/api/rooms/:room の GET / POST / DELETE)も含む完全な リファレンスはセル同士を会話させるにあり、そちらが常に最新です。
併せて入った round table の変更2点
- 話者が読むのが「直前の返答だけ」から「それまでの会話全体」になりました。 部屋があるから できることで、読み返すログがあるということです。
- 答える前にツールを使う席が、本当の答えを出せるようになりました。 4.6.0 では違うものが 出ることがありました。
それでもやらないこと
4.6.0 からの制限は意図的にそのままです: エージェントには新しい能力を一切与えていません。 部屋用の MCP ツールは無く、エージェントが部屋の存在を知る手段も、自分で会話を始める手段も ありません。席に着かせるのは人間です。知っておく制限を参照。
アプリより長生きしたセッション
「動き続けていたことに気づいていなかったセッション」についての、関連する2つの話です。
一覧され、止められます。 Settings に Sessions that survived a restart が入りました。前の サーバから動き続けている端末が、全ディレクトリ横断で並びます。各行にはどこで動いているか、 それが何か、どれだけ idle か、終了して失うものがあるかが出ます。Stop はその1セッションだけを 終了し、transcript のある会話はあとから resume できます。これまではプロセスが動いているのに それを認める画面が無く、tmux ls が唯一の見つけ方でした。
誰も要らないものは次回起動時に終了します。 同じセクションが sessionIdleReapDays を持って います。誰も attach しておらず出力も無い端末を、次回起動時に終了するまでの日数です。 既定 7 日、0 で無効、範囲は 0〜365。その数字に取られる行には ends at next start と 出るので、掃除が「掃除される一覧の中で」見えます。
終わるのは会話ではありません — ディスク上の transcript は tmux セッション無しでも resume でき、 失われるのはプロセスとそのスクロールバックです。
どちらも設定にあります。
端末が、表示しているコマンド自身を遅くしなくなりました
有効化する設定はありませんが、グリッドの体感が変わる理由なので書いておきます。
何が悪かったか。 サーバはブラウザが再接続したときに画面を描き直せるよう、各セルの出力の末尾を 保持しています。この末尾への追記が、端末が吐いたチャンクごとに末尾全体のサイズを消費して いました — 数十バイトの新しいテキストに対して約1 MB のコピーです。大きなテスト実行やビルドの 最中、この関数だけで CPU 1 コアの 86% を使い、しかもそれは「端末を読むために使えなかった CPU」でした。結果として、動かしているプログラム自身が、自分の出力が回収されるのを待たされて いました。
実際にどう変わるか。 効き方は「何セルが忙しいか」で伸びます。同じ重いコマンドを複数セルで 同時に走らせた場合:
| 走らせたセル数 | 修正前 | 修正後 |
|---|---|---|
| 1 | 2.0 秒 | 2.0 秒 |
| 3 | 3.9 秒 | 2.1 秒 |
| 6 | 8.2 秒 | 2.2 秒 |
1セルだけなら変わりません — そこには元から行列が無かったからです。6セルが、以前1セルにかかって いた時間で終わります。サーバが邪魔をするのをやめたということです。参考として、アプリを一切 介さないシェル 6 本だけでも 1.9 秒かかります。2.2 秒はその下限の誤差の範囲です。
入っているかの確かめ方。 騒がしいものを3〜4セルで同時に走らせて(テスト、ビルド、find / など)、まとめてやったときと1つずつやったときの時間を比べてください。4.6.0 ではセルを足すほど 合計が伸びます。4.6.1 では伸びません。
見えるものは何も変わっていません。同じ出力が同じ順序で届き、ブラウザを再接続すれば同じ画面が 描かれます。変わったのはコストだけです。
小さめの修正
- tmux クライアントが殺されても、セッションを道連れにしません。 クライアントを失うことは プログラムが終わることと同じ出来事ではないので、両者を区別するようになりました。まだ働いて いるセッションを畳んでしまうことがなくなります。
- ターン境界を推測せず読みます。 claude がターンを終えたかどうかを、出力からの推測ではなく claude 自身の報告から取るようにしました。
- model id に Claude Code の
[1m]拡張コンテキスト接尾辞を書けます。 provider 設定のclaude-opus-4-5[1m]が「不正な形式」として弾かれず通ります — プロバイダーとモデルを参照。 - ツール呼び出し履歴の保持コストを下げました。 パネルのセッションごとの履歴を、ツール呼び出し 1回につき2回、毎回全部ディスクに書き直していました。速いツール呼び出しは1回の書き込みを 共有します。
- 完了ベルが立っているコレクションのレコードが、ボードで分かるようになりました — Kanban の カードに色が付きます(urgent は赤、nudge は amber)。MulmoClaude が立てたベルでも付きます。
- カスタムビューが core の host surface の残りに届きます — 翻訳、表示用に解決された保存画像、 宣言済みの mutate アクション。
- スマホ側のコレクション / フィードのレコードが store の継ぎ目を通るようになり、REST の item 書き込みは書く前にスキーマで検査されます。
- Windows CI の修正2件。どちらもアプリではなくテスト側の問題です。
リンク
- セル同士を会話させる — 部屋と round table、常に最新
- 設定 — 全設定。
sessionIdleReapDaysもここ - プロバイダーとモデル — provider 設定、model id
- Changelog — 各リリースの 変更点と PR