imu-note
いむたろ
いむたろ
@imutaroh
新卒エンジニア / データ基盤 × AI

What — 現在表示されているもの

herdr のエージェント一覧は、設定しなければ組み込みのデフォルトで描画される。

rows = [["state_icon", "workspace", "tab"], ["agent"]]

2行目の agentエージェント種別名claude / codex)であって、Opus や Sonnet といったモデル名ではない。herdr にモデル名のトークンは存在しない。

使える組み込みトークンは herdr --default-config に載っている 8 つ。

  • state_icon
  • state_text
  • workspace
  • tab
  • pane
  • agent
  • terminal_title
  • terminal_title_stripped

このうち terminal_title_stripped に、Claude Code のセッション名がそのまま入っている。Claude Code が OSC タイトルとして流しているものを herdr が拾っているだけなので、transcript の jsonl を読む仕掛けも hook もいらない

$ herdr agent list
... "terminal_title":"✳ 技術知識の洗い出しとまとめ",
    "terminal_title_stripped":"技術知識の洗い出しとまとめ" ...

How — config.toml に1セクション足す

~/dotfiles/.config/herdr/config.toml の末尾に追記する(~/.config/herdr/config.toml はここへのシンボリックリンク)。

[ui.sidebar.agents]
row_gap = 0

[ui.sidebar.agents.rows_by_agent]
claude = [
  ["state_icon", "workspace", "tab"],
  [{ token = "terminal_title_stripped", fg = "#58a6ff", dim = false }],
]

グローバルの rows を丸ごと差し替えず、rows_by_agentclaude だけ上書きしている。**codex など他のエージェントが OSC タイトルを出さない場合に2行目が空欄になる事故を避けるため。**他は既定のまま種別名が出る。

反映は再起動不要。

herdr config check          # → config: ok
herdr server reload-config  # → status: applied

落とし穴

rename していなくても名前が出る

Claude Code は /rename した名前(transcript の custom-title)と、会話から自動生成した要約タイトル(ai-title)を同じ OSC タイトルに流している。herdr 側では区別できない。しかも自動タイトルは会話の途中で勝手に書き換わる(実測で1セッション中に1回変わった)ので、サイドバーの見出しは安定した目印にはならない。

もう一つ、working 中はスピナー記号 terminal_title_stripped に残る(herdr 0.7.5 で確認。idle の は除去される)。1行目の state_icon と重複するだけなので実害はない。

関連