@wu529778790/open-im 1.7.1-beta.8 → 1.8.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.
@@ -241,7 +241,7 @@ function buildInitialPayload(file) {
241
241
  : getClaudeConfigHome() + "/.claude/settings.json",
242
242
  claudeAuthToken: claudeEnv.ANTHROPIC_AUTH_TOKEN ?? "",
243
243
  claudeBaseUrl: claudeEnv.ANTHROPIC_BASE_URL ?? "",
244
- claudeModel: file.tools?.claude?.model ?? claudeEnv.ANTHROPIC_MODEL ?? "",
244
+ claudeModel: claudeEnv.ANTHROPIC_MODEL ?? "",
245
245
  claudeProxy: file.tools?.claude?.proxy ?? "",
246
246
  codexTimeoutMs: file.tools?.codex?.timeoutMs ?? 600000,
247
247
  codebuddyTimeoutMs: file.tools?.codebuddy?.timeoutMs ?? 600000,
@@ -498,7 +498,7 @@ function toFileConfig(payload, existing) {
498
498
  workDir: clean(payload.ai.claudeWorkDir) ?? process.cwd(),
499
499
  timeoutMs: payload.ai.claudeTimeoutMs,
500
500
  proxy: clean(payload.ai.claudeProxy),
501
- // model is now saved to ~/.claude/settings.json as ANTHROPIC_MODEL
501
+ // model is now saved to ~/.claude/settings.json as env var
502
502
  },
503
503
  codex: {
504
504
  ...existing.tools?.codex,
package/dist/config.d.ts CHANGED
@@ -32,6 +32,8 @@ export interface Config {
32
32
  aiCommand: AiCommand;
33
33
  codexCliPath: string;
34
34
  codebuddyCliPath: string;
35
+ /** Claude 访问 API 的代理(如 http://127.0.0.1:7890) */
36
+ claudeProxy?: string;
35
37
  /** Codex 访问 chatgpt.com 的代理(如 http://127.0.0.1:7890) */
36
38
  codexProxy?: string;
37
39
  claudeTimeoutMs: number;
@@ -133,10 +135,14 @@ export interface FilePlatformDingtalk {
133
135
  cardTemplateId?: string;
134
136
  }
135
137
  export interface FileToolClaude {
138
+ cliPath?: string;
136
139
  workDir?: string;
137
140
  timeoutMs?: number;
138
- model?: string;
141
+ skipPermissions?: boolean;
142
+ /** HTTP/HTTPS 代理,用于访问 Claude API(如 http://127.0.0.1:7890) */
139
143
  proxy?: string;
144
+ /** Claude API 配置(优先级:环境变量 > tools.claude.env > ~/.claude/settings.json) */
145
+ env?: Record<string, string>;
140
146
  }
141
147
  export interface FileToolCodex {
142
148
  cliPath?: string;
package/dist/config.js CHANGED
@@ -55,7 +55,8 @@ function migrateToNewConfigFormat(raw) {
55
55
  ...tc,
56
56
  workDir: tc.workDir ?? raw.claudeWorkDir ?? process.cwd(),
57
57
  timeoutMs: tc.timeoutMs ?? raw.claudeTimeoutMs ?? 600000,
58
- model: tc.model ?? raw.claudeModel,
58
+ proxy: tc.proxy,
59
+ // model 现在通过 env 配置,不再在这里处理
59
60
  },
60
61
  codex: {
61
62
  ...tcod,
@@ -216,11 +217,16 @@ export function loadConfig() {
216
217
  }
217
218
  }
218
219
  };
220
+ // 1. 全局 env(最低优先级之一)
219
221
  if (file.env)
220
222
  mergeEnv(file.env);
221
- // Claude Code 配置合并 API 凭证(~/.claude/settings.json ~/.claude.json,最低优先级)
222
- const claudeEnv = loadClaudeSettingsEnv();
223
- mergeEnv(claudeEnv);
223
+ // 2. tools.claude.env(优先级高于 Claude settings)
224
+ const claudeToolEnv = file.tools?.claude?.env;
225
+ if (claudeToolEnv)
226
+ mergeEnv(claudeToolEnv);
227
+ // 3. 从 Claude Code 配置合并(最低优先级)
228
+ const claudeSettingsEnv = loadClaudeSettingsEnv();
229
+ mergeEnv(claudeSettingsEnv);
224
230
  const fileTelegram = file.platforms?.telegram;
225
231
  const fileFeishu = file.platforms?.feishu;
226
232
  const fileQQ = file.platforms?.qq;
@@ -331,6 +337,7 @@ export function loadConfig() {
331
337
  const tc = file.tools?.claude ?? {};
332
338
  const tcod = file.tools?.codex ?? {};
333
339
  const tcb = file.tools?.codebuddy ?? {};
340
+ const claudeProxy = process.env.CLAUDE_PROXY ?? tc.proxy;
334
341
  const codexProxy = process.env.CODEX_PROXY ?? tcod.proxy;
335
342
  let codexCliPath = process.env.CODEX_CLI_PATH ?? tcod.cliPath ?? 'codex';
336
343
  if (process.platform === 'win32' && codexCliPath === 'codex') {
@@ -400,8 +407,9 @@ export function loadConfig() {
400
407
  '方式 2:运行配置向导',
401
408
  ' open-im init',
402
409
  '',
403
- '方式 3:编辑 ~/.open-im/config.json 的 env 字段',
404
- ' ~/.claude/settings.json(与 Claude Code 共用)',
410
+ '方式 3:编辑配置文件',
411
+ ' ~/.open-im/config.json: tools.claude.env.ANTHROPIC_MODEL = "..."',
412
+ ' ~/.claude/settings.json: env.ANTHROPIC_MODEL = "..."(与 Claude Code 共用)',
405
413
  '',
406
414
  ].join('\n');
407
415
  throw new Error(errorMsg);
@@ -603,12 +611,13 @@ export function loadConfig() {
603
611
  aiCommand,
604
612
  codexCliPath,
605
613
  codebuddyCliPath,
614
+ claudeProxy,
606
615
  codexProxy,
607
616
  claudeWorkDir,
608
617
  claudeTimeoutMs,
609
618
  codexTimeoutMs,
610
619
  codebuddyTimeoutMs,
611
- claudeModel: process.env.CLAUDE_MODEL ?? process.env.ANTHROPIC_MODEL ?? tc.model,
620
+ claudeModel: process.env.ANTHROPIC_MODEL,
612
621
  logDir,
613
622
  logLevel,
614
623
  platforms,
@@ -228,8 +228,8 @@ export function runAITask(deps, ctx, prompt, toolAdapter, platformAdapter) {
228
228
  timeoutMs,
229
229
  model: sessionManager.getModel(ctx.userId, ctx.threadId) ?? config.claudeModel,
230
230
  chatId: ctx.chatId,
231
- // Claude 默认跳过权限确认,保持与之前 CLI 行为一致(全自动执行)
232
- ...(aiCommand === 'claude' ? { skipPermissions: true } : {}),
231
+ // 默认跳过权限确认,保持全自动执行
232
+ skipPermissions: true,
233
233
  ...(aiCommand === 'codex' && config.codexProxy ? { proxy: config.codexProxy } : {}),
234
234
  });
235
235
  return activeHandle;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wu529778790/open-im",
3
- "version": "1.7.1-beta.8",
3
+ "version": "1.8.0",
4
4
  "description": "Multi-platform IM bridge for AI CLI tools (Claude, Codex, CodeBuddy)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",