Skip to content

feat: add base configuration support#1

Merged
LobayClaw merged 3 commits into
developfrom
feature/base-config
Mar 16, 2026
Merged

feat: add base configuration support#1
LobayClaw merged 3 commits into
developfrom
feature/base-config

Conversation

@LobayClaw
Copy link
Copy Markdown
Collaborator

功能说明

实现 base 配置功能,支持配置继承和合并。

使用方式

# 编辑 base 配置
cc-use base

# 显示 base 配置
cc-use base show

# 删除 base 配置
cc-use base rm

工作原理

  1. ~/.cc-use/base.json 存放公共配置(如 API Key、权限等)
  2. 服务商配置(如 qwen.json)只写差异化内容
  3. 切换时自动合并:base + 服务商配置 → 最终 settings.json
  4. 服务商配置会覆盖 base 中的同名配置

示例

// base.json
{
  "env": { "ANTHROPIC_API_KEY": "sk-xxx" },
  "permissions": { "allow": ["*"] }
}

// qwen.json
{
  "env": { "ANTHROPIC_BASE_URL": "https://api.qwen.ai" }
}

// 合并结果
{
  "env": {
    "ANTHROPIC_API_KEY": "sk-xxx",
    "ANTHROPIC_BASE_URL": "https://api.qwen.ai"
  },
  "permissions": { "allow": ["*"] }
}

变更文件

  • src/config.rs - 添加 base 配置路径、加载、合并逻辑
  • src/commands/base.rs - 新增 base 子命令处理
  • src/cli.rs - 添加 Base 子命令定义
  • src/main.rs - 处理 Base 命令路由
  • src/commands/show.rs - 显示合并后的配置
  • src/commands/list.rs - 显示 base 配置状态
  • README.md - 更新文档

- Add base.json for shared settings across providers
- Merge base config with provider-specific config on switch
- New commands: cc-use base, cc-use base show, cc-use base rm
- Show merged config in 'cc-use show' when base exists
- Display base status in 'cc-use ls'
- 11 tests covering merge_json function
- Tests for simple/nested/deep object merging
- Tests for edge cases (empty, null, primitive override)
- Tests for realistic Claude settings scenario
- Tests for path functions
- lint.yml: triggered on PR to main/develop
  - cargo fmt --check for code formatting
  - cargo clippy -- -D warnings for linting

- build.yml: triggered on push to main
  - cargo build --release
  - cargo test

Also apply cargo fmt to all source files
@LobayClaw LobayClaw merged commit 7c94e49 into develop Mar 16, 2026
1 check passed
@LobayClaw LobayClaw deleted the feature/base-config branch March 16, 2026 03:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant