cc_server CLI
每一個行程旗標都可以用 CLI 旗標或環境變數提供;旗標勝過環境變數,再勝過預設值。第三方憑證是例外——見下文。
| 旗標 | 環境變數 | 預設值 | 含義 |
|---|---|---|---|
--data-dir |
CC_SERVER_DATA_DIR |
作業系統的每位使用者應用程式資料目錄(見下文) | 資料庫、密鑰、模型與快取媒體 |
--port |
CC_SERVER_PORT |
9030 |
TCP 連接埠(0 = 臨時) |
--bind |
CC_SERVER_BIND |
loopback |
loopback,或用 any/all/0.0.0.0 表示所有網絡介面(需要 TLS 或 --insecure) |
--repo-roots |
CC_SERVER_REPO_ROOTS |
伺服器使用者的家目錄 | 用戶端註冊程式庫時可瀏覽的基礎目錄(以逗號分隔)。瀏覽至某個根目錄之上會被拒絕 |
--log-level |
CC_SERVER_LOG_LEVEL |
warning |
debug、info、warning 或 error。啟動與就緒的記錄行一律會印出 |
--server-name |
CC_SERVER_NAME |
機器主機名稱 | 顯示於選擇器、探索與配對介面上的名稱 |
可觸達性與 TLS
標題為「可觸達性與 TLS」的章節| 旗標 | 環境變數 | 預設值 | 含義 |
|---|---|---|---|
--tls-cert |
CC_SERVER_TLS_CERT |
未設定 | PEM 憑證鏈。與金鑰一同設定時,會在行程內提供 wss:// |
--tls-key |
CC_SERVER_TLS_KEY |
未設定 | 與憑證配對的 PEM 私鑰 |
--insecure |
CC_SERVER_INSECURE |
關閉 | 允許非回送的明文繫結。僅限在可信網絡上位於終止 TLS 的代理之後;已設定 TLS 時會被忽略 |
--public-url |
CC_SERVER_PUBLIC_URL |
由繫結推導 | 這部伺服器向已配對用戶端公佈的 RPC URL。在代理、NAT 或通道後方時,請明確設定它——預設值只是對本機繫結的猜測 |
--allowed-origins |
CC_SERVER_ALLOWED_ORIGINS |
https://app.usectrl.dev |
允許跨來源撥打 /rpc 的瀏覽器來源(以逗號分隔)。回送與原生用戶端一律獲准 |
--web-client-url |
CC_SERVER_WEB_CLIENT_URL |
未設定 | 單一登入回呼會折返回去的受託管網頁用戶端來源 |
--signaling-url |
CC_SERVER_SIGNALING_URL |
wss://signaling.usectrl.dev |
這部伺服器加入的中繼中介,讓手機在沒有直接路徑時也能觸達它 |
--mdns |
CC_SERVER_MDNS |
auto |
LAN 公告:auto(只在繫結超出回送時)、on、off。探索只公佈存在——加入仍須配對 |
--tunnel |
CC_SERVER_TUNNEL |
off |
受管理的通道供應商:off、cloudflared、ngrok、tailscale。公開曝光需自行開啟 |
--tunnel-binary |
CC_SERVER_TUNNEL_BINARY |
從 PATH 解析 |
明確的通道二進位檔路徑 |
--tunnel-sha256 |
CC_SERVER_TUNNEL_SHA256 |
未設定 | 該二進位檔的預期 SHA-256,每次啟動前都會驗證 |
--tunnel-args |
CC_SERVER_TUNNEL_ARGS |
空 | 通道叫用時額外的引數(以逗號分隔) |
索引與第三方憑證
標題為「索引與第三方憑證」的章節| 旗標 | 環境變數 | 預設值 | 含義 |
|---|---|---|---|
--sandbox |
CC_SERVER_SANDBOX |
on |
當主機提供作業系統原生沙箱時,代理執行是否會被包裹其中。這是退出機制,而不是啟用機制——見下文 |
--code-index |
CC_SERVER_CODE_INDEX |
on |
背景程式碼圖索引的現場終止開關。off 會在不重建的情況下乾淨啟動 |
--code-index-defer |
CC_SERVER_CODE_INDEX_DEFER |
15 |
就緒橫幅之後,延後第一次索引掃描的秒數(限制於 0–300) |
--tool-deferral |
CC_SERVER_TOOL_DEFERRAL |
on |
執行框架的執行是否只送出一個小的常駐工具集加一個名稱索引,其餘在首次使用時載入。見下文 |
--credential-gate |
CC_SERVER_CREDENTIAL_GATE |
900 |
某次執行因為憑證無法為它提供服務,而擱置等待真人修復的秒數(限制於 0–3600)。見下文 |
憑證若為空值,會視同未設定,因此仍會套用內建的後備值。從原始碼自行建置的版本完全不附帶任何內建憑證。
Google Calendar 與 Klipy GIF 選擇器只能透過環境變數——沒有 --google-client-id / --klipy-app-key 旗標(未知旗標會被忽略)。請在環境中(或伺服器旁邊的 .env)設定
GOOGLE_OAUTH_CLIENT_ID + GOOGLE_OAUTH_CLIENT_SECRET,以及 KLIPY_APP_KEY。空值會停用該功能,而不是令啟動失敗。
--sandbox
標題為「--sandbox」的章節伺服器會在啟動時探測主機一次,並在後端可用時,把代理的指令執行包裹在作業系統原生沙箱中:macOS 上是 sandbox-exec(Seatbelt),Linux 與 WSL2 上是 bwrap 加 socat。在沒有後端的地方——Windows,或缺少這些工具的 Linux 主機——執行會回退到環境清理、指令政策與操作護欄,而啟動記錄會說明當時適用哪一種狀態。
--sandbox off 是針對探測看不見的情況所用的現場終止開關:主機上的沙箱設定檔本身行為失當。它不需要重建,而伺服器會在整個行程存續期間記錄一則警告,因此這個狀態永遠不會是無聲的。
--tool-deferral
標題為「--tool-deferral」的章節內建執行框架的執行會送出一個小的常駐工具定義集,加上其餘工具的名稱索引,這些工具的 schema 會在首次使用時才載入。這把工具區塊縮小約 78%,並讓永遠可見的集合落在模型能可靠選擇工具的區間之內。隨需載入的工具全程都仍可按名稱呼叫,而 search_tools
會按意圖找到它們。參見工具上下文與提示快取。
--tool-deferral off 會讓每個被准入的工具重新常駐,重現隨需載入出現之前伺服器所發出的請求。對於處理不好這種兩層式介面的模型,這是它的終止開關——是一個旗標,而不是要重建。它只影響內建執行框架;外部用戶端看到的 MCP tools/list 一律是完整目錄。
--credential-gate
標題為「--credential-gate」的章節若某次執行的供應商憑證缺失或已耗盡,該次執行會被擱置而非失敗:操作者會收到提示去修復它,而若他們修好,執行便會繼續。預設期限是 900 秒(15 分鐘),限制於 0–3600。
這個期限刻意遠長於核准提示的期限:核准是有人在數秒內作出的決定,而修復憑證則意味着要開啟終端、登入然後再回來。這個上限的作用,是要讓無人看管的執行——管線步驟、cron 觸發器、webhook——不會無了期地等待一個正在睡覺的人。當它到期時,執行會以它本來就會失敗的那則訊息失敗。
--credential-gate=0 就是終止開關:任何東西都不會被擱置,而一個壞憑證會結束該回合,情況與這道關卡存在之前完全相同。
子指令
標題為「子指令」的章節| 指令 | 它的作用 |
|---|---|
cc_server |
執行伺服器,直到收到 SIGINT/SIGTERM |
cc_server pair |
佈建一部裝置並印出其 id 與配對金鑰。對一個伺服器正在提供服務的資料目錄也是安全的——執行中的伺服器無須重新啟動就會接收該裝置 |
cc_server calendar connect --workspace <id> |
透過裝置碼流程把 Google 帳戶連接到某個工作區,然後結束 |
cc_server update |
檢查、下載並驗證較新的獨立發行版本 |
cc_server --version |
印出版本與 git SHA——/healthz 與 RPC 握手所公佈的同一個身分 |
pair
標題為「pair」的章節| 旗標 | 預設值 | 含義 |
|---|---|---|
--device |
web-client |
裝置 id。平台由它推斷,因此 --device desktop 會建立一筆桌面資料列,而 --device ios/android 會建立一筆手機資料列;其他任何值都會當作網頁 |
--label |
平台名稱加上本機的主機名稱 | 裝置清單中的顯示名稱 |
--host |
localhost,或繫結至所有網絡介面時的 <this-host> |
要嵌入所印出 URL 中的主機。請把它設為用戶端實際會撥打的 LAN IP 或通道主機 |
--client-url |
未設定 | 受託管網頁用戶端的來源。會加入可掃描的深層連結與終端 QR 碼 |
pair 也接受核心的 --data-dir、--port 與 --bind 旗標:它們選定要寫入的資料目錄,並塑造所印出的伺服器 URL(回送上為 ws,--bind any 時為 wss)。對同一個 --device 重新執行 pair 會輪替它的金鑰,並丟棄該裝置的現行工作階段。在此簽發的憑證
沒有到期時間,不像應用程式內配對所設定的 30 天。
update
標題為「update」的章節--apply 會替換整個安裝;若設定的連接埠上仍有伺服器回應,除非你傳入 --force,否則它會被拒絕。--allow-downgrade 允許較舊的發行版本。
對於不屬於它管的安裝,這個指令會直接拒絕,並給出解釋而不是錯誤:
| 環境 | 偵測方式 | 它會說甚麼 |
|---|---|---|
| 桌面應用程式內嵌的伺服器 | CC_EMBEDDED=1 或 CC_BOOTSTRAP_DEVICE_ID |
請改為更新應用程式——安裝程式會替換整棵目錄樹 |
dart run 原始碼檢出 |
指令碼路徑以 .dart 結尾 |
請用 git 更新它 |
| Docker | 容器標記 | 拉取較新的映像 |
行程生命週期
標題為「行程生命週期」的章節cc_server 會一直執行到收到 SIGINT / SIGTERM。有一個額外的環境變數管轄這件事,而它是由桌面應用程式設定,而不是由你設定:
| 變數 | 作用 |
|---|---|
CC_EXIT_WITH_PARENT=1 |
當它的父行程結束時,伺服器也會結束——判斷方式是父行程關閉其 stdin 管道的寫入端。桌面應用程式會設定它,這樣即使應用程式當掉,也永遠不會遺下一個仍持有資料目錄的孤兒伺服器 |
只有在你把 cc_server 當作子行程監督,並想要同樣的保證時,才自行設定它。
資料目錄佈局
標題為「資料目錄佈局」的章節預設資料目錄在 macOS 上是 ~/Library/Application Support/control-center,
在 Windows 上是 %APPDATA%\control-center,其他地方則是 $XDG_DATA_HOME/control-center(否則為
~/.local/share/control-center)。只有在無法解析出家目錄或應用程式資料目錄時,才會使用相對於 cwd 的 .cc_server。
| 路徑 | 內容 |
|---|---|
global.db |
工作區註冊表、使用者、已配對裝置、資訊動態與機群佇列 |
<workspaceId>/workspace.db |
每個工作區一個資料庫——代理、空間、工單、記憶、程式碼圖 |
<workspaceId>/chat_credentials/ |
聊天機械人權杖,以純 JSON 儲存,因此它們會跟着工作區走 |
secrets.json |
配對金鑰、供應商應用程式身分、每位使用者與 Google 權杖、SSO(0600) |
backups/<timestamp>/ |
一份安裝快照——manifest.json、global.db 以及每個工作區的複本 |
backups/exports/ |
單一工作區匯出檔,<workspaceId>-<timestamp>.db |
backups/transfer/ |
備份下載與上傳的暫存區;由寫入它的路由清掃 |
models/ |
裝置上的嵌入、說話人分離與語音模型 |
meetings/<meetingId>/ |
保留的會議音訊 |
rigs/images/ |
匯入的測試機磁碟映像(QEMU 桌面介面) |
rigs/smolvm/<rigId>/ |
每部測試機的 microVM 執行階段狀態(仲介程式的密鑰,0600) |
rigs/smolvm-packs/ |
預先解壓的機器套件——讓測試機重複啟動更快的快取 |
rigs/tls/ |
測試機 HTTPS 用的開發網域憑證頒發機構(金鑰 0600) |
rigs/run/<rigId>/ |
QEMU 覆寫層、種子映像與每個 VM 的金鑰(0600) |