遠端存取
遠端存取讓你手機上的 spekterm app 直接連到電腦上的 spekterm:不需要帳號,沒有中繼站,也沒有推播服務。在手機上你可以:
- 看到每一個資料夾與 session;
- 讀取 agent 的對話並回覆,回覆裡可以附上照片與檔案;看到每個工具呼叫做了什麼,並打開 agent 傳給你的檔案;
- 回答 agent 的權限提示與提問;
- 開新 session、喚醒 session、替 session 改名、讓它休眠或關閉它;
- 處理收件匣、追蹤你的交接;
- 讀取你的 OpenSpec change。
agent 在等你時,手機會收到通知。
這項功能預設是關閉的,要你自己打開。
從 Google Play 下載 Android app。 它的原始碼公開(spekhq/spekterm-android),依據的協定寫在這個 repository 裡(
docs/remote-protocol.md)。
已配對的手機能做什麼
Section titled “已配對的手機能做什麼”已配對的手機能做你在 session 裡能做的事:讀取你的 agent 與 shell,並對它們打字。agent 有 shell,所以請把已配對的手機當成你的鍵盤看待。手機不能在 session 之外編輯檔案、不能改設定,也看不到你的 Slack 連線或任何憑證。它唯一能放到你電腦上的檔案是附件,而且只會放進 spekterm 自己的資料資料夾,檔名由 spekterm 決定。除了 OpenSpec change 之外,它唯一能讀的檔案是 agent 傳給你的檔案:agent 傳了什麼,手機就打得開什麼。對話裡的圖片取自對話的紀錄,絕不讀取檔案。
agent 的這一輪結束後,可能還留著工作在跑:背景 subagent、背景指令(例如 dev server 或一次測試),或 monitor。手機可以把這些工作列在 session 底下,每一項附上 agent 自己寫的一行說明。這樣一來,這一輪已經結束、但還有工作在跑的 session,就不會看起來像閒著。這份清單是 agent 最後一次回報的內容:agent 的一輪結束時,或它的某個 subagent 停下時會更新,session 的行程結束時會清空。
從手機讓 session 休眠或關閉
Section titled “從手機讓 session 休眠或關閉”手機可以讓 session 休眠(行程結束,session 留在原位,之後再喚醒),也可以關閉它(從你的工作區移除)。兩者都不會搶走你電腦上的鍵盤焦點,也不會改變你的選取。session 可能正在忙:agent 在工作或在等你選擇、shell 正在跑指令,或 spekterm 判斷不出來。這時手機會先得知原因,問過你之後才照樣結束它。
agent 要求關閉自己的 session 時,spekterm 不會直接關,而是交給你決定(交接)。手機上也會出現同一個提議,附 關閉 與 保留,在任一邊回應,兩邊都算數。在手機上選保留,電腦上的提議就會消失;在電腦上選保留,或在那個 session 裡打字,手機上的提議也會消失。agent 這一輪結束時,手機會像平常一樣通知你它在等你;提議本身則顯示在那個 session 上。
從手機回答提示
Section titled “從手機回答提示”agent 請求權限或向你提問時,手機會顯示出來,也能回答:
- 權限提示:允許一次,或拒絕。「允許」只開放給執行指令、編輯、寫入與讀取檔案、抓取網頁這幾類,也就是第一個選項為「只允許這一次」的提示。「一律允許」類的選項不開放,請在終端機裡選。
- agent 帶選項的提問:選你要的選項。
- agent 想執行的計畫:先讀計畫,再核准(每次修改前詢問,或用 auto mode),或拒絕,讓 agent 繼續規劃。
spekterm 會替你按下你會按的鍵,一次一個,絕不把文字或 Enter 送進提示。每按一個鍵之前,它都會確認同一個提示還開著。同時有兩個以上的提示在等,或你已經在電腦上對那個 session 打過字時,手機就不能回答,請回到電腦上回答。
從手機送出收件匣項目的 prompt
Section titled “從手機送出收件匣項目的 prompt”在手機上接受收件匣的項目,會和在電腦上接受一樣,在電腦上開好它的 session:第一則 prompt 已經填好,但不會送出(收件匣與 Slack)。支援這項功能的手機 app 接著會顯示這則等著送出的 prompt 與項目全文,只在你按下送出時才送出;spekterm 只是替你按 Enter,不做別的。在那之前,手機對那個 session 的回覆一律會被擋下,所以回覆絕不會和一則你還沒讀過的 prompt 一起送出去。如果你在電腦上對那個 session 打過字,就請在電腦上完成。
你從手機回覆時,spekterm 會告訴 agent:這則訊息是你從手機送的,你會在手機上看回覆,所以 agent 會回得簡短、適合在小螢幕上閱讀。這段說明附在訊息之外,不在訊息裡面,你的訊息本身照你寫的原樣送出。之後你在電腦上打的訊息,不會帶這段說明。
看著一段對話時,手機也能顯示這個 session 的模型、effort、已用 context、花費與用量上限,也就是開啟 在狀態列顯示 agent 狀態 時電腦狀態列上顯示的內容。手機也能列出 agent 能執行的 skill:把 /名稱 或 /名稱 參數 當成回覆送出,就能執行。這份清單要等 session 收到第一則訊息後才會出現。/clear 這類 agent 內建的指令不在清單裡。
手機也能切換這個 session 的模型。對話已有快取時,agent 平常會在它的終端機要你確認這次切換,而手機看不到那個問題。所以手機要求切換時,spekterm 會在短短幾秒內讓這一次切換不經詢問直接通過;你在電腦上自己發起的切換仍然會問。切換之後,你的下一則訊息會讓 agent 重新讀完整段對話,而且 agent 會把這個選擇存成新 session 的預設。
agent 做了什麼、誰傳訊息給它
Section titled “agent 做了什麼、誰傳訊息給它”手機會顯示每個工具呼叫做了什麼,而不只是名稱:agent 執行的指令、它對檔案做的修改、它傳給另一個 session 的訊息與收件者、它啟動的 subagent 與給的指示、skill 與參數、提問與選項。太長的文字會截短,手機會標示出來。MCP server 的呼叫只顯示名稱與主要參數。
agent 看過的圖片也會出現在對話裡:它讀取的圖片、瀏覽器或 MCP 的截圖。圖片取自對話本身的紀錄,而不是你的檔案,所以手機看到的就是 agent 看到的那張,原檔刪掉之後也一樣。
另一個 session 傳來的訊息、subagent 的回報會標示出來,並寫明是誰送的;另一個 session 傳來的訊息會顯示你替那個 session 取的名稱。agent 工作中收到的其他 session 訊息與背景工作通知,也會顯示。
agent 傳給你的檔案
Section titled “agent 傳給你的檔案”agent 傳檔案給你時,手機可以打開它:文字、Markdown 與圖片在 app 裡顯示,其他檔案交給手機上的 app 開。檔案上限 32 MB。agent 之後刪掉或改過的檔案,手機會告訴你。
手機上的回覆可以附上照片、截圖、PDF 與文字檔,每則最多 10 個、每個最大 10 MB。spekterm 會把它們放在自己的資料資料夾,並告訴 agent 檔案在哪裡;agent 讀取時不會跳出權限提示。關閉 session 時會刪除這些檔案,最晚 30 天後也會刪除。
替 session 改名
Section titled “替 session 改名”從手機改名的方式和電腦上一樣:名字留空,session 就會改回 agent 自己的標題。
從手機開新 session 或喚醒 session,絕不會把你的桌面搶走。session 會出現在它的資料夾裡,但你正在看的畫面與正在打字的位置都不會變。
- 打開 設定,選 遠端存取 分類。
- 打開 允許已配對的裝置連線。spekterm 會在每一張網路介面上,以畫面上顯示的 port(預設 47615,可以改)等待連線。新的 port 要按 使用這個 port 或 Enter 才會套用,離開欄位不會套用,因為變更 port 會中斷已連線的裝置。
- 選 配對裝置,用手機上的 spekterm app 掃描 QR code。這組碼只能用一次、五分鐘內有效,而且只在那個畫面開著時有效;離開這個分類或關掉設定,它就失效。掃不了的話,畫面上也有同一個連結的文字版。
手機自己保存它的憑證,spekterm 只存它的雜湊。手機會用 QR code 裡的指紋比對 spekterm 的憑證,所以別台電腦冒充不了你的電腦。
手機會連 QR code 裡的位址,哪個通就用哪個:
- 同一個網路:你電腦的區網位址。
- Tailscale:你電腦的 Tailscale 位址直接就能用。想把它的 Tailscale 名稱放進 QR code,就把名稱填進 額外位址。
- port forward:在路由器上轉送那個 port,並把你的公開名稱(例如 DDNS 名稱)填進 額外位址。
手機每次連上,不論走哪一條路,spekterm 都會告訴它電腦目前的位址;連線期間位址有變,也會再告訴它一次。會記住這份清單的手機 app,在電腦的區網位址改變後不必重新配對:只要它用別的方式(Tailscale 或額外位址)連上過一次,下次就有新的區網位址可用。
如果哪一個位址都連不到你的電腦(例如人在外面,又沒有 Tailscale 或 port forward),手機就連不上,也收不到任何消息。
agent 在等你、在等你選擇、交接完成,或收件匣有新項目,手機只會透過它自己對 spekterm 的連線得知。為了在背景通知你,app 會一直保持這條連線,這會花一些電。連線斷掉又連回來時,spekterm 會補送手機錯過的事件(最近 24 小時、最多 200 則),或告訴它可能漏了一些。你此刻在電腦上正在看的 session,不會通知你。
已排程的交接在開啟時才算到達,不是在排程的時候。在那之前,手機會把它連同時間另外列出,也能立即執行或取消它。對於重複的交接,手機可以拒絕提議,也可以立即執行或跳過接下來的某一次。核准提議與停止排程只能在電腦上做。
誰連線中、撤銷與重設
Section titled “誰連線中、撤銷與重設”- 有手機連線時,活動列會出現一個手機圖示;點它會打開設定的 遠端存取 分類。
- 這個分類列出你已配對的裝置,以及每台最後連線的時間。撤銷 會先確認,再立刻中斷該裝置,之後也一律拒絕它。該裝置必須重新配對。
- 重設遠端存取 會產生新的憑證並撤銷所有裝置,每台都要重新配對。如果憑證的私鑰不見了,spekterm 會自己重設,並在這個分類裡說明。
- 遠端存取無法啟動時(例如 port 被佔用),這個分類會說明原因,設定的分類清單也會在 遠端存取 旁標示。
在不信任的網路上
Section titled “在不信任的網路上”遠端存取會在每一張網路介面上等待連線。在不信任的網路上請關掉它。同一個位址連續失敗太多次,會被拒絕一分鐘。因此,和你的手機共用同一個公開位址的人,可能會延遲你手機的重新連線。
spekterm 沒有視窗地執行時(macOS)
Section titled “spekterm 沒有視窗地執行時(macOS)”在 macOS 上,關掉視窗後 spekterm 仍在執行,遠端存取也照樣等待連線。已配對的手機仍然連得上、看得到收件匣,但 session 需要視窗。手機會得知目前沒有視窗,spekterm 也不會為它打開視窗。