好的命名約定
對一支 10 台伺服器的小機隊來說,最高槓桿的一件事就是把名字取好。糟糕的名字——server1、vps-2、random-vps——把手機上的清單變成半夜半睡半醒時的猜謎遊戲。好的名字一眼就能告訴你這台機器是做什麼的、在哪。
我自己迭代後的寫法:
<role>-<env>-<number>-<region>
prod-web-01-sgp
prod-db-01-sgp
stage-web-01-sgp
dev-web-01-local
home-nas
home-pihole 角色放最前,因為這是你最先讀的部分。環境第二,免得疲憊時把生產和預發混在一起。區域放最後,因為它變動最少。家用和個人機器我直接放棄結構化命名——home-nas 就夠了,你有三台不是一百台。
值得保留的標籤
TermAI 支援每個連線打多個標籤。一不留神就會過度打標——每台伺服器五個標籤,全都變成雜訊。節制一點有幫助。
對我來說回報始終最高的幾個標籤:
prod/staging/dev——最重要的過濾維度web/db/worker——第二重要oncall——目前在輪值的機器打上,下班取消。凌晨 2 點的清單應該很短。home——把個人的和工作的分開
我後來停止打的標籤:區域(已經在名字裡)、OS 版本(在清單視圖裡沒用)、像 nginx 這種具體服務標籤(訊號低)。少即是多。
用於視覺分區的分組
TermAI 裡的分組本質上就是命名資料夾——可以在主機清單裡折疊展開。我把它保持得很扁:每個環境一個分組(Production / Staging / Dev / Home)。每個分組內按角色排序。
Production 預設折疊。我希望是主動展開它,而不是每次打開 App 就看到。Home 預設展開——那是日常用的清單。
不要巢狀分組。「這台 prod-db 是在 Production → DB 裡,還是 Production → Critical 裡?」這種心智負擔比多一層組織帶來的價值更高。扁平分組 + 標籤的擴展性,遠比階層分組好。
搜尋比分類法更好用
一旦你超過 8-10 台伺服器,捲動比想「該歸到哪類」快。TermAI 主機清單頂部的搜尋列會同時比對 label、host、使用者名稱和標籤。輸入三個字元,結果就只剩對的那台。
戰術上:給伺服器取名,讓你日常那批機器中任何一台用 3 個字元前綴就能唯一識別。pro 對應 prod-web-01,nas 對應 home-nas,pi 對應 home-pihole。如果三個字母能區分,那任何一個連線你都能兩點一滑就發起。
你會知道命名做對了,因為你不再看清單,而是直接對著搜尋列盲打。
給重複指令準備的 Snippets
你在手機上跑的 shell 指令,和在桌面跑的不一樣。桌面是探索和一次性的;手機是「每次都那五條指令」。把那五條存下來。
我用得最多的 snippets:
journalctl -u nginx --since 1h -n 100——看最近的 nginx 日誌df -h | head——快速看磁碟docker compose ps——看有哪些起來了docker compose logs -f --tail 50 api——盯某個服務的日誌sudo systemctl restart caddy——一鍵「踢一下代理」
TermAI 裡的 snippet 按分類組織,可選擇釘到特定主機。手機鍵盤是永恆的痛;把這五條指令省下來,你能拿回相當一部分行動工作時間。
什麼留給手機,什麼留給筆電
有些活就是屬於筆電的。別跟這一點較勁。手機用於分流和小修,不是用來寫 200 行 Terraform 的。
我自己的劃分:
- 必用手機:重啟一個服務。看日誌。盯一個程序。看
top。回應一個 push 過來的 Y/n。批准一個卡在我這的部署。 - 有時用手機:透過 SFTP 改一行設定檔。跑一條資料庫查詢。下載一個遠端 tarball。
- 必用筆電:大的 schema 變更。Code review。新服務上線。任何我希望先把 100 行滾回看三遍再動手的事。
如果一次手機工作已經超過 3 分鐘,那就是一個訊號:要嘛趕快收尾,要嘛升級到筆電。手機適合「做這件事」;不適合「想這件事」。
凌晨 2 點的工作流
把上面這些放在一起,正好就是 TermAI 當初被做出來要解決的場景:
- 告警響——手機震,通知裡寫了伺服器名稱和問題。
- 打開 TermAI,點搜尋列——輸入 3 個字元的伺服器名,正確的主機被高亮。
- 連線——一次點擊。Tailscale 隧道已經在 App 打開時就起來了。
- Snippet——點那條對應的已儲存指令(日誌 / 狀態 / 重啟),不用打字。
- 看輸出,執行修復——通常就是單一重啟指令。複雜的話,讓 AI 助理解釋一下。
- 確認並退出——再跑一次同一個 snippet 確認服務回來了,鎖手機,睡覺。
目標時間:從掏出手機到確認修復完成,90 秒以內。機隊命名做好,再加上幾條 snippets,這是可以達到的。行動 SSH 的全部意義就在這裡:把「告警到處理完成」的間隔縮到能在床上完成的程度。
快速事實
- 規模化整理:標籤和分組讓幾十個連線依然好找
- 片段:把常用命令固定到捷徑列,不再反覆手敲
- 多工作階段:在多個活動工作階段間切換而不丟失位置
- 按主機的 AI:助手貼著你所在的伺服器(OS、最近輸出、即時資源)給建議
- 穩定定址:內建 Tailscale 讓每台機器無論在什麼網路都是同一個位址