程式碼稽核
程式碼稽核為實驗性功能。
程式碼稽核是透過您本機的程式設計智慧體,對專案進行的安全審查。在側邊欄中的專案上按右鍵,選擇「實驗性功能」→「程式碼稽核」,然後點選「新增稽核」。在「本機助理」下選擇「Codex」或「Claude」,接著選擇「模型」、「思考程度」與「稽核範圍」,再點選「開始稽核」。報告頁面會顯示掃描目前所處的階段。「助理工作階段」會顯示智慧體原始的工具呼叫、分析內容與待處理的權限請求;在該處回應請求後,稽核即可繼續。Codex Security 將結果定案後,報告就會出現。
稽核在存放專案的機器上執行,並使用所選智慧體已安裝的 CLI,沿用其既有的登入、設定與權限處理方式(「沿用本機助理的登入和設定,無須另行設定模型 API。」)。VelaTerm 只會為稽核會話加入一個 Codex Security MCP 伺服器;您的其他 MCP 伺服器維持不變,VelaTerm 本身也不會呼叫模型 API。CLI 必須已安裝、已登入,且未超出帳號的用量限制。CLI 本身的設定可能會指定模型供應商;VelaTerm 不會變更此設定。
集合也會顯示「程式碼稽核」項目。沒有根資料夾的集合無法進行稽核。
模型與推理強度
模型清單與新增會話對話方塊中該智慧體所用的清單相同,並會考量智慧體的預設啟動參數,因此清單內容與稽核實際的執行方式一致。「預設模型」會沿用智慧體自己的選擇。選擇支援推理強度等級的模型後,即可使用「思考程度」;「自動」會沿用智慧體自己的選擇。如果清單無法載入,會出現重試按鈕。後端會檢查明確指定的組合,稽核也會儲存所選的值,供歷史記錄與日後執行使用。模型出現在清單中,並不代表您的帳號有權使用該模型。供應商端的失敗(包括用量上限已用盡)會使稽核以失敗告終。
新的稽核會要求以介面語言撰寫分析內容。協定欄位、路徑、識別碼與引用的原始碼證據則保持不變。
Codex Security 整合
VelaTerm 隨附公開的 Apache-2.0 版本 @openai/codex-security@0.1.26,其外掛程式資訊清單的版本為 0.1.95;新增稽核頁面會同時顯示這兩個版本。原始的技能、參考資料、結構描述、指令碼、執行環境與授權條款均包含在內,UPSTREAM.json 則記錄了套件來源、完整性值與檔案雜湊值。
每次新的稽核都會註冊一次真正的上游工作台掃描。智慧體會讀取隨附的入口技能,並使用上游的 MCP 工具與結果格式。先前以獨立方式實作的批次工作流程所產生的記錄仍可閱讀,並標示為「舊版稽核 · 此記錄未使用 Codex Security 流程。」
兩種智慧體使用相同的上游工作流程。公開的 TypeScript SDK 驅動的是 Codex 執行環境,並未提供 Claude Code 執行器,因此 VelaTerm 透過上游的 MCP 伺服器與本機工作台進行整合。對 Claude Code 的支援是 VelaTerm 自行實作的轉接層,並非上游官方宣稱支援 Claude。
執行環境需要 PATH 中有上游套件所支援版本的 Node.js,以及 Python 3.10 或更新版本;Python 3.10 另外需要 tomli 套件,Python 3.11 及更新版本則以內建的 tomllib 取代。VelaTerm 會檢查隨附的資源,並將其解壓縮到自己的資料目錄,不會將這些資源安裝到您的 Codex 或 Claude 設定中。
範圍與工作流程
- 整個儲存庫會針對目標的固定快照與儲存庫的安全政策,執行上游的 Standard 掃描。
- 目錄或檔案會以確切的「相對路徑」執行 Standard 掃描。為了理解呼叫鏈,可能會讀取其他原始碼檔案,但不會因此宣稱這些區域已經過完整稽核。
- 工作目錄變更會針對固定的 Git 變更集執行上游的差異掃描技能。範圍包含上游目標解析器所支援的已暫存、未暫存與未追蹤的變更,並會保留已刪除檔案的基準證據。
Standard 掃描會讀取 skills/security-scan/SKILL.md 與 references/core-scan.md,並依序進行執行前檢查、獨立的基準與架構分析、以原始碼為依據的調查、候選問題檢查點、反證審查、驗證,以及涵蓋範圍核對。智慧體支援時會使用獨立的工作單元(worker);否則會套用上游的循序備援流程,且必須揭露其限制。僅有工作單元的容量設定,並不能證明確實有獨立的工作單元執行過。
工作目錄變更稽核會讀取 skills/security-diff-scan/SKILL.md。它會固定目標、建立威脅模型、準備並列舉審查項目、找出候選問題、驗證這些問題、分析攻擊路徑,並提交結果草稿以完成掃描。只審查已變更檔案的目前內容,並不能取代這套流程。
上游工作台只接受目錄作為範圍。為了讓檔案選擇能正常運作,已安裝的執行環境套用了兩個範圍很小的修補程式,其雜湊值均有記錄:既有的檔案可作為範圍,並計為一個快照項目。隨附的原始檔案不會變更,已安裝的 ADAPTER.json 會記錄原始與修改後的雜湊值。選擇單一檔案時,絕不會變成掃描其整個目錄。
稽核指示禁止修改原始碼、進行修復、發布內容,以及變更智慧體的設定。智慧體本身的工具權限仍然有效。這些指示並不是作業系統層級的沙箱。驗證必須說明實際檢查了哪些內容,而靜態分析發現的問題並不代表已重現漏洞利用(「僅執行靜態審閱。報告中的涵蓋情況不保證發現所有漏洞,也不代表已進行動態漏洞重現。」)。
報告、涵蓋範圍與取消
稽核結果以上游的 scan-manifest.json、findings.json 與 coverage.json 為準。上游的定案程序會驗證並定案這些檔案,再產生可閱讀的報告。VelaTerm 會匯入這些檔案,並檢查每個問題的位置與確切的原始碼行,同時將 LF 與 CRLF 換行字元視為相同。結構有效且原始碼行相符,本身並不能證明問題可被利用。如果原始碼證據不相符,稽核會維持「失敗」,其發現的問題也不會被視為已驗證。已定案的上游報告仍可查看,而 Markdown 匯出內容會將驗證失敗的資訊放在最前面,但不會改寫報告。
定案之前,VelaTerm 會使用與匯入時相同的驗證器,檢查草稿中的路徑、行範圍與摘錄。如果證據不相符,掃描會維持尚未定案的狀態,並告知智慧體需要修正哪些位置。接著由 Codex Security 的完成工具產生報告並定案。此檢查絕不會改寫摘錄、移除發現的問題或變更已定案的結果。匯入時會再次檢查,因此之後的原始碼變更無法在不被察覺的情況下,讓無效的證據變成成功的結果。
涵蓋範圍來自上游的審查記錄與判定,而不是智慧體聲稱已讀取的檔案數量。尚未解決的候選問題、延後處理的工作、排除項目與完成警告都會持續顯示。涵蓋範圍不完整的已定案掃描會顯示為「部分涵蓋」。即使涵蓋範圍完整,也不保證已找出所有漏洞。
當智慧體結束一個回合,而掃描仍有工作尚未完成時,VelaTerm 會在同一個會話與掃描中繼續,並保留既有的發現問題與工作單元結果。權限請求會維持待處理狀態(「等待權限或輸入」),取消或供應商錯誤則會停止自動繼續。如果連續三個回合結束時,上游的審查進度、發現的問題或涵蓋範圍都沒有任何變化,稽核會以掃描未完成的錯誤停止,並保留其檢查點。
「報告」分頁會顯示保留下來的發現問題、原始碼證據與涵蓋範圍的限制。每個問題都有自己的網址,並顯示其攻擊路徑、驗證方式與結論(如有提供)、修復建議,以及回報的原始碼摘錄;將這些摘錄視為已驗證之前,請先確認稽核狀態。「報告產物」分頁保留上游產生的完整報告與掃描 ID。執行中的掃描會顯示上游套件與外掛程式的版本、實際的階段與進度,以及警告;在已定案的報告出現之前,會顯示進度與檢查點資訊,而不是空白的評估結果。在「助理工作階段」中,一般的訊息輸入框與回退功能會停用,以免無關的回合取代稽核;權限請求則仍可正常處理。
「取消」會停止上游掃描與智慧體。上游工作台能將已儲存的檢查點定案時,這些檢查點仍可使用,並維持其已取消或失敗的狀態。延遲送達的結果無法讓已取消的稽核恢復。重新啟動後,VelaTerm 會核對上游的狀態:已完成且已定案的結果可以匯入,未完成的執行則會標示為「已中斷」,其保留的檔案也會與已完成的結果明確區分。
在既有的記錄上點選「開始稽核」,會以已儲存的智慧體與選項,對目前的目標建立新的掃描。這不會恢復已停止的模型回合,也不會沿用舊的判定結果。
稽核記錄、新增稽核表單、報告詳細資料與助理工作階段都有各自的網址,因此可以直接開啟、重新整理,並使用瀏覽器的上一頁與下一頁按鈕瀏覽。在較窄的螢幕上,稽核記錄與詳細資料會以不同的檢視分開顯示。
匯出與限制
「匯出報告」提供 Markdown 與 JSON 兩種格式。有上游報告時,Markdown 匯出內容會包含該報告;否則會明確標示為未完成掃描的記錄。JSON 匯出內容會保留所有匯入的資料,以及 VelaTerm 自己的中繼資料。上游掃描資料夾也會保留其產生的 SARIF 與其他檔案。匯出內容可能包含原始碼摘錄與漏洞細節,分享時請審慎處理。
此介面提供 Standard 與工作目錄差異兩種稽核。其他隨附的技能(例如深度掃描、修復、修復驗證與外部問題追蹤)會作為上游資源保留,但不提供獨立的操作。稽核不會套用修復、發布發現的問題、建立 issue 或開啟 pull request。
診斷
後端會將稽核的生命週期與上游階段資訊記錄在應用程式日誌目錄的 runtime-*.log 中。VLX_LOG_DIR 設定共用的位置;未設定時,由 VLX_SECURITY_LOG_DIR 設定稽核事件的位置。VLX_SECURITY_LOG_LEVEL=error 只記錄失敗,off 則將其關閉。提示詞與回應只以其大小與 SHA-256 摘要描述;完整的原始碼、憑證與完整的 AI 回應不會複製到日誌中,也不會保留供應商的原始訊息。自訂模型名稱會以僅在目前處理程序中有效的匿名識別碼取代。可取得 token 數量時,該數量為會話的累計用量。智慧體的對話會照常保留其記錄。
稽核失敗時,請閱讀報告上供應商提供的說明,或開啟「助理工作階段」。請先解決登入、執行環境、權限或帳號用量上限的問題,再開始新的稽核。MCP 伺服器已連線只表示工具可以使用,並不表示模型已完成掃描。