Class: EasyAI::Command::Setup
- Inherits:
-
EasyAI::Command
- Object
- CLAide::Command
- EasyAI::Command
- EasyAI::Command::Setup
- Defined in:
- lib/easyai/command/setup.rb
Overview
交互式本地配置生成器
子命令矩阵:
easyai setup # 全量交互(首次)/ 选择菜单 upsert(已存在)
easyai setup --tool=claude # 仅配置指定工具
easyai setup --add=kimi --tool=claude # 追加 / 覆盖单平台
easyai setup --remove=kimi --tool=claude # 删除单平台
easyai setup --list # 脱敏概览
easyai setup --reset # 删除现有 config 后重走交互
easyai setup --edit # 用 $EDITOR 直接编辑 config.json
Constant Summary collapse
- KNOWN_PLATFORMS =
仅 setup 内含的硬编码平台清单;runtime(AIToolBase)不读取此常量
{ 'claude' => { 'claude_official' => { label: 'Claude 官方', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://api.anthropic.com' } }, 'kimi' => { label: 'Kimi(Moonshot)', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://api.kimi.com/coding/' } }, 'deepseek' => { label: 'DeepSeek', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://api.deepseek.com/anthropic', 'ANTHROPIC_MODEL' => 'deepseek-v4-pro[1m]', 'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'deepseek-v4-pro[1m]', 'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'deepseek-v4-pro[1m]', 'ANTHROPIC_DEFAULT_HAIKU_MODEL' => 'deepseek-v4-flash', 'CLAUDE_CODE_SUBAGENT_MODEL' => 'deepseek-v4-flash', 'CLAUDE_CODE_EFFORT_LEVEL' => 'max' } }, 'aliqwen' => { label: '阿里千问 Coding Plan(兼容 Anthropic 协议)', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://coding.dashscope.aliyuncs.com/apps/anthropic', 'ANTHROPIC_MODEL' => 'qwen3.6-plus', 'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'qwen3.6-plus', 'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'qwen3.6-plus', 'ANTHROPIC_DEFAULT_HAIKU_MODEL' => 'qwen3.6-plus', 'ANTHROPIC_SMALL_FAST_MODEL' => 'qwen3.6-plus', 'CLAUDE_CODE_SUBAGENT_MODEL' => 'qwen3.6-plus', 'CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS' => '1' } }, 'minimax' => { label: 'MiniMax(兼容 Anthropic 协议)', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://api.minimaxi.com/anthropic', 'ANTHROPIC_MODEL' => 'MiniMax-M2.7-highspeed', 'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'MiniMax-M2.7-highspeed', 'ANTHROPIC_DEFAULT_HAIKU_MODEL' => 'MiniMax-M2.7-highspeed', 'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'MiniMax-M2.7-highspeed' } }, 'glm' => { label: 'GLM Coding Plan(bigmodel.cn)', required_env: %w[ANTHROPIC_AUTH_TOKEN], optional_env: { 'ANTHROPIC_BASE_URL' => 'https://open.bigmodel.cn/api/anthropic', 'API_TIMEOUT_MS' => '3000000', 'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'glm-5.1', 'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'glm-5-turbo', 'ANTHROPIC_DEFAULT_HAIKU_MODEL' => 'glm-4.5-air' } } }, 'gemini' => { 'google_official' => { label: 'Google 官方', required_env: %w[GEMINI_API_KEY], optional_env: {} } }, 'codex' => { 'openai_official' => { label: 'OpenAI 官方', required_env: %w[OPENAI_API_KEY], optional_env: { 'OPENAI_BASE_URL' => 'https://api.openai.com/v1' } }, 'azure_openai' => { label: 'Azure OpenAI', required_env: %w[AZURE_OPENAI_API_KEY AZURE_OPENAI_ENDPOINT], optional_env: {} }, 'deepseek' => { label: 'DeepSeek(兼容 OpenAI 协议)', required_env: %w[OPENAI_API_KEY], optional_env: { 'OPENAI_BASE_URL' => 'https://api.deepseek.com/v1' } } } }.freeze
- SENSITIVE_KEY_PATTERN =
敏感字段脱敏统一走 Base::SecretMasker,保留常量别名仅用于历史兼容
Base::SecretMasker::SENSITIVE_KEY_PATTERN
Constants inherited from EasyAI::Command
DEFAULT_OPTIONS, DEFAULT_ROOT_OPTIONS
Instance Attribute Summary
Attributes inherited from EasyAI::Command
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(argv) ⇒ Setup
constructor
A new instance of Setup.
- #run ⇒ Object
Methods inherited from EasyAI::Command
Constructor Details
#initialize(argv) ⇒ Setup
Returns a new instance of Setup.
149 150 151 152 153 154 155 156 157 |
# File 'lib/easyai/command/setup.rb', line 149 def initialize(argv) @tool = argv.option('tool') @add = argv.option('add') @remove = argv.option('remove') @list = argv.flag?('list') @reset = argv.flag?('reset') @edit = argv.flag?('edit') super end |
Class Method Details
.options ⇒ Object
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/easyai/command/setup.rb', line 138 def self. [ ['--tool=NAME', '指定要配置的工具(claude / gemini / codex)'], ['--add=PLATFORM', '在指定工具下追加或覆盖单个平台'], ['--remove=PLATFORM', '在指定工具下删除单个平台'], ['--list', '脱敏方式展示当前所有配置'], ['--reset', '删除现有 config.json 后重走全量交互'], ['--edit', '使用 $EDITOR / $VISUAL 直接编辑 config.json'] ].concat(super) end |
Instance Method Details
#run ⇒ Object
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/easyai/command/setup.rb', line 159 def run return run_list if @list return run_remove if @remove return run_add if @add return run_reset if @reset return run_edit if @edit run_full_interactive rescue Config::LocalConfig::ParseError, Config::LocalConfig::IncompatibleVersionError => e print_error(e.) puts " 可运行: #{'easyai setup --reset'.yellow} 重新生成配置" exit 1 rescue Interrupt puts print_error('用户取消操作') exit 130 end |