prism-switch

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2026 License: MIT

README

prism-switch

One provider config, every AI agent.

一个 YAML 文件管理所有 AI Coding Agent 的 API Provider。定义一次,一键同步到 Claude Code、Codex CLI、Gemini CLI、OpenCode、Qwen Code。

安装

# macOS (Homebrew)
brew install chiga0/tap/prism

# Go install
go install github.com/chiga0/prism-switch/cmd/prism@latest

# 或从 GitHub Releases 下载二进制
# https://github.com/chiga0/prism-switch/releases

30 秒上手

# 1. 生成配置文件
prism init

# 2. 设置你的 API Key(环境变量,不写入文件)
export OPENROUTER_API_KEY=sk-or-v1-...

# 3. 一键同步到所有 Agent
prism sync

完事。Claude Code、Codex、Gemini CLI、OpenCode、Qwen Code 全部配好了。

日常使用

# 切换某个 Agent 的 Provider
prism switch claude anthropic

# 一键切换所有 Agent 到同一个 Provider
prism switch --all openrouter

# 查看当前状态(谁用了什么 Provider,是否 drift)
prism status

# 预览同步会写什么(不实际修改文件)
prism sync --dry-run

# 从 Agent 现有配置反向导入到 YAML
prism import claude

配置文件

位置:~/.prism/config.yaml(用 --config 指定其他路径)

最简配置
providers:
  openrouter:
    api_key: ${OPENROUTER_API_KEY}
    base_url: https://openrouter.ai/api/v1

agents:
  claude:
    current: openrouter
    model: anthropic/claude-sonnet-4
多 Provider + 多 Agent
providers:
  openrouter:
    api_key: ${OPENROUTER_API_KEY}
    base_url: https://openrouter.ai/api/v1
  anthropic:
    api_key: ${ANTHROPIC_API_KEY}
  google:
    api_key: ${GEMINI_API_KEY}
  internal:
    api_key: ${INTERNAL_PROXY_KEY}
    base_url: https://ai-proxy.company.com/v1

agents:
  claude:
    current: openrouter
    model: anthropic/claude-sonnet-4
  codex:
    current: openrouter
    model: o3
  gemini:
    current: google
    model: gemini-2.5-pro
  opencode:
    current: internal
    model: deepseek/deepseek-v4-pro
  qwen-code:
    current: internal
    model: qwen3-coder
配置字段说明
字段 位置 必填 说明
api_key providers.<name> API Key,必须${ENV_VAR} 引用
base_url providers.<name> 自定义端点,不填则用 Agent 默认
current agents.<name> 当前使用的 Provider 名称
model agents.<name> 模型标识符

支持的 Agent

Agent 配置文件 投影方式
Claude Code ~/.claude/settings.json env.ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL / ANTHROPIC_MODEL
Codex CLI ~/.codex/auth.json + config.toml OPENAI_API_KEY + model + api_base_url
Gemini CLI ~/.gemini/.env + settings.json GEMINI_API_KEY / GOOGLE_GEMINI_BASE_URL + model
OpenCode ~/.config/opencode/opencode.json provider.prism.options.{apiKey,baseURL} + model
Qwen Code ~/.qwen/settings.json env.QWEN_API_KEY / QWEN_BASE_URL + model

命令参考

prism init                     创建 starter 配置文件
prism sync [agent...]          同步到所有(或指定)Agent
prism sync --dry-run           预览,不修改文件
prism switch <agent> <provider>  切换某个 Agent
prism switch --all <provider>  切换所有 Agent
prism status [agent...]        查看状态 + drift 检测
prism import [agent...]        从 live 配置反向导入
prism validate                 校验配置 + 检查环境变量

全局 flag:-c, --config <path> 指定配置文件路径。

安全设计

  • 密钥不落盘:config.yaml 里只有 ${ENV_VAR} 引用,可安全提交到 git
  • 输出脱敏prism status 显示 sk-o***9999,不暴露完整 key
  • 文件权限:config.yaml 写入时 0600,仅本人可读
  • import 安全:反向导入时生成 ${IMPORTED_<AGENT>_API_KEY} 占位符,不写明文
  • 原子写入:所有配置文件用 tmp + rename,写入中断不会损坏
  • 损坏保护:已有配置文件损坏时自动备份为 *.prism-backup-<timestamp> 再覆盖

Drift 检测

prism status 对比 YAML(期望状态)和 live 配置文件(实际状态):

状态 含义
synced 一致
drifted live 被手动改过(如在 Agent 内切了 model)
missing live 文件不存在
error 环境变量未设置或读取失败

高阶配置

Shell 补全
# Bash
prism completion bash > ~/.bash_completion.d/prism

# Zsh
prism completion zsh > "${fpath[1]}/_prism"

# Fish
prism completion fish > ~/.config/fish/completions/prism.fish
多设备同步

config.yaml 是纯文本,用 git/dotfiles 工具同步即可:

# chezmoi
chezmoi add ~/.prism/config.yaml

# 或 symlink 到 dotfiles 仓库
ln -s ~/dotfiles/prism/config.yaml ~/.prism/config.yaml

每台设备设置自己的环境变量(key 不在文件里),prism sync 即可。

自定义 Agent 配置路径

如果 Agent 配置不在默认位置,可以用 --config 配合不同的 YAML 文件管理不同环境:

prism --config ~/.prism/work.yaml sync      # 工作用 Provider
prism --config ~/.prism/personal.yaml sync  # 个人用 Provider
CI/CD 集成
# 在 CI 中验证配置合法性
prism validate --config .prism/config.yaml

# 预览同步结果(JSON 输出,方便脚本解析)
prism status --json

开发

make build     # 构建
make test      # 测试(race detector)
make cover     # 覆盖率报告
make lint      # go vet

架构详见 docs/design.md,配置格式详见 docs/config-format.md

License

MIT

Directories

Path Synopsis
cmd
prism command
internal
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL