easyai 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/easyai/command/setup.rb +13 -32
- data/lib/easyai/version.rb +1 -1
- data//344/275/277/347/224/250/350/257/264/346/230/216.md +117 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8ef7dd66b267a99cc64835d8558d8bdda5ffc59a9f57636ed377f3d8c416e334
|
|
4
|
+
data.tar.gz: 1b303ca1dc217dfa3669ea2cdb914ceeb55d6917f80e6f09c2e5c88bc3d4e44f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9619dc3c81841b6ca2bd5b4bb8768dad0c6944e3b7f8a67cdd61bf12b073a1c860cf34f526edc7204bf835bbf0435a7c3373137e5a45902c907d80c0fa78e0bd
|
|
7
|
+
data.tar.gz: 1cac9806bfd40e7065863f9dcf1d111b51d2ecd7b2f8ff8fb94f70cbb4ee3786b00a8d5844831213bf16eb048ea4b6d8a68cbd640a4e6fab9f715faba83fbaec
|
data/lib/easyai/command/setup.rb
CHANGED
|
@@ -42,21 +42,21 @@ DESC
|
|
|
42
42
|
'claude_official' => {
|
|
43
43
|
label: 'Claude 官方',
|
|
44
44
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
45
|
-
|
|
45
|
+
fixed_env: {
|
|
46
46
|
'ANTHROPIC_BASE_URL' => 'https://api.anthropic.com'
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
'kimi' => {
|
|
50
50
|
label: 'Kimi(Moonshot)',
|
|
51
51
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
52
|
-
|
|
52
|
+
fixed_env: {
|
|
53
53
|
'ANTHROPIC_BASE_URL' => 'https://api.kimi.com/coding/'
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
56
|
'deepseek' => {
|
|
57
57
|
label: 'DeepSeek',
|
|
58
58
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
59
|
-
|
|
59
|
+
fixed_env: {
|
|
60
60
|
'ANTHROPIC_BASE_URL' => 'https://api.deepseek.com/anthropic',
|
|
61
61
|
'ANTHROPIC_MODEL' => 'deepseek-v4-pro[1m]',
|
|
62
62
|
'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'deepseek-v4-pro[1m]',
|
|
@@ -69,7 +69,7 @@ DESC
|
|
|
69
69
|
'aliqwen' => {
|
|
70
70
|
label: '阿里千问 Coding Plan(兼容 Anthropic 协议)',
|
|
71
71
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
72
|
-
|
|
72
|
+
fixed_env: {
|
|
73
73
|
'ANTHROPIC_BASE_URL' => 'https://coding.dashscope.aliyuncs.com/apps/anthropic',
|
|
74
74
|
'ANTHROPIC_MODEL' => 'qwen3.6-plus',
|
|
75
75
|
'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'qwen3.6-plus',
|
|
@@ -83,7 +83,7 @@ DESC
|
|
|
83
83
|
'minimax' => {
|
|
84
84
|
label: 'MiniMax(兼容 Anthropic 协议)',
|
|
85
85
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
86
|
-
|
|
86
|
+
fixed_env: {
|
|
87
87
|
'ANTHROPIC_BASE_URL' => 'https://api.minimaxi.com/anthropic',
|
|
88
88
|
'ANTHROPIC_MODEL' => 'MiniMax-M2.7-highspeed',
|
|
89
89
|
'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'MiniMax-M2.7-highspeed',
|
|
@@ -94,12 +94,13 @@ DESC
|
|
|
94
94
|
'glm' => {
|
|
95
95
|
label: 'GLM Coding Plan(bigmodel.cn)',
|
|
96
96
|
required_env: %w[ANTHROPIC_AUTH_TOKEN],
|
|
97
|
-
|
|
97
|
+
fixed_env: {
|
|
98
98
|
'ANTHROPIC_BASE_URL' => 'https://open.bigmodel.cn/api/anthropic',
|
|
99
99
|
'API_TIMEOUT_MS' => '3000000',
|
|
100
|
-
'
|
|
101
|
-
'
|
|
102
|
-
'
|
|
100
|
+
'CLAUDE_CODE_AUTO_COMPACT_WINDOW' => '1000000',
|
|
101
|
+
'ANTHROPIC_DEFAULT_OPUS_MODEL' => 'glm-5.2[1m]',
|
|
102
|
+
'ANTHROPIC_DEFAULT_SONNET_MODEL' => 'glm-5.2[1m]',
|
|
103
|
+
'ANTHROPIC_DEFAULT_HAIKU_MODEL' => 'glm-4.7'
|
|
103
104
|
}
|
|
104
105
|
},
|
|
105
106
|
'longcat' => {
|
|
@@ -506,7 +507,8 @@ DESC
|
|
|
506
507
|
KNOWN_PLATFORMS[tool].keys.reject { |p| Config::LocalConfig.disabled_platform?(tool, p) }
|
|
507
508
|
end
|
|
508
509
|
|
|
509
|
-
# 收集单个平台的 env /
|
|
510
|
+
# 收集单个平台的 env 数据(不再交互询问代理:setup 默认不配置 HTTP/HTTPS 代理,
|
|
511
|
+
# 如需代理请用 `easyai setup --edit` 手动向平台补 proxy 字段;runtime 与 --list 仍支持 proxy)
|
|
510
512
|
def collect_platform_data(tool, platform)
|
|
511
513
|
spec = KNOWN_PLATFORMS.dig(tool, platform) || {}
|
|
512
514
|
return collect_chatgpt_subscribe_data if spec[:chatgpt_subscribe]
|
|
@@ -526,11 +528,7 @@ DESC
|
|
|
526
528
|
env[key] = ask_optional(key, default)
|
|
527
529
|
end
|
|
528
530
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
data = { 'env' => env }
|
|
532
|
-
data['proxy'] = proxy unless proxy.empty?
|
|
533
|
-
data
|
|
531
|
+
{ 'env' => env }
|
|
534
532
|
end
|
|
535
533
|
|
|
536
534
|
# ChatGPT Subscribe:不录入 API Key,直接复用 ~/.codex 的 ChatGPT OAuth 登录态。
|
|
@@ -583,23 +581,6 @@ DESC
|
|
|
583
581
|
value
|
|
584
582
|
end
|
|
585
583
|
|
|
586
|
-
def ask_proxy
|
|
587
|
-
print ' 是否配置 HTTP/HTTPS 代理?(y/N) > '
|
|
588
|
-
ans = read_line
|
|
589
|
-
return {} unless ans && ans.downcase.start_with?('y')
|
|
590
|
-
|
|
591
|
-
print ' HTTP_PROXY (例如 http://127.0.0.1:7890): '
|
|
592
|
-
http = read_line
|
|
593
|
-
print ' HTTPS_PROXY (回车与 HTTP_PROXY 相同): '
|
|
594
|
-
https = read_line
|
|
595
|
-
https = http if https.nil? || https.empty?
|
|
596
|
-
|
|
597
|
-
proxy = {}
|
|
598
|
-
proxy['HTTP_PROXY'] = http unless http.nil? || http.empty?
|
|
599
|
-
proxy['HTTPS_PROXY'] = https unless https.nil? || https.empty?
|
|
600
|
-
proxy
|
|
601
|
-
end
|
|
602
|
-
|
|
603
584
|
def read_line
|
|
604
585
|
line = $stdin.gets
|
|
605
586
|
raise Interrupt, '用户取消输入' if line.nil?
|
data/lib/easyai/version.rb
CHANGED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# EasyAI 使用说明
|
|
2
|
+
|
|
3
|
+
一个命令,统一启动 **Claude / Codex** 等 AI 命令行工具。
|
|
4
|
+
|
|
5
|
+
凭证、代理、多平台切换都放在一个本地配置文件里;启动时只把环境变量注入子进程,**不污染你的终端**。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
gem install easyai # 需要 Ruby >= 3.0
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
AI CLI 本身需自行安装(EasyAI 只负责帮你启动它们):
|
|
16
|
+
|
|
17
|
+
| 工具 | 安装命令 |
|
|
18
|
+
|------|----------|
|
|
19
|
+
| Claude | `npm install -g @anthropic-ai/claude-code` |
|
|
20
|
+
| Codex | 参考 OpenAI Codex 官方文档 |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. 备份已有登录(建议先做)
|
|
25
|
+
|
|
26
|
+
如果你**已经登录过** Claude Code 或 Codex,配置前先把登录态备份下来,方便日后换机恢复:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
easyai backup claude # 备份 Claude Code 登录信息
|
|
30
|
+
easyai backup codex # 备份 Codex(ChatGPT 订阅)登录信息
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**分别备份哪些信息:**
|
|
34
|
+
|
|
35
|
+
| 命令 | 来源 | 备份内容 |
|
|
36
|
+
|------|------|----------|
|
|
37
|
+
| `backup claude` | `~/.claude.json` | 账号/登录配置(**排除** `projects` 会话历史);macOS 上额外读取钥匙串「Claude Code-credentials」里的 OAuth token |
|
|
38
|
+
| `backup codex` | `~/.codex/auth.json` + `config.toml` | ChatGPT 登录凭证(OAuth token)与全局配置(**排除** `[projects.*]` 本地授信段)|
|
|
39
|
+
|
|
40
|
+
备份统一写入 `~/.easyai/backup/`(`.claude.json` / `.codex.json`,自动 `chmod 600`),
|
|
41
|
+
**只保留凭证与必要配置,不含会话历史、项目授信等大数据**。没登录过可跳过这一步。
|
|
42
|
+
|
|
43
|
+
> `backup codex` 仅在检测到 ChatGPT 官方登录(OAuth)时才备份;纯第三方 API Key 不在此列。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 3. 首次配置
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
easyai setup
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
跟着交互提示走:选择工具 → 选择平台 → 填入 API Key 即可。
|
|
54
|
+
|
|
55
|
+
> 输入 Key 时不回显是正常的,粘贴后直接回车。
|
|
56
|
+
|
|
57
|
+
配置保存在 `~/.easyai/config.json`,文件权限自动设为私有(`600`)。
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 4. 启动使用
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
easyai claude # 配了多个平台时会让你选
|
|
65
|
+
easyai claude --platform=kimi # 直接指定平台
|
|
66
|
+
easyai codex
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
启动前会打印当前生效的平台和环境变量(Key 已脱敏),确认无误即进入 AI CLI。
|
|
70
|
+
|
|
71
|
+
传给 AI CLI 的参数照常写在后面,会原样透传:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
easyai claude --help # --help 会传给 claude
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 5. 常用配置管理
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
easyai setup --list # 查看当前配置(Key 脱敏)
|
|
83
|
+
easyai setup --add=kimi --tool=claude # 追加/覆盖一个平台
|
|
84
|
+
easyai setup --remove=kimi --tool=claude # 删除一个平台
|
|
85
|
+
easyai setup --edit # 用编辑器直接改配置
|
|
86
|
+
easyai setup --reset # 清空重来
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 6. 其他命令
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
easyai clean # 清理 claude 缓存
|
|
95
|
+
easyai clean all # 清理所有 AI CLI 缓存(不动你的配置)
|
|
96
|
+
easyai clean all --dry-run # 先预览要删什么
|
|
97
|
+
|
|
98
|
+
easyai update # 升级 EasyAI 自身
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 常见问题
|
|
104
|
+
|
|
105
|
+
**Q:换一台电脑怎么迁移?**
|
|
106
|
+
把整个 `~/.easyai/` 目录拷过去即可——`config.json` 是平台配置,`backup/` 是各 AI CLI 的登录态。
|
|
107
|
+
(内含明文 Key 与登录凭证,注意别外传。)
|
|
108
|
+
|
|
109
|
+
**Q:网络不通导致启动被版本检查卡住?**
|
|
110
|
+
临时加环境变量跳过:`EASYAI_SKIP_FORCE_UPDATE=1 easyai claude`
|
|
111
|
+
|
|
112
|
+
**Q:想看详细日志?**
|
|
113
|
+
`easyai claude --verbose` 或 `EASYAI_DEBUG=1 easyai claude`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
有问题随时反馈,祝使用愉快 🎉
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: easyai
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wade
|
|
@@ -135,6 +135,7 @@ files:
|
|
|
135
135
|
- lib/easyai/command/utils/encry.rb
|
|
136
136
|
- lib/easyai/config/local_config.rb
|
|
137
137
|
- lib/easyai/version.rb
|
|
138
|
+
- 使用说明.md
|
|
138
139
|
homepage: https://github.com/wade/easyai
|
|
139
140
|
licenses:
|
|
140
141
|
- MIT
|