macOS Hermes Agent Telegram 遠端操控 Codex CLI 完整設定教學

學會在 Apple Silicon Mac 安裝 Hermes Agent、建立 Telegram Bot、固定專案工作目錄並整合 Codex CLI,安全地從手機遠端指派 AI 程式開發任務。

核心架構概覽

Telegram → Hermes Gateway (Mac 常駐) → Hermes Agent (規劃/確認) → Local Terminal → Codex CLI (讀寫指定專案)

Hermes 內建 codex skill,可在指定 Git repository 執行 codex exec 一次性任務。此方案不接管既有互動式 Codex session,而是每次在固定資料夾啟動新任務;若需保留 session 需額外設計 resume 機制。

先決條件

  • macOS (Apple Silicon M 系列)
  • 已安裝並登入 Codex CLI (codex 指令可用)
  • 目標專案為 Git repository
  • Telegram 帳號

安裝與設定步驟

1. 驗證 Codex CLI 環境

cd ~/Projects/your-project
git status
codex

確認 Codex CLI 可正常啟動,且專案已初始化 Git。Hermes 要求在 Git repository 中執行,Codex 可使用 OPENAI_API_KEY 或 OAuth 登入狀態。

2. 安裝 Hermes Agent

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.zshrc
hermes

安裝後可用 hermeshermes modelhermes toolshermes gateway 等指令。

3. 初始化 Hermes 設定

hermes setup
# 或使用整合式 OAuth
hermes setup --portal

確認已啟用 terminal 工具(Hermes 透過本機 terminal 呼叫 codex exec)。

4. 鎖定專案工作目錄

編輯 ~/.hermes/config.yaml

terminal:
  backend: local
  cwd: /Users/你的帳號/Projects/your-project

terminal.cwd 是 Telegram gateway 的預設工作目錄,也是將操作範圍限定在特定專案的核心設定。

5. 建立 Telegram Bot

  1. 在 Telegram 對 @BotFather 發送 /newbot 建立 bot,取得 token
  2. @userinfobot 查詢自己的數字 Telegram User ID(非 username)

6. 連接 Telegram 到 Hermes

最簡單方式:

hermes gateway setup

選擇 Telegram,輸入 bot token、你的 User ID、僅允許自己帳號。

或手動編輯 ~/.hermes/.env

TELEGRAM_BOT_TOKEN=123456789:你的BotToken
TELEGRAM_ALLOWED_USERS=你的數字TelegramUserID

啟動 gateway:

hermes gateway start
hermes gateway status

Hermes 使用 long polling,適合本機常駐部署。

實際使用範例

設定完成後,在 Telegram 對 bot 下指令:

請在目前專案檢查登入流程的 bug。
先只做分析,列出可能原因、相關檔案與修改方案,不要改檔。

確認分析後:

依照剛才方案修改。
請先建立 feature/fix-login 分支,完成後執行測試,
最後回報修改的檔案、git diff 摘要與測試結果。

結構化指令範本:

[CODEX]
目標:修正 checkout 頁面的手機版版面跑掉
限制:只可改 src/components/Checkout 與相關測試
流程:先分析 -> 等我確認 -> 才修改 -> 跑測試

多專案管理策略

需求 建議做法
單一專案 一個 Hermes profile + 固定 terminal.cwd
多專案嚴格隔離 每專案一個 profile + 不同 Telegram bot token
同專案不同工作脈絡 同一 bot 使用 Telegram Topics 分隔對話
同時多任務不互相干擾 使用 Git worktree(官方推薦隔離方式)

重要:Telegram Topics 僅分隔 Hermes 對話歷程,不會自動切換 terminal.cwd。嚴格固定不同實體資料夾請用不同 profile/bot。

多 Profile 範例

# 建立 client-a profile
hermes -p client-a gateway start

# 建立 client-b profile
hermes -p client-b gateway start

各 profile 獨立 config.yaml.env,對應不同 bot token 與專案資料夾。

安全強化規則(必做)

terminal.cwd 是預設工作目錄,非作業系統級沙箱。Agent 若被允許執行任意 shell 指令,理論上仍可 cd .. 存取其他路徑。

1. 建立專案規則檔 AGENTS.md

在專案根目錄建立:

# Telegram Codex Rules

- 工作範圍只限此 Git repository。
- 不可讀取或修改父資料夾、家目錄、SSH keys、.env 或其他專案。
- 不可使用 rm -rf、git reset --hard、git push --force。
- 修改前,先說明計畫並等待明確確認。
- 所有程式碼修改必須先建立 branch。
- 完成後執行對應測試,回報 git diff 與測試結果。
- 未經明確指示,不得 commit、push、部署或傳送資料到外部服務。

2. 基礎安全清單

  • Bot token 視同密碼:洩漏時立即在 BotFather 用 /revoke 撤銷
  • TELEGRAM_ALLOWED_USERS 僅填自己的數字 ID,勿設為公開 bot
  • 禁用 --full-auto / --yolo:採「分析 → 確認 → 修改」兩階段流程
  • Mac 必須保持開機、網路可用、Hermes gateway 常駐(可用 launchd 管理服務)

替代方案比較

工具 適用情境
Hermes Agent (官方內建 codex skill) 需要總控、記憶、多工具編排、Telegram 入口、固定資料夾的完整方案
Telecodex 只想要輕量「Telegram → Codex CLI」橋接,不需 Hermes 進階功能
OpenAB 社群 wrapper,支援 session resume 與 history 切換
CodexClaw 需同時支援 Claude Code、Codex CLI、MCP routing、multi-agent、cron 的重型方案

核心需求若是「Hermes 總控 + Telegram 遠端 + Codex 實作指定資料夾」,優先採用 Hermes 官方內建 codex skill + 專用 profile + 固定 terminal.cwd,元件最少、除錯最容易。

常見問題

Q: 能否接管已經開啟的 Codex 互動式 session?

A: 不能。Hermes 每次在指定資料夾呼叫新的 codex exec。需保留 session 需自行設計 resume 機制。

Q: 為什麼不直接用 SSH + tmux?

A: Hermes 提供自然語言理解、任務規劃、確認機制、多工具編排與記憶體,純 SSH 無法提供同等級的 AI 代理體驗。

Q: 如何讓 Hermes 在背景長期執行?

A: 使用 macOS launchdhermes gateway start 註冊為服務,或用 nohup/screen/tmux 保持進程。

結語

透過 Hermes Agent 內建的 Codex skill、Telegram gateway 與 terminal.cwd 固定專案資料夾,即可在 Apple Silicon Mac 上建立一套安全、可審計、多專案隔離的遠端 AI 程式開發工作流。關鍵在於:

  1. 一專案一 profile,嚴格鎖定 cwd
  2. 兩階段確認流程,避免自動執行破壞性操作
  3. 專案層級規則檔 (AGENTS.md),補足作業系統沙箱的不足
  4. Bot token 與 User ID 嚴格管控,最小權限原則

此架構讓你在咖啡廳、通勤途中,透過手機 Telegram 就能指派 AI 分析 bug、撰寫功能、跑測試並回報結果,真正實現「隨時隨地掌控本機開發環境」。