# 將 Codex 專案移至伺服器上的 Hermes

> 將儲存庫移轉至伺服器，以便在 Hermes 中繼續作業：已儲存的變更、相依套件、機密資料、工作資料夾，以及繼續開發前的檢查。

Source: https://ailoot.ai/blog/zh-hant-tw/codex-project-to-hermes-server/
Canonical: https://ailoot.ai/blog/zh-hant-tw/codex-project-to-hermes-server/
Language: zh-Hant-TW
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-082
Revision: sha256-7acbdec3698ecdbe3412011a99a69a1e0426191f291238dcde34b23680558332


如需服務使用說明，請參閱 [Ailoot 說明文件](https://ailoot.ai/docs/)。



<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaway for this section">

重要重點

若要在 Hermes 中繼續處理使用 Codex 建立的專案，請移轉儲存庫本身並還原其環境。採用此方法不需要另外執行「從代理程式匯入專案」的步驟。先檢查已儲存的檔案和相依套件，再於 Hermes 中開啟正確的資料夾。本指南假設伺服器與 Hermes 已完成設定，而且你能存取該儲存庫。

</div>

## 移轉前的準備事項

儲存庫是包含 Git 變更歷史的專案資料夾。工作副本則包含你要編輯的檔案。此處的目標是將該副本放到伺服器上，然後繼續開發。你目前不需要讓訪客能夠使用此應用程式。

如果伺服器上尚未安裝代理程式，請先參閱[在 VPS 上安裝 Hermes Agent](https://ailoot.ai/blog/zh-hant-tw/hermes-agent-vps-24-7/)。此處需要可正常運作的 Hermes 安裝環境、伺服器終端機和 Git。你還需要伺服器可存取的遠端儲存庫；如果尚未建立，請先建立儲存庫，並在不含機密資料的情況下將專案儲存其中。若是私人儲存庫，請事先從自己的帳戶設定讀取權限；不要將權杖放入儲存庫 URL 或傳給代理程式的訊息中。

移轉期間請暫停對專案進行平行編輯。在來源電腦上，於專案資料夾本身開啟終端機並執行：

```bash
git status --short --branch
git status --short --ignored
```

第一個指令會顯示分支和檔案狀態。`M` 表示已修改，`??` 表示 Git 尚未追蹤該檔案。在第二個指令的結果中，被忽略的檔案會標示為 `!!`。一般的乾淨狀態並不能證明 Git 外沒有必要檔案。

將必要的變更另存為一個獨立提交，並依照平常的方式將正確分支推送至遠端儲存庫。推送前請檢查提交內容：不得包含金鑰、密碼或真實使用者資料。如果不確定要儲存哪些變更，請先要求 Codex 列出變更並說明其用途，不要刪除檔案或推送至儲存庫。

| 專案部分 | 移轉前要檢查的事項 |
|----|----|
| 來源檔案與 Git 歷史 | 必要變更已儲存，且可從遠端儲存庫中選定的分支存取 |
| README 與代理程式指示 | 已記錄啟動步驟、檢查項目與限制；指示內容為最新版本 |
| 相依套件檔案 | 專案使用的相依套件定義和鎖定檔（固定版本的檔案）都已儲存 |
| 機密資料 | 有安全且獨立的方式可在伺服器上設定；其值未放入 Git，也未透過聊天傳送 |
| 資料庫與上傳檔案 | 你知道如何取得允許使用的測試資料，以及如何依照專案指示還原資料 |

不要假設複製儲存庫會一併移轉外部資料庫、被忽略資料夾的內容，或你與 Codex 的對話。聊天記錄、訂閱、個人檔案和代理程式本身的設定，都不屬於此移轉方法的範圍。





## 將正確的分支複製到伺服器

先在來源電腦上儲存此指令的輸出：

```bash
git status --porcelain=v2 --branch
```

`# branch.oid` 這一行會顯示目前的提交，而 `# branch.head` 會顯示分支。提交是專案的一個已儲存版本。對於已有提交的一般專案，你可以用這些資訊比較來源副本和新副本；這項比較不會檢查尚未提交的變更。

在伺服器上，前往要存放專案的目錄。將儲存庫複製到新的資料夾。在以下範本中，將 `REPOSITORY_URL` 替換成你的儲存庫 URL，將 `BRANCH_NAME` 替換成你已儲存並推送的分支名稱，並將 `my-project` 替換成你要用於新資料夾的名稱：

```bash
git clone --branch BRANCH_NAME REPOSITORY_URL my-project
cd my-project
git status --porcelain=v2 --branch
```

這是範本，不是可直接複製使用的 URL。`git clone` 會建立資料夾，以及所選分支的工作副本。如果目的資料夾已存在，就必須是空的；不要為了重新執行指令而刪除其中的內容，請改用新名稱。

比較兩份副本中的 `# branch.oid`。如果值不同，請勿開始在伺服器上修正程式碼：檢查所選分支、已推送的提交，以及是否有人進行了平行變更。如果狀態輸出顯示有已修改的檔案，請另外調查。不要用清理或強制重設的方式讓兩者「一致」。

若儲存庫使用 Git 子模組（巢狀儲存庫），也必須取得其中的內容。`git clone` 提供 `--recurse-submodules` 選項；只有在專案確實包含子模組，而且其 URL 已經過確認時，才使用此選項。若專案依賴其他外部資源，可能還需要依照 README 所述執行額外程序。

## 依照專案規則還原相依套件

先閱讀 README 和專案設定檔，確認所需的執行環境版本，以及安裝相依套件時使用的套件管理工具。不要只因為下方範例出現 npm，就把專案平常使用的工具換成 npm。

**Node.js 和 npm 的假設範例：** 儲存庫中有彼此一致的 `package.json` 和 `package-lock.json` 檔案，且伺服器上已安裝適用於該專案的 Node.js 版本。符合這些條件時，請在專案資料夾中執行：

```bash
npm ci
```

根據 [npm ci 說明文件](https://raw.githubusercontent.com/npm/cli/c039090578a5b21a1aa3aba9c96e199feaf1823a/docs/lib/content/commands/npm-ci.md)，此指令會從鎖定檔安裝整個專案的相依套件，不會重寫 `package.json` 或 `package-lock.json`。如果兩者內容不一致，安裝就會失敗。安裝前會刪除任何既有的 `node_modules` 資料夾。

如果鎖定檔是以會影響相依套件樹的選項建立，例如 `--legacy-peer-deps`，`npm ci` 也需要使用相同選項。請檢查來源專案的指示和設定。不要刪除鎖定檔，也不要更新所有相依套件來掩蓋第一次移轉時發生的錯誤。

安裝前，請確認專案本身的安裝與啟動指令。在無法存取正式環境資料的另一份工作副本中執行這些指令，並在聊天和 Git 以外設定必要的環境值。可行時，請使用權限有限的測試憑證檢查專案。如果專案依賴資料庫或檔案，請先依照專案指示還原允許使用的測試資料集；來源檔案相同並不能取代那些資料。

安裝後，執行 README 中既有的檢查項目：若有提供，請執行測試和建置。指令名稱會依專案而異。成功安裝相依套件並不代表應用程式已可正常運作。

## 在 Hermes 中開啟工作副本

在伺服器終端機中，前往新副本的根目錄，並啟動已安裝的代理程式：

```bash
cd /absolute/path/to/my-project
hermes
```

此處的 `/absolute/path/to/my-project` 是專案完整路徑的佔位文字。在 Hermes 啟動畫面上，確認工作目錄，以及終端機指令執行的環境。此啟動方式適用於伺服器上 Hermes 的本機終端機環境。如果已設定 SSH 或 Docker，代理程式可能會在其他環境中執行指令；請先確認該環境中可用的專案路徑。

請代理程式使用終端機工具確認實際的工作資料夾，然後閱讀 README 和專案指示。訊息中提到資料夾名稱並不足以證明路徑正確。

下方列出的優先順序來自文件的某個固定版本，可能與你安裝的 Hermes 版本不同。請確認目前工作階段中的現行指示。Hermes 支援 `AGENTS.md`，但是否讀取該檔案取決於上下文檔案的優先順序。根據 [Hermes 官方文件](https://raw.githubusercontent.com/NousResearch/hermes-agent/44f6d3bbeee093ab985bb1e16d7346fdc3b1db7a/website/docs/user-guide/features/context-files.md)，系統會選用一種指示檔案，優先順序依序為：`.hermes.md`、`AGENTS.override.md`、`AGENTS.md`、`CLAUDE.md` 和 `.cursorrules`。開始工作前，請檢查是否有舊的 `.hermes.md` 或個人使用的 `AGENTS.override.md`；不要假設代理程式一定會同時套用這些檔案旁的 `AGENTS.md`。

在選用的指示中保留專案目的、檢查指令和變更限制。不要將指示改成對話紀錄檔案庫。如果你也需要移轉代理程式本身的設定，則屬於另一個程序；其範圍請參閱[從 Claude Code 移轉至 Codex 的指南](https://ailoot.ai/blog/zh-hant-tw/migrate-claude-code-to-codex/)。

## 指派一項工作給代理程式，並檢查結果

先閱讀專案，不要進行變更。例如：

```
我們正在我指定的資料夾中處理現有專案。
請使用終端機工具確認實際的工作目錄。
請閱讀 README 和目前的專案指示。
請勿開啟包含機密資料的檔案，也不要輸出環境變數的值。
請列出檢查指令及其執行前提。
目前請勿變更或安裝任何內容，也不要推送至儲存庫。
```

接著協議一項小型工作，例如修正介面文字。指定要變更的檔案或範圍，並禁止順帶更新相依套件。如果你想把實驗和主要副本分開，請先了解[使用獨立 Git worktree 工作副本](https://ailoot.ai/blog/zh-hant-tw/codex-worktree-separate-task/)。

根據檔案變更內容和再次執行專案檢查的結果來驗收。在進行可能失敗的實驗前，請先儲存來源副本和復原點；不要要求代理程式一次重設所有變更。如果檢查失敗，請將錯誤和來源副本進行比較，這有助於判斷問題是移轉造成的，還是原本就存在的缺陷。

當所需版本的來源檔案已到位、環境已還原、必要資料可在安全的測試環境中使用、檢查均通過，而且 Hermes 正在這個確切資料夾中運作時，就可以視為移轉完成。讓訪客能夠使用此應用程式是後續的另一個階段，不屬於這項檢查的範圍。







認識 [Ailoot](https://ailoot.ai/)。

## 常見問題：將 Codex 專案移至伺服器上的 Hermes

### 複製 Git 儲存庫會轉移整個工作環境嗎？

不會。Git clone 不含忽略檔、外部資料庫、上傳資料、機密或代理聊天歷史。應依專案指示另外還原必要相依套件及允許的測試資料。

### 編輯伺服器副本之前，該比較什麼？

對照來源副本的已存分支與提交識別碼、檢查未提交變更，並讓 Hermes 確認實際工作目錄。再在該確切副本執行專案既有檢查。


## Ailoot · 公司及其專案組合

Ailoot以累積的營運經驗、廣大的客戶群、穩定的服務及持續的KPI管理為基礎。

公司及其專案組合：數百萬客戶，每月銷售額達數十億。

Ailoot將這些營運經驗用於API存取，讓客戶的產品、代理、應用程式及自動化流程使用AI功能。
