ข้ามไปยังเนื้อหา

CLI ของ cc_server

ทุกแฟล็กของโปรเซสรับค่าได้ทั้งจากแฟล็ก 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-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 อนุมานจากการผูก URL ของ RPC ที่เซิร์ฟเวอร์นี้ประกาศให้ไคลเอนต์ที่จับคู่ไว้ ตั้งค่านี้อย่างชัดเจนเมื่ออยู่หลังพร็อกซี, 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 และตัวเลือก GIF ของ Klipy ใช้ตัวแปรสภาพแวดล้อมเท่านั้น — ไม่มีแฟล็ก --google-client-id / --klipy-app-key (แฟล็กที่ไม่รู้จักจะถูก เพิกเฉย) ให้ตั้ง GOOGLE_OAUTH_CLIENT_ID + GOOGLE_OAUTH_CLIENT_SECRET และ KLIPY_APP_KEY ในสภาพแวดล้อม (หรือไฟล์ .env ข้างเซิร์ฟเวอร์) ค่าว่างจะปิด ความสามารถนั้นแทนที่จะทำให้การบูตล้มเหลว

เซิร์ฟเวอร์ตรวจสอบโฮสต์หนึ่งครั้งตอนบูต และห่อการรันคำสั่งของเอเจนต์ด้วย แซนด์บ็อกซ์เนทีฟของระบบปฏิบัติการเมื่อมีแบ็กเอนด์ให้ใช้: sandbox-exec (Seatbelt) บน macOS, bwrap บวก socat บน Linux และ WSL2 เมื่อไม่มีเลย — Windows หรือโฮสต์ Linux ที่ขาดเครื่องมือเหล่านั้น — การรันจะถอยไปใช้การทำสภาพแวดล้อมให้ปลอดภัย นโยบายคำสั่ง และกฎคุมการกระทำ และบันทึกตอนเริ่มระบบจะบอกว่าสถานะใดมีผล

--sandbox off คือสวิตช์ตัดการทำงานหน้างานสำหรับกรณีที่การตรวจสอบมองไม่เห็น: โฮสต์ที่โปรไฟล์แซนด์บ็อกซ์เองทำงานผิดปกติ มันไม่ต้องบิลด์ใหม่ และเซิร์ฟเวอร์จะ บันทึกคำเตือนตลอดอายุของโปรเซส สถานะจึงไม่เคยเงียบ

การรันของฮาร์เนสในตัวส่งชุดนิยามเครื่องมือประจำชุดเล็กบวกดัชนีที่บอกแค่ชื่อของ ที่เหลือ ซึ่งจะโหลดสคีมาของมันเมื่อถูกใช้ครั้งแรก มันตัดบล็อกเครื่องมือลงราว 78% และทำให้ชุดที่มองเห็นเสมออยู่ในช่วงที่โมเดลเลือกเครื่องมือได้อย่างเชื่อถือได้ เครื่องมือที่ถูกหน่วงไว้ยังเรียกได้ด้วยชื่อตลอด และ search_tools หาพวกมันได้จาก เจตนา ดูบริบทเครื่องมือและการแคชพรอมต์

--tool-deferral off ทำให้เครื่องมือทุกตัวที่ได้รับอนุญาตกลับเข้าชุดประจำอีกครั้ง ส่งคำขอเหมือนที่เซิร์ฟเวอร์เคยส่งก่อนมีการหน่วงทุกประการ มันคือสวิตช์ตัดการทำงาน สำหรับโมเดลที่รับมือพื้นผิวสองชั้นได้ไม่ดี — เป็นแฟล็กแทนการบิลด์ใหม่ มันมีผล เฉพาะฮาร์เนสในตัว ส่วน MCP tools/list ที่ไคลเอนต์ภายนอกเห็นนั้นเป็นแค็ตตาล็อก เต็มเสมอ

การรันที่ข้อมูลรับรองของผู้ให้บริการหายไปหรือใช้หมดจะถูกพักไว้แทนที่จะ ล้มเหลว: ผู้ดูแลจะได้รับพรอมต์ให้แก้ไข และการรันจะดำเนินต่อหากแก้แล้ว กำหนดเวลา สูงสุดเริ่มต้นคือ 900 วินาที (15 นาที) จำกัดไว้ที่ 0–3600

กำหนดเวลานี้นานกว่าของพรอมต์ขออนุมัติอย่างตั้งใจ: การอนุมัติเป็นการตัดสินใจที่ ใครสักคนทำในไม่กี่วินาที ขณะที่การแก้ข้อมูลรับรองหมายถึงการเปิดเทอร์มินัล ลงชื่อเข้าใช้ แล้วกลับมา เพดานนี้เองที่กันไม่ให้การรันแบบไม่มีคนดูแล — ขั้นตอน ไปป์ไลน์ ทริกเกอร์ cron เว็บฮุก — ต้องรอคนที่นอนหลับอยู่ เมื่อมันหมดเวลา การรัน จะล้มเหลวด้วยข้อความที่มันจะล้มเหลวอยู่แล้ว

--credential-gate=0 คือสวิตช์ตัดการทำงาน: จะไม่มีการพักสิ่งใดเลย และข้อมูล รับรองที่ไม่ดีจะจบเทิร์นเหมือนก่อนที่ประตูนี้จะมีอยู่ทุกประการ

คำสั่ง สิ่งที่มันทำ
cc_server รันเซิร์ฟเวอร์จนถึง SIGINT/SIGTERM
cc_server pair จัดสรรอุปกรณ์และพิมพ์ ID กับคีย์จับคู่ของมัน ปลอดภัยแม้กับไดเรกทอรีข้อมูลที่เซิร์ฟเวอร์กำลังให้บริการอยู่ — เซิร์ฟเวอร์ที่รันอยู่จะรับอุปกรณ์ใหม่โดยไม่ต้องรีสตาร์ต
cc_server calendar connect --workspace <id> เชื่อมต่อบัญชี Google เข้ากับเวิร์กสเปซผ่านขั้นตอน device code แล้วออก
cc_server update ตรวจหา ดาวน์โหลด และตรวจสอบรีลีสแบบสแตนด์อโลนที่ใหม่กว่า
cc_server --version พิมพ์เวอร์ชันบิลด์และ git SHA — ตัวตนเดียวกับที่ /healthz และการจับมือ RPC ประกาศ
แฟล็ก ค่าเริ่มต้น ความหมาย
--device web-client ID อุปกรณ์ แพลตฟอร์มอนุมานจากมัน ดังนั้น --device desktop จะสร้างแถวเดสก์ท็อป และ --device ios/android สร้างแถวโทรศัพท์ ส่วนอย่างอื่นถือเป็นเว็บ
--label ชื่อแพลตฟอร์มบวกชื่อโฮสต์ของเครื่องนี้ ชื่อที่แสดงในรายการอุปกรณ์
--host localhost หรือ <this-host> เมื่อผูกกับทุกอินเทอร์เฟซ โฮสต์ที่จะฝังใน URL ที่พิมพ์ ตั้งเป็นที่อยู่ LAN หรือโฮสต์ทันเนลที่ไคลเอนต์จะเรียกจริง
--client-url ไม่ได้ตั้ง ออริจินของไคลเอนต์เว็บแบบโฮสต์ เพิ่มดีปลิงก์ที่สแกนได้และ QR ในเทอร์มินัล

pair ยังรับแฟล็กหลักอย่าง --data-dir, --port และ --bind ด้วย: พวกมัน เลือกไดเรกทอรีข้อมูลที่จะเขียนและกำหนดรูปร่าง URL ของเซิร์ฟเวอร์ที่พิมพ์ (ws บนลูปแบ็ก, wss เมื่อ --bind any) การรัน pair ซ้ำสำหรับ --device เดิมจะ หมุนคีย์ของมันและตัดเซสชันที่ใช้งานอยู่ของอุปกรณ์นั้นทิ้ง ข้อมูลรับรองที่สร้าง ที่นี่ไม่มีเวลาหมดอายุ ต่างจาก 30 วันที่การจับคู่ในแอปกำหนด

--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 เป็นโปรเซสลูกและต้องการการรับประกัน แบบเดียวกัน

ไดเรกทอรีข้อมูลเริ่มต้นคือ ~/Library/Application Support/control-center บน macOS, %APPDATA%\control-center บน Windows และ $XDG_DATA_HOME/control-center (หรือ ~/.local/share/control-center) ที่อื่น ๆ จะใช้ .cc_server สัมพัทธ์กับ cwd ก็เฉพาะเมื่อหาไดเรกทอรีโฮมหรือไดเรกทอรีข้อมูลแอปไม่เจอเท่านั้น

พาธ เนื้อหา
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)