shipmyagent 1.0.208 → 1.0.209

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.
Files changed (50) hide show
  1. package/bin/main/model/CreateModel.d.ts.map +1 -1
  2. package/bin/main/model/CreateModel.js +20 -1
  3. package/bin/main/model/CreateModel.js.map +1 -1
  4. package/bin/main/server/commands/Index.js +1 -1
  5. package/bin/main/server/commands/Index.js.map +1 -1
  6. package/bin/main/server/commands/Init.d.ts.map +1 -1
  7. package/bin/main/server/commands/Init.js +315 -83
  8. package/bin/main/server/commands/Init.js.map +1 -1
  9. package/bin/main/server/commands/Restart.js +1 -1
  10. package/bin/main/server/commands/Restart.js.map +1 -1
  11. package/bin/main/server/commands/Start.js +1 -1
  12. package/bin/main/server/commands/Start.js.map +1 -1
  13. package/bin/main/server/constants/Ship.d.ts.map +1 -1
  14. package/bin/main/server/constants/Ship.js +0 -1
  15. package/bin/main/server/constants/Ship.js.map +1 -1
  16. package/bin/main/server/constants/ShipSchema.d.ts.map +1 -1
  17. package/bin/main/server/constants/ShipSchema.js +3 -1
  18. package/bin/main/server/constants/ShipSchema.js.map +1 -1
  19. package/bin/main/server/index.d.ts.map +1 -1
  20. package/bin/main/server/index.js +3 -1
  21. package/bin/main/server/index.js.map +1 -1
  22. package/bin/main/server/routes/services.d.ts.map +1 -1
  23. package/bin/main/server/routes/services.js +13 -2
  24. package/bin/main/server/routes/services.js.map +1 -1
  25. package/bin/main/types/ShipConfig.d.ts.map +1 -1
  26. package/bin/services/chat/PROMPT.txt +6 -1
  27. package/bin/services/chat/channels/BaseChatChannel.d.ts.map +1 -1
  28. package/bin/services/chat/channels/BaseChatChannel.js +57 -0
  29. package/bin/services/chat/channels/BaseChatChannel.js.map +1 -1
  30. package/bin/services/chat/channels/feishu/Auth.d.ts.map +1 -0
  31. package/bin/services/chat/channels/feishu/Auth.js +33 -0
  32. package/bin/services/chat/channels/feishu/Auth.js.map +1 -0
  33. package/bin/services/chat/channels/qq/Auth.d.ts.map +1 -0
  34. package/bin/services/chat/channels/qq/Auth.js +33 -0
  35. package/bin/services/chat/channels/qq/Auth.js.map +1 -0
  36. package/bin/services/chat/channels/telegram/Auth.d.ts.map +1 -0
  37. package/bin/services/chat/channels/telegram/Auth.js +34 -0
  38. package/bin/services/chat/channels/telegram/Auth.js.map +1 -0
  39. package/bin/services/chat/channels/telegram/Bot.d.ts.map +1 -1
  40. package/bin/services/chat/channels/telegram/Bot.js +2 -4
  41. package/bin/services/chat/channels/telegram/Bot.js.map +1 -1
  42. package/bin/services/chat/channels/telegram/PROMPT.txt +1 -0
  43. package/bin/services/chat/channels/telegram/Shared.d.ts.map +1 -1
  44. package/bin/services/chat/channels/telegram/Shared.js.map +1 -1
  45. package/bin/services/chat/types/ChatAuth.d.ts.map +1 -0
  46. package/bin/services/chat/types/ChatAuth.js +9 -0
  47. package/bin/services/chat/types/ChatAuth.js.map +1 -0
  48. package/package.json +3 -3
  49. package/src/services/chat/PROMPT.txt +6 -1
  50. package/src/services/chat/channels/telegram/PROMPT.txt +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"CreateModel.d.ts","sourceRoot":"","sources":["../../../src/main/model/CreateModel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAGxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmFF;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;CACvD,GAAG,OAAO,CAAC,aAAa,CAAC,CAkJzB"}
1
+ {"version":3,"file":"CreateModel.d.ts","sourceRoot":"","sources":["../../../src/main/model/CreateModel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAGxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAoGF;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;CACvD,GAAG,OAAO,CAAC,aAAa,CAAC,CAmJzB"}
@@ -33,6 +33,24 @@ function normalizeOptionalBaseUrl(value) {
33
33
  .replace(/\/+$/, "");
34
34
  return trimmed || undefined;
35
35
  }
36
+ /**
37
+ * provider 默认 baseUrl。
38
+ *
39
+ * 关键点(中文)
40
+ * - 当 `ship.json.llm.providers.<id>.baseUrl` 省略时,按 provider type 自动补全。
41
+ * - 保持“只配置 provider type + apiKey + modelName”也能跑通常见 provider。
42
+ */
43
+ function resolveProviderDefaultBaseUrl(providerType) {
44
+ if (providerType === "deepseek")
45
+ return "https://api.deepseek.com/v1";
46
+ if (providerType === "moonshot")
47
+ return "https://api.moonshot.cn/v1";
48
+ if (providerType === "xai")
49
+ return "https://api.x.ai/v1";
50
+ if (providerType === "openrouter")
51
+ return "https://openrouter.ai/api/v1";
52
+ return undefined;
53
+ }
36
54
  function resolveEnvPlaceholder(value) {
37
55
  if (!value)
38
56
  return value;
@@ -140,7 +158,8 @@ export async function createModel(input) {
140
158
  await logger.log("warn", "No LLM model name configured");
141
159
  throw Error("No LLM model name configured");
142
160
  }
143
- const resolvedBaseUrl = normalizeOptionalBaseUrl(resolveEnvPlaceholder(selectedProviderConfig.baseUrl));
161
+ const resolvedBaseUrl = normalizeOptionalBaseUrl(resolveEnvPlaceholder(selectedProviderConfig.baseUrl) ||
162
+ resolveProviderDefaultBaseUrl(providerType));
144
163
  let resolvedApiKey = resolveEnvPlaceholder(selectedProviderConfig.apiKey);
145
164
  if (!resolvedApiKey) {
146
165
  resolvedApiKey = resolveApiKeyFallback(providerType);
@@ -1 +1 @@
1
- {"version":3,"file":"CreateModel.js","sourceRoot":"","sources":["../../../src/main/model/CreateModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateModel.js","sourceRoot":"","sources":["../../../src/main/model/CreateModel.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ import { getServiceRootCommandNames, } from "../../service/Manager.js";
25
25
  const __filename = fileURLToPath(import.meta.url);
26
26
  const __dirname = dirname(__filename);
27
27
  // 读取 package.json 版本号
28
- const packageJson = JSON.parse(readFileSync(join(__dirname, "../../../package.json"), "utf-8"));
28
+ const packageJson = JSON.parse(readFileSync(join(__dirname, "../../../../package.json"), "utf-8"));
29
29
  const program = new Command();
30
30
  function parsePort(value) {
31
31
  const num = Number.parseInt(value, 10);
@@ -1 +1 @@
1
- {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../src/main/server/commands/Index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,uBAAuB;AACvB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,sBAAsB;AACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC,CACzC,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QACtB,GAAG,IAAI,CAAC;QACR,GAAG,GAAG,KAAK,EACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;KAChD,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAEjD,iCAAiC;AACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;AAEzD,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oBAAoB,CAAC;KACjC,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,MAAM,GAAG,GAAG,OAAO;KAChB,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,SAAS,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CACL,mBAAmB,EACnB,6CAA6C,EAC7C,YAAY,CACb;KACA,MAAM,CACL,kBAAkB,EAClB,+CAA+C,EAC/C,SAAS,CACV;KACA,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,MAAM,KAAK,GAAG,OAAO;KAClB,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,SAAS,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CACL,mBAAmB,EACnB,6CAA6C,EAC7C,YAAY,CACb;KACA,MAAM,CACL,kBAAkB,EAClB,+CAA+C,EAC/C,SAAS,CACV;KACA,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,MAAM,IAAI,GAAG,OAAO;KACjB,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,wBAAwB,CAAC;KACrC,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,SAAS,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CACL,mBAAmB,EACnB,6CAA6C,EAC7C,YAAY,CACb;KACA,MAAM,CACL,kBAAkB,EAClB,+CAA+C,EAC/C,SAAS,CACV;KACA,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,MAAM,CAAC;KACnE,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,KAAK,CAAC;KAC9C,MAAM,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,CAAC;KACjD,UAAU,CAAC,QAAQ,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,kDAAkD;AAClD,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAEnC,iGAAiG;AACjG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,kBAAkB,GAAG;IACzB,IAAI,CAAC,IAAI,EAAE;IACX,GAAG,CAAC,IAAI,EAAE;IACV,KAAK,CAAC,IAAI,EAAE;IACZ,IAAI,CAAC,IAAI,EAAE;IACX,OAAO,CAAC,IAAI,EAAE;IACd,OAAO;IACP,QAAQ;IACR,UAAU;IACV,SAAS;IACT,MAAM;CACP,CAAC;AACF,MAAM,mBAAmB,GAAG,0BAA0B,EAAE,CAAC;AACzD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAEnF,IACE,CAAC,QAAQ;IACT,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACpD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../src/main/server/commands/Index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Init.d.ts","sourceRoot":"","sources":["../../../../src/main/server/commands/Init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAwHH;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,GAAE,MAAY,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,IAAI,CAAC,CA8cf"}
1
+ {"version":3,"file":"Init.d.ts","sourceRoot":"","sources":["../../../../src/main/server/commands/Init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmSH;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,GAAE,MAAY,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,IAAI,CAAC,CAokBf"}
@@ -21,7 +21,149 @@ import { SHIP_JSON_SCHEMA } from "../../../main/server/constants/ShipSchema.js";
21
21
  import { DEFAULT_SHIP_JSON } from "../../../main/server/constants/Ship.js";
22
22
  import { DEFAULT_PROFILE_MD_TEMPLATE, DEFAULT_SOUL_MD_TEMPLATE, DEFAULT_USER_MD_TEMPLATE, } from "../../prompts/common/InitPrompts.js";
23
23
  import { renderTemplateVariables } from "../../../utils/Template.js";
24
- import { listInitModelChoices, getInitModelDefaultIndex, resolveInitModel, } from "../../../main/model/ModelCommand.js";
24
+ const LLM_API_KEY_ENV_KEY = "LLM_API_KEY";
25
+ const LLM_MODEL_ENV_KEY = "LLM_MODEL";
26
+ const LLM_BASE_URL_ENV_KEY = "LLM_BASE_URL";
27
+ const INIT_PROVIDER_CHOICES = [
28
+ { title: "OpenAI", value: "openai" },
29
+ { title: "Anthropic", value: "anthropic" },
30
+ { title: "DeepSeek", value: "deepseek" },
31
+ { title: "Gemini", value: "gemini" },
32
+ { title: "Open Compatible", value: "open-compatible" },
33
+ { title: "Open Responses", value: "open-responses" },
34
+ { title: "Moonshot (Kimi)", value: "moonshot" },
35
+ { title: "xAI", value: "xai" },
36
+ { title: "HuggingFace", value: "huggingface" },
37
+ { title: "OpenRouter", value: "openrouter" },
38
+ ];
39
+ const INIT_DEFAULT_MODEL_BY_PROVIDER = {
40
+ anthropic: "claude-sonnet-4-5",
41
+ openai: "gpt-4o-mini",
42
+ deepseek: "deepseek-chat",
43
+ gemini: "gemini-2.0-flash",
44
+ "open-compatible": "gpt-4o-mini",
45
+ "open-responses": "gpt-4.1-mini",
46
+ moonshot: "moonshot-v1-8k",
47
+ xai: "grok-3-mini",
48
+ huggingface: "meta-llama/Meta-Llama-3.1-8B-Instruct",
49
+ openrouter: "openai/gpt-4o-mini",
50
+ };
51
+ /**
52
+ * 解析 init 交互中的 provider type。
53
+ *
54
+ * 关键点(中文)
55
+ * - 非法输入回退到 `openai`,避免初始化中断。
56
+ */
57
+ function resolveInitProviderType(input) {
58
+ const value = String(input || "").trim();
59
+ if (!value)
60
+ return "openai";
61
+ const found = INIT_PROVIDER_CHOICES.find((item) => item.value === value);
62
+ return found?.value || "openai";
63
+ }
64
+ function parseEnvKeys(content) {
65
+ const out = new Set();
66
+ for (const rawLine of content.split(/\r?\n/)) {
67
+ const line = String(rawLine || "").trim();
68
+ if (!line || line.startsWith("#"))
69
+ continue;
70
+ const matched = line.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
71
+ if (!matched)
72
+ continue;
73
+ out.add(matched[1]);
74
+ }
75
+ return out;
76
+ }
77
+ function parseEnvValueMap(content) {
78
+ const out = {};
79
+ for (const rawLine of content.split(/\r?\n/)) {
80
+ const line = String(rawLine || "").trim();
81
+ if (!line || line.startsWith("#"))
82
+ continue;
83
+ const matched = line.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
84
+ if (!matched)
85
+ continue;
86
+ out[matched[1]] = matched[2] ?? "";
87
+ }
88
+ return out;
89
+ }
90
+ function escapeRegExp(input) {
91
+ return input.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
92
+ }
93
+ /**
94
+ * 仅向 env 文件追加缺失键(不覆盖已有键)。
95
+ *
96
+ * 关键点(中文)
97
+ * - 用户已有的 env 配置永远优先,不会被 init 覆盖。
98
+ * - 仅当键不存在时才追加,满足“原来有就跳过,原来没有就写入”。
99
+ */
100
+ async function appendMissingEnvEntries(params) {
101
+ const filePath = String(params.filePath || "").trim();
102
+ if (!filePath)
103
+ return { appended: [], overwritten: [], skipped: [] };
104
+ const entries = Array.isArray(params.entries)
105
+ ? params.entries.filter((item) => {
106
+ const key = String(item?.key || "").trim();
107
+ return Boolean(key);
108
+ })
109
+ : [];
110
+ if (entries.length === 0)
111
+ return { appended: [], overwritten: [], skipped: [] };
112
+ const overwriteKeys = params.overwriteKeys || new Set();
113
+ let existing = "";
114
+ if (await fs.pathExists(filePath)) {
115
+ existing = await fs.readFile(filePath, "utf-8");
116
+ }
117
+ const existingKeys = parseEnvKeys(existing);
118
+ const appendedEntries = [];
119
+ const skippedEntries = [];
120
+ const overwrittenEntries = [];
121
+ let nextContent = existing;
122
+ for (const entry of entries) {
123
+ if (!existingKeys.has(entry.key)) {
124
+ appendedEntries.push(entry);
125
+ continue;
126
+ }
127
+ if (!overwriteKeys.has(entry.key)) {
128
+ skippedEntries.push(entry);
129
+ continue;
130
+ }
131
+ const linePattern = new RegExp(`^${escapeRegExp(entry.key)}\\s*=.*$`, "gm");
132
+ if (linePattern.test(nextContent)) {
133
+ nextContent = nextContent.replace(linePattern, `${entry.key}=${entry.value}`);
134
+ }
135
+ else {
136
+ appendedEntries.push(entry);
137
+ continue;
138
+ }
139
+ overwrittenEntries.push(entry);
140
+ }
141
+ if (appendedEntries.length > 0) {
142
+ const lines = [];
143
+ if (!nextContent.trim()) {
144
+ lines.push("# ShipMyAgent 环境变量");
145
+ }
146
+ lines.push("", `# ${params.sectionTitle}`);
147
+ for (const entry of appendedEntries) {
148
+ lines.push(`${entry.key}=${entry.value}`);
149
+ }
150
+ let chunk = lines.join("\n");
151
+ if (nextContent && !nextContent.endsWith("\n")) {
152
+ chunk = `\n${chunk}`;
153
+ }
154
+ nextContent = `${nextContent}${chunk}\n`;
155
+ }
156
+ if (appendedEntries.length > 0 ||
157
+ overwrittenEntries.length > 0 ||
158
+ !(await fs.pathExists(filePath))) {
159
+ await fs.writeFile(filePath, nextContent, "utf-8");
160
+ }
161
+ return {
162
+ appended: appendedEntries.map((item) => item.key),
163
+ overwritten: overwrittenEntries.map((item) => item.key),
164
+ skipped: skippedEntries.map((item) => item.key),
165
+ };
166
+ }
25
167
  /**
26
168
  * 获取用户级 `.ship/skills` 目录。
27
169
  */
@@ -33,7 +175,7 @@ function getUserShipSkillsDir() {
33
175
  */
34
176
  function getBuiltInSkillsDirFromBin() {
35
177
  // 关键点(中文)
36
- // - 发布包中该文件在 `bin/main/commands/init.js`
178
+ // - 发布包中该文件在 `bin/main/server/commands/Init.js`
37
179
  // - 内置 skills 会在 build 阶段复制到 `bin/services/skills/built-in`
38
180
  const __filename = fileURLToPath(import.meta.url);
39
181
  const __dirname = path.dirname(__filename);
@@ -104,11 +246,13 @@ async function syncClaudeSkillsToUserShipSkills() {
104
246
  export async function initCommand(cwd = ".", options = {}) {
105
247
  const projectRoot = path.resolve(cwd);
106
248
  let allowOverwrite = Boolean(options.force);
107
- const LLM_API_KEY = "${LLM_API_KEY}";
108
- const LLM_BASE_URL = "${LLM_BASE_URL}";
109
- const LLM_MODEL = "${LLM_MODEL}";
249
+ const dotEnvPath = path.join(projectRoot, ".env");
250
+ const dotEnvExamplePath = path.join(projectRoot, ".env.example");
251
+ const existingDotEnvContent = (await fs.pathExists(dotEnvPath))
252
+ ? await fs.readFile(dotEnvPath, "utf-8")
253
+ : "";
254
+ const existingDotEnvValues = parseEnvValueMap(existingDotEnvContent);
110
255
  const TELEGRAM_BOT_TOKEN = "${TELEGRAM_BOT_TOKEN}";
111
- const TELEGRAM_CHAT_ID = "${TELEGRAM_CHAT_ID}";
112
256
  const FEISHU_APP_ID = "${FEISHU_APP_ID}";
113
257
  const FEISHU_APP_SECRET = "${FEISHU_APP_SECRET}";
114
258
  const QQ_APP_ID = "${QQ_APP_ID}";
@@ -136,7 +280,7 @@ export async function initCommand(cwd = ".", options = {}) {
136
280
  }
137
281
  }
138
282
  // Collect configuration information
139
- // 交互采集(中文):模型 + channels + 推荐 skills,最小化首启配置成本。
283
+ // 交互采集(中文):provider type + apiKey + modelName + channels + 推荐 skills
140
284
  const response = (await prompts([
141
285
  {
142
286
  type: "text",
@@ -146,10 +290,38 @@ export async function initCommand(cwd = ".", options = {}) {
146
290
  },
147
291
  {
148
292
  type: "select",
149
- name: "model",
150
- message: "Select LLM model",
151
- choices: listInitModelChoices(),
152
- initial: getInitModelDefaultIndex(),
293
+ name: "providerType",
294
+ message: "Select LLM provider type",
295
+ choices: INIT_PROVIDER_CHOICES,
296
+ initial: 0,
297
+ },
298
+ {
299
+ type: "text",
300
+ name: "apiKey",
301
+ message: "Input API key",
302
+ initial: String(existingDotEnvValues[LLM_API_KEY_ENV_KEY] ||
303
+ process.env[LLM_API_KEY_ENV_KEY] ||
304
+ "").trim(),
305
+ validate: (value) => String(value || "").trim() ? true : "API key is required",
306
+ },
307
+ {
308
+ type: "text",
309
+ name: "modelName",
310
+ message: "Input model name",
311
+ initial: (prev, values) => {
312
+ const existingModelName = String(existingDotEnvValues[LLM_MODEL_ENV_KEY] || "").trim();
313
+ if (existingModelName)
314
+ return existingModelName;
315
+ const providerType = resolveInitProviderType(values.providerType);
316
+ return INIT_DEFAULT_MODEL_BY_PROVIDER[providerType];
317
+ },
318
+ validate: (value) => String(value || "").trim() ? true : "Model name is required",
319
+ },
320
+ {
321
+ type: "text",
322
+ name: "baseUrl",
323
+ message: "Input base URL (optional, press Enter to skip)",
324
+ initial: String(existingDotEnvValues[LLM_BASE_URL_ENV_KEY] || "").trim(),
153
325
  },
154
326
  {
155
327
  // 关键交互: Chat channels 允许多选,未选择的就不写入 ship.json
@@ -192,6 +364,67 @@ export async function initCommand(cwd = ".", options = {}) {
192
364
  ]));
193
365
  // 关键点(中文):agent_name 同时用于 `ship.json.name` 与 init 模板变量渲染,避免两处来源不一致。
194
366
  const agentName = String(response.name || "").trim() || path.basename(projectRoot);
367
+ const providerType = resolveInitProviderType(response.providerType);
368
+ const modelName = String(response.modelName || "").trim() ||
369
+ INIT_DEFAULT_MODEL_BY_PROVIDER[providerType];
370
+ let apiKey = String(response.apiKey || "").trim();
371
+ let resolvedModelName = modelName;
372
+ let resolvedBaseUrl = String(response.baseUrl || "").trim();
373
+ const overwriteEnvKeys = new Set();
374
+ const hasExistingApiKey = Object.prototype.hasOwnProperty.call(existingDotEnvValues, LLM_API_KEY_ENV_KEY);
375
+ const hasExistingModelName = Object.prototype.hasOwnProperty.call(existingDotEnvValues, LLM_MODEL_ENV_KEY);
376
+ const hasExistingBaseUrl = Object.prototype.hasOwnProperty.call(existingDotEnvValues, LLM_BASE_URL_ENV_KEY);
377
+ const existingApiKey = String(existingDotEnvValues[LLM_API_KEY_ENV_KEY] || "").trim();
378
+ const existingModelName = String(existingDotEnvValues[LLM_MODEL_ENV_KEY] || "").trim();
379
+ const existingBaseUrl = String(existingDotEnvValues[LLM_BASE_URL_ENV_KEY] || "").trim();
380
+ if (hasExistingApiKey && apiKey !== existingApiKey) {
381
+ const confirmOverwriteApiKey = (await prompts({
382
+ type: "confirm",
383
+ name: "overwrite",
384
+ message: `${LLM_API_KEY_ENV_KEY} already exists in .env. Overwrite it?`,
385
+ initial: false,
386
+ }));
387
+ if (confirmOverwriteApiKey.overwrite) {
388
+ overwriteEnvKeys.add(LLM_API_KEY_ENV_KEY);
389
+ }
390
+ else {
391
+ apiKey = existingApiKey;
392
+ }
393
+ }
394
+ if (hasExistingModelName && resolvedModelName !== existingModelName) {
395
+ const confirmOverwriteModel = (await prompts({
396
+ type: "confirm",
397
+ name: "overwrite",
398
+ message: `${LLM_MODEL_ENV_KEY} already exists in .env. Overwrite it?`,
399
+ initial: false,
400
+ }));
401
+ if (confirmOverwriteModel.overwrite) {
402
+ overwriteEnvKeys.add(LLM_MODEL_ENV_KEY);
403
+ }
404
+ else {
405
+ resolvedModelName = existingModelName;
406
+ }
407
+ }
408
+ // 关键点(中文)
409
+ // - baseUrl 允许留空(skip)。
410
+ // - 若已有值且用户输入了新值,则二次确认是否覆盖。
411
+ if (!resolvedBaseUrl) {
412
+ resolvedBaseUrl = existingBaseUrl;
413
+ }
414
+ else if (hasExistingBaseUrl && resolvedBaseUrl !== existingBaseUrl) {
415
+ const confirmOverwriteBaseUrl = (await prompts({
416
+ type: "confirm",
417
+ name: "overwrite",
418
+ message: `${LLM_BASE_URL_ENV_KEY} already exists in .env. Overwrite it?`,
419
+ initial: false,
420
+ }));
421
+ if (confirmOverwriteBaseUrl.overwrite) {
422
+ overwriteEnvKeys.add(LLM_BASE_URL_ENV_KEY);
423
+ }
424
+ else {
425
+ resolvedBaseUrl = existingBaseUrl;
426
+ }
427
+ }
195
428
  const initTemplateVariables = {
196
429
  agent_name: agentName,
197
430
  };
@@ -231,24 +464,22 @@ export async function initCommand(cwd = ".", options = {}) {
231
464
  }
232
465
  // Save ship.json
233
466
  // Build LLM configuration
234
- const selectedModel = resolveInitModel(response.model);
235
467
  const activeModelId = "default";
236
468
  const providerId = "default";
237
- const useCustomModelName = selectedModel.useCustomModelName;
238
469
  // 关键点(中文):init 默认生成“1 provider + 1 model”的多模型结构,后续用户可按需扩展。
239
470
  const llmConfig = {
240
471
  activeModel: activeModelId,
241
472
  providers: {
242
473
  [providerId]: {
243
- type: selectedModel.providerType,
244
- ...(useCustomModelName ? { baseUrl: LLM_BASE_URL } : {}),
245
- apiKey: LLM_API_KEY,
474
+ type: providerType,
475
+ baseUrl: `\${${LLM_BASE_URL_ENV_KEY}}`,
476
+ apiKey: `\${${LLM_API_KEY_ENV_KEY}}`,
246
477
  },
247
478
  },
248
479
  models: {
249
480
  [activeModelId]: {
250
481
  provider: providerId,
251
- name: useCustomModelName ? LLM_MODEL : selectedModel.modelId,
482
+ name: `\${${LLM_MODEL_ENV_KEY}}`,
252
483
  temperature: 0.7,
253
484
  },
254
485
  },
@@ -259,8 +490,8 @@ export async function initCommand(cwd = ".", options = {}) {
259
490
  channelsConfig.telegram = {
260
491
  enabled: true,
261
492
  botToken: TELEGRAM_BOT_TOKEN,
262
- // 关键点(中文):chatId 可选,允许通过环境变量注入(避免把 chatId 写进 ship.json)
263
- chatId: TELEGRAM_CHAT_ID,
493
+ // 关键点(中文):每个 channel 独立配置单值 auth_id,默认留空。
494
+ auth_id: "",
264
495
  };
265
496
  }
266
497
  if (selectedChannels.has("feishu")) {
@@ -269,6 +500,7 @@ export async function initCommand(cwd = ".", options = {}) {
269
500
  appId: FEISHU_APP_ID,
270
501
  appSecret: FEISHU_APP_SECRET,
271
502
  domain: "https://open.feishu.cn",
503
+ auth_id: "",
272
504
  };
273
505
  }
274
506
  if (selectedChannels.has("qq")) {
@@ -277,6 +509,7 @@ export async function initCommand(cwd = ".", options = {}) {
277
509
  appId: QQ_APP_ID,
278
510
  appSecret: QQ_APP_SECRET,
279
511
  sandbox: Boolean(response.qqSandbox),
512
+ auth_id: "",
280
513
  };
281
514
  }
282
515
  const shipConfig = {
@@ -305,67 +538,65 @@ export async function initCommand(cwd = ".", options = {}) {
305
538
  };
306
539
  await saveJson(shipJsonPath, shipConfig);
307
540
  console.log(`✅ Created ship.json`);
308
- // Create .env and .env.example (optional, but recommended)
541
+ // Create .env and .env.example
309
542
  // 关键点(中文)
310
- // - `.env.example`:可提交,用于告诉团队需要哪些环境变量
311
- // - `.env`:本地私密配置,不建议提交
312
- // - 仅生成“本次 init 选择相关”的变量(减少噪音)
313
- const dotEnvExamplePath = path.join(projectRoot, ".env.example");
314
- const dotEnvPath = path.join(projectRoot, ".env");
315
- const envLines = [
316
- "# ShipMyAgent 环境变量",
317
- "# - .env.example: 可提交到 git(示例)",
318
- "# - .env: 本地私密配置(不要提交)",
319
- "",
320
- "# LLM(ship.json 默认读取 LLM_API_KEY)",
321
- "LLM_API_KEY=",
543
+ // - `.env` 写入真实值(仅追加缺失键,不覆盖已有键)
544
+ // - `.env.example` 写入示例值(便于团队同步所需变量)
545
+ const envRealEntries = [
546
+ { key: LLM_API_KEY_ENV_KEY, value: apiKey },
547
+ { key: LLM_MODEL_ENV_KEY, value: resolvedModelName },
548
+ { key: LLM_BASE_URL_ENV_KEY, value: resolvedBaseUrl },
549
+ ];
550
+ const envExampleEntries = [
551
+ { key: LLM_API_KEY_ENV_KEY, value: "" },
552
+ { key: LLM_MODEL_ENV_KEY, value: resolvedModelName },
553
+ { key: LLM_BASE_URL_ENV_KEY, value: "" },
322
554
  ];
323
- if (useCustomModelName) {
324
- envLines.push("", "# Open-compatible / Open-responses model", "LLM_MODEL=", "LLM_BASE_URL=");
325
- }
326
555
  if (selectedChannels.has("telegram")) {
327
- envLines.push("", "# Telegram", "TELEGRAM_BOT_TOKEN=", "# 可选:限制仅在指定 chatId 发送(不填则不限制)", "TELEGRAM_CHAT_ID=");
556
+ envRealEntries.push({ key: "TELEGRAM_BOT_TOKEN", value: "" }, { key: "TELEGRAM_AUTH_ID", value: "" });
557
+ envExampleEntries.push({ key: "TELEGRAM_BOT_TOKEN", value: "" }, { key: "TELEGRAM_AUTH_ID", value: "" });
328
558
  }
329
559
  if (selectedChannels.has("feishu")) {
330
- envLines.push("", "# Feishu", "FEISHU_APP_ID=", "FEISHU_APP_SECRET=");
560
+ envRealEntries.push({ key: "FEISHU_APP_ID", value: "" }, { key: "FEISHU_APP_SECRET", value: "" }, { key: "FEISHU_AUTH_ID", value: "" });
561
+ envExampleEntries.push({ key: "FEISHU_APP_ID", value: "" }, { key: "FEISHU_APP_SECRET", value: "" }, { key: "FEISHU_AUTH_ID", value: "" });
331
562
  }
332
563
  if (selectedChannels.has("qq")) {
333
- envLines.push("", "# QQ", "QQ_APP_ID=", "QQ_APP_SECRET=", `QQ_SANDBOX=${Boolean(response.qqSandbox) ? "true" : "false"}`);
334
- }
335
- envLines.push("");
336
- const envTemplate = envLines.join("\n");
337
- const AUTO_ENV_MARKER = "# ShipMyAgent 环境变量";
338
- const canOverwriteEnvFile = async (filePath) => {
339
- if (options.force)
340
- return true;
341
- if (!(await fs.pathExists(filePath)))
342
- return true;
343
- try {
344
- const existing = await fs.readFile(filePath, "utf-8");
345
- // 关键点(中文):只有“我们自己生成的 env 文件”才允许在非 --force 下覆盖,避免误伤用户自有 .env
346
- return existing.trimStart().startsWith(AUTO_ENV_MARKER);
347
- }
348
- catch {
349
- return false;
350
- }
351
- };
352
- const writeTextFile = async (filePath, content) => {
353
- if (!(await canOverwriteEnvFile(filePath)))
354
- return false;
355
- await fs.writeFile(filePath, content, "utf-8");
356
- return true;
357
- };
358
- const wroteEnvExample = await writeTextFile(dotEnvExamplePath, envTemplate);
359
- const wroteEnv = await writeTextFile(dotEnvPath, envTemplate);
360
- if (wroteEnvExample)
361
- console.log("✅ Created .env.example");
362
- else if (await fs.pathExists(dotEnvExamplePath)) {
363
- console.log("⏭️ Skipped existing .env.example (use --force to overwrite)");
364
- }
365
- if (wroteEnv)
366
- console.log("✅ Created .env");
367
- else if (await fs.pathExists(dotEnvPath)) {
368
- console.log("⏭️ Skipped existing .env (use --force to overwrite)");
564
+ const qqSandbox = Boolean(response.qqSandbox) ? "true" : "false";
565
+ envRealEntries.push({ key: "QQ_APP_ID", value: "" }, { key: "QQ_APP_SECRET", value: "" }, { key: "QQ_SANDBOX", value: qqSandbox }, { key: "QQ_AUTH_ID", value: "" });
566
+ envExampleEntries.push({ key: "QQ_APP_ID", value: "" }, { key: "QQ_APP_SECRET", value: "" }, { key: "QQ_SANDBOX", value: qqSandbox }, { key: "QQ_AUTH_ID", value: "" });
567
+ }
568
+ const envResult = await appendMissingEnvEntries({
569
+ filePath: dotEnvPath,
570
+ sectionTitle: "ShipMyAgent Init",
571
+ entries: envRealEntries,
572
+ overwriteKeys: overwriteEnvKeys,
573
+ });
574
+ const envExampleResult = await appendMissingEnvEntries({
575
+ filePath: dotEnvExamplePath,
576
+ sectionTitle: "ShipMyAgent Init Example",
577
+ entries: envExampleEntries,
578
+ });
579
+ if (envResult.appended.length > 0 || envResult.overwritten.length > 0) {
580
+ const detail = [
581
+ envResult.appended.length > 0
582
+ ? `added: ${envResult.appended.join(", ")}`
583
+ : "",
584
+ envResult.overwritten.length > 0
585
+ ? `overwritten: ${envResult.overwritten.join(", ")}`
586
+ : "",
587
+ ]
588
+ .filter(Boolean)
589
+ .join("; ");
590
+ console.log(`✅ Updated .env (${detail})`);
591
+ }
592
+ else {
593
+ console.log("⏭️ Skipped .env (required keys already exist)");
594
+ }
595
+ if (envExampleResult.appended.length > 0) {
596
+ console.log(`✅ Updated .env.example (added: ${envExampleResult.appended.join(", ")})`);
597
+ }
598
+ else {
599
+ console.log("⏭️ Skipped .env.example (required keys already exist)");
369
600
  }
370
601
  // Create .ship directory structure
371
602
  const dirs = [
@@ -426,24 +657,22 @@ export async function initCommand(cwd = ".", options = {}) {
426
657
  await syncClaudeSkillsToUserShipSkills();
427
658
  }
428
659
  console.log("\n🎉 Initialization complete!\n");
429
- const activeModelConfig = llmConfig.models[llmConfig.activeModel];
430
- const activeProviderConfig = llmConfig.providers[activeModelConfig.provider];
431
- console.log(`📦 Current model: ${activeProviderConfig.type} / ${activeModelConfig.name}`);
432
- console.log(`🌐 API URL: ${activeProviderConfig.baseUrl || "-"}\n`);
660
+ console.log(`📦 Current model: ${providerType} / ${resolvedModelName}`);
661
+ console.log(`🌐 API URL: ${resolvedBaseUrl || "-"}\n`);
433
662
  if (selectedChannels.has("feishu")) {
434
663
  console.log("📱 Feishu chat channel enabled");
435
664
  console.log(" Please configure FEISHU_APP_ID and FEISHU_APP_SECRET in ship.json (services.chat.channels.feishu)");
436
- console.log(" or set environment variables: FEISHU_APP_ID and FEISHU_APP_SECRET\n");
665
+ console.log(" Optional auth: services.chat.channels.feishu.auth_id or FEISHU_AUTH_ID\n");
437
666
  }
438
667
  if (selectedChannels.has("telegram")) {
439
668
  console.log("📱 Telegram chat channel enabled");
440
- console.log(" Please configure TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID (optional) in ship.json (services.chat.channels.telegram)");
441
- console.log(" or set environment variables: TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID\n");
669
+ console.log(" Please configure TELEGRAM_BOT_TOKEN in ship.json (services.chat.channels.telegram)");
670
+ console.log(" Optional auth: services.chat.channels.telegram.auth_id or TELEGRAM_AUTH_ID\n");
442
671
  }
443
672
  if (selectedChannels.has("qq")) {
444
673
  console.log("📱 QQ chat channel enabled");
445
674
  console.log(" Please configure QQ_APP_ID and QQ_APP_SECRET in ship.json (services.chat.channels.qq)");
446
- console.log(" or set environment variables: QQ_APP_ID and QQ_APP_SECRET\n");
675
+ console.log(" Optional auth: services.chat.channels.qq.auth_id or QQ_AUTH_ID\n");
447
676
  console.log(" Optional: set QQ_SANDBOX=true to use sandbox environment\n");
448
677
  }
449
678
  const nextSteps = [
@@ -453,13 +682,16 @@ export async function initCommand(cwd = ".", options = {}) {
453
682
  "Edit ship.json to modify llm.activeModel / llm.models / llm.providers",
454
683
  ];
455
684
  if (selectedChannels.has("telegram")) {
456
- nextSteps.push("Configure services.chat.channels.telegram (Bot Token and optional Chat ID)");
685
+ nextSteps.push("Configure services.chat.channels.telegram (Bot Token)");
686
+ nextSteps.push("Optional: configure services.chat.channels.telegram.auth_id (or TELEGRAM_AUTH_ID)");
457
687
  }
458
688
  if (selectedChannels.has("feishu")) {
459
689
  nextSteps.push("Configure services.chat.channels.feishu (App ID and App Secret)");
690
+ nextSteps.push("Optional: configure services.chat.channels.feishu.auth_id (or FEISHU_AUTH_ID)");
460
691
  }
461
692
  if (selectedChannels.has("qq")) {
462
693
  nextSteps.push("Configure services.chat.channels.qq (App ID and App Secret)");
694
+ nextSteps.push("Optional: configure services.chat.channels.qq.auth_id (or QQ_AUTH_ID)");
463
695
  }
464
696
  nextSteps.push('Run "shipmyagent start" to start the agent');
465
697
  console.log("Next steps:");
@@ -467,7 +699,7 @@ export async function initCommand(cwd = ".", options = {}) {
467
699
  console.log(` ${idx + 1}. ${line}`);
468
700
  }
469
701
  console.log("");
470
- console.log("💡 Tip: API Key is recommended to use environment variables (e.g. ${LLM_API_KEY}, ${OPENAI_API_KEY}, ${GEMINI_API_KEY})\n");
702
+ console.log("💡 Tip: 本次输入的 API Key Model 已按“缺失才追加”策略写入 .env。\n");
471
703
  console.log("To switch models or modify configuration, edit the llm field in ship.json directly.\n");
472
704
  }
473
705
  //# sourceMappingURL=Init.js.map