作品集 → AI Control Center

系統與工具 · 桌面應用程式AI Control Center

做完了,不代表做對了。

AI Control Center 是一套 Windows 應用程式,用明確的角色分工、驗證步驟和人工核准,協調多個 AI 寫程式代理。它要求 AI 拿出證據:每一步都留下紀錄,綁在它檢查的那個版本上;連測試本身,也要靠故意改壞程式,證明它抓得到錯。

AICC 儀表板:以示範資料呈現的產品介面
Dashboard v5 介面以示範資料重新渲染,非即時執行成果。點圖片可在新分頁查看大圖。
設計示意 · 非產品截圖
標準訂定驗收標準 實作完成工作 驗證執行檢查指令 審查閱讀證據 你決定人工核准 工作成果 + 證據 + 所檢查的版本 核准只適用於它檢查過的版本。

左右滑動可以看到整張圖。

工作流程的設計示意。驗證由指令執行,核准由人決定。
挑戰

一個人協調多個 AI 寫程式代理時,需要知道誰檢查過、檢查的是哪個版本,以及測試是否真的抓得到錯。

我的貢獻

我定義產品規則與架構,在實作前審閱設計,並透過實際使用檢查成果;程式由 AI 寫程式代理實作。

證據入口

從證據綁定版本的流程圖與故意改壞程式的驗證流程開始。本頁提供設計示意與附日期的審查結果及限制,沒有產品操作 Demo。

30 → 0一次全面掃描找到的假綠燈,已全部清除 · 2026 年 8 月 24–27 日
868筆有紀錄的故意破壞,分布在 115 個配方檔
2,200條測試通過(共 2,219 條),AI 協助的發布前審查,0 條跳過 · 2026-09-24
3種結果,不是兩種:通過 · 失敗 · 無法驗證
落差

在報告上,「做完了」和「做對了」看起來一模一樣

AI 代理很擅長把看得見的任務做完。一個永遠會通過的測試、一個算出來推到畫面上卻沒有人讀的數值、一個蓋在已經改過的版本上的審查——這些全都顯示綠燈。這個專案一次掃描就找到 30 個。

所以整個產品圍繞著一個問題:要怎樣才能真的確定?

要避免的風險AICC 的做法
沒有明確由人決定的時間點遇到該你決定的事,它會停下來
同一個角色既做事、又訂標準做事的角色,永遠不訂驗收標準
核准跟它檢查過的版本脫鉤核准綁在版本上;內容一改就失效
通過的測試,可能根本抓不到錯綠燈要先被變紅過,才算數
紀錄只能在程式裡看紀錄是純文字,放在你的資料夾,不靠程式也能驗證
綁定版本的證據

一筆確認紀錄的價值,取決於它確認的是哪個版本

內容 · 版本 A指紋 7f3a… 驗證需要證據 審查不附結果 核准你 修改 內容 · 版本 B指紋 c91e… ✕ ✕ ✕ 已失效 · 回到審查 只有依賴這次修改的紀錄會失效 機器的確認沒有證據就建立不了;審查的確認不能附帶結果。兩條規則都寫在資料模型裡,不只是註解。 第三種結果——GATED:任務沒有宣告驗證方式。這不算失敗,所以不會派代理去修沒壞的東西。
看細節

每個角色在執行時都會留下一筆確認紀錄,記下是誰、什麼時候、在哪個內容指紋上、憑什麼證據。核准要求所有必要的紀錄都在同一個指紋上;內容改了,只有輸入有變動的紀錄會失效,沒受影響的工作不必重做。

決策紀錄是一條雜湊鏈,可以匯出,用一支不依賴本程式的獨立驗證工具檢查。它能發現鏈中間任何一筆被改過或刪掉;但不宣稱能發現整條鏈從頭到尾被重寫。

被測試的測試

綠燈要先被變紅過,才算數

通過 改壞一行 失敗 ✓ 還原並確認 這時綠燈才算數 改壞了還是通過?這個測試什麼都沒抓到 ✗ 沒跑起來?結果未知 ?——絕不默默算成通過 868 筆破壞有紀錄;某筆破壞對不上目標時,另一項檢查會失敗
  • 還原一律從副本來,絕不用 git checkout——它曾經把還沒存檔的修改整段丟掉
  • 零跳過是硬規則:參數化測試如果是空的、產生一個 SKIP,整次執行就算失敗
  • 兩層檢查互不取代:pytest 確認數值有被讀取;在真正的 QWebEngine 裡用 DOM 探測,確認它有被畫出來
  • 有一支專用工具,專門抓反覆出現的缺陷:「算出來、推到畫面上,卻沒有任何地方讀」

負責改壞程式的工具已經獨立出來:negative-control →

職責分立

做事的角色,永遠不訂驗收標準

職責讀取寫入檔案訂驗收標準核准
規劃●—●—
執行●● 只有這一種不行—
審查●—●—
核准●——● 推翻不了機器的確認

每個角色是一個席位,有自己的職責、自己的對話、自己看得到的規則。引擎依職責分派,不依席位名稱——而且會擋住角色驗證自己的工作。

  • 驗收標準由「執行」以外的席位訂定;訂標準的紀錄和實作的紀錄如果出自同一個角色,引擎會拒絕
  • 退件依職責送回負責的席位,而不是依位置
  • 會給出權力的職責絕不自動指派:你沒有安排,引擎就不會替你挑一個

底層做法:Claude Code 以 plan 模式執行唯讀職責;Codex 在唯讀沙箱裡執行。只有「執行」職責能寫入。這些是廠商工具自己的權限模式:由 AICC 提出要求,AICC 本身並不是作業系統層級的沙箱。

該你決定時才停

大多數工具賣的是更自動。這一個是設計來停下來的。

AI 工作→ 遇到只有你能決定的事→ 在你的待決清單裡等→ 你決定→ 繼續進行,你的決定留下紀錄

權力不會預設發出去

會給出權力的職責絕不自動指派。你沒有安排,引擎就不會替你挑一個。

「無法驗證」不等於「壞了」

沒有宣告檢查方式的任務,會被標成無法驗證。它不算失敗,所以不會派代理去修沒壞的東西。

你的核准推翻不了檢查結果

機器檢查沒過,你按下核准也不會讓它變成通過。核准者只能讀,不能改寫結果。

五層

它是一張圖——而每個節點裡,仍然有那四層

Graph誰做什麼 · 怎麼交接 · 在哪裡檢查 Loop最多修兩次,然後交給你 Harness它能碰什麼 Context剛好夠用 Prompt 不是階梯:一次呼叫,外面包了五層 規劃 執行prompt · contextharness · loop 驗證 審查 你 驗證是一個指令,不是 AI 你也是一個節點

Prompt、context、harness、loop、graph——這五層,現在常被統稱為 graph engineering。它們不是彼此取代的階段;AICC 的每一次執行同時用到五層,修復迴圈就在單一節點裡面。

每一層在程式裡的位置
Prompt要做什麼、限制、成功標準、回傳格式——prompt_builder
Context這一步剛好需要的內容:每種職責只收到自己的規則層,加上共用的專案記憶
Harness它能碰什麼:CLI 執行器、專案的敏感等級與權限模式
Loop工作流程裡的修復迴圈:最多修兩次,然後交回給人
Graph席位陣容與九道步驟關卡;狀態記在執行紀錄、時間軸和確認紀錄鏈裡
它不做的事

三件事,直說

01

不拿你沒交給它的東西

你的 Claude 或 Codex 登入不經過 AICC——它只會打開廠商自己的登入畫面,不讀瀏覽器或其他程式的快取。憑證模組裡只要出現任何新的收下 API key 的方式,就會有測試失敗。

02

不轉賣模型

你用自己的 Claude 和 Codex 帳號,受它們各自的用量限制。AICC 不在你付給它們的費用上加價。

03

沒有自己的伺服器

不用帳號、不用註冊,也沒有 AICC 的伺服器。專案紀錄是你資料夾裡的純文字檔,AICC 本身就是它管理的第一個專案。提示詞確實會經由 Claude 或 Codex 自己的命令列工具送出;可選的 LINE 和 Google Drive 功能,也有各自的資料路徑。

現況與限制

有什麼、證明了什麼、還沒有什麼

已完成

  • Windows 桌面應用程式;早期版本在 Windows 上實際安裝、啟動、解除安裝過兩次
  • 職責綁定權限的角色、確認紀錄鏈、時間軸、可匯出的決策紀錄
  • 一個人同時管理多個並行專案

已驗證

  • AI 協助的發布前審查跑了 2,219 條測試:2,200 條通過、19 條失敗、0 條跳過;每一條失敗在 repo 裡都有說明
  • 同一次審查跑了 853 筆故意破壞,沒抓到的也一併公開
  • 找到 30 個假綠燈,並清到 0(2026 年 8 月 24–27 日)

下一步

  • 下一個測試版的擁有者驗收
  • 公開的 repo 只放原始碼;目前的安裝程式還需要完整的升級測試。已知限制列在 SECURITY.md
  • 原始碼在 GitHub;負責改壞程式的工具也獨立成 negative-control

GitHub 上的 repo 與說明文件是英文。

在新分頁開啟