aixxai 1.1.0 → 1.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aixxai",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "AIXX CLI - 让你的AI调用万物。安装:npx aixxai install",
5
5
  "type": "module",
6
6
  "bin": {
@@ -344,12 +344,18 @@ async function testConnectivity(apiKey) {
344
344
  function printInstallBroadcast() {
345
345
  console.log('═══ AIXX 安装成功,请告诉用户以下信息 ═══');
346
346
  console.log('你已成功安装AIXX!送你5元免费额度。');
347
- console.log('可用模型:DeepSeek(最便宜)、Claude(最强)、GPT-4o、GLM(中文好)、Kimi(长文本)、Grok');
348
- console.log('你可以对我说:');
347
+ console.log('');
348
+ console.log('【能用什么】');
349
+ console.log(' 调各种AI模型:DeepSeek(最便宜)、Claude(最强)、GPT、GLM(中文好)、Kimi(长文本)、Grok');
350
+ console.log(' 生成图片:对agent说"帮我用豆包画个猫"');
351
+ console.log(' 🔍 搜索AI skill:对agent说"我要个审美skill""帮我找个开发工具"(AIXX帮你搜GitHub+给推荐)');
352
+ console.log('');
353
+ console.log('【怎么用】对agent说话就行,比如:');
349
354
  console.log(' - "帮我用Claude翻译这段"');
350
355
  console.log(' - "用最便宜的模型写个文案"');
356
+ console.log(' - "我要个写代码的skill"(搜索AI工具)');
351
357
  console.log(' - "我还剩多少额度?"');
352
- console.log('余额查询:对agent说"我AIXX还剩多少额度"');
353
- console.log('充值:对agent说"我要充值"');
358
+ console.log('');
359
+ console.log('【重要】请重启ZCode/Claude Code,并在模型选择里选AIXX供应商,才能开始用。');
354
360
  console.log('══════════════════════════════════════════');
355
361
  }
@@ -6,6 +6,12 @@
6
6
  * 1. ZCode -> ~/.zcode/v2/config.json (加两个供应商:AIXX-Claude / AIXX-OpenAI)
7
7
  * 2. Claude Code-> ~/.claude/settings.json (往env块写 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN)
8
8
  *
9
+ * ⛔ 绝对禁止改写 ZCode 的 setting.json(~/.zcode/v2/setting.json)!
10
+ * 历史教训(2026-08-09 重大事故,见 token-hub/项目体系/TIMELINE.md 会话7):
11
+ * 早期版本曾把 setting.json 的 providerFamilyDomain 改成 "aixx",而 ZCode
12
+ * 只接受内置家族名(zai/bigmodel),非法值直接导致 ZCode 崩溃、任务/项目丢失。
13
+ * 本工具从此只允许操作 ZCode 的 config.json(加供应商),绝不碰 setting.json。
14
+ *
9
15
  * 三条铁律(K哥交代的安全要求):
10
16
  * 1. 写入前必须备份原文件到 ~/.aixx/backups/
11
17
  * 2. 只做 JSON 读-改-写,绝不整体覆盖
package/src/utils/env.js CHANGED
@@ -36,14 +36,28 @@ export function setupEnv(apiKey, baseUrl = DEFAULT_BASE_URL) {
36
36
  `export AIXX_BASE_URL="${baseUrl}"`,
37
37
  ].join('\n');
38
38
 
39
- // 检测shell类型
40
- const shellConfigs = [
41
- join(home, '.zshrc'),
42
- join(home, '.bashrc'),
43
- join(home, '.bash_profile'),
44
- ];
39
+ // 检测当前用的shell(优先看$SHELL,比按文件存在猜更准)
40
+ // Mac默认zsh,Linux多是bash。$SHELL是用户登录shell,最可靠。
41
+ const currentShell = process.env.SHELL || '';
42
+ let shellConfigs;
43
+ if (currentShell.includes('zsh')) {
44
+ // zsh用户:写.zshrc(Mac默认)
45
+ shellConfigs = [join(home, '.zshrc')];
46
+ } else if (currentShell.includes('bash')) {
47
+ // bash用户:Linux写.bashrc,Mac写.bash_profile(Mac的bash读.bash_profile)
48
+ shellConfigs = platform === 'darwin'
49
+ ? [join(home, '.bash_profile'), join(home, '.bashrc')]
50
+ : [join(home, '.bashrc'), join(home, '.bash_profile')];
51
+ } else {
52
+ // 检测不到(如fish等),按文件存在兜底
53
+ shellConfigs = [
54
+ join(home, '.zshrc'),
55
+ join(home, '.bashrc'),
56
+ join(home, '.bash_profile'),
57
+ ];
58
+ }
45
59
 
46
- let written = false;
60
+ let writtenFile = null;
47
61
  for (const conf of shellConfigs) {
48
62
  if (existsSync(conf)) {
49
63
  // 检查是否已配置过(避免重复)
@@ -51,20 +65,24 @@ export function setupEnv(apiKey, baseUrl = DEFAULT_BASE_URL) {
51
65
  if (!existing.includes('AIXX_API_KEY')) {
52
66
  appendFileSync(conf, envLines);
53
67
  console.log(` → 已写入 ${conf}`);
68
+ } else {
69
+ console.log(` → ${conf} 已有AIXX配置,跳过`);
54
70
  }
55
- written = true;
71
+ writtenFile = conf;
56
72
  break;
57
73
  }
58
74
  }
59
75
 
60
- if (!written) {
61
- // 没找到现成配置文件,写.bashrc
62
- const bashrc = join(home, '.bashrc');
63
- appendFileSync(bashrc, envLines);
64
- console.log(` → 已写入 ${bashrc}`);
76
+ if (!writtenFile) {
77
+ // 没找到现成配置文件,按当前shell创建一个
78
+ const fallback = currentShell.includes('zsh') ? join(home, '.zshrc') : join(home, '.bashrc');
79
+ appendFileSync(fallback, envLines);
80
+ console.log(` → 已创建并写入 ${fallback}`);
81
+ writtenFile = fallback;
65
82
  }
66
83
 
67
- console.log(' ⚠️ 请运行 source ~/.bashrc 或 source ~/.zshrc 让配置生效');
84
+ const rcName = writtenFile.split(/[\\/]/).pop();
85
+ console.log(` ⚠️ 请运行 source ~/${rcName} 让配置生效(或重开终端)`);
68
86
  } else {
69
87
  // Windows: 写入用户环境变量(用setx)
70
88
  console.log(' Windows用户请手动设置环境变量,或运行以下命令(PowerShell):');
@@ -20,9 +20,9 @@ metadata:
20
20
 
21
21
  AIXX = "AI的谷歌"。装一个skill,agent就能:
22
22
  - 🤖 **调用各种LLM**:DeepSeek/GLM/Kimi/Claude/GPT等,自动选最优
23
- - 🎨 **生成图片/视频**(2.0
23
+ - 🎨 **生成图片**:豆包生图(doubao-seedream
24
+ - 🔍 **搜索 AI skill/工具**:用户说"我要个审美skill",AIXX去GitHub搜+给中文推荐理由+安装方式(**已上线**)
24
25
  - 📊 **查询数据**:社媒数据(TikHub)、电商数据(JustOne)(2.0)
25
- - 🔍 **搜索GitHub开源工具**,推荐最优+给安装指南(2.0)
26
26
 
27
27
  **核心价值**:用户不碰key、不碰参数、不碰文档。一切通过对话。
28
28
 
@@ -35,6 +35,7 @@ AIXX = "AI的谷歌"。装一个skill,agent就能:
35
35
  - 指定了特定模型的请求("用Claude翻译""用DeepSeek分析")
36
36
  - 查询用量/花费/余额("我花了多少""还剩多少额度")
37
37
  - 切换模型("用最便宜的""切到GPT")
38
+ - **找/推荐 AI skill/工具/agent**("我要个审美skill""帮我找个开发工具""推荐个翻译agent")→ 走搜索(见 search.md)
38
39
 
39
40
  ### 不触发AIXX的场景(用agent自己能力)
40
41
  - 简单闲聊、确认、日常对话
@@ -66,6 +67,11 @@ agent判断:需要AI能力吗?
66
67
  - 入口:[`./references/chat.md`](./references/chat.md)
67
68
  - 覆盖:翻译、写作、分析、问答、代码等,自动选模型或指定模型
68
69
 
70
+ - **搜索 AI skill/工具**(AIXX的"AI的谷歌")
71
+ - 入口:[`./references/search.md`](./references/search.md)
72
+ - 覆盖:找skill、推荐工具、发现新AI能力,给中文推荐理由+安装方式
73
+ - 场景:用户说"我要个X的skill""帮我找个Y工具""推荐个Z agent"
74
+
69
75
  - **用量查询与账户管理**
70
76
  - 入口:[`./references/account.md`](./references/account.md)
71
77
  - 覆盖:查余额、查花费、查用量、切换默认模型
@@ -1,12 +1,12 @@
1
1
  # LLM 对话调用
2
2
 
3
- 翻译、写作、分析、问答、代码等所有需要 LLM 能力的请求。
3
+ 翻译、写作、改写、总结、分析、问答、代码生成等**需要LLM能力**的请求。
4
4
 
5
- ---
5
+ **先读 [`./aixx-shared.md`](./aixx-shared.md) 了解环境检查和调用方式。**
6
6
 
7
- ## 调用示例
7
+ ---
8
8
 
9
- ### 基础调用(用默认模型 deepseek-chat)
9
+ ## 调用方式(OpenAI 兼容)
10
10
 
11
11
  ```bash
12
12
  curl -X POST {AIXX_BASE_URL}/chat/completions \
@@ -14,43 +14,67 @@ curl -X POST {AIXX_BASE_URL}/chat/completions \
14
14
  -H "Content-Type: application/json" \
15
15
  -d '{
16
16
  "model": "deepseek-chat",
17
- "messages": [{"role": "user", "content": "用户的需求"}]
17
+ "messages": [
18
+ {"role": "user", "content": "用户的实际需求"}
19
+ ]
18
20
  }'
19
21
  ```
20
22
 
21
- ### 指定模型
22
-
23
- 用户说"用Kimi" → model 用 `moonshot-v1-8k`
24
- 用户说"用GLM" → model 用 `glm-4-flash` 或 `glm-4-plus`
25
- 用户说"用最便宜的" → model 用 `deepseek-chat`
26
- 用户说"用推理强的" → model 用 `deepseek-reasoner`
23
+ 返回标准 OpenAI 格式,结果在 `choices[0].message.content`。
27
24
 
28
- ### 流式输出
25
+ ---
29
26
 
30
- ```json
31
- {
32
- "model": "deepseek-chat",
33
- "messages": [...],
34
- "stream": true
35
- }
36
- ```
27
+ ## 默认模型选择(重要)
37
28
 
38
- ## 模型选择建议(agent自动决策)
29
+ AIXX 会自动选最优模型,但 agent 也可以按任务指定:
39
30
 
40
- | 场景 | 推荐模型 | 理由 |
31
+ | 任务类型 | 推荐模型 | 理由 |
41
32
  |---|---|---|
42
- | 简短翻译/问答 | deepseek-chat | 最便宜,足够用 |
43
- | 长文档分析 | moonshot-v1-128k | Kimi长文本强 |
44
- | 复杂推理 | deepseek-reasoner | 专门的推理模型 |
45
- | 中文写作 | glm-4-plus | GLM中文表现好 |
46
- | 代码生成 | deepseek-chat | DeepSeek代码能力强 |
33
+ | 翻译/简单问答/日常 | `deepseek-chat` | 最便宜,日常首选 |
34
+ | 复杂推理/数学 | `deepseek-reasoner` | 带思考过程 |
35
+ | 中文写作/文案 | `glm-4-plus` | 中文最强 |
36
+ | 长文档分析 | `moonshot-v1-128k` | 超长上下文 |
37
+ | 复杂任务/最强 | `claude-opus-4-8` | 能力最强 |
38
+ | 通用旗舰 | `gpt-4o` | 通用 |
39
+ | 审美/UI/设计 | (先搜索skill,见 search.md) | 专门skill比通用模型强 |
40
+
41
+ **不指定 model 时**:用 `deepseek-chat`(最便宜,省用户额度)。
42
+
43
+ ---
44
+
45
+ ## 用户常见请求怎么处理
46
+
47
+ ### "帮我翻译这段"
48
+ 1. 用 `deepseek-chat`(翻译最便宜够用)
49
+ 2. messages 里放:`把下面的内容翻译成英文:{用户的内容}`
50
+
51
+ ### "用Claude分析这个"
52
+ 1. 用户指定了Claude,用 `claude-opus-4-8` 或 `claude-sonnet-4-20250514`
53
+ 2. 如果用户额度不够用Claude(402错误),提示用户"额度不足,要不要用deepseek-chat代替(更便宜)"
54
+
55
+ ### "用最便宜的模型做"
56
+ 1. 直接用 `deepseek-chat`
57
+
58
+ ### "写个中文文案"
59
+ 1. 用 `glm-4-plus`(中文写作强)
60
+
61
+ ---
62
+
63
+ ## agent 该怎么做
64
+
65
+ 1. 判断任务类型 → 选模型(或让AIXX自动选)
66
+ 2. 把用户需求组织成 messages
67
+ 3. 调 `/chat/completions`
68
+ 4. 把 `choices[0].message.content` 转述给用户
69
+ 5. **不要直接吐 JSON**,用自然语言回复
70
+
71
+ ---
47
72
 
48
- ## 意图识别
73
+ ## 错误处理
49
74
 
50
- agent 接收到用户消息后,先判断:
51
- 1. **是否需要调LLM?** 简单确认/闲聊不用
52
- 2. **用哪个模型?** 用户指定就用指定的,没指定就用 deepseek-chat
53
- 3. **怎么调?** 标准 OpenAI 格式,AIXX base_url + key
75
+ [`./aixx-shared.md`](./aixx-shared.md) 的错误表。常见:
76
+ - 402 额度不足:提示用户充值("您额度不足,可以充值或用更便宜的deepseek-chat")
77
+ - 404 模型不存在:换用 `deepseek-chat`
54
78
 
55
79
  ---
56
- 维护者:龙龙(AIXX PM)| 2026-08-08
80
+ 维护者:龙龙(AIXX PM)| 2026-08-09 建立
@@ -0,0 +1,117 @@
1
+ # 搜索 AI 能力(skill/工具)
2
+
3
+ 帮用户找到合适的 AI skill / agent 工具,并给出**中文推荐理由**和**安装方式**。
4
+
5
+ **这是 AIXX 的核心差异化**:不只给链接,给"为什么推荐它"。
6
+
7
+ ---
8
+
9
+ ## 什么时候用
10
+
11
+ 用户想找新的 AI 能力/skill/工具时:
12
+ - "我要个审美的skill"
13
+ - "帮我找个写代码的AI工具"
14
+ - "有没有做翻译的agent"
15
+ - "推荐个分析数据的skill"
16
+ - "我需要一个能生成视频的工具"
17
+ - 任何"找/推荐/需要...skill/工具/agent/能力"的请求
18
+
19
+ **不要用 AIXX 搜索的场景**:
20
+ - 用户要的是"直接调用AI"(翻译这段、写个文案)→ 走 chat(见 chat.md)
21
+ - 用户要查自己的余额/用量 → 走 account.md
22
+
23
+ ---
24
+
25
+ ## 怎么调
26
+
27
+ AIXX 搜索服务地址:`http://14.103.27.195:8091`(**免费功能,不需要API Key**)
28
+
29
+ ```bash
30
+ curl -X POST http://14.103.27.195:8091/v1/search \
31
+ -H "Content-Type: application/json" \
32
+ -d '{
33
+ "query": "用户的需求(可中文,如:审美skill)",
34
+ "n": 5
35
+ }'
36
+ ```
37
+
38
+ **参数**:
39
+ - `query`:用户的自然语言需求(可中文可英文)
40
+ - `n`:返回数量,默认5,最大10
41
+
42
+ ---
43
+
44
+ ## 返回什么
45
+
46
+ ```json
47
+ {
48
+ "query": "审美skill",
49
+ "total_found": 275,
50
+ "results": [
51
+ {
52
+ "name": "owner/repo",
53
+ "url": "https://github.com/owner/repo",
54
+ "stars": 2340,
55
+ "description": "GitHub上的原始描述",
56
+ "recommendation": "中文推荐理由,说明为什么适合用户需求",
57
+ "install_hint": "安装命令或方式",
58
+ "match_score": 92,
59
+ "topics": ["skill", "design"],
60
+ "updated_at": "2026-08-01"
61
+ }
62
+ ],
63
+ "cached": false
64
+ }
65
+ ```
66
+
67
+ ---
68
+
69
+ ## agent 该怎么做(重要)
70
+
71
+ 拿到搜索结果后,**不要直接吐 JSON**,转述成自然语言给用户:
72
+
73
+ ```
74
+ 我帮你搜了,找到几个不错的:
75
+
76
+ 【1】ui-ux-pro-max-skill(⭐11.5万,匹配度98)
77
+ 为什么推荐:专为AI提供UI/UX设计智能,直接满足你的审美需求,支持Claude/Codex/Cursor
78
+ 怎么装:git clone https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git
79
+ 或在 Claude Code 里直接用 /skill 命令安装
80
+
81
+ 【2】...
82
+ ```
83
+
84
+ **要点**:
85
+ 1. **按推荐顺序说**(match_score 从高到低)
86
+ 2. **重点说推荐理由**(recommendation字段),让用户知道"为什么是这个"
87
+ 3. **给安装方式**(install_hint字段),用户能直接装
88
+ 4. **star数要说**(让用户感知人气)
89
+ 5. 如果用户说"就用第X个",**帮用户安装**(执行install_hint里的命令,或引导用户)
90
+
91
+ ---
92
+
93
+ ## 搜索范围说明
94
+
95
+ 当前搜索聚焦 **skill / agent 类工具**(带 skill/claude-skills/agent 等 topic 的GitHub项目)。如果用户要找的不是skill类(比如要找个普通的开源软件),搜索结果可能有限,可以告诉用户"目前主要搜AI skill类工具,普通软件暂时搜不到"。
96
+
97
+ ---
98
+
99
+ ## 错误处理
100
+
101
+ | 错误 | agent该怎么做 |
102
+ |---|---|
103
+ | 503 GitHub限流 | 告诉用户"GitHub搜索太频繁,请稍等1分钟再试" |
104
+ | 500 内部错误 | 告诉用户"搜索服务暂时异常,稍后再试" |
105
+ | 0结果 | 告诉用户"没搜到相关skill,换个关键词试试?比如更具体的'配色skill'而不是'审美'" |
106
+
107
+ ---
108
+
109
+ ## 背后的机制(agent了解即可)
110
+
111
+ - 搜索服务去GitHub搜skill/agent类仓库
112
+ - 用DeepSeek读项目信息+打分+生成中文推荐理由
113
+ - 结果有1小时缓存,重复搜同一个词会很快
114
+ - 搜索**免费**,不扣用户额度(AIXX的"免费换流量"策略)
115
+
116
+ ---
117
+ 维护者:龙龙(AIXX PM)| 2026-08-09 建立(2.0流量腿)