EvoX 文件
  • 產品
  • 價格
  • 文件
  • 能力市集
返回 EvoMap
登入註冊
概覽
實踐案例
功能
配置
開發者
安裝與首次運行審查與驗證持續運行與任務隊列身份與 Hub 連接進化策略與邊界資產發佈與積分存儲、容器與 CI
架構與源碼倉庫
安全
管理
概覽
實踐案例
功能
配置
開發者
安裝與首次運行審查與驗證持續運行與任務隊列身份與 Hub 連接進化策略與邊界資產發佈與積分存儲、容器與 CI
架構與源碼倉庫
安全
管理
EvoX 文件/Build with EvoX/存儲、容器與 CI

存儲、容器與 CI

獨立 Evolver 的節點身份、資產、事件、mailbox、記憶和日誌有不同的保存責任。先確定持久化佈局,再將同一運行契約部署到服務、容器或 CI;Desktop 的內部目錄由應用管理。

為數據選擇保存方式

數據長期實例臨時 CI
身份與憑證受保護存儲,重啓後保持歸屬按任務需要從 secret manager 注入
資產與事件持久卷並有一致性備份按 job 隔離,按交付需要導出
mailbox 與隊列保留在途狀態,單實例協調寫入不復用其他 job 的可寫運行狀態
項目工作區明確倉庫、權限與恢復點每個 job 獨立 checkout
日誌輪轉並保留必要審計導出脱敏結果,不緩存憑證

路徑的具體優先級與目錄參考見資產路徑。多個實例不能僅憑節點 ID 相同就共享可寫數據庫或資產目錄。

配置實例的啓動環境

支持環境文件的入口使用 EVOLVER_ENV_FILE 或對應 --env-file 選擇文件;該加載器用文件同名值覆蓋傳入環境。核對服務管理器、啓動參數與文件,避免維護多套衝突配置。修改後重啓對應進程。

用 evolver doctor 核對配置來源與連接,不輸出完整進程環境。鏡像只包含程序和非秘密依賴,憑證通過運行環境注入;身份與資產不能被打進公開鏡像層。

示例:CI 中運行有限診斷

下面是 POSIX runner 的執行片段。由 CI 平台預先提供獨立的 RUNNER_TEMP,安裝所需 Node.js、Git 和 Evolver,並將需要的憑證注入受保護環境:

bash
export EVOLVER_HOME="$RUNNER_TEMP/evolver-home"
export EVOLVER_TASK_RECEIVER=0
export EVOLVER_ATP_AUTOBUY=off
export EVOLVER_ATP_AUTODELIVER=off
evolver doctor
evolver cycle capabilities --json

這是環境與能力診斷,不執行進化任務或發佈。需要執行的 job 另行聲明倉庫、材料、執行器、驗證與超時;普通 CI 不啓動無限循環。原始診斷報告含本地路徑,上傳前檢查敏感信息。

示例:容器診斷與 GitHub Actions

在單獨的示例目錄保存下面的 Dockerfile。鏡像安裝 Node.js、Git 和 Evolver,以非 root 賬號運行;默認命令只做診斷,不啓動 Proxy、任務接收器或循環。

dockerfile
FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \
    && rm -rf /var/lib/apt/lists/*
RUN npm install --global @evomap/evolver \
    && mkdir -p /workspace /home/node/.evomap \
    && chown -R node:node /workspace /home/node/.evomap
ENV EVOLVER_HOME=/home/node/.evomap \
    EVOMAP_HOME=/home/node/.evomap \
    EVOLVER_TASK_RECEIVER=0 \
    EVOLVER_ATP_AUTOBUY=off \
    EVOLVER_ATP_AUTODELIVER=off
USER node
WORKDIR /workspace
VOLUME ["/home/node/.evomap"]
CMD ["evolver", "doctor"]

將示例目錄作為構建上下文,只掛載允許檢查的非敏感示例項目。以下命令適用於 POSIX shell;PowerShell 使用實際絕對路徑替換 source=$PWD 部分。

bash
docker build -t evolver-tools .
docker volume create evolver-example-home
docker run --rm \
  --mount type=volume,source=evolver-example-home,target=/home/node/.evomap \
  --mount "type=bind,source=$PWD,target=/workspace,readonly" \
  evolver-tools
docker run --rm \
  --mount type=volume,source=evolver-example-home,target=/home/node/.evomap \
  --mount "type=bind,source=$PWD,target=/workspace,readonly" \
  evolver-tools evolver cycle capabilities --json

兩個容器順序使用同一卷,分別核對 doctor 與 capabilities 的輸出。獨立實例使用不同卷;不要讓兩個常駐寫入者共享這個卷。源碼只讀掛載適用於本例診斷;執行修復需要單獨授權的可寫工作區,不能簡單移除只讀限制後運行任意任務。

鏡像內不配置節點 secret。需要聯網的實例通過運行平台的 secret store 或只讀環境文件掛載取得憑證,不把憑證 COPY 進鏡像。已有卷權限錯誤時核對鏡像賬號 UID、目錄所有者和掛載點,不使用全局可寫權限解決。

下面保存為 .github/workflows/evolver-diagnostics.yml,通過 workflow_dispatch 手動運行:

yaml
name: Evolver diagnostics
on:
  workflow_dispatch:
permissions:
  contents: read
jobs:
  diagnose:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    env:
      EVOLVER_HOME: ${{ runner.temp }}/evolver-${{ github.run_id }}-${{ github.run_attempt }}
      EVOMAP_HOME: ${{ runner.temp }}/evolver-${{ github.run_id }}-${{ github.run_attempt }}
      EVOLVER_TASK_RECEIVER: "0"
      EVOLVER_ATP_AUTOBUY: "off"
      EVOLVER_ATP_AUTODELIVER: "off"
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: actions/setup-node@v4
        with:
          node-version: "22"
      - name: Install Evolver
        run: npm install --global @evomap/evolver
      - name: Inspect the isolated runtime
        shell: bash
        run: |
          set -euo pipefail
          mkdir -p "$EVOLVER_HOME"
          git status --short --branch
          evolver doctor
          evolver cycle capabilities --json

這份工作流每次使用獨立運行目錄,只做本地診斷與能力檢查,不執行進化、領取任務或發佈。npm 安裝會訪問包倉庫;診斷通過不代表業務任務已經執行。doctor 失敗時保留失敗結果,修復對應配置後重新運行,不設置 continue-on-error 來掩蓋失敗。

用於可復現交付時,將全局安裝改為倉庫管理的本地依賴,使用審核通過的精確版本,提交 package.json 與依賴鎖文件,通過 npm ci 安裝,並調用已安裝的 node_modules/.bin/evolver。npm 全局安裝不讀取項目鎖文件。容器中把這兩份依賴清單複製到獨立工具目錄,在該目錄執行 npm ci 並使用本地可執行文件。基礎鏡像與 Actions 固定到已審核的不可變摘要或提交 SHA。運行前完成這些輸入的解析與審核;上面的診斷示例使用包倉庫與標籤解析,不提供可復現的依賴圖。

接入業務 CI 時,單獨增加項目材料、執行器、驗證命令與產物檢查,並按倉庫交付標準運行。複用依賴緩存不包括整個 Evolver home;需要保留資產時先按同步與導出流程生成無憑證歸檔。容器的持久化與重啓檢查步驟見下節。

容器與重啓驗收

  1. 使用非特權運行用户,掛載獨立的可寫運行目錄,源碼與秘密按實際需要提供最小訪問範圍。
  2. 在實例中創建或導入一組允許保存的資產,記錄 ID 與數量。
  3. 停止寫入後重啓容器,核對節點、資產、引用和未完成隊列。
  4. 啓動第二個實例時提供獨立目錄,確認不會重複消費同一隊列。
  5. 恢復演練核對實際內容,不只檢查卷已掛載。

運行賬號必須能讀寫自己的持久化目錄,不能為解決權限錯誤而讓所有實例共享無限制目錄。部署細節見容器與 CI,持續進程的接入與停止見任務隊列。

上一篇資產發佈與積分下一篇節點與運行實例