create-zhin-app 1.0.19 → 1.0.21

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/lib/ai.js ADDED
@@ -0,0 +1,274 @@
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ // 提供商信息
4
+ const PROVIDERS = [
5
+ { name: 'OpenAI (GPT-4o, 推荐)', value: 'openai', defaultModel: 'gpt-4o' },
6
+ { name: 'Anthropic (Claude)', value: 'anthropic', defaultModel: 'claude-sonnet-4-20250514' },
7
+ { name: 'DeepSeek', value: 'deepseek', defaultModel: 'deepseek-chat' },
8
+ { name: 'Moonshot (月之暗面)', value: 'moonshot', defaultModel: 'moonshot-v1-8k' },
9
+ { name: '智谱 AI (GLM)', value: 'zhipu', defaultModel: 'glm-4' },
10
+ { name: 'Ollama (本地部署)', value: 'ollama', defaultModel: 'qwen3:8b' },
11
+ ];
12
+ /**
13
+ * AI 配置引导向导
14
+ */
15
+ export async function configureAI() {
16
+ console.log('');
17
+ console.log(chalk.blue('🤖 配置 AI 智能体'));
18
+ const { enableAI } = await inquirer.prompt([
19
+ {
20
+ type: 'confirm',
21
+ name: 'enableAI',
22
+ message: '是否启用 AI 智能体?(大模型对话 + 工具调用)',
23
+ default: true,
24
+ }
25
+ ]);
26
+ if (!enableAI) {
27
+ return { enabled: false };
28
+ }
29
+ // 选择提供商
30
+ const { provider } = await inquirer.prompt([
31
+ {
32
+ type: 'list',
33
+ name: 'provider',
34
+ message: '选择 AI 提供商:',
35
+ choices: PROVIDERS.map(p => ({ name: p.name, value: p.value })),
36
+ }
37
+ ]);
38
+ const providerInfo = PROVIDERS.find(p => p.value === provider);
39
+ let providerConfig = {};
40
+ const envVarName = `AI_API_KEY`;
41
+ if (provider === 'ollama') {
42
+ // Ollama 本地部署
43
+ const ollamaConfig = await inquirer.prompt([
44
+ {
45
+ type: 'input',
46
+ name: 'host',
47
+ message: 'Ollama 地址:',
48
+ default: 'http://localhost:11434',
49
+ },
50
+ {
51
+ type: 'input',
52
+ name: 'model',
53
+ message: '模型名称:',
54
+ default: providerInfo.defaultModel,
55
+ }
56
+ ]);
57
+ providerConfig = {
58
+ host: ollamaConfig.host,
59
+ models: [ollamaConfig.model],
60
+ };
61
+ }
62
+ else {
63
+ // 云端提供商
64
+ const cloudConfig = await inquirer.prompt([
65
+ {
66
+ type: 'input',
67
+ name: 'apiKey',
68
+ message: `${providerInfo.name.split(' (')[0]} API Key:`,
69
+ validate: (input) => {
70
+ if (!input.trim())
71
+ return 'API Key 不能为空(稍后可在 .env 文件中修改)';
72
+ return true;
73
+ }
74
+ },
75
+ {
76
+ type: 'input',
77
+ name: 'model',
78
+ message: '模型名称:',
79
+ default: providerInfo.defaultModel,
80
+ },
81
+ {
82
+ type: 'input',
83
+ name: 'baseUrl',
84
+ message: '自定义 API 地址(留空使用默认):',
85
+ default: '',
86
+ }
87
+ ]);
88
+ providerConfig = {
89
+ apiKey: `\${${envVarName}}`,
90
+ models: [cloudConfig.model || providerInfo.defaultModel],
91
+ ...(cloudConfig.baseUrl ? { baseUrl: cloudConfig.baseUrl } : {}),
92
+ };
93
+ // 保存实际 API Key 到环境变量映射
94
+ providerConfig.__envApiKey = cloudConfig.apiKey;
95
+ }
96
+ // 触发方式配置
97
+ console.log('');
98
+ console.log(chalk.blue('⚡ 配置 AI 触发方式'));
99
+ const triggerConfig = await inquirer.prompt([
100
+ {
101
+ type: 'confirm',
102
+ name: 'respondToAt',
103
+ message: '响应 @机器人 的消息?',
104
+ default: true,
105
+ },
106
+ {
107
+ type: 'confirm',
108
+ name: 'respondToPrivate',
109
+ message: '响应私聊消息?',
110
+ default: true,
111
+ },
112
+ {
113
+ type: 'input',
114
+ name: 'prefixes',
115
+ message: '触发前缀(逗号分隔,如 #,AI:):',
116
+ default: '#',
117
+ }
118
+ ]);
119
+ const prefixes = triggerConfig.prefixes
120
+ .split(',')
121
+ .map((p) => p.trim())
122
+ .filter(Boolean);
123
+ return {
124
+ enabled: true,
125
+ defaultProvider: provider,
126
+ providers: {
127
+ [provider]: providerConfig,
128
+ },
129
+ trigger: {
130
+ respondToAt: triggerConfig.respondToAt,
131
+ respondToPrivate: triggerConfig.respondToPrivate,
132
+ prefixes: prefixes.length > 0 ? prefixes : ['#'],
133
+ },
134
+ };
135
+ }
136
+ /**
137
+ * 获取 AI 配置需要写入 .env 的环境变量
138
+ */
139
+ export function generateAIEnvVars(config) {
140
+ if (!config.enabled || !config.providers)
141
+ return '';
142
+ const envVars = ['', '# AI 配置'];
143
+ for (const [, providerConfig] of Object.entries(config.providers)) {
144
+ const realKey = providerConfig.__envApiKey;
145
+ if (realKey) {
146
+ envVars.push(`AI_API_KEY=${realKey}`);
147
+ }
148
+ }
149
+ return envVars.length > 1 ? envVars.join('\n') : '';
150
+ }
151
+ /**
152
+ * 生成 YAML 格式的 AI 配置段
153
+ */
154
+ export function generateAIConfigYaml(config) {
155
+ if (!config.enabled)
156
+ return '';
157
+ const lines = [
158
+ '',
159
+ 'ai:',
160
+ ' enabled: true',
161
+ ` defaultProvider: ${config.defaultProvider}`,
162
+ ' providers:',
163
+ ];
164
+ if (config.providers) {
165
+ for (const [name, providerConfig] of Object.entries(config.providers)) {
166
+ lines.push(` ${name}:`);
167
+ if (providerConfig.apiKey) {
168
+ lines.push(` apiKey: ${providerConfig.apiKey}`);
169
+ }
170
+ if (providerConfig.host) {
171
+ lines.push(` host: ${providerConfig.host}`);
172
+ }
173
+ if (providerConfig.models) {
174
+ lines.push(' models:');
175
+ for (const model of providerConfig.models) {
176
+ lines.push(` - ${model}`);
177
+ }
178
+ }
179
+ if (providerConfig.baseUrl) {
180
+ lines.push(` baseUrl: ${providerConfig.baseUrl}`);
181
+ }
182
+ }
183
+ }
184
+ if (config.trigger) {
185
+ lines.push(' trigger:');
186
+ lines.push(' enabled: true');
187
+ lines.push(` respondToAt: ${config.trigger.respondToAt}`);
188
+ lines.push(` respondToPrivate: ${config.trigger.respondToPrivate}`);
189
+ lines.push(' prefixes:');
190
+ for (const prefix of config.trigger.prefixes) {
191
+ lines.push(` - "${prefix}"`);
192
+ }
193
+ lines.push(' ignorePrefixes:');
194
+ lines.push(' - /');
195
+ lines.push(' - "!"');
196
+ }
197
+ return lines.join('\n');
198
+ }
199
+ /**
200
+ * 生成 TS/JS 格式的 AI 配置段
201
+ */
202
+ export function generateAIConfigTS(config) {
203
+ if (!config.enabled)
204
+ return '';
205
+ const lines = [
206
+ ' ai: {',
207
+ ' enabled: true,',
208
+ ` defaultProvider: '${config.defaultProvider}',`,
209
+ ' providers: {',
210
+ ];
211
+ if (config.providers) {
212
+ for (const [name, providerConfig] of Object.entries(config.providers)) {
213
+ lines.push(` ${name}: {`);
214
+ if (providerConfig.apiKey) {
215
+ lines.push(` apiKey: '${providerConfig.apiKey}',`);
216
+ }
217
+ if (providerConfig.host) {
218
+ lines.push(` host: '${providerConfig.host}',`);
219
+ }
220
+ if (providerConfig.models) {
221
+ lines.push(` models: [${providerConfig.models.map(m => `'${m}'`).join(', ')}],`);
222
+ }
223
+ if (providerConfig.baseUrl) {
224
+ lines.push(` baseUrl: '${providerConfig.baseUrl}',`);
225
+ }
226
+ lines.push(' },');
227
+ }
228
+ }
229
+ lines.push(' },');
230
+ if (config.trigger) {
231
+ lines.push(' trigger: {');
232
+ lines.push(' enabled: true,');
233
+ lines.push(` respondToAt: ${config.trigger.respondToAt},`);
234
+ lines.push(` respondToPrivate: ${config.trigger.respondToPrivate},`);
235
+ lines.push(` prefixes: [${config.trigger.prefixes.map(p => `'${p}'`).join(', ')}],`);
236
+ lines.push(" ignorePrefixes: ['/', '!'],");
237
+ lines.push(' },');
238
+ }
239
+ lines.push(' },');
240
+ return lines.join('\n');
241
+ }
242
+ /**
243
+ * 生成 JSON 格式的 AI 配置段
244
+ */
245
+ export function generateAIConfigJSON(config) {
246
+ if (!config.enabled)
247
+ return '';
248
+ const obj = {
249
+ enabled: true,
250
+ defaultProvider: config.defaultProvider,
251
+ providers: {},
252
+ trigger: config.trigger ? {
253
+ enabled: true,
254
+ ...config.trigger,
255
+ ignorePrefixes: ['/', '!'],
256
+ } : undefined,
257
+ };
258
+ if (config.providers) {
259
+ for (const [name, providerConfig] of Object.entries(config.providers)) {
260
+ const clean = {};
261
+ if (providerConfig.apiKey)
262
+ clean.apiKey = providerConfig.apiKey;
263
+ if (providerConfig.host)
264
+ clean.host = providerConfig.host;
265
+ if (providerConfig.models)
266
+ clean.models = providerConfig.models;
267
+ if (providerConfig.baseUrl)
268
+ clean.baseUrl = providerConfig.baseUrl;
269
+ obj.providers[name] = clean;
270
+ }
271
+ }
272
+ return ` "ai": ${JSON.stringify(obj, null, 4).replace(/^/gm, ' ').trimStart()},`;
273
+ }
274
+ //# sourceMappingURL=ai.js.map
package/lib/ai.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGzD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA+CtE;AASD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAgG5G;AAGD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmJ3G"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKzD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA+CtE;AASD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAsG5G;AAuBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwK3G"}
package/lib/config.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'path';
3
+ import { generateAIConfigYaml, generateAIConfigTS, generateAIConfigJSON } from './ai.js';
4
+ import { generateBotsConfigYaml, generateBotsConfigTS, generateBotsConfigJSON } from './adapter.js';
3
5
  // 生成数据库环境变量
4
6
  export function generateDatabaseEnvVars(config) {
5
7
  const envVars = [];
@@ -87,10 +89,7 @@ export function generateDatabaseConfig(config, format) {
87
89
  if (typeof value === 'object' && value !== null) {
88
90
  configLines.push(` ${key}: {`);
89
91
  Object.entries(value).forEach(([subKey, subValue]) => {
90
- if (typeof subValue === 'string' && subValue.startsWith('env.')) {
91
- configLines.push(` ${subKey}: ${subValue},`);
92
- }
93
- else if (typeof subValue === 'string' && subValue.includes('parseInt(')) {
92
+ if (typeof subValue === 'string' && (subValue.includes('env.') || subValue.includes('parseInt('))) {
94
93
  configLines.push(` ${subKey}: ${subValue},`);
95
94
  }
96
95
  else {
@@ -99,10 +98,7 @@ export function generateDatabaseConfig(config, format) {
99
98
  });
100
99
  configLines.push(' },');
101
100
  }
102
- else if (typeof value === 'string' && value.startsWith('env.')) {
103
- configLines.push(` ${key}: ${value},`);
104
- }
105
- else if (typeof value === 'string' && value.includes('parseInt(')) {
101
+ else if (typeof value === 'string' && (value.includes('env.') || value.includes('parseInt('))) {
106
102
  configLines.push(` ${key}: ${value},`);
107
103
  }
108
104
  else {
@@ -112,10 +108,21 @@ export function generateDatabaseConfig(config, format) {
112
108
  configLines.push(' }');
113
109
  return `database: ${configLines.join('\n ')},`;
114
110
  }
115
- case 'yaml':
116
- return Object.entries(configObj)
117
- .map(([key, value]) => ` ${key}: ${typeof value === 'object' ? JSON.stringify(value).replace(/"/g, '') : value}`)
118
- .join('\n');
111
+ case 'yaml': {
112
+ const yamlLines = [];
113
+ Object.entries(configObj).forEach(([key, value]) => {
114
+ if (typeof value === 'object' && value !== null) {
115
+ yamlLines.push(` ${key}:`);
116
+ Object.entries(value).forEach(([subKey, subValue]) => {
117
+ yamlLines.push(` ${subKey}: ${subValue}`);
118
+ });
119
+ }
120
+ else {
121
+ yamlLines.push(` ${key}: ${value}`);
122
+ }
123
+ });
124
+ return yamlLines.join('\n');
125
+ }
119
126
  case 'json':
120
127
  const jsonStr = JSON.stringify(configObj, null, 2).replace(/^/gm, ' ');
121
128
  return ` "database": ${jsonStr},`;
@@ -123,10 +130,60 @@ export function generateDatabaseConfig(config, format) {
123
130
  return '';
124
131
  }
125
132
  }
133
+ // 构建 plugins 列表(根据用户选择的适配器)
134
+ function buildPluginsList(options) {
135
+ const plugins = ['example', '@zhin.js/http', '@zhin.js/console'];
136
+ if (options.adapters?.plugins) {
137
+ for (const plugin of options.adapters.plugins) {
138
+ if (!plugins.includes(plugin)) {
139
+ plugins.push(plugin);
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ // 默认只添加 sandbox
145
+ if (!plugins.includes('@zhin.js/adapter-sandbox')) {
146
+ plugins.push('@zhin.js/adapter-sandbox');
147
+ }
148
+ }
149
+ return plugins;
150
+ }
126
151
  // 创建配置文件
127
152
  export async function createConfigFile(appPath, format, options) {
128
153
  const configFormat = format;
129
154
  const databaseConfig = options.database ? generateDatabaseConfig(options.database, configFormat) : '';
155
+ const plugins = buildPluginsList(options);
156
+ // 生成 bots 和 AI 配置
157
+ const botsYaml = options.adapters ? generateBotsConfigYaml(options.adapters) : '';
158
+ const botsTS = options.adapters ? generateBotsConfigTS(options.adapters) : '';
159
+ const botsJSON = options.adapters ? generateBotsConfigJSON(options.adapters) : '';
160
+ const aiYaml = options.ai ? generateAIConfigYaml(options.ai) : '';
161
+ const aiTS = options.ai ? generateAIConfigTS(options.ai) : '';
162
+ const aiJSON = options.ai ? generateAIConfigJSON(options.ai) : '';
163
+ // TS/JS 格式的 plugins 列表
164
+ const pluginsTSLines = plugins.map(p => ` '${p}'`).join(',\n');
165
+ // YAML 格式的 plugins 列表
166
+ const pluginsYamlLines = plugins.map(p => ` - "${p}"`).join('\n');
167
+ // JSON 格式的 plugins 列表
168
+ const pluginsJsonLines = plugins.map(p => ` "${p}"`).join(',\n');
169
+ // 构建 TS/JS 的额外段(bots + ai)
170
+ let tsExtraConfig = '';
171
+ if (botsTS)
172
+ tsExtraConfig += `\n${botsTS}`;
173
+ if (aiTS)
174
+ tsExtraConfig += `\n${aiTS}`;
175
+ // 构建 YAML 的额外段(bots + ai)
176
+ let yamlExtraConfig = '';
177
+ if (botsYaml)
178
+ yamlExtraConfig += botsYaml;
179
+ if (aiYaml)
180
+ yamlExtraConfig += aiYaml;
181
+ // 构建 JSON 的额外段(bots + ai)
182
+ let jsonExtraConfig = '';
183
+ if (botsJSON)
184
+ jsonExtraConfig += `\n ${botsJSON}`;
185
+ if (aiJSON)
186
+ jsonExtraConfig += `\n ${aiJSON}`;
130
187
  const configMap = {
131
188
  ts: ['zhin.config.ts',
132
189
  `import { defineConfig, LogLevel } from 'zhin.js';
@@ -134,7 +191,7 @@ export async function createConfigFile(appPath, format, options) {
134
191
  export default defineConfig(async (env) => {
135
192
  return {
136
193
  log_level: LogLevel.INFO,
137
- ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
194
+ ${databaseConfig ? ` ${databaseConfig}\n` : ''} plugin_dirs: [
138
195
  'node_modules',
139
196
  './src/plugins'
140
197
  ],
@@ -147,10 +204,7 @@ ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
147
204
  'cron'
148
205
  ],
149
206
  plugins: [
150
- 'example',
151
- '@zhin.js/http',
152
- '@zhin.js/console',
153
- '@zhin.js/adapter-sandbox'
207
+ ${pluginsTSLines}
154
208
  ],
155
209
  http: {
156
210
  port: 8086,
@@ -161,7 +215,7 @@ ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
161
215
  console: {
162
216
  enabled: true,
163
217
  lazyLoad: true
164
- }
218
+ },${tsExtraConfig}
165
219
  };
166
220
  });
167
221
  `],
@@ -171,7 +225,7 @@ ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
171
225
  export default defineConfig(async (env) => {
172
226
  return {
173
227
  log_level: LogLevel.INFO,
174
- ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
228
+ ${databaseConfig ? ` ${databaseConfig}\n` : ''} plugin_dirs: [
175
229
  'node_modules',
176
230
  './src/plugins'
177
231
  ],
@@ -184,10 +238,7 @@ ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
184
238
  'cron'
185
239
  ],
186
240
  plugins: [
187
- 'example',
188
- '@zhin.js/http',
189
- '@zhin.js/console',
190
- '@zhin.js/adapter-sandbox'
241
+ ${pluginsTSLines}
191
242
  ],
192
243
  http: {
193
244
  port: 8086,
@@ -198,7 +249,7 @@ ${databaseConfig ? ` ${databaseConfig}` : ''} plugin_dirs: [
198
249
  console: {
199
250
  enabled: true,
200
251
  lazyLoad: true
201
- }
252
+ },${tsExtraConfig}
202
253
  };
203
254
  });
204
255
  `],
@@ -217,10 +268,7 @@ services:
217
268
  - cron
218
269
 
219
270
  plugins:
220
- - example
221
- - "@zhin.js/http"
222
- - "@zhin.js/console"
223
- - "@zhin.js/adapter-sandbox"
271
+ ${pluginsYamlLines}
224
272
 
225
273
  http:
226
274
  port: 8086
@@ -231,12 +279,12 @@ http:
231
279
  console:
232
280
  enabled: true
233
281
  lazyLoad: true
282
+ ${yamlExtraConfig}
234
283
  `],
235
284
  json: ['zhin.config.json',
236
285
  `{
237
286
  "log_level": 1,
238
- ${databaseConfig ? ` ${databaseConfig},` : ''}
239
- "plugin_dirs": [
287
+ ${databaseConfig ? ` ${databaseConfig}\n` : ''} "plugin_dirs": [
240
288
  "node_modules",
241
289
  "./src/plugins"
242
290
  ],
@@ -249,10 +297,7 @@ ${databaseConfig ? ` ${databaseConfig},` : ''}
249
297
  "cron"
250
298
  ],
251
299
  "plugins": [
252
- "example",
253
- "@zhin.js/http",
254
- "@zhin.js/console",
255
- "@zhin.js/adapter-sandbox"
300
+ ${pluginsJsonLines}
256
301
  ],
257
302
  "http": {
258
303
  "port": 8086,
@@ -263,7 +308,7 @@ ${databaseConfig ? ` ${databaseConfig},` : ''}
263
308
  "console": {
264
309
  "enabled": true,
265
310
  "lazyLoad": true
266
- }
311
+ }${jsonExtraConfig ? `,${jsonExtraConfig}` : ''}
267
312
  }
268
313
  `]
269
314
  };
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -7,6 +7,8 @@ import { generateRandomPassword, getCurrentUsername, getDatabaseDisplayName } fr
7
7
  import { configureDatabaseOptions } from './database.js';
8
8
  import { createWorkspace } from './workspace.js';
9
9
  import { ensurePnpmInstalled, installDependencies } from './install.js';
10
+ import { configureAdapters } from './adapter.js';
11
+ import { configureAI } from './ai.js';
10
12
  async function main() {
11
13
  const args = process.argv.slice(2);
12
14
  const options = {
@@ -121,6 +123,31 @@ async function main() {
121
123
  const databaseConfig = await configureDatabaseOptions();
122
124
  options.database = databaseConfig;
123
125
  }
126
+ // 适配器选择
127
+ if (!options.adapters) {
128
+ if (options.yes) {
129
+ // -y 模式:只使用 Sandbox
130
+ options.adapters = {
131
+ packages: ['@zhin.js/adapter-sandbox'],
132
+ plugins: ['@zhin.js/adapter-sandbox'],
133
+ bots: [],
134
+ envVars: {},
135
+ };
136
+ }
137
+ else {
138
+ options.adapters = await configureAdapters();
139
+ }
140
+ }
141
+ // AI 配置引导
142
+ if (!options.ai) {
143
+ if (options.yes) {
144
+ // -y 模式:不启用 AI
145
+ options.ai = { enabled: false };
146
+ }
147
+ else {
148
+ options.ai = await configureAI();
149
+ }
150
+ }
124
151
  if (!name?.trim()) {
125
152
  console.error(chalk.red('项目名称不能为空'));
126
153
  process.exit(1);
@@ -161,6 +188,35 @@ async function main() {
161
188
  console.log(` ${chalk.gray('请根据实际情况修改数据库连接参数')}`);
162
189
  }
163
190
  }
191
+ // 显示适配器信息
192
+ if (options.adapters && options.adapters.plugins.length > 0) {
193
+ console.log('');
194
+ console.log(chalk.blue('🔌 已配置适配器:'));
195
+ for (const plugin of options.adapters.plugins) {
196
+ const adapterName = plugin.replace('@zhin.js/adapter-', '');
197
+ console.log(` ${chalk.gray('•')} ${chalk.cyan(adapterName)}`);
198
+ }
199
+ if (Object.keys(options.adapters.envVars).length > 0) {
200
+ console.log(` ${chalk.yellow('⚠ 适配器凭据已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件')}`);
201
+ }
202
+ }
203
+ // 显示 AI 配置信息
204
+ if (options.ai?.enabled) {
205
+ console.log('');
206
+ console.log(chalk.blue('🤖 AI 智能体配置:'));
207
+ console.log(` ${chalk.gray('提供商:')} ${chalk.cyan(options.ai.defaultProvider || 'N/A')}`);
208
+ if (options.ai.trigger) {
209
+ const triggers = [];
210
+ if (options.ai.trigger.respondToAt)
211
+ triggers.push('@机器人');
212
+ if (options.ai.trigger.respondToPrivate)
213
+ triggers.push('私聊');
214
+ if (options.ai.trigger.prefixes.length > 0)
215
+ triggers.push(`前缀 ${options.ai.trigger.prefixes.join('/')}`);
216
+ console.log(` ${chalk.gray('触发方式:')} ${chalk.cyan(triggers.join('、'))}`);
217
+ }
218
+ console.log(` ${chalk.yellow('⚠ API Key 已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件')}`);
219
+ }
164
220
  console.log('');
165
221
  console.log('📝 下一步操作:');
166
222
  console.log(` ${chalk.cyan(`cd ${realName}`)}`);