ccs-sync 是一个独立的 Node CLI,用来同步 CC Switch 的核心 provider 配置。
它做两件事:
- 本地导出/导入
Claude和Codex的核心配置 - 把同一份 JSON 发布到 Cloudflare Worker + KV,并通过一个 URL 拉取
- 只处理
Claude/Codex - 只处理核心字段:
base_url、api_key、model - 导入时只插入缺失项,不更新已有项
- 不切换当前 provider
- 云端上传是整份 JSON 全量覆盖
- Node.js
>= 22 - 本机可用
sqlite3 - 本地存在
~/.cc-switch/cc-switch.db
npm link
ccpsync help默认部署到 workers.dev 时,用户需要:
- Cloudflare 账号
account_id- 一个有这些权限的 API Token
Workers Scripts: EditWorkers Scripts: ReadWorkers KV Storage: EditWorkers KV Storage: Read
- 一个
workers.dev子域名
如果用户有自己的域名,还可以额外提供:
custom-domain- 可选
zone-name
ccpsync export --out ./provider-core.jsonccpsync import --file ./provider-core.jsonccpsync cloud-init \
--account-id <cf_account_id> \
--api-token <cf_api_token> \
--workers-subdomain <your-workers-subdomain>如果要绑定自己的域名:
ccpsync cloud-init \
--account-id <cf_account_id> \
--api-token <cf_api_token> \
--workers-subdomain <your-workers-subdomain> \
--custom-domain sync.example.comcloud-init 会自动:
- 创建或复用
workers.dev子域 - 创建或复用 KV namespace
- 部署 Worker
- 导出本地 provider JSON
- 上传到云端
- 生成访问密钥
- 保存本地 profile
输出里最关键的是:
urlaccess_keyviewer_url
页面访问时会先要求用户手动输入 access_key。密钥不会拼进 URL。
如果本机已经做过 cloud-init:
ccpsync cloud-push或者显式指定:
ccpsync cloud-push --url <worker_url> --access-key <access_key>ccpsync cloud-import --url <worker_url> --access-key <access_key>导出的格式不是 SQL 备份,而是一份稳定的 provider-core JSON:
{
"schema_version": 1,
"format": "provider-core",
"generated_at": "2026-03-27T00:00:00.000Z",
"source": {
"tool": "ccswitch-provider-sync",
"db_path": "/Users/you/.cc-switch/cc-switch.db"
},
"providers": [
{
"app_type": "codex",
"name": "example",
"base_url": "https://example.com/v1",
"api_key": "sk-xxx",
"model": "gpt-5.3-codex",
"website_url": "",
"notes": "",
"endpoint_urls": [
"https://example.com/v1"
],
"vendor": {
"ccswitch": {
"settings_config": {}
}
}
}
]
}说明:
base_url/api_key/model是跨工具可理解的核心层vendor.ccswitch.settings_config用来尽量保留 CC Switch 原始结构
workers-subdomain指的是账号级workers.dev子域,不是自定义域custom-domain是可选项,只在用户自己的域名已接入 Cloudflare 时使用- 远端页面和 API 共用同一个访问密钥