跳到內容

收件匣與 Slack

收件匣收集從外面來的工作:目前主要是 Slack 上提及你的訊息。每一則都會等你讀過。你接受之後, spekterm 會在你確認的資料夾開一個 claude session,把訊息當作脈絡交給它,並把第一則 prompt 填好 —— 但不會送出。由你按 Enter。

按活動列(最左邊那一欄)的 交接 打開收件匣。那個入口會顯示有幾則在等待。

每一則都會顯示它從哪裡來、誰寫的、什麼時候發生,以及它的全文 —— 在任何東西被打開之前。 內容以純文字呈現,與 agent 將收到的一字不差。

  • 開在 顯示這一則會開在哪個資料夾。spekterm 依你的 routing 規則預選一個;你可以改選別的。 資料夾沒確認之前,什麼都不會開。
  • 接受 會在那個資料夾開一個 claude session。這一則的內容會當作脈絡交給 agent,並在 agent 的 輸入處填好一則指向它的 prompt。讀過、想改就改,然後按 Enter 送出。
  • 忽略 會移除這一則,不開任何東西。

接受之後,這一則會顯示 已開啟,直到你按 從收件匣清除 為止,讓你還能回頭重讀你接受了什麼。

別人寫的訊息內容,絕不會自己被送給 agent。你先審閱,第一則 prompt 也等你按 Enter。

有新項目到達時,spekterm 會發出桌面通知。同時到達好幾則會合併成一則。點通知會把 spekterm 帶到前景並 打開收件匣。

Routing 規則 分頁決定一則項目預選哪個資料夾。

  • 規則由上往下比對,第一條命中的勝出。每條規則挑一個欄位(比對欄位)、一段它必須包含的 文字,以及要開在哪個資料夾。用箭頭按鈕調整規則的順序。
  • 沒有規則命中時,使用 預設資料夾。請設一個 —— 否則每一則抵達時都沒有選好的資料夾,你每次都要 自己挑。
  • 有些欄位(例如標題與訊息內容)是投遞者自己寫的。以這些欄位為判準的規則會被標示,因為投遞者可以 刻意措辭,左右它開在哪裡。

規則指向的資料夾若已不在工作區裡,這一則會直接說明,而不是悄悄開到別的地方。

Slack 分頁用來連接你的 Slack 帳號。連上之後,spekterm 會找出提及你(token 所屬的那個人)的 訊息,把每一則變成一個收件匣項目,並附上討論串直到那則訊息為止的內容作為脈絡。討論串太長時會被 截短,而項目裡會寫明這件事。

你需要在你的 Slack workspace 裡有一個 Slack app,以及它的 user token。替 token 加上這些 user token scope:

channels:history groups:history im:history mpim:history
channels:read groups:read im:read mpim:read
users:read

*:history 讓 spekterm 讀得到訊息;*:read 讓它列得出你所在的對話;users:read 把使用者 ID 換成 人名。改了 scope 之後,要重新安裝 app 並重新複製 token。把它貼到 User token 底下並儲存。你的身分 從 token 讀出 —— 沒有其他東西要填。

spekterm 在啟動時、每五分鐘、以及你剛存下 token 的那一刻檢查新的提及。回補範圍 決定啟動時往回 搜尋多久:spekterm 關著的時候發生的事,Slack 不會重送,所以早於這個範圍的提及會漏掉。

想在數秒內收到提及,再加一個 app-level token:替你的 Slack app 開啟 Socket Mode,並替它建立一個 app-level token。即時更新 會顯示即時連線是否開著。連線中斷時,spekterm 會退回定期檢查。

這個分頁隨時會說明連線處於什麼狀態:尚未設定、運作中而沒有新項目、上一次檢查帶進了幾則提及、Slack 要求放慢,或是憑證失效、缺少 scope。壞掉的連線絕不會看起來像「沒有人提及你」。

token 存在 ~/.config/Spekterm,存取權限僅限你的使用者。它只會被送到 Slack(或你在 API 端點 設定的端點 —— 除非你知道為什麼,否則不要改它),絕不會進到你的終端或你的 agent。見 資料與網路。

無法收進收件匣的項目 —— 讀不出來、太長而無法審閱,或指名了一個不在你工作區裡的 repo —— 不會被 悄悄丟掉。收件匣會逐一列出每則拒絕與原因,直到你清除為止,重啟之後也還在。