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
หัวข้อที่มีชื่อว่า “การเข้าถึงได้และ 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 |
อนุมานจากการผูก | 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
หัวข้อที่มีชื่อว่า “--sandbox”เซิร์ฟเวอร์ตรวจสอบโฮสต์หนึ่งครั้งตอนบูต และห่อการรันคำสั่งของเอเจนต์ด้วย
แซนด์บ็อกซ์เนทีฟของระบบปฏิบัติการเมื่อมีแบ็กเอนด์ให้ใช้: sandbox-exec (Seatbelt)
บน macOS, bwrap บวก socat บน Linux และ WSL2 เมื่อไม่มีเลย — Windows หรือโฮสต์
Linux ที่ขาดเครื่องมือเหล่านั้น — การรันจะถอยไปใช้การทำสภาพแวดล้อมให้ปลอดภัย
นโยบายคำสั่ง และกฎคุมการกระทำ และบันทึกตอนเริ่มระบบจะบอกว่าสถานะใดมีผล
--sandbox off คือสวิตช์ตัดการทำงานหน้างานสำหรับกรณีที่การตรวจสอบมองไม่เห็น:
โฮสต์ที่โปรไฟล์แซนด์บ็อกซ์เองทำงานผิดปกติ มันไม่ต้องบิลด์ใหม่ และเซิร์ฟเวอร์จะ
บันทึกคำเตือนตลอดอายุของโปรเซส สถานะจึงไม่เคยเงียบ
--tool-deferral
หัวข้อที่มีชื่อว่า “--tool-deferral”การรันของฮาร์เนสในตัวส่งชุดนิยามเครื่องมือประจำชุดเล็กบวกดัชนีที่บอกแค่ชื่อของ
ที่เหลือ ซึ่งจะโหลดสคีมาของมันเมื่อถูกใช้ครั้งแรก มันตัดบล็อกเครื่องมือลงราว 78%
และทำให้ชุดที่มองเห็นเสมออยู่ในช่วงที่โมเดลเลือกเครื่องมือได้อย่างเชื่อถือได้
เครื่องมือที่ถูกหน่วงไว้ยังเรียกได้ด้วยชื่อตลอด และ search_tools หาพวกมันได้จาก
เจตนา ดูบริบทเครื่องมือและการแคชพรอมต์
--tool-deferral off ทำให้เครื่องมือทุกตัวที่ได้รับอนุญาตกลับเข้าชุดประจำอีกครั้ง
ส่งคำขอเหมือนที่เซิร์ฟเวอร์เคยส่งก่อนมีการหน่วงทุกประการ มันคือสวิตช์ตัดการทำงาน
สำหรับโมเดลที่รับมือพื้นผิวสองชั้นได้ไม่ดี — เป็นแฟล็กแทนการบิลด์ใหม่ มันมีผล
เฉพาะฮาร์เนสในตัว ส่วน MCP tools/list ที่ไคลเอนต์ภายนอกเห็นนั้นเป็นแค็ตตาล็อก
เต็มเสมอ
--credential-gate
หัวข้อที่มีชื่อว่า “--credential-gate”การรันที่ข้อมูลรับรองของผู้ให้บริการหายไปหรือใช้หมดจะถูกพักไว้แทนที่จะ ล้มเหลว: ผู้ดูแลจะได้รับพรอมต์ให้แก้ไข และการรันจะดำเนินต่อหากแก้แล้ว กำหนดเวลา สูงสุดเริ่มต้นคือ 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) |
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- รันเซิร์ฟเวอร์แบบไม่มีส่วนติดต่อ — สูตรการตั้งค่าที่แฟล็กเหล่านี้เป็นส่วนหนึ่งของมัน
- รันวอร์กเกอร์ของฟลีต — ไบนารี
cc_workerแยกต่างหากที่ลงทะเบียนกับเซิร์ฟเวอร์นี้ - สำรองและกู้คืน — การคัดลอกไดเรกทอรีนี้ไปไว้ที่ปลอดภัย
- สำรอง นำออก และนำเข้า — เลย์เอาต์ของสแนปช็อตและทุกการดำเนินการสำรอง
- เชื่อมต่อเซิร์ฟเวอร์ระยะไกล — การชี้ไคลเอนต์ไปที่ตัวหนึ่ง
- การปรับใช้และไคลเอนต์ — ทำไมเซิร์ฟเวอร์จึงเป็นเจ้าของทุกอย่าง