跳到主要內容
maxstudioNews
AI 自動化DEV Community (Claude Code)約 5 分鐘

改善 Claude Code 互動體驗:從無人問津的收件匣到高效行動中心

作者為其 Claude Code 會話打造了一個收件匣,卻發現它因缺乏互動性而無人使用。透過分析問題根源,作者將收件匣轉變為一個能直接回覆 AI 問題、管理會話狀態並暫存想法的行動中心。這些改進大幅提升了與 AI 協作的效率與使用者體驗。

改善 Claude Code 互動體驗:從無人問津的收件匣到高效行動中心
圖片來源:DEV Community (Claude Code)

三週前,我曾撰文介紹 sessionhub,這是一個用於管理我所有機器上 Claude Code 會話的註冊中心和收件匣。註冊中心本身運作良好,我整天開著它來查看各個會話的運行狀態,會話也能自動註冊、回報並在機器間移動,無需我費心。

然而,收件匣卻是另一回事,我後來就不再查看它了。這並非因為它壞了,而是因為裡面的內容沒有告訴我該做什麼。一個標示著「已阻塞」或「已完成」的會話列表,僅僅是資訊,而非可執行的動作。

如果我仍然需要透過 SSH 連線到機器才能處理這些會話,那我會直接使用終端機,跳過收件匣。這篇文章將探討我所做的改變,如何讓收件匣從一個僅供查看的工具,轉變為一個能讓我直接採取行動的平台。

我無法回答的問題:我檢查了資料庫,想了解收件匣究竟捕捉到了什麼。自 10 月 3 日以來,Claude Code 在我的多台機器上共發出了 171 個權限提示。

其中 120 個根本不是權限請求,而是 Claude 提出的問題(透過 AskUserQuestion 工具,例如:「哪種方法?」、「我也應該更新文件嗎?」)。sessionhub 雖然能顯示這些問題,卻無法回答它們。

從儀表板點擊「允許」只會批准工具呼叫,但並未回答問題,導致對話仍在終端機中保持開啟。這 120 個問題最終都是在本地端手動回答的。

Claude Code 的 hook 可以代表你回答問題:它會返回「允許」以及 updatedInput,其中包含原始工具輸入和一個從問題文本到所選標籤的答案映射。sessionhub 的權限 hook 已經位於這個確切的位置,等待伺服器的決策。

因此,所需的改變很小:儀表板現在會將每個問題的選項顯示為按鈕,並提供一個「其他」輸入框。點擊「發送答案」會將選擇與決策一起發送到伺服器,然後 hook 會將其作為 updatedInput 傳回給 Claude Code。

首次實測失敗了。我的手機點擊了舊的「允許」按鈕,因為它仍然運行著部署之前的頁面版本。因此,現在每個 API 回應都帶有頁面的指紋,當頁面內容改變時,開啟中的分頁會顯示一個「重新載入」提示。

伺服器也會拒絕針對問題的單純「允許」操作,這樣過期的頁面就會明確地失敗,而不是悄無聲息地無效。第二次測試成功了:我在手機上點擊了「藍色」,會話便繼續進行。

無需開啟終端機即可回覆:讓收件匣成為「行動中心」的另一半功能,是能夠回覆那些已完成並在最後一條訊息中提出問題的會話。現在,每個收件匣列都帶有一個回覆框。

sessionhub 原本就有在會話閒置時,將訊息輸入到會話窗格的功能(由 watcher 或 Claude Code mod 傳送),因此這個回覆框只是重複利用了現有功能。草稿內容在頁面 30 秒刷新後仍會保留。

此外,收件匣列現在會顯示 Claude 最後回覆的開頭內容,並移除了 Markdown 格式但保留換行符號,取代了原本的「已完成」字樣。這項改變讓會話列變得一目瞭然。

在機器離線時移動會話:sessionhub 能夠在機器之間移動會話,它會打包對話紀錄和未提交的工作,為目標機器加密,然後在其上恢復會話。昨天我嘗試在來源機器無法連線時移動一個會話,結果因為無法打包而失敗。

唯一的跡象是會話詳細資訊下方的一行文字。為此,我做了兩項修正:失敗的移動現在會被歸類到收件匣的一個獨立群組中,並帶有重試按鈕,同時也會顯示在警報中。

此外,還引入了快照功能。每台機器的 watcher 會在背景中為閒置的會話建立快照,最多每 10 分鐘一次,且僅在對話紀錄有變動時進行。每個快照都會使用 X25519 為其他機器加密,因此伺服器儲存的是無法讀取的二進位資料。

如果來源機器在 2 分鐘內沒有回應,移動操作將使用最新的快照,而不是等待。當來源機器恢復連線時,它會終止剩餘的會話窗格。快照會在會話結束或移動時、14 天後,或超過 1 GiB 時從最舊的開始移除。

從使用者角度看儀表板:我請 Claude Code 對即時儀表板進行了使用者體驗審查。它透過 Playwright 使用無頭 Chrome 瀏覽器,在手機和桌面寬度下截取了螢幕截圖,然後閱讀這些圖片並列出了使用者可能遇到的問題。

修正措施包括:為每個狀態設定一種顏色和一個圖示,例如:✋ 需要您、🚚 移動失敗、💬 等待中、⚠️ 機器靜默、⏳ 運行中、✅ 已完成、💤 閒置。會話現在按狀態排序,因此需要我處理的會話會顯示在最上方。

此外,使用者可以從網頁上重新命名會話,當標題為預設的「Claude Code」時,會自動回溯使用任務名稱。機器標頭會顯示「線上」或「靜默 8 分鐘」,這讓我發現其中一台機器已從網路中斷連線。

任務:每日站會與想法暫存區:sessionhub 會將工作日誌筆記轉換為每日任務列表,但我從未使用過那個分頁。當我思考原因時,發現它應該具備兩個功能。

首先是撰寫每日站會報告。現在「任務」分頁有一個「站會」按鈕,可以生成昨天(最後一個工作日,所以週一會涵蓋週五)、今天和遇到的阻礙,以純文字形式呈現並附有「複製」按鈕。sessionhub task standup 命令也會印出相同的內容。

其次是暫存想法。我每天會多次切換情境,任務中途產生的想法很容易遺失。現在有一個「暫存想法」輸入框、一個 sessionhub idea 「…」命令,以及任何 Claude 會話都能在我要求時暫存想法。

這些想法會待在自己的列表中,直到我開始處理或捨棄它們,並且不會出現在站會報告中。該分頁本身也從一整面卡片牆,變成了每項任務一行:首先是未完成的工作,然後是想法,最後是已完成的任務。

我的學習心得:一個僅供閱讀的儀表板,並不是一個真正能使用的儀表板。上述每一項改變都減少了我前往終端機的次數。在設計之前,務必先檢視數據。「大多數提示都是問題」這點是我始料未及的。

最後,務必在你實際使用的裝置上進行測試。這次遇到的關鍵錯誤是手機上過期的頁面,這不是單元測試能捕捉到的問題。

sessionhub 是一個開源專案(MIT 授權),由單一 Go 二進位檔和 SQLite 組成,可在 github.com/abdallah/session-hub 找到。如果你在多台機器上運行 Claude Code,我很樂意聽取你對 sessionhub 的期望。

Share

覺得值得一看?分享給朋友。

以上為 AI 自動翻譯導讀。原文版權歸 DEV Community (Claude Code) 所有, 建議透過「閱讀原文」前往原始網站,以取得最完整資訊並支持原作者。

Newsletter

不用每天追,AI 重點每週寄給你

43 個來源、每 2 小時更新,太多看不完。電子報每週挑最值得看的幾則,附上 Max 的看法。

每週一封。Email 只用來寄電子報,每封信都能一鍵退訂。