CodeMender 是自主 AI 程式碼安全代理,可掃描、驗證及修補程式碼集中的深層網路安全漏洞。執行 CodeMender 前,請先下載 CLI 並初始化工作區選項。
架構和安全性模型
CodeMender 採用本機優先執行模式:
- 託管推論引擎:代理推論、威脅建模和自動化調度管理邏輯,會在 Google Cloud Gemini Enterprise Agent Platform 中安全執行。
- 本機執行 CLI:原始碼絕不會大量離開工作站或 CI/CD 容器。本機
cmCLI 工具會在本機沙箱中執行檔案讀取、本機建構檢查和概念驗證 (PoC) 漏洞驗證,並透過 Gemini Enterprise Agent Platform 上的 Interactions API,僅將精確的程式碼片段和工具執行結果傳送至雲端後端。
環境設定
如要開始使用 CodeMender,請設定 Google Cloud 專案、下載並安裝 CLI、設定憑證和目標專案,然後初始化工作區。
專案設定和 IAM 權限
下載 CLI 並設定憑證前,請確認目標 Google Cloud 專案已正確設定,並具備必要的 API 和權限。
必要 API
確認專案已啟用下列 Google Cloud API:
- Agent Platform API (
aiplatform.googleapis.com):用於串流及管理進行中的工作階段。 - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com):驗證使用者驗證狀態和專案中繼資料。
建議的預先定義 IAM 角色
如要執行 CLI 指令,使用者必須具備下列 IAM 角色:
- Agent Platform 使用者 (
roles/aiplatform.user):可建立、串流及管理有效工作階段。
下載並安裝 CodeMender CLI
CodeMender CLI 二進位檔託管於 Artifact Registry。選擇作業系統對應的分頁標籤,下載並安裝 CLI。
Linux x86_64
如要下載並安裝 Linux (x86_64) 適用的 CodeMender CLI,請按照下列步驟操作:
- 使用下列任一方法下載套件:
- gcloud CLI:執行下列指令:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-amd64.zip \ --destination=./
- curl:執行下列指令:
curl -L -o cm-linux-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-amd64.zip:download?alt=media"
- gcloud CLI:執行下列指令:
- 安裝 CLI:
unzip cm-linux-amd64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
Linux ARM64
如要下載並安裝 CodeMender CLI for Linux (ARM64),請按照下列步驟操作:
- 使用下列任一方法下載套件:
- gcloud CLI:執行下列指令:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-linux-arm64.zip \ --destination=./
- curl:執行下列指令:
curl -L -o cm-linux-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-linux-arm64.zip:download?alt=media"
- gcloud CLI:執行下列指令:
- 安裝 CLI:
unzip cm-linux-arm64.zip chmod +x cm sudo mv cm /usr/local/bin/cm
macOS Intel
如要下載並安裝 macOS (Intel) 適用的 CodeMender CLI,請按照下列步驟操作:
- 使用下列任一方法下載套件:
- gcloud CLI:執行下列指令:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-amd64.zip \ --destination=./
- curl:執行下列指令:
curl -L -o cm-darwin-amd64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-amd64.zip:download?alt=media"
- gcloud CLI:執行下列指令:
- 安裝 CLI:
unzip cm-darwin-amd64.zip chmod +x cm mv cm /usr/local/bin/cm
macOS Apple 晶片
如要下載並安裝 macOS (Apple 晶片) 適用的 CodeMender CLI,請按照下列步驟操作:
- 使用下列任一方法下載套件:
- gcloud CLI:執行下列指令:
gcloud artifacts generic download \ --project=cmoc-prod \ --location=us \ --repository=codemender-cli-production \ --package=cm \ --version=stable \ --name=cm-darwin-arm64.zip \ --destination=./
- curl:執行下列指令:
curl -L -o cm-darwin-arm64.zip "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-darwin-arm64.zip:download?alt=media"
- gcloud CLI:執行下列指令:
- 安裝 CLI:
unzip cm-darwin-arm64.zip chmod +x cm mv cm /usr/local/bin/cm
Windows x86_64
如要下載並安裝 Windows (x86_64) 版 CodeMender CLI,請按照下列步驟操作:
- 使用下列任一方法下載套件:
- gcloud CLI:在 PowerShell 中執行下列指令:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-amd64.zip ` --destination=./
- PowerShell:執行下列指令:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-amd64.zip:download?alt=media" -OutFile cm-windows-amd64.zip
- gcloud CLI:在 PowerShell 中執行下列指令:
- 安裝 CLI:
Expand-Archive -Path cm-windows-amd64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
Windows ARM64
下載及安裝 CodeMender CLI for Windows (ARM64):
- 使用下列任一方法下載套件:
- gcloud CLI:在 PowerShell 中執行下列指令:
gcloud artifacts generic download ` --project=cmoc-prod ` --location=us ` --repository=codemender-cli-production ` --package=cm ` --version=stable ` --name=cm-windows-arm64.zip ` --destination=./
- PowerShell:執行下列指令:
Invoke-WebRequest -Uri "https://artifactregistry.googleapis.com/download/v1/projects/cmoc-prod/locations/us/repositories/codemender-cli-production/files/cm%3Astable%3Acm-windows-arm64.zip:download?alt=media" -OutFile cm-windows-arm64.zip
- gcloud CLI:在 PowerShell 中執行下列指令:
- 安裝 CLI:
Expand-Archive -Path cm-windows-arm64.zip -DestinationPath ./ # Move cm.exe to a permanent folder and add it to your system PATH (e.g. Environmental Variables)
設定 Google Cloud 憑證和專案
CodeMender CLI 會透過 Interactions API 與雲端託管的推論引擎互動,因此您必須設定 Google Cloud 應用程式預設憑證 (ADC),並在環境中指定目標專案。
如要驗證,請執行下列指令,並按照登入提示操作:
gcloud auth application-default login將
GOOGLE_CLOUD_PROJECT環境變數設為 Google Cloud 專案 ID:export GOOGLE_CLOUD_PROJECT="PROJECT_ID"或者,您也可以設定有效的 gcloud CLI 專案:
gcloud config set project PROJECT_ID將
PROJECT_ID替換為 Google Cloud 專案 ID。
初始化工作區
設定憑證和目標專案後,下一步是在本機環境中初始化 CodeMender。初始化 CodeMender 時,系統會建立狀態追蹤檔案,並設定與雲端託管推論引擎的連線,為本機工作區做好準備。
從程式碼集的根目錄執行 cm init,建立本機狀態追蹤檔案,並建立基準設定:
cm init
使用 --verify 旗標測試與雲端託管推論引擎的連線能力,並驗證工作區設定:
cm init --verify
檢查服務連線能力和權限
如要驗證憑證、設定、Network Reachability 和 IAM 權限,而不啟動掃描或修改工作區,請執行 cm health:
cm health
cm health 指令會依序執行四項檢查,並在第一個失敗層停止。您可以在任何目錄中執行 cm health,甚至在執行 cm init 之前。不會寫入磁碟,也不會耗用模型配額。
如要自動執行 CI/CD 預檢或排定綜合監控,請使用 --strict,在略過專案層級 IAM 檢查時失敗,並使用 --json 輸出機器可讀的 JSON 報表:
cm health --strict --json
下表說明 cm health 結束代碼:
| 結束代碼 | 圖層 | 說明 |
|---|---|---|
0 |
— | 已通過所有健康狀態檢查。 |
10 |
credentials |
CLI 無法取得有效的 OAuth 或應用程式預設憑證權杖,或伺服器拒絕權杖 (401 Unauthorized)。 |
20 |
config |
本機 config.yaml 檔案、--team-id 旗標或 CM_TEAM_ID 環境變數無效。 |
30 |
reachability |
CLI 無法連上 Agent Platform API 端點 (例如因 DNS、TLS、Proxy 或 VPC Service Controls 限制)。 |
40 |
authorization |
已連上伺服器,但呼叫端或專案未獲授權執行 CodeMender 掃描作業 (例如缺少 roles/aiplatform.user 權限)。 |
50 |
— | 健康狀態檢查超過 --timeout (預設為 30s)。 |
cm health 支援下列旗標:
| 標記 | 預設 | 說明 |
|---|---|---|
--json |
false |
將單一 JSON 物件輸出至標準輸出內容,包括 status、exit_code、backend、endpoint、location、project_id、agent_id、duration_ms、layers,以及 warnings 和 error (如有)。 |
--strict |
false |
將健康狀態檢查警告 (例如未驗證或略過專案層級 IAM 權限檢查) 視為結束代碼 40 失敗。 |
--timeout |
30s |
設定健康狀態檢查探測的整體逾時時間。 |
設定參數 (config.yaml)
config.yaml 的主要目標是確保 CodeMender 代理的行為符合本機系統的安全性、環境限制和效能需求。
託管 AI 代理會使用本機 Daemon 用戶端執行本機指令 (例如建構程式碼、執行測試或編輯檔案),因此這份設定檔會定義代理的權限範圍。
用量
- 位置:根據預設,CLI 會從
~/.codemender/config.yaml讀取這個檔案。您可以設定CM_HOME環境變數 (例如CM_HOME=/path/to/custom/dir,讀取/path/to/custom/dir/config.yaml),覆寫工作區和設定目錄。 - 執行:執行
cm find、cm verify或cm fix等指令時,本機用戶端會讀取這個檔案,設定安全參數、套用系統略過機制,以及指定要忽略的檔案或目錄。
核心預設設定
以下是核心預設參數的意義:
tools.confirm_commands: true- 說明:根據預設,CodeMender 會在終端機中提示您確認
[Y/n],然後才執行殼層指令 (run_command)。如果cm find執行時啟用了 OS 層級沙箱 (sandbox.enabled: true) 和預設網路隔離 (permissive-closed),工作區會以唯讀模式掛接,並自動略過指令確認提示。 - 預設原因:CodeMender 可能會在驗證和修補期間,執行建構指令、測試套件或漏洞指令碼。如果工作區可寫入或未沙箱化,則必須經過確認,以免在本機環境中執行非預期的指令。
- 略過:傳遞
-y(或--yes) 進行單次執行,或在config.yaml中設定tools.confirm_commands: false,用於非互動式 CI/CD 管道。
- 說明:根據預設,CodeMender 會在終端機中提示您確認
tools.confirm_writes: true- 說明:在 CodeMender 代理寫入或修改磁碟上的檔案 (
write_to_file和search_and_replace) 之前,在終端機中提示您確認[Y/n]。 - 預設原因:要求手動確認,可避免代理在
cm fix或cm verify期間,對來源檔案進行推測或非預期的修改。只有在獨立、可拋棄式環境或自動化 CI/CD 管道中執行時,才應將此值設為false(或傳遞-y/--yes)。
- 說明:在 CodeMender 代理寫入或修改磁碟上的檔案 (
execution.interactive_mode: true- 說明:在工具執行期間啟用互動式終端機提示。在未附加終端機的無頭 CI/CD 環境中,請將此值設為
false(或傳遞-y/--yes)。
- 說明:在工具執行期間啟用互動式終端機提示。在未附加終端機的無頭 CI/CD 環境中,請將此值設為
scan.extensions.include: [".py", ".java", ".go", ".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".c", ".cc", ".cpp", ".cxx", ".h", ".hh", ".hpp", ".hxx", ".inl", ".ipp", ".cs", ".rs", ".kt", ".kts", ".rb", ".php", ".sol", ".tf", ".hcl"]- 說明:明確定義 CodeMender 在掃描工作區時,可擷取及分析的副檔名清單。CodeMender 會自動略過存放區中副檔名未列於此清單的檔案。
- 預設原因:這份清單預設為主要程式設計語言,可盡量提高掃描效率,避免代理浪費時間和權杖,處理不相關的文字檔案、建構構件或二進位檔案。不過,現代應用程式常在部署設定或自動化工具中嵌入安全漏洞,因此您可以在
config.yaml手動擴充這份預設清單,納入設定檔、指令碼格式和 IaC 檔案 (例如殼層指令碼、XML、YAML、屬性和 JSON 檔案),CodeMender 就不會默默忽略這些檔案。
scan.exclude_dirs: ["node_modules", "vendor", "dist", "/target", "/obj", "/build", ".gradle"]- 說明:CodeMender 在掃描工作區和分析程式碼時,會略過這些目錄。開頭為
/的項目 (例如/target、/obj和/build) 只會在掃描根目錄比對,因此不會略過名稱相同的巢狀來源套件。 - 預設原因:大型依附元件或建構資料夾會導致延遲時間大幅增加,並耗用大量權杖。根據預設,系統會排除這些項目,確保高效能和快速回應。您可以在
config.yaml中自訂這份清單,根據專案結構納入或排除特定目錄。
- 說明:CodeMender 在掃描工作區和分析程式碼時,會略過這些目錄。開頭為
project_paths: []- 說明:CodeMender 在執行工具期間可存取 (讀取/寫入) 的目錄路徑清單。
- 預設原因:預設為空白,會將代理程式限制在封閉的專案根目錄 (或掃描目標目錄)。如果建構或測試程序需要存取專案根目錄以外的檔案,請在這裡新增這些路徑,或傳遞
--allow-all-paths進行單次執行。系統一律會封鎖對.git、.hg和.codemender的寫入作業。 - 構件目錄:代理也可以寫入每個工作階段的構件目錄 (
~/.codemender/artifacts/<session_id>/,或$CM_HOME下的對等目錄)。 - 暫存檔案:啟用沙箱時,主機
/tmp目錄一律會遭到封鎖,即使您將/tmp新增至project_paths也一樣。遵循TMPDIR的工具會改用構件目錄中的暫存目錄。
sandbox:- 說明:程序層級沙箱環境的設定區塊。
- 子參數:
enabled: true:(布林值) 啟用或停用沙箱。如果設為true(預設),代理會在本地沙箱執行工具。如果設為false(或傳遞--sandbox=false),代理會直接在主機系統上執行工具,不會在 OS 層級隔離。mounts:(物件)target_dir: ".":(字串) 要在沙箱中掛接為有效工作區的目錄。CLI 會根據工作區根目錄解析相對路徑。
network:(物件)profile: "permissive-closed":(字串) 沙箱內的外送網路存取設定檔。目前不支援精細地將特定網域或網址模式加入許可清單。支援的設定檔:permissive-closed(預設):完全隔離網路,沙箱會封鎖所有傳出連線。permissive-open:允許完整的傳出網路存取權。
security:- 意義:安全性政策的設定區塊。
- 子參數:
protected_files: []:(字串清單) 主機系統上的其他檔案或目錄,您希望在沙箱內以唯讀方式掛接,避免遭到修改。支援路徑展開 (~) 和萬用字元 (*)。即使protected_files為空白,沙箱一律會將.git/hooks、.git/config、.hg/hgrc和.codemender保護為唯讀,並排除常見的憑證目錄 (~/.ssh、~/.gnupg、~/.aws、~/.config/gcloud、~/.config/gh、~/.kube、~/.docker)。
model: "gemini-3.8-flash"- 說明:預設的智慧引擎,用於驅動後端推論迴圈。
- 預設原因:
gemini-3.8-flash在速度、成本和分析推論能力之間取得最佳平衡,能提供合適的修補建議。(使用者可視需要覆寫設定,改用gemini-4-argon(Gemini 4 Argon) 進行更深入、更複雜的推論)。
vcs: { type: "git" }- 意義:透過
vcs鍵定義專案使用的版本管控系統類型。如果未設定,工具會嘗試自動識別 Git 或 Mercurial 存放區。如果將vcs設為none,CLI 會輸出警告,但會繼續執行,不使用 VCS 功能。CodeMender 會依據這項設定管理推測性安全性修正、追蹤程式碼集修改,以及與本機存放區整合。 - 預設原因:CodeMender 支援 Git、Mercurial 或自訂 VCS 設定。Git 是版本管控追蹤的業界標準,可確保差異整合順暢,並安全復原,因此預設為 Git。
- 意義:透過
build: { command: "make build && make test" }- 意義:定義 CodeMender 執行的確切殼層指令,用於編譯及建構專案,以及執行單元和迴歸測試。
- 預設原因:設定建構和測試指令對驗證工作流程至關重要。CodeMender 可以在隔離的沙箱環境中編譯專案,並執行現有的測試套件,證明生成的安全性修補程式能成功緩解安全漏洞,且不會破壞現有的應用程式邏輯。
指令政策 (command_policy.yaml)
除了 OS 層級沙箱外,您也可以在 ~/.codemender/command_policy.yaml (全域) 和 <project>/.codemender/command_policy.yaml (專案專屬) 中定義指令拒絕清單。如果兩個檔案都存在,CodeMender 會合併兩者的規則。
首次執行時,CodeMender 會在 ~/.codemender/command_policy.yaml 建立註解排除的範本。您可以在兩個鍵下方取消註解或新增規則:
block:列出要在所有殼層管道、子殼層和指令替代中封鎖的二進位檔名稱 (例如curl、wget、ssh、sudo、rm)。block_patterns:與各指令區隔 (例如'\bgit\s+(push|commit|rebase|reset\s+--hard|clean)\b') 比對的正則運算式清單。
如要略過單一指令叫用的 command_policy.yaml 強制執行,請傳遞 --allow-all-commands 旗標。
指令政策 (command_policy.yaml)
除了 OS 層級沙箱外,您也可以在 ~/.codemender/command_policy.yaml (全域) 和 <project>/.codemender/command_policy.yaml (專案專屬) 中定義指令拒絕清單。如果兩個檔案都存在,CodeMender 會合併兩者的規則。
首次執行時,CodeMender 會在 ~/.codemender/command_policy.yaml 建立註解排除的範本。您可以在兩個鍵下方取消註解或新增規則:
block:列出要在所有殼層管道、子殼層和指令替代中封鎖的二進位檔名稱 (例如curl、wget、ssh、sudo、rm)。block_patterns:與各指令區隔 (例如'\bgit\s+(push|commit|rebase|reset\s+--hard|clean)\b') 比對的正則運算式清單。
如要略過單一指令叫用的 command_policy.yaml 強制執行,請傳遞 --allow-all-commands 旗標。
執行沙箱
根據預設,CodeMender CLI 會在 OS 層級沙箱中執行,避免工作站發生非預期的檔案修改或工具副作用。您可以在設定中永久停用沙箱功能,或使用 CLI 旗標略過個別指令。
雖然這個沙箱機制可在工作站提供初步防禦,但安全防護力不如在完全隔離的虛擬機器 (VM) 中執行代理程式:
- Linux:使用核心命名空間 (
CLONE_NEWNS、CLONE_NEWUSER等) 和seccomp篩選器,隔離掛接點並限制系統呼叫。 - macOS:使用內建的
sandbox-exec(Seatbelt) 機制。 - Windows (實驗功能):使用
AppContainer隔離和存取控管清單 (ACL)。Windows 上的沙箱功能目前處於實驗階段,可能需要管理員權限,或與某些系統設定不相容。
沙箱行為
沙箱啟用時:
- 檔案系統隔離:代理只能存取允許目錄中的檔案。在
cm find期間,工作區和允許的根目錄會以唯讀方式掛接,因此指令只能寫入每個工作階段的構件目錄。在所有指令 (包括cm verify和cm fix) 中,.git/hooks、.git/config、.hg/hgrc和.codemender都會以唯讀方式掛接,因此沙箱指令無法安裝 Git 或 Mercurial 鉤子,也無法修改 CodeMender 設定。 - 網路隔離:沙箱預設會封鎖傳出網路存取權 (
sandbox.network.profile: "permissive-closed"),防止代理 (或其叫用的建構工具) 建立非預期的外部連線,或將資料傳輸至工作區外。 - 憑證和密鑰隔離:沙箱會排除常見的主機憑證目錄 (
~/.ssh、~/.gnupg、~/.aws、~/.config/gcloud、~/.config/gh、~/.kube、~/.docker等),並在執行指令前,移除與密鑰模式相符的環境變數 (*_TOKEN、*_SECRET、*_KEY、*_PASSWORD、*_CREDENTIALS和類似後置字串)。
建構和驗證期間的網路存取權
由於沙箱預設會啟用網路隔離功能 (sandbox.network.profile 預設為 permissive-closed),因此代理在執行工具時無法存取網際網路。
這會對需要在建構或驗證步驟中擷取外部依附元件的專案造成限制 (例如在 build.command 過程中執行 npm install、pip install 或 go get)。如果建構程序嘗試存取外部網路服務,就會失敗。
處理網路依附元件
如果專案需要網路存取權才能建構或測試,可以採取下列做法:
- 預先擷取依附元件:在執行
cm指令前,先在主機系統上安裝所有必要的依附元件,這樣建構指令就不需要網路存取權。 在沙箱中啟用網路存取權:變更
config.yaml中的網路設定檔,允許對外連線:sandbox: network: profile: "permissive-open"停用執行作業的沙箱:執行指令時加上
--sandbox=false旗標,即可停用該執行作業的 OS 層級沙箱 (包括網路隔離)。
沙箱設定
您可以使用下列選項,設定及控管沙箱和安全性邊界:
- 永久設定 (
config.yaml和command_policy.yaml):在config.yaml和command_policy.yaml中自訂沙箱行為、檔案系統掛接、網路存取權和指令拒絕清單。詳情請參閱「設定參數」和「指令政策」。 - 控制 OS 層級沙箱 (
--sandbox):將--sandbox=true或--sandbox=false傳遞至cm find、cm verify、cm fix或cm session resume,明確啟用或停用單次執行的 OS 層級沙箱。 - 略過路徑邊界 (
--allow-all-paths):停用單次執行的工作區路徑邊界檢查,讓代理工具存取專案根目錄和設定的project_paths以外的路徑 (與--sandbox=false搭配使用,可存取未掛接在沙箱內的主機路徑)。 - 略過指令政策 (
--allow-all-commands):停用單次執行的command_policy.yaml封鎖清單強制執行。
選擇隔離等級
您可以根據安全性需求和開發環境,選擇適當的隔離層級來執行 CodeMender CLI。
| 方法 | 說明 | 優點 | 缺點 |
|---|---|---|---|
| 內建沙箱 (OS 層級) | 這項功能預設為啟用,您可以在 config.yaml 檔案中停用,或使用 CLI 旗標略過。使用內建 OS 功能 (命名空間/seccomp、sandbox-exec、AppContainer (實驗功能)) 隔離執行作業。 |
輕量;零啟動負擔;直接存取本機工作區工具,並提供精細控制。建議用於日常本機開發。 | 安全性仰賴 OS 核心功能;隔離程度低於完整 VM;Windows 支援功能處於實驗階段,可能需要管理員權限,或與部分設定不相容。 |
| 容器 | 在容器 (例如 Docker) 中執行代理程式。 | 隔離效果良好;標準化環境。 | 需要容器執行階段;可能較耗資源;無法直接與本機機器上的工具互動。 |
| 完整 VM | 在專屬 VM 中執行代理。 | 安全性上限;完全隔離。 | 資源負擔高、啟動速度慢、無法直接與本機電腦上的工具互動。 |
遙測
為監控及提升產品健康狀態,我們會透過 CLI 收集匿名遙測資料。我們會將所有收集到的資料完全去識別化,包括基本使用指標和效能診斷資料。遙測功能絕不會收集或傳輸原始碼、檔案內容、發現項目、修補程式或使用者身分。
遙測功能預設為啟用。如要停用遙測功能,請將 CM_TELEMETRY_OPT_OUT 環境變數設為 1 或 true。
更新 CLI
CodeMender 內建更新機制,可確保您執行的是最新版本 CLI。
自動檢查更新
根據預設,執行指令時,CodeMender CLI 會自動在背景檢查更新:
- 節流:為盡可能減少負擔,自動檢查每 24 小時最多執行一次。
- 必須使用互動式終端機 (TTY):CLI 只會在互動式終端機中執行時,檢查更新並提示您。在非互動式環境 (例如 CI/CD 管道或指令碼) 中,系統會略過檢查,並每天最多記錄一次警告至
stderr。 - 提示:如果有新版本,
stderr會顯示提示:none 🆕 A new CodeMender release is available: 1.1.0 Update now? (y/N):如果選擇「是」(y或yes),CodeMender 會下載更新、取代二進位檔,然後結束。您必須再次執行指令,才能使用新版本。如果選擇「否」,系統會略過更新,並執行原始指令。 - 離線容許度:如果您處於離線狀態,或無法連上版本存放區,檢查作業會失敗,但不會顯示任何訊息,CodeMender 則會繼續執行指令。
- 略過:您可以將
--yes或-y旗標傳遞至任何指令,略過自動更新檢查。
手動更新 (cm update)
您可以執行 update 指令,強制 CodeMender 立即檢查並套用更新:
cm update
cm update 指令:
- 忽略 24 小時調節。
- 立即下載並套用更新,不顯示提示 (非互動式)。
- 不需要互動式終端機 (指令碼和設定管理可安全使用)。
如果 CLI 安裝在需要提高權限的系統目錄中,請使用 sudo 執行更新:
sudo cm update