@h-ai/cli 1.0.0-beta.17 → 1.0.0-beta.19

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 (195) hide show
  1. package/README.en.md +6 -0
  2. package/README.ja.md +6 -0
  3. package/README.md +6 -0
  4. package/dist/{chunk-EWTIVFHN.js → chunk-2ZL5ORQ2.js} +94 -28
  5. package/dist/chunk-2ZL5ORQ2.js.map +1 -0
  6. package/dist/{chunk-S2ZP7BHG.js → chunk-L53P43B2.js} +138 -32
  7. package/dist/chunk-L53P43B2.js.map +1 -0
  8. package/dist/cli-config-templates-LWMD2I6V.js +5 -0
  9. package/dist/{cli-config-templates-MKVYSK3E.js.map → cli-config-templates-LWMD2I6V.js.map} +1 -1
  10. package/dist/{cli-skill-templates-M64VPXZ4.js → cli-skill-templates-D6S2OQ6X.js} +3 -3
  11. package/dist/{cli-skill-templates-M64VPXZ4.js.map → cli-skill-templates-D6S2OQ6X.js.map} +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +2797 -666
  14. package/dist/index.js.map +1 -1
  15. package/dist/metafile-esm.json +1 -1
  16. package/package.json +22 -22
  17. package/templates/apps/admin/src/routes/+layout.svelte.hbs +16 -10
  18. package/templates/apps/admin/src/routes/+page.svelte.hbs +4 -4
  19. package/templates/apps/admin/src/routes/admin/+layout.svelte.hbs +17 -7
  20. package/templates/apps/admin/src/routes/admin/+page.svelte.hbs +26 -6
  21. package/templates/apps/admin/src/routes/admin/settings/+page.svelte.hbs +2 -2
  22. package/templates/apps/api/apps/{{projectName}}-contract/src/app-schemas.ts.hbs +6 -1
  23. package/templates/apps/api/apps/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +13 -5
  24. package/templates/apps/api/apps/{{projectName}}-contract/tests/contract.test.ts.hbs +13 -5
  25. package/templates/apps/api/apps/{{projectName}}-contract/tsup.config.ts.hbs +3 -1
  26. package/templates/apps/api/apps/{{projectName}}-serv/src/app.ts.hbs +71 -32
  27. package/templates/apps/api/apps/{{projectName}}-serv/src/build-metadata.ts.hbs +0 -1
  28. package/templates/apps/api/apps/{{projectName}}-serv/src/lib/server/init.ts.hbs +131 -54
  29. package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/index.ts.hbs +39 -13
  30. package/templates/apps/api/apps/{{projectName}}-serv/tests/service.test.ts.hbs +78 -31
  31. package/templates/apps/api/apps/{{projectName}}-serv/tsup.config.ts.hbs +3 -1
  32. package/templates/apps/api/apps/{{projectName}}-serv/vitest.config.ts.hbs +3 -1
  33. package/templates/apps/api/e2e/api-serv.spec.ts.hbs +20 -3
  34. package/templates/apps/api/e2e/capture-evidence.ts.hbs +4 -1
  35. package/templates/apps/api/eslint.config.js.hbs +3 -1
  36. package/templates/apps/api/images/serv.Dockerfile.hbs +3 -4
  37. package/templates/apps/api/playwright.config.ts.hbs +23 -19
  38. package/templates/apps/api/pnpm-workspace.yaml.hbs +27 -16
  39. package/templates/apps/fullstack/apps/{{projectName}}-app/capacitor.config.ts.hbs +1 -3
  40. package/templates/apps/fullstack/apps/{{projectName}}-app/eslint.config.js.hbs +10 -2
  41. package/templates/apps/fullstack/apps/{{projectName}}-app/src/App.svelte.hbs +10 -2
  42. package/templates/apps/fullstack/apps/{{projectName}}-app/src/build-metadata.ts.hbs +0 -1
  43. package/templates/apps/fullstack/apps/{{projectName}}-app/src/lib/capacitor.ts.hbs +0 -1
  44. package/templates/apps/fullstack/apps/{{projectName}}-app/svelte.config.js.hbs +4 -1
  45. package/templates/apps/fullstack/apps/{{projectName}}-app/vite.config.ts.hbs +16 -4
  46. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/App.svelte.hbs +8 -2
  47. package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/build-metadata.ts.hbs +0 -1
  48. package/templates/apps/fullstack/apps/{{projectName}}-desktop/svelte.config.js.hbs +4 -1
  49. package/templates/apps/fullstack/apps/{{projectName}}-desktop/vite.config.ts.hbs +16 -4
  50. package/templates/apps/fullstack/apps/{{projectName}}-web/eslint.config.js.hbs +10 -2
  51. package/templates/apps/fullstack/apps/{{projectName}}-web/src/build-metadata.ts.hbs +0 -1
  52. package/templates/apps/fullstack/apps/{{projectName}}-web/src/main.ts.hbs +0 -2
  53. package/templates/apps/fullstack/apps/{{projectName}}-web/svelte.config.js.hbs +4 -1
  54. package/templates/apps/fullstack/apps/{{projectName}}-web/vite.config.ts.hbs +19 -5
  55. package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +111 -26
  56. package/templates/apps/fullstack/e2e/session-close.spec.ts.hbs +19 -5
  57. package/templates/apps/fullstack/eslint.config.js.hbs +3 -1
  58. package/templates/apps/fullstack/images/serv.Dockerfile.hbs +3 -4
  59. package/templates/apps/fullstack/images/web.Dockerfile.hbs +0 -2
  60. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-contract.ts.hbs +114 -23
  61. package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-schemas.ts.hbs +57 -11
  62. package/templates/apps/fullstack/packages/{{projectName}}-contract/tsup.config.ts.hbs +3 -1
  63. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/app-server.ts.hbs +65 -30
  64. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/build-metadata.ts.hbs +0 -1
  65. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/admin-service.ts.hbs +69 -21
  66. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/business-settings.ts.hbs +21 -5
  67. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/admin-procedures.ts.hbs +63 -11
  68. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +6 -1
  69. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/index.ts.hbs +3 -1
  70. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/runtime.ts.hbs +139 -49
  71. package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/security-roles.ts.hbs +43 -12
  72. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/app-server.test.ts.hbs +139 -28
  73. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/runtime.test.ts.hbs +33 -10
  74. package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/security.test.ts.hbs +141 -25
  75. package/templates/apps/fullstack/packages/{{projectName}}-serv/tsup.config.ts.hbs +6 -2
  76. package/templates/apps/fullstack/packages/{{projectName}}-serv/vitest.config.ts.hbs +3 -1
  77. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/api-client.ts.hbs +9 -2
  78. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/feedback-client.ts.hbs +0 -3
  79. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/sensitive-actions.svelte.ts.hbs +15 -3
  80. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +33 -7
  81. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/FeedbackEntry.svelte.hbs +16 -2
  82. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/audit.svelte.hbs +104 -13
  83. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/feedback.svelte.hbs +37 -7
  84. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/roles.svelte.hbs +9 -3
  85. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/settings.svelte.hbs +25 -3
  86. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/users.svelte.hbs +133 -19
  87. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/security/role-label.ts.hbs +14 -2
  88. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/guide-store.ts.hbs +66 -34
  89. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/management-store.svelte.ts.hbs +132 -30
  90. package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/theme-store.svelte.ts.hbs +8 -2
  91. package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/api-client.test.ts.hbs +23 -5
  92. package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/management-store.test.ts.hbs +143 -21
  93. package/templates/apps/fullstack/packages/{{projectName}}-shared/vitest.config.ts.hbs +7 -2
  94. package/templates/apps/fullstack/playwright.config.ts.hbs +9 -3
  95. package/templates/apps/fullstack/pnpm-workspace.yaml.hbs +30 -15
  96. package/templates/apps/h5/src/routes/+layout.svelte.hbs +57 -21
  97. package/templates/apps/h5/src/routes/+page.svelte.hbs +2 -2
  98. package/templates/apps/h5/src/routes/discover/+page.svelte.hbs +2 -2
  99. package/templates/apps/h5/src/routes/profile/+page.svelte.hbs +2 -2
  100. package/templates/apps/mobile-app/src/App.svelte.hbs +17 -5
  101. package/templates/apps/mobile-app/src/lib/api.ts.hbs +14 -3
  102. package/templates/apps/mobile-app/src/lib/app-config.ts.hbs +8 -1
  103. package/templates/apps/mobile-app/src/lib/pages/home.svelte.hbs +6 -2
  104. package/templates/apps/mobile-app/src/lib/pages/tasks.svelte.hbs +5 -1
  105. package/templates/apps/website/scripts/static-website.mjs.hbs +16 -3
  106. package/templates/apps/website/src/routes/+layout.svelte.hbs +44 -23
  107. package/templates/apps/website/src/routes/+page.svelte.hbs +4 -4
  108. package/templates/apps/website/src/routes/about/+page.svelte.hbs +2 -2
  109. package/templates/apps/website/src/routes/contact/+page.svelte.hbs +2 -2
  110. package/templates/apps/website/src/routes/services/+page.svelte.hbs +20 -5
  111. package/templates/base/e2e/app.spec.ts.hbs +49 -16
  112. package/templates/base/eslint-rules.js +44 -25
  113. package/templates/base/eslint.config.js.hbs +3 -1
  114. package/templates/base/images/web.Dockerfile.hbs +3 -4
  115. package/templates/base/package.json.hbs +5 -4
  116. package/templates/base/patches/daisyui-5.7.50.patch +8 -0
  117. package/templates/base/patches/deepmerge-4.3.1.patch +51 -0
  118. package/templates/base/playwright.config.ts +3 -1
  119. package/templates/base/pnpm-workspace.yaml.hbs +33 -16
  120. package/templates/base/src/app.d.ts.hbs +1 -1
  121. package/templates/base/src/hooks.server.ts.hbs +36 -27
  122. package/templates/base/src/lib/build-metadata.ts.hbs +0 -1
  123. package/templates/base/src/lib/server/init.ts.hbs +124 -51
  124. package/templates/base/src/lib/server/kit-config.ts.hbs +7 -4
  125. package/templates/base/src/routes/+layout.server.ts.hbs +2 -2
  126. package/templates/base/svelte.config.js.hbs +10 -100
  127. package/templates/base/tests/scaffold.test.ts.hbs +12 -3
  128. package/templates/base/tsconfig.json.hbs +7 -4
  129. package/templates/base/vite.config.ts.hbs +108 -14
  130. package/templates/base/vitest.config.ts.hbs +6 -2
  131. package/templates/features/ai/routes/api/chat/+server.ts +3 -1
  132. package/templates/features/iam/routes-admin/(auth)/auth/forgot-password/+page.svelte.hbs +3 -3
  133. package/templates/features/iam/routes-admin/(auth)/auth/login/+page.svelte.hbs +3 -3
  134. package/templates/features/iam/routes-admin/(auth)/auth/register/+page.svelte.hbs +3 -3
  135. package/templates/features/iam/routes-admin/(auth)/auth/reset-password/+page.svelte.hbs +3 -3
  136. package/templates/features/iam/routes-h5/auth/forgot-password/+page.svelte.hbs +3 -3
  137. package/templates/features/iam/routes-h5/auth/login/+page.svelte.hbs +3 -3
  138. package/templates/features/iam/routes-h5/auth/register/+page.svelte.hbs +3 -3
  139. package/templates/features/iam/routes-h5/auth/reset-password/+page.svelte.hbs +3 -3
  140. package/templates/features/iam/routes-website/auth/forgot-password/+page.svelte.hbs +3 -3
  141. package/templates/features/iam/routes-website/auth/login/+page.svelte.hbs +3 -3
  142. package/templates/features/iam/routes-website/auth/register/+page.svelte.hbs +3 -3
  143. package/templates/features/iam/routes-website/auth/reset-password/+page.svelte.hbs +3 -3
  144. package/templates/features/payment/routes/api/v1/payment/create/+server.ts +11 -2
  145. package/templates/shared/browser-check/startup.js +32 -6
  146. package/templates/shared/browser-startup.spec.ts +3 -1
  147. package/templates/shared/build-metadata.ts +18 -4
  148. package/templates/shared/e2e-env.ts +22 -6
  149. package/templates/shared/native-name.mjs +9 -2
  150. package/templates/shared/public-base-path.mjs +17 -4
  151. package/templates/shared/run-e2e.mjs +40 -9
  152. package/templates/shared/run-node.mjs +15 -4
  153. package/templates/shared/run-tauri.mjs +37 -8
  154. package/templates/shared/vite-runtime-config.ts +9 -3
  155. package/templates/skills/AGENTS.md +10 -73
  156. package/templates/skills/bridges/admin/AGENTS.md +9 -65
  157. package/templates/skills/bridges/api/AGENTS.md +8 -59
  158. package/templates/skills/bridges/fullstack/AGENTS.md.hbs +9 -54
  159. package/templates/skills/bridges/h5/AGENTS.md +8 -63
  160. package/templates/skills/bridges/mobile-app/AGENTS.md +8 -62
  161. package/templates/skills/bridges/website/AGENTS.md +8 -63
  162. package/templates/skills/hai-ai/acp.md +9 -1
  163. package/templates/skills/hai-ai/guide.md +17 -6
  164. package/templates/skills/hai-ai/reference.md +21 -12
  165. package/templates/skills/hai-api-client/reference.md +1 -1
  166. package/templates/skills/hai-app-create/development.md +3 -1
  167. package/templates/skills/hai-app-create/project.md +33 -0
  168. package/templates/skills/hai-app-create/reference.md +8 -8
  169. package/templates/skills/hai-app-tests/reference.md +1 -1
  170. package/templates/skills/hai-build/SKILL.md +3 -2
  171. package/templates/skills/hai-build/paths.md +1 -1
  172. package/templates/skills/hai-build/reference.md +11 -7
  173. package/templates/skills/hai-capacitor/reference.md +2 -0
  174. package/templates/skills/hai-ci/SKILL.md +1 -0
  175. package/templates/skills/hai-core/reference.md +3 -0
  176. package/templates/skills/hai-crypto/reference.md +2 -0
  177. package/templates/skills/hai-deploy/SKILL.md +7 -1
  178. package/templates/skills/hai-deploy/middleware.md +3 -1
  179. package/templates/skills/hai-framework-sync/SKILL.md +13 -9
  180. package/templates/skills/hai-framework-sync/sync.md +2 -0
  181. package/templates/skills/hai-kit/reference.md +16 -4
  182. package/templates/skills/hai-payment/reference.md +2 -0
  183. package/templates/skills/hai-reach/SKILL.md +2 -1
  184. package/templates/skills/hai-reach/reference.md +1 -1
  185. package/templates/skills/hai-reldb/SKILL.md +1 -1
  186. package/templates/skills/hai-reldb/reference.md +4 -0
  187. package/templates/skills/hai-serv/reference.md +12 -2
  188. package/templates/skills/hai-storage/reference.md +12 -3
  189. package/templates/skills/hai-ui/SKILL.md +3 -2
  190. package/templates/skills/hai-ui/guide.md +1 -1
  191. package/templates/skills/hai-ui/reference.md +23 -35
  192. package/templates/skills/hai-vecdb/reference.md +1 -1
  193. package/dist/chunk-EWTIVFHN.js.map +0 -1
  194. package/dist/chunk-S2ZP7BHG.js.map +0 -1
  195. package/dist/cli-config-templates-MKVYSK3E.js +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/cli-config-catalog.json","../src/commands/cli-config-environment.ts","../src/commands/cli-config-templates.ts"],"names":[],"mappings":"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","file":"chunk-L53P43B2.js","sourcesContent":["[\n {\n \"name\": \"HAI_ADMIN_DEFAULT_PASSWORD\",\n \"module\": \"admin\",\n \"path\": \"HAI_ADMIN_DEFAULT_PASSWORD\",\n \"description\": \"首次创建管理员的密码\",\n \"value\": \"\",\n \"constraint\": \"满足 IAM 密码策略;敏感值仅在本地或目标进程注入\"\n },\n {\n \"name\": \"HAI_AI\",\n \"module\": \"ai\",\n \"path\": \"ai\",\n \"description\": \"模型、会话存储、知识检索和音视频能力;只启用已配置并可用的模型及后端\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a\",\n \"description\": \"A2A 配置(Agent-to-Agent 协议)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard\",\n \"description\": \"Agent Card 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_DESCRIPTION\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.description\",\n \"description\": \"Agent 描述\",\n \"value\": \"A simple echo agent that repeats your message (A2A demo)\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.name\",\n \"description\": \"Agent 名称\",\n \"value\": \"echo-agent\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills\",\n \"description\": \"Agent 技能列表\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0\",\n \"description\": \"Agent 技能列表;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_DESCRIPTION\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0.description\",\n \"description\": \"技能描述\",\n \"value\": \"Echoes back the user message\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0.id\",\n \"description\": \"技能 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0.name\",\n \"description\": \"技能名称\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_TAGS\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0.tags\",\n \"description\": \"标签列表\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_TAGS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.skills.0.tags.0\",\n \"description\": \"标签列表;此变量整体替换单个数组项\",\n \"value\": \"demo\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_TAGS_1\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_A2A_AGENTCARD_SKILLS_0_TAGS_1\",\n \"description\": \"标签列表;此变量整体替换单个数组项\",\n \"value\": \"echo\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_URL\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.url\",\n \"description\": \"Agent 对外 URL\",\n \"value\": \"http://localhost:5173\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_AGENTCARD_VERSION\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.agentCard.version\",\n \"description\": \"Agent 版本\",\n \"value\": \"0.1.0\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_A2A_EXECUTION\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.execution\",\n \"description\": \"共享执行预算;最终提交同时受数据库租约与绝对执行期限约束。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_EXECUTION_LEASEMS\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.execution.leaseMs\",\n \"description\": \"活跃执行租约毫秒数,默认30秒,范围1秒至1天。\",\n \"value\": \"30000\",\n \"constraint\": \"整数;>= 1000;<= 86400000\"\n },\n {\n \"name\": \"HAI_AI_A2A_EXECUTION_MAXEXECUTIONMS\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.execution.maxExecutionMs\",\n \"description\": \"单次执行绝对上限毫秒数,默认5分钟;超时标中断,不自动重放。\",\n \"value\": \"300000\",\n \"constraint\": \"整数;>= 1000;<= 86400000\"\n },\n {\n \"name\": \"HAI_AI_A2A_EXECUTION_POLLINTERVALMS\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.execution.pollIntervalMs\",\n \"description\": \"共享事件/状态订阅轮询间隔毫秒数,默认250。\",\n \"value\": \"250\",\n \"constraint\": \"整数;>= 10;<= 5000\"\n },\n {\n \"name\": \"HAI_AI_A2A_SECURITY\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.security\",\n \"description\": \"A2A 安全认证配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_SECURITY_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.security.apiKey\",\n \"description\": \"API Key 认证(通过 IAM apiKey.verifyApiKey 验证)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_A2A_SECURITY_APIKEY_IN\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.security.apiKey.in\",\n \"description\": \"API Key 的传递位置(默认 header)\",\n \"value\": \"header\",\n \"constraint\": \"字符串;取值:header | query\"\n },\n {\n \"name\": \"HAI_AI_A2A_SECURITY_APIKEY_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.a2a.security.apiKey.name\",\n \"description\": \"参数名(默认 x-api-key)\",\n \"value\": \"x-api-key\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_ACP\",\n \"module\": \"ai\",\n \"path\": \"ai.acp\",\n \"description\": \"ACP 会话与执行限制(仅 Node 服务端)。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents\",\n \"description\": \"配置文件定义的只读智能体,与数据库记录按 ID 合并。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0\",\n \"description\": \"配置文件定义的只读智能体,与数据库记录按 ID 合并。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ADAPTER\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.adapter\",\n \"description\": \"原生配置适配器名称,默认 generic。\",\n \"value\": \"generic\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ARGS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.args\",\n \"description\": \"原生启动参数,省略时由适配器提供默认值。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ARGS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.args.0\",\n \"description\": \"原生启动参数,省略时由适配器提供默认值。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_COMMAND\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.command\",\n \"description\": \"可选原生程序覆盖,使用参数数组执行,不经过 shell。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_DEFAULTMODELID\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.defaultModelId\",\n \"description\": \"默认选择的模型 ID,必须存在于 modelIds。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ENABLED\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.enabled\",\n \"description\": \"默认启用,禁用后禁止新建和恢复会话。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ENGINE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.engine\",\n \"description\": \"auto 优先可用 Podman,再选 Docker;显式选择不自动降级。\",\n \"value\": \"auto\",\n \"constraint\": \"字符串;取值:auto | podman | docker\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ENVIRONMENTREFS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.environmentRefs\",\n \"description\": \"目标环境变量名到宿主环境变量名的映射;保存引用而非明文凭据。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_HEADERENV\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.headerEnv\",\n \"description\": \"远程认证 Header 名到宿主变量名的映射。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.id\",\n \"description\": \"清单中的唯一 ID;同时用于受管理目录名。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]{0,95}$\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_IMAGE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.image\",\n \"description\": \"已部署的 Agent 镜像,工作区和智能体需使用同一镜像。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_MODE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.mode\",\n \"description\": \"接入模式:自定义远程服务、本机内嵌进程或托管容器。\",\n \"value\": \"custom-service\",\n \"constraint\": \"字符串;取值:custom-service | embedded | builtin-service\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_MODELIDS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.modelIds\",\n \"description\": \"绑定 Hai LLM 模型 ID;默认空数组。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_MODELIDS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.modelIds.0\",\n \"description\": \"绑定 Hai LLM 模型 ID;默认空数组。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.name\",\n \"description\": \"智能体的可读名称。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_SUPPORTEDTRANSPORTS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.supportedTransports\",\n \"description\": \"自定义服务显式声明的原生 HTTP/WS 能力。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_SUPPORTEDTRANSPORTS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.supportedTransports.0\",\n \"description\": \"自定义服务显式声明的原生 HTTP/WS 能力。;此变量整体替换单个数组项\",\n \"value\": \"http\",\n \"constraint\": \"字符串;取值:http | ws\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_TRANSPORT\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.transport\",\n \"description\": \"智能体原生支持的传输;不自动转换 stdio 和 HTTP/WS。\",\n \"value\": \"http\",\n \"constraint\": \"字符串;取值:http | ws | stdio\"\n },\n {\n \"name\": \"HAI_AI_ACP_AGENTS_0_URL\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.agents.0.url\",\n \"description\": \"远程地址,不允许命令选项和换行。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_AI_ACP_CANCELTIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.cancelTimeout\",\n \"description\": \"取消后等待终态的上限,毫秒。\",\n \"value\": \"5000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_ACP_MAXCONTENTBYTES\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.maxContentBytes\",\n \"description\": \"单轮输入和累计输出的字节上限。\",\n \"value\": \"8388608\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_ACP_MAXPENDINGEVENTS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.maxPendingEvents\",\n \"description\": \"未消费事件数量上限。\",\n \"value\": \"1024\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_ACP_PROMPTTIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.promptTimeout\",\n \"description\": \"单轮任务超时,毫秒。\",\n \"value\": \"600000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_ACP_REQUESTTIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.requestTimeout\",\n \"description\": \"握手和控制请求超时,毫秒。\",\n \"value\": \"30000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces\",\n \"description\": \"配置文件定义的只读工作区,与数据库记录按 ID 合并。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0\",\n \"description\": \"配置文件定义的只读工作区,与数据库记录按 ID 合并。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_ENVIRONMENTREFS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.environmentRefs\",\n \"description\": \"工作区历史共用变量映射;Agent 专用凭据应配置在 Agent 定义中。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_GITENVIRONMENTREFS\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.gitEnvironmentRefs\",\n \"description\": \"仅供受管 Git 远程操作使用的环境变量引用,值不传给 Agent 或本地提交。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.id\",\n \"description\": \"清单中的唯一 ID;同时用于受管理目录名。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]{0,95}$\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories\",\n \"description\": \"多个 Git 工程;默认空数组,不使用 Git 时仅创建文件目录。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories.0\",\n \"description\": \"多个 Git 工程;默认空数组,不使用 Git 时仅创建文件目录。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories.0.id\",\n \"description\": \"清单中的唯一 ID;同时用于受管理目录名。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]{0,95}$\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES_0_MAINBRANCH\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories.0.mainBranch\",\n \"description\": \"该工程明确指定的主分支,更新和 merge-main 发布均使用此值。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 240\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES_0_REMOTE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories.0.remote\",\n \"description\": \"Git remote 名,默认 origin。\",\n \"value\": \"origin\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]{0,95}$\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_REPOSITORIES_0_URL\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.repositories.0.url\",\n \"description\": \"远程地址,不允许命令选项和换行。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage\",\n \"description\": \"持久存储位置;directory 供本机,volume 供托管容器。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE_ENGINE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage.engine\",\n \"description\": \"auto 优先可用 Podman,再选 Docker;显式选择不自动降级。\",\n \"value\": \"auto\",\n \"constraint\": \"字符串;取值:auto | podman | docker\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE_IMAGE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage.image\",\n \"description\": \"已部署的 Agent 镜像,工作区和智能体需使用同一镜像。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage.name\",\n \"description\": \"可读名称;volume 时表示持久卷名。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]{0,95}$\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE_PATH\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage.path\",\n \"description\": \"本机绝对或相对目录,运行时归一化为真实绝对路径。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_ACP_WORKSPACES_0_STORAGE_TYPE\",\n \"module\": \"ai\",\n \"path\": \"ai.acp.workspaces.0.storage.type\",\n \"description\": \"存储类型判别字段。\",\n \"value\": \"directory\",\n \"constraint\": \"字符串;取值:directory | volume\"\n },\n {\n \"name\": \"HAI_AI_AUDIO\",\n \"module\": \"ai\",\n \"path\": \"ai.audio\",\n \"description\": \"Audio 配置(语音识别 / 语音合成)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_DOUBAO_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_DOUBAO_APIKEY\",\n \"description\": \"DOUBAO 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_INDEXTTS_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_INDEXTTS_APIKEY\",\n \"description\": \"INDEXTTS 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_INHERITLLMAPIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.inheritLlmApiKey\",\n \"description\": \"是否允许未单独配置密钥的语音模型继承 LLM 全局密钥;跨供应商部署应保持关闭。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MAXAUDIOBYTES\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.maxAudioBytes\",\n \"description\": \"单次音频字节上限(默认 10 MiB,防止资源耗尽)\",\n \"value\": \"10485760\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MAXSTREAMDURATIONMS\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.maxStreamDurationMs\",\n \"description\": \"实时连接最长持续时间(毫秒,默认 5 分钟)\",\n \"value\": \"300000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MIMO_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_MIMO_APIKEY\",\n \"description\": \"MIMO 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models\",\n \"description\": \"注册的语音模型列表\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0\",\n \"description\": \"注册的语音模型列表;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_ACCESSKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.accessKey\",\n \"description\": \"火山引擎 Access Key(`X-Api-Access-Key`,旧版控制台 ASR 需要)\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.apiKey\",\n \"description\": \"API Key 覆盖(未提供时可按 Audio 配置继承 LLM 密钥,最后回退对应平台环境变量)\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_APPKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.appKey\",\n \"description\": \"火山引擎 App Key(`X-Api-App-Key`,旧版控制台 ASR 需要)\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_BASEURL\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.baseUrl\",\n \"description\": \"HTTP / WebSocket 端点覆盖(`whisper` / `indextts` 无默认端点,必须显式配置)\",\n \"value\": \"https://api.xiaomimimo.com/v1\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.id\",\n \"description\": \"模型唯一标识(用于场景解析与请求显式指定)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_MODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.model\",\n \"description\": \"厂商模型名(传给厂商 API 的实际模型名)\",\n \"value\": \"mimo-v2.5-asr\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_OPERATIONS\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.operations\",\n \"description\": \"模型允许执行的操作;解析模型时会在调用厂商前校验\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_OPERATIONS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.operations.0\",\n \"description\": \"模型允许执行的操作;解析模型时会在调用厂商前校验;此变量整体替换单个数组项\",\n \"value\": \"transcribe\",\n \"constraint\": \"字符串;取值:transcribe | synthesize\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_PROVIDER\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.provider\",\n \"description\": \"所属语音平台\",\n \"value\": \"mimo\",\n \"constraint\": \"字符串;取值:openai | mimo | qwen | doubao | whisper | indextts\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_RESOURCEID\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.resourceId\",\n \"description\": \"火山引擎资源 ID(`X-Api-Resource-Id`;未提供时使用平台默认资源 ID)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_TIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.timeout\",\n \"description\": \"请求超时(毫秒,默认 60000)\",\n \"value\": \"120000\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_0_WORKSPACEID\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.models.0.workspaceId\",\n \"description\": \"阿里云百炼业务空间 ID(`X-DashScope-WorkSpace`,可选)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_1_BASEURL\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_MODELS_1_BASEURL\",\n \"description\": \"HTTP / WebSocket 端点覆盖(`whisper` / `indextts` 无默认端点,必须显式配置)\",\n \"value\": \"https://api.xiaomimimo.com/v1\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_1_MODEL\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_MODELS_1_MODEL\",\n \"description\": \"厂商模型名(传给厂商 API 的实际模型名)\",\n \"value\": \"mimo-v2.5-tts\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_1_PROVIDER\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_MODELS_1_PROVIDER\",\n \"description\": \"所属语音平台\",\n \"value\": \"mimo\",\n \"constraint\": \"字符串;取值:openai | mimo | qwen | doubao | whisper | indextts\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_MODELS_1_TIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_MODELS_1_TIMEOUT\",\n \"description\": \"请求超时(毫秒,默认 60000)\",\n \"value\": \"120000\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_OPENAI_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_OPENAI_APIKEY\",\n \"description\": \"OPENAI 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_QWEN_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_QWEN_APIKEY\",\n \"description\": \"QWEN 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_SYNTHESIZEMODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.synthesizeModel\",\n \"description\": \"默认合成模型 ID(`ai.audio.synthesize*` 未指定 model 时使用)\",\n \"value\": \"tts\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_TRANSCRIBEMODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.audio.transcribeModel\",\n \"description\": \"默认识别模型 ID(`ai.audio.transcribe*` 未指定 model 时使用)\",\n \"value\": \"asr\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_AUDIO_WHISPER_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_AUDIO_WHISPER_APIKEY\",\n \"description\": \"WHISPER 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_COMPRESS\",\n \"module\": \"ai\",\n \"path\": \"ai.compress\",\n \"description\": \"Compress 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_COMPRESS_DEFAULTMAXTOKENS\",\n \"module\": \"ai\",\n \"path\": \"ai.compress.defaultMaxTokens\",\n \"description\": \"默认 Token 预算(默认 0 表示取模型上限的 80%)\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_AI_COMPRESS_DEFAULTSTRATEGY\",\n \"module\": \"ai\",\n \"path\": \"ai.compress.defaultStrategy\",\n \"description\": \"默认压缩策略(默认 'hybrid')\",\n \"value\": \"hybrid\",\n \"constraint\": \"字符串;取值:summary | sliding-window | hybrid\"\n },\n {\n \"name\": \"HAI_AI_COMPRESS_PRESERVELASTN\",\n \"module\": \"ai\",\n \"path\": \"ai.compress.preserveLastN\",\n \"description\": \"默认保留最近消息数(默认 4)\",\n \"value\": \"4\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_AI_EMBEDDING\",\n \"module\": \"ai\",\n \"path\": \"ai.embedding\",\n \"description\": \"Embedding 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_EMBEDDING_BATCHSIZE\",\n \"module\": \"ai\",\n \"path\": \"ai.embedding.batchSize\",\n \"description\": \"批量大小(单次请求最多处理的文本数,默认 100)\",\n \"value\": \"100\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_EMBEDDING_DIMENSIONS\",\n \"module\": \"ai\",\n \"path\": \"ai.embedding.dimensions\",\n \"description\": \"向量维度(可选,部分模型支持指定维度)\",\n \"value\": \"\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_FILE\",\n \"module\": \"ai\",\n \"path\": \"ai.file\",\n \"description\": \"File 解析配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_FILE_SYSTEMPROMPT\",\n \"module\": \"ai\",\n \"path\": \"ai.file.systemPrompt\",\n \"description\": \"OCR 系统提示词(可选,覆盖内置默认提示词)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_IMAGE\",\n \"module\": \"ai\",\n \"path\": \"ai.image\",\n \"description\": \"Image 配置(文生图)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_GENERATEMODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.image.generateModel\",\n \"description\": \"默认文生图模型 ID\",\n \"value\": \"image\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_GOOGLE_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_IMAGE_GOOGLE_APIKEY\",\n \"description\": \"GOOGLE 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MAXIMAGEBYTES\",\n \"module\": \"ai\",\n \"path\": \"ai.image.maxImageBytes\",\n \"description\": \"单张图片或参考图的字节上限,默认 20 MiB;JSON 上限为 max(64 KiB, 两倍图片上限)。\",\n \"value\": \"20971520\",\n \"constraint\": \"整数;<= 104857600;> 0\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MAXIMAGES\",\n \"module\": \"ai\",\n \"path\": \"ai.image.maxImages\",\n \"description\": \"单次生成/参考图数量上限,默认 4,最大 16;临时 URL 串行下载。\",\n \"value\": \"4\",\n \"constraint\": \"整数;<= 16;> 0\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models\",\n \"description\": \"注册的文生图模型\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0\",\n \"description\": \"注册的文生图模型;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.apiKey\",\n \"description\": \"API Key 覆盖;未提供时回退厂商环境变量\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_BASEURL\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.baseUrl\",\n \"description\": \"API 基础 URL 覆盖\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.id\",\n \"description\": \"模型唯一标识(供请求选择)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_MODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.model\",\n \"description\": \"厂商模型名\",\n \"value\": \"zimage\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_PROVIDER\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.provider\",\n \"description\": \"所属文生图平台\",\n \"value\": \"pollinations\",\n \"constraint\": \"字符串;取值:openai | google | qwen | seedream | pollinations\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_TIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.timeout\",\n \"description\": \"整次图片生成与下载超时(毫秒,1–2147483647,默认 120000)\",\n \"value\": \"120000\",\n \"constraint\": \"整数;<= 2147483647;> 0\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_MODELS_0_WORKSPACEID\",\n \"module\": \"ai\",\n \"path\": \"ai.image.models.0.workspaceId\",\n \"description\": \"阿里云百炼业务空间 ID(可选)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_OPENAI_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_IMAGE_OPENAI_APIKEY\",\n \"description\": \"OPENAI 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_POLLINATIONS_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_IMAGE_POLLINATIONS_APIKEY\",\n \"description\": \"POLLINATIONS 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_QWEN_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_IMAGE_QWEN_APIKEY\",\n \"description\": \"QWEN 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_IMAGE_SEEDREAM_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"HAI_AI_IMAGE_SEEDREAM_APIKEY\",\n \"description\": \"SEEDREAM 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge\",\n \"description\": \"Knowledge 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions\",\n \"description\": \"默认分块选项 字段含义与\",\n \"value\": \"{\\\"mode\\\":\\\"markdown\\\",\\\"maxSize\\\":1500,\\\"overlap\\\":200,\\\"markdownMinLevel\\\":2,\\\"markdownKeepTitle\\\":true}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_MARKDOWNKEEPTITLE\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.markdownKeepTitle\",\n \"description\": \"是否保留 Markdown 标题在分块内容中(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_MARKDOWNMINLEVEL\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.markdownMinLevel\",\n \"description\": \"Markdown 标题分割深度(1-6,默认 2,即 # 和 ## 作为分块边界;设为 3 则 ### 也作为分块边界)\",\n \"value\": \"2\",\n \"constraint\": \"整数;>= 1;<= 6\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_MAXSIZE\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.maxSize\",\n \"description\": \"每块上限包含 overlap/分隔符;word 按非空白词,其他按 Unicode code point,默认 1500。\",\n \"value\": \"1500\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_MODE\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.mode\",\n \"description\": \"分块模式\",\n \"value\": \"markdown\",\n \"constraint\": \"字符串;取值:sentence | paragraph | markdown | page | word | character | custom\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_OVERLAP\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.overlap\",\n \"description\": \"重叠使用与 maxSize 相同的单位,必须严格小于 maxSize。\",\n \"value\": \"200\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CHUNKOPTIONS_SEPARATOR\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.chunkOptions.separator\",\n \"description\": \"自定义分隔符正则(仅 mode='custom' 时使用) ❗ 安全提示:separator 会通过 `new RegExp()` 构造,如果其值来源于用户输入,请在调用方先行校验以防止 ReDoS 攻击。\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions\",\n \"description\": \"默认文本清洗选项 字段含义与\",\n \"value\": \"{\\\"removeHtml\\\":true,\\\"removeUrls\\\":false,\\\"removeEmails\\\":false,\\\"normalizeWhitespace\\\":true,\\\"trim\\\":true}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_CUSTOMREPLACEMENTS\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.customReplacements\",\n \"description\": \"自定义替换规则(正则→替换字符串) ❗ 安全提示:pattern 会通过 `new RegExp()` 构造,如果其值来源于用户输入,请在调用方先行校验以防止 ReDoS 攻击。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_CUSTOMREPLACEMENTS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.customReplacements.0\",\n \"description\": \"自定义替换规则(正则→替换字符串) ❗ 安全提示:pattern 会通过 `new RegExp()` 构造,如果其值来源于用户输入,请在调用方先行校验以防止 ReDoS 攻击。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_CUSTOMREPLACEMENTS_0_PATTERN\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.customReplacements.0.pattern\",\n \"description\": \"正则表达式字符串\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_CUSTOMREPLACEMENTS_0_REPLACEMENT\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.customReplacements.0.replacement\",\n \"description\": \"替换文本\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_NORMALIZEWHITESPACE\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.normalizeWhitespace\",\n \"description\": \"标准化空白字符(多空格→单空格、去掉多余空行,默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_REMOVEEMAILS\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.removeEmails\",\n \"description\": \"移除 Email 地址(默认 false)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_REMOVEHTML\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.removeHtml\",\n \"description\": \"移除 HTML 标签(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_REMOVEURLS\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.removeUrls\",\n \"description\": \"移除 URL(默认 false)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_CLEANOPTIONS_TRIM\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.cleanOptions.trim\",\n \"description\": \"去除首尾空白(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_COLLECTION\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.collection\",\n \"description\": \"默认向量集合名(默认 'hai_ai_knowledge')\",\n \"value\": \"hai_ai_knowledge\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_DIMENSION\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.dimension\",\n \"description\": \"向量维度(默认 1536,需与 embedding 模型匹配)\",\n \"value\": \"1536\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_ENABLEENTITYEXTRACTION\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.enableEntityExtraction\",\n \"description\": \"是否启用实体提取(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_ENTITYBOOSTWEIGHT\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.entityBoostWeight\",\n \"description\": \"实体查询命中的额外加权系数(默认 0.15,叠加到向量分数上)\",\n \"value\": \"0.15\",\n \"constraint\": \"数字;>= 0;<= 1\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_ENTITYTYPES\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.entityTypes\",\n \"description\": \"自定义实体类型列表(不指定时使用内置默认类型)\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_ENTITYTYPES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.entityTypes.0\",\n \"description\": \"自定义实体类型列表(不指定时使用内置默认类型);此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_KNOWLEDGE_SYSTEMPROMPT\",\n \"module\": \"ai\",\n \"path\": \"ai.knowledge.systemPrompt\",\n \"description\": \"自定义实体提取系统提示词(不指定时使用内置默认提示词)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM\",\n \"module\": \"ai\",\n \"path\": \"ai.llm\",\n \"description\": \"LLM 配置(可选,所有字段有默认值)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_LLM_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.apiKey\",\n \"description\": \"默认服务密钥;模型项可单独覆盖。未填写时读取 HAI_AI_LLM_APIKEY 或对应供应商密钥变量,真实值只放服务端。\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_LLM_BASEURL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.baseUrl\",\n \"description\": \"默认模型服务地址;使用代理时填写,模型项可覆盖。未填写时按协议读取环境地址或使用供应商默认地址。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_AI_LLM_MAXTOKENS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.maxTokens\",\n \"description\": \"单次回答最多生成多少 Token,默认 4096;模型项可覆盖,需符合供应商限制。\",\n \"value\": \"4096\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.model\",\n \"description\": \"默认模型名称(默认 `'gpt-4o-mini'`)\",\n \"value\": \"gpt-4o-mini\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models\",\n \"description\": \"多模型配置列表(各字段可选,未指定时回退到全局默认值)\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0\",\n \"description\": \"多模型配置列表(各字段可选,未指定时回退到全局默认值);此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_APIKEY\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.apiKey\",\n \"description\": \"API Key 覆盖(可选,未提供时使用全局配置)\",\n \"value\": \"\",\n \"constraint\": \"string,null\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_BASEURL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.baseUrl\",\n \"description\": \"Base URL 覆盖(可选)\",\n \"value\": \"https://your-responses-service.example/v1\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities\",\n \"description\": \"已确认的模型能力,缺省表示未知\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_CONTEXTWINDOW\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.contextWindow\",\n \"description\": \"可用上下文总容量(Token);未知时省略,不由输出预算推断。\",\n \"value\": \"\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_INPUTMODALITIES\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.inputModalities\",\n \"description\": \"已确认支持的输入模态;未知时省略。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_INPUTMODALITIES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.inputModalities.0\",\n \"description\": \"已确认支持的输入模态;未知时省略。;此变量整体替换单个数组项\",\n \"value\": \"text\",\n \"constraint\": \"字符串;取值:text | image | audio | video\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_MAXOUTPUTTOKENS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.maxOutputTokens\",\n \"description\": \"模型单次输出能力上限(Token);与默认 maxTokens 预算不同。\",\n \"value\": \"\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_OUTPUTMODALITIES\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.outputModalities\",\n \"description\": \"已确认支持的输出模态;仍需调用接口支持。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_OUTPUTMODALITIES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.outputModalities.0\",\n \"description\": \"已确认支持的输出模态;仍需调用接口支持。;此变量整体替换单个数组项\",\n \"value\": \"text\",\n \"constraint\": \"字符串;取值:text | image | audio | video\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_REASONING\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.reasoning\",\n \"description\": \"推理能力元数据,不自动启用推理请求参数。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_REASONING_EFFORTS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.reasoning.efforts\",\n \"description\": \"已确认可选择的推理级别。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_REASONING_EFFORTS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.reasoning.efforts.0\",\n \"description\": \"已确认可选择的推理级别。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_REASONING_SUPPORTED\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.reasoning.supported\",\n \"description\": \"是否支持推理能力。\",\n \"value\": \"\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_CAPABILITIES_TOOLCALLING\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.capabilities.toolCalling\",\n \"description\": \"模型是否支持函数工具调用;未知时省略。\",\n \"value\": \"\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.id\",\n \"description\": \"模型唯一标识(用于 ModelResolver 解析)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_MAXTOKENS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.maxTokens\",\n \"description\": \"最大 Token 数覆盖(可选)\",\n \"value\": \"\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_MODEL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.model\",\n \"description\": \"模型名称(传给 API 的实际模型名)\",\n \"value\": \"your-coding-model\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_PROTOCOL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.protocol\",\n \"description\": \"API 协议(可选,未指定时回退全局 `protocol`,再回退 `chat`;决定走 Chat Completions / Responses / Anthropic)\",\n \"value\": \"chat\",\n \"constraint\": \"字符串;取值:chat | responses | anthropic\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_TEMPERATURE\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.temperature\",\n \"description\": \"温度覆盖(可选)\",\n \"value\": \"\",\n \"constraint\": \"数字;>= 0;<= 2\"\n },\n {\n \"name\": \"HAI_AI_LLM_MODELS_0_TIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.models.0.timeout\",\n \"description\": \"超时覆盖(可选,毫秒)\",\n \"value\": \"\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_PROTOCOL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.protocol\",\n \"description\": \"默认请求格式:chat 为 Chat Completions,responses 为 OpenAI Responses,anthropic 为 Anthropic Messages;模型项可覆盖。\",\n \"value\": \"chat\",\n \"constraint\": \"字符串;取值:chat | responses | anthropic\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios\",\n \"description\": \"场景模型映射(场景名 → 模型 ID 或直接模型名称,各场景均可选)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_CHAT\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.chat\",\n \"description\": \"场景 chat 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_DEFAULT\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.default\",\n \"description\": \"场景 default 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_EMBEDDING\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.embedding\",\n \"description\": \"场景 embedding 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_EXECUTE\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.execute\",\n \"description\": \"场景 execute 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_EXTRACTION\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.extraction\",\n \"description\": \"场景 extraction 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_FAST\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.fast\",\n \"description\": \"场景 fast 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_OCR\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.ocr\",\n \"description\": \"场景 ocr 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_PLAN\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.plan\",\n \"description\": \"场景 plan 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_REASONING\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.reasoning\",\n \"description\": \"场景 reasoning 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_RERANK\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.rerank\",\n \"description\": \"场景 rerank 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_SCENARIOS_SUMMARY\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.scenarios.summary\",\n \"description\": \"场景 summary 使用的模型 ID,须与 llm.models 中的 ID 一致\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_LLM_TEMPERATURE\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.temperature\",\n \"description\": \"回答的随机程度,0–2,默认 0.7;较低通常更稳定,模型项可覆盖,部分模型不支持自定义。\",\n \"value\": \"0.7\",\n \"constraint\": \"数字;>= 0;<= 2\"\n },\n {\n \"name\": \"HAI_AI_LLM_TEMPMODELCACHETTL\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.tempModelCacheTtl\",\n \"description\": \"临时模型客户端缓存存活时间(毫秒,默认 `600000` = 10 分钟;超时后临时模型客户端实例失效并重建)\",\n \"value\": \"600000\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_LLM_TIMEOUT\",\n \"module\": \"ai\",\n \"path\": \"ai.llm.timeout\",\n \"description\": \"一次模型请求最多等待多少毫秒,默认 60000;模型项可覆盖。\",\n \"value\": \"60000\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_AI_MCP\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp\",\n \"description\": \"MCP 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server\",\n \"description\": \"服务器配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_CAPABILITIES\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.capabilities\",\n \"description\": \"服务器能力声明\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_CAPABILITIES_PROMPTS\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.capabilities.prompts\",\n \"description\": \"是否支持提示词模板(默认 `true`)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_CAPABILITIES_RESOURCES\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.capabilities.resources\",\n \"description\": \"是否支持资源访问(默认 `true`)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_CAPABILITIES_TOOLS\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.capabilities.tools\",\n \"description\": \"是否支持工具调用(默认 `true`)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.name\",\n \"description\": \"服务器名称\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVER_VERSION\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.server.version\",\n \"description\": \"服务器版本(默认 `'1.0.0'`)\",\n \"value\": \"1.0.0\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers\",\n \"description\": \"外部 MCP 服务只读清单;与数据库记录合并供受管 Agent 使用。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0\",\n \"description\": \"外部 MCP 服务只读清单;与数据库记录合并供受管 Agent 使用。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_ARGS\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.args\",\n \"description\": \"stdio 参数,不使用 shell 拼接。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_ARGS_0\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.args.0\",\n \"description\": \"stdio 参数,不使用 shell 拼接。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_COMMAND\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.command\",\n \"description\": \"stdio 程序路径;仅可信服务端配置。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_ENVIRONMENTREFS\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.environmentRefs\",\n \"description\": \"stdio 变量名到宿主凭据变量名的映射。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_HEADERENV\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.headerEnv\",\n \"description\": \"认证 Header 名到宿主凭据变量名的映射。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.id\",\n \"description\": \"服务唯一标识。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.name\",\n \"description\": \"传给原生 MCP 客户端的服务名。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_TRANSPORT\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.transport\",\n \"description\": \"原生 MCP 传输类型。\",\n \"value\": \"stdio\",\n \"constraint\": \"字符串;取值:stdio | http | sse\"\n },\n {\n \"name\": \"HAI_AI_MCP_SERVERS_0_URL\",\n \"module\": \"ai\",\n \"path\": \"ai.mcp.servers.0.url\",\n \"description\": \"HTTP/SSE 地址。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_AI_MEMORY\",\n \"module\": \"ai\",\n \"path\": \"ai.memory\",\n \"description\": \"Memory 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_ALLOWEPHEMERALFALLBACK\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.allowEphemeralFallback\",\n \"description\": \"是否允许在配置了持久化向量后端但 mem0 无法映射时退回内存存储(默认 false) 仅影响 `provider='mem0'`:当前框架适配仅映射 qdrant;其它持久化后端使用 native Provider。底层 vecdb 是 lancedb / chroma / 未知后端时,默认 fail-fast(初始化失败),避免服务重启后记忆静默丢失; 仅当显式设为 true 时才在开发或明确 E2E 环境退回内存存储(数据不持久)。 生产始终要求实际持久化连接,不能通过此开关绕过共享状态要求。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_CANDIDATEMULTIPLIER\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.candidateMultiplier\",\n \"description\": \"候选池倍数(默认 5) 检索时先从向量后端取回 `topK × candidateMultiplier` 条候选,再按 scope / 重要性等 条件在内存中过滤,最后截取 topK。用于修正「向量后端仅返回 topK,随后被 scope 过滤 掉大部分、导致同一主体下特定主题/角色记忆漏召回」的问题:候选池越大,scope 命中越充分。 native provider 会对全部候选评分,故此值仅影响向量预取宽度;mem0 provider 无法下推 scope,必须依赖更大的候选池才能保证 scope 内记忆被召回。\",\n \"value\": \"5\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_DEFAULTTOPK\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.defaultTopK\",\n \"description\": \"检索时默认返回数量(默认 10)\",\n \"value\": \"10\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_EMBEDDINGENABLED\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.embeddingEnabled\",\n \"description\": \"是否启用向量检索(默认 true,关闭则仅使用关键词匹配)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_MAXENTRIESGLOBAL\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.maxEntriesGlobal\",\n \"description\": \"全局最大记忆条数(默认 100000) 跨所有主体的总量上限,作为整体保护阈值;超过时淘汰全局最低优先级条目。\",\n \"value\": \"100000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_MAXENTRIESPEROBJECT\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.maxEntriesPerObject\",\n \"description\": \"单个主体(objectId)的最大记忆条数(默认 1000) native 淘汰按 objectId 分区触发:某个主体写入超过此上限时,只淘汰该主体自身 最低优先级的条目,不会波及其他主体的记忆。\",\n \"value\": \"1000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_PROVIDER\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.provider\",\n \"description\": \"记忆后端:native 使用框架原生存储与批量合并;mem0 将框架提取结果以 Mem0 数据格式写入 Qdrant\",\n \"value\": \"native\",\n \"constraint\": \"字符串;取值:native | mem0\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_RECENCYDECAY\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.recencyDecay\",\n \"description\": \"时间衰减系数(默认 0.95,每次检索乘以此系数调整 recency 权重)\",\n \"value\": \"0.95\",\n \"constraint\": \"数字;>= 0;<= 1\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_SYSTEMPROMPT\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.systemPrompt\",\n \"description\": \"自定义记忆提取 systemPrompt(可选,覆盖内置默认提示词)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_MEMORY_WRITEBACKRELATEDTOPK\",\n \"module\": \"ai\",\n \"path\": \"ai.memory.writebackRelatedTopK\",\n \"description\": \"写回 / 合并时检索相关记忆的数量(仅 native,默认 20)\",\n \"value\": \"20\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval\",\n \"description\": \"Retrieval 配置(预注册检索源)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources\",\n \"description\": \"预注册检索源列表\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0\",\n \"description\": \"预注册检索源列表;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_COLLECTION\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.collection\",\n \"description\": \"vecdb collection 名称\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_FILTER\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.filter\",\n \"description\": \"元数据过滤条件\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_ID\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.id\",\n \"description\": \"来源唯一标识\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_MINSCORE\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.minScore\",\n \"description\": \"最低相似度 0~1(低于此值的结果被过滤)\",\n \"value\": \"\",\n \"constraint\": \"数字;>= 0;<= 1\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_NAME\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.name\",\n \"description\": \"信源显示名\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_TOPK\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.topK\",\n \"description\": \"最大返回条数(默认 5)\",\n \"value\": \"\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_AI_RETRIEVAL_SOURCES_0_URL\",\n \"module\": \"ai\",\n \"path\": \"ai.retrieval.sources.0.url\",\n \"description\": \"信源 URL / 路径\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_SUMMARY\",\n \"module\": \"ai\",\n \"path\": \"ai.summary\",\n \"description\": \"Summary 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_SUMMARY_SYSTEMPROMPT\",\n \"module\": \"ai\",\n \"path\": \"ai.summary.systemPrompt\",\n \"description\": \"自定义摘要 systemPrompt(可选,覆盖内置默认提示词)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AI_TOKEN\",\n \"module\": \"ai\",\n \"path\": \"ai.token\",\n \"description\": \"Token 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AI_TOKEN_TOKENRATIO\",\n \"module\": \"ai\",\n \"path\": \"ai.token.tokenRatio\",\n \"description\": \"Token 估算每字符系数(默认 0.25,即 4 字符 ≈ 1 token)\",\n \"value\": \"0.25\",\n \"constraint\": \"数字;> 0\"\n },\n {\n \"name\": \"HAI_ANDROID_KEY_ALIAS\",\n \"module\": \"android\",\n \"path\": \"HAI_ANDROID_KEY_ALIAS\",\n \"description\": \"Android 容器发布签名密钥别名\",\n \"value\": \"\",\n \"constraint\": \"密钥库内用于 APK 签名的别名\"\n },\n {\n \"name\": \"HAI_ANDROID_KEY_PASSWORD\",\n \"module\": \"android\",\n \"path\": \"HAI_ANDROID_KEY_PASSWORD\",\n \"description\": \"Android 容器发布签名私钥密码\",\n \"value\": \"\",\n \"constraint\": \"仅由构建进程或 CI 注入的敏感字符串\"\n },\n {\n \"name\": \"HAI_ANDROID_KEYSTORE\",\n \"module\": \"android\",\n \"path\": \"HAI_ANDROID_KEYSTORE\",\n \"description\": \"Android 容器发布签名密钥库\",\n \"value\": \"\",\n \"constraint\": \"宿主文件路径;相对路径从项目根解析,仅只读挂载到签名容器\"\n },\n {\n \"name\": \"HAI_ANDROID_STORE_PASSWORD\",\n \"module\": \"android\",\n \"path\": \"HAI_ANDROID_STORE_PASSWORD\",\n \"description\": \"Android 容器发布签名密钥库密码\",\n \"value\": \"\",\n \"constraint\": \"仅由构建进程或 CI 注入的敏感字符串\"\n },\n {\n \"name\": \"HAI_AUDIT\",\n \"module\": \"audit\",\n \"path\": \"audit\",\n \"description\": \"事件采集、隐私脱敏、保留保护、私有备份及告警;通知和定时任务需另配通道\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts\",\n \"description\": \"以固定时间窗口统计已提交事件;目标和事件由应用配置,不内置业务角色。\",\n \"value\": \"{\\\"enabled\\\":false,\\\"maxNotificationsPerCheck\\\":100,\\\"rules\\\":[],\\\"schedule\\\":{\\\"enabled\\\":false,\\\"cron\\\":\\\"* * * * *\\\",\\\"timezone\\\":\\\"UTC\\\"}}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.enabled\",\n \"description\": \"是否检查异常事件并发送告警;开启前配置至少一条规则和真实 Reach 通道,关闭不影响审计入库。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_MAXNOTIFICATIONSPERCHECK\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.maxNotificationsPerCheck\",\n \"description\": \"每次检查最多尝试的通知数;超过的目标留待后续检查,避免突发告警挤占业务资源。\",\n \"value\": \"100\",\n \"constraint\": \"整数;>= 1;<= 1000\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules\",\n \"description\": \"告警规则列表;每条按全站匹配事件的固定窗口累计计数,不是每个账号各自计数。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 20\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0\",\n \"description\": \"告警规则列表;每条按全站匹配事件的固定窗口累计计数,不是每个账号各自计数。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_ACTIONS\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.actions\",\n \"description\": \"匹配的审计 action 全名,例如 auth.login;从实际记录复制,不支持 auth.* 通配。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 50\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_ACTIONS_0\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.actions.0\",\n \"description\": \"匹配的审计 action 全名,例如 auth.login;从实际记录复制,不支持 auth.* 通配。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_ID\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.id\",\n \"description\": \"稳定且唯一的规则编号,用于共享去重;更改编号会视为新规则。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[\\\\w-]{1,64}$\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_MINIMUMSEVERITY\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.minimumSeverity\",\n \"description\": \"参与计数的事件最低等级;低于此级别的记录仍保留,但不触发这条告警。\",\n \"value\": \"info\",\n \"constraint\": \"字符串;取值:info | warning | error | critical\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_OUTCOMES\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.outcomes\",\n \"description\": \"要统计的执行结果;默认失败和拒绝,空数组表示所有结果均参与计数。\",\n \"value\": \"[\\\"failure\\\",\\\"denied\\\"]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 3\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_OUTCOMES_0\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.outcomes.0\",\n \"description\": \"要统计的执行结果;默认失败和拒绝,空数组表示所有结果均参与计数。;此变量整体替换单个数组项\",\n \"value\": \"success\",\n \"constraint\": \"字符串;取值:success | failure | denied\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_RESOURCE\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.resource\",\n \"description\": \"只统计此资源类型的事件;省略时不按资源过滤,不填写业务敏感正文。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 256\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_SEVERITY\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.severity\",\n \"description\": \"发出通知时的告警等级;不修改原始审计事件的等级。\",\n \"value\": \"warning\",\n \"constraint\": \"字符串;取值:warning | error | critical\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_TARGETS\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.targets\",\n \"description\": \"通知接收目标;每个目标独立记录投递结果,渠道受理不等于人员已读。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 20\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_TARGETS_0\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.targets.0\",\n \"description\": \"通知接收目标;每个目标独立记录投递结果,渠道受理不等于人员已读。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_TARGETS_0_ID\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.targets.0.id\",\n \"description\": \"本规则内稳定且唯一的目标编号,用于防止多节点重复投递。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[\\\\w-]{1,64}$\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_TARGETS_0_PROVIDER\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.targets.0.provider\",\n \"description\": \"已注册的 Reach Provider 名称,例如 email;不是 smtp/api 等 Provider 类型。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_TARGETS_0_TO\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.targets.0.to\",\n \"description\": \"该通道接受的收件地址,例如邮箱或手机号;填写真实值,开发 Console 不会投递。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 1000\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_THRESHOLD\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.threshold\",\n \"description\": \"同一窗口内累计达到此次数才通知;与 IAM 登录失败锁定阈值分别配置。\",\n \"value\": \"1\",\n \"constraint\": \"整数;>= 1;<= 1000000000\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_RULES_0_WINDOWSECONDS\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.rules.0.windowSeconds\",\n \"description\": \"固定计数窗口长度,单位秒;例如 300 表示按五分钟窗口统计,不追补长期停机历史。\",\n \"value\": \"300\",\n \"constraint\": \"整数;>= 60;<= 86400\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_SCHEDULE\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.schedule\",\n \"description\": \"自动告警检查计划;宿主需接入 audit.schedulerPlan,只开启告警功能不会自动轮询。\",\n \"value\": \"{\\\"enabled\\\":false,\\\"cron\\\":\\\"* * * * *\\\",\\\"timezone\\\":\\\"UTC\\\"}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_SCHEDULE_CRON\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.schedule.cron\",\n \"description\": \"检查频率的 Cron 表达式;默认每分钟检查,窗口阈值仍由规则决定。\",\n \"value\": \"* * * * *\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_SCHEDULE_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.schedule.enabled\",\n \"description\": \"是否让 Scheduler 自动检查;需同时开启 alerts.enabled,否则仅保留计划配置。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_ALERTS_SCHEDULE_TIMEZONE\",\n \"module\": \"audit\",\n \"path\": \"audit.alerts.schedule.timezone\",\n \"description\": \"Cron 使用的 IANA 时区,例如 Asia/Shanghai;UTC 不等于北京时间。\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP\",\n \"module\": \"audit\",\n \"path\": \"audit.backup\",\n \"description\": \"可选的流式归档;自动执行由宿主现有 Scheduler 装配。\",\n \"value\": \"{\\\"enabled\\\":false,\\\"batchSize\\\":200,\\\"maxRecordBytes\\\":1048576,\\\"schedule\\\":{\\\"enabled\\\":false,\\\"cron\\\":\\\"0 2 * * *\\\",\\\"timezone\\\":\\\"UTC\\\"}}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_BATCHSIZE\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.batchSize\",\n \"description\": \"每批读取的记录数;较小更省内存但请求更多,不改变归档内容。\",\n \"value\": \"200\",\n \"constraint\": \"整数;>= 1;<= 1000\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.enabled\",\n \"description\": \"是否允许手动/计划归档审计;需已初始化的私有 Storage,关闭不影响审计采集。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_MAXRECORDBYTES\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.maxRecordBytes\",\n \"description\": \"单条归档记录的 UTF-8 字节上限;默认 1 MiB,超限报错而不截断原审计。\",\n \"value\": \"1048576\",\n \"constraint\": \"整数;>= 1024;<= 67108864\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_SCHEDULE\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.schedule\",\n \"description\": \"自动备份计划;与手动备份开关独立,备份不会删除源日志,也不是原子数据库快照。\",\n \"value\": \"{\\\"enabled\\\":false,\\\"cron\\\":\\\"0 2 * * *\\\",\\\"timezone\\\":\\\"UTC\\\"}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_SCHEDULE_CRON\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.schedule.cron\",\n \"description\": \"备份 Cron 表达式;0 2 * * * 表示在下方时区每天 02:00 执行。\",\n \"value\": \"0 2 * * *\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_SCHEDULE_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.schedule.enabled\",\n \"description\": \"是否由 Scheduler 自动备份;还需 backup.enabled=true,关闭后仍可手动备份。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_BACKUP_SCHEDULE_TIMEZONE\",\n \"module\": \"audit\",\n \"path\": \"audit.backup.schedule.timezone\",\n \"description\": \"定时备份采用的 IANA 时区;Asia/Shanghai 为北京时间,UTC 的 02:00 对应北京时间 10:00。\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_AUDIT_CAPTURE\",\n \"module\": \"audit\",\n \"path\": \"audit.capture\",\n \"description\": \"框架入口自动采集;显式 audit.log 不受此开关影响。\",\n \"value\": \"{\\\"enabled\\\":true,\\\"includeReads\\\":false}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_CAPTURE_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.capture.enabled\",\n \"description\": \"是否自动记录已接入框架入口的重要操作、失败和拒绝;关闭不阻止显式 audit.log 写入。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_CAPTURE_INCLUDEREADS\",\n \"module\": \"audit\",\n \"path\": \"audit.capture.includeReads\",\n \"description\": \"是否也采集成功读取事件;开启可追溯查询行为,但会显著增加日志量与存储开销。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_PRIVACY\",\n \"module\": \"audit\",\n \"path\": \"audit.privacy\",\n \"description\": \"凭据始终脱敏;此开关仅控制业务隐私字段。\",\n \"value\": \"{\\\"enabled\\\":true,\\\"fields\\\":[]}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_PRIVACY_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.privacy.enabled\",\n \"description\": \"是否对业务隐私字段脱敏;关闭也不会暴露密码、token 等凭据,脱敏前的内容不会恢复。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_PRIVACY_FIELDS\",\n \"module\": \"audit\",\n \"path\": \"audit.privacy.fields\",\n \"description\": \"额外脱敏的详情字段名,不区分大小写;例如 customerPhone,不要将秘密放进 action/resourceId。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_AUDIT_PRIVACY_FIELDS_0\",\n \"module\": \"audit\",\n \"path\": \"audit.privacy.fields.0\",\n \"description\": \"额外脱敏的详情字段名,不区分大小写;例如 customerPhone,不要将秘密放进 action/resourceId。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 256\"\n },\n {\n \"name\": \"HAI_AUDIT_RETENTION\",\n \"module\": \"audit\",\n \"path\": \"audit.retention\",\n \"description\": \"未传时沿用数据库保留设置;显式关闭才解除保护。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_AUDIT_RETENTION_ENABLED\",\n \"module\": \"audit\",\n \"path\": \"audit.retention.enabled\",\n \"description\": \"是否启用共享数据库的审计修改/删除/覆盖保护;配置会持久化,移除配置不会解除已有保护。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_AUDIT_RETENTION_MINDAYS\",\n \"module\": \"audit\",\n \"path\": \"audit.retention.minDays\",\n \"description\": \"保护期天数;例如 90 天内 cleanup(0) 也不能删除,到期不会自动清理日志。\",\n \"value\": \"90\",\n \"constraint\": \"整数;>= 1;<= 36500\"\n },\n {\n \"name\": \"HAI_AUDIT_USERIDCOLUMN\",\n \"module\": \"audit\",\n \"path\": \"audit.userIdColumn\",\n \"description\": \"用户表主键列名,用于 JOIN 条件\",\n \"value\": \"id\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AUDIT_USERNAMECOLUMN\",\n \"module\": \"audit\",\n \"path\": \"audit.userNameColumn\",\n \"description\": \"用户表用户名列名,用于 SELECT 输出\",\n \"value\": \"username\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AUDIT_USERTABLE\",\n \"module\": \"audit\",\n \"path\": \"audit.userTable\",\n \"description\": \"用户表名,用于 list 查询时 LEFT JOIN 获取用户名\",\n \"value\": \"hai_iam_users\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_AUTH_EVIDENCE_DIR\",\n \"module\": \"auth\",\n \"path\": \"HAI_AUTH_EVIDENCE_DIR\",\n \"description\": \"浏览器验收截图输出目录\",\n \"value\": \"\",\n \"constraint\": \"目录路径\"\n },\n {\n \"name\": \"HAI_BUILD_COMMIT\",\n \"module\": \"build\",\n \"path\": \"HAI_BUILD_COMMIT\",\n \"description\": \"当前编译目标所属的源码提交;无所属 Git 提交时明确 unknown\",\n \"value\": \"\",\n \"constraint\": \"40或64位十六进制 Git SHA,或 unknown;hai build 内部确定,不继承调用者的同名值\"\n },\n {\n \"name\": \"HAI_BUILD_ID\",\n \"module\": \"build\",\n \"path\": \"HAI_BUILD_ID\",\n \"description\": \"CLI 内部生成并向编译目标传递的产物标识;同次 SSR 构建复用\",\n \"value\": \"\",\n \"constraint\": \"非空字母、数字、下划线、点、加减号,最多128字符;显式非法值拒绝构建;hai build 不继承调用者的同名值\"\n },\n {\n \"name\": \"HAI_BUILD_STATIC\",\n \"module\": \"build\",\n \"path\": \"HAI_BUILD_STATIC\",\n \"description\": \"website模板显式静态预渲染;省略或0保持SSR,1仅用于无服务端业务模块的静态站点\",\n \"value\": \"\",\n \"constraint\": \"0 | 1;默认不启用;hai build仅compile目标透传,不能混用docker/app/desktop\"\n },\n {\n \"name\": \"HAI_CACHE\",\n \"module\": \"cache\",\n \"path\": \"cache\",\n \"description\": \"缓存后端与连接策略;多节点共享状态使用 Redis,memory 仅限单机\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CACHE_CLUSTER\",\n \"module\": \"cache\",\n \"path\": \"cache.cluster\",\n \"description\": \"集群节点列表;配置后以集群模式连接\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_CACHE_CLUSTER_0\",\n \"module\": \"cache\",\n \"path\": \"cache.cluster.0\",\n \"description\": \"集群节点列表;配置后以集群模式连接;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CACHE_CLUSTER_0_HOST\",\n \"module\": \"cache\",\n \"path\": \"cache.cluster.0.host\",\n \"description\": \"节点主机地址\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_CLUSTER_0_PORT\",\n \"module\": \"cache\",\n \"path\": \"cache.cluster.0.port\",\n \"description\": \"节点端口号(1~65535)\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_CACHE_COMMANDTIMEOUT\",\n \"module\": \"cache\",\n \"path\": \"cache.commandTimeout\",\n \"description\": \"命令执行超时(毫秒);默认 5000\",\n \"value\": \"5000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_CACHE_CONNECTTIMEOUT\",\n \"module\": \"cache\",\n \"path\": \"cache.connectTimeout\",\n \"description\": \"连接超时时间(毫秒);默认 10000\",\n \"value\": \"10000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_CACHE_DB\",\n \"module\": \"cache\",\n \"path\": \"cache.db\",\n \"description\": \"数据库编号(0~15);默认 0\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 15\"\n },\n {\n \"name\": \"HAI_CACHE_HOST\",\n \"module\": \"cache\",\n \"path\": \"cache.host\",\n \"description\": \"主机地址;默认 'localhost'\",\n \"value\": \"localhost\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_KEYPREFIX\",\n \"module\": \"cache\",\n \"path\": \"cache.keyPrefix\",\n \"description\": \"键前缀(自动加在所有键前)\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_MAXRETRIES\",\n \"module\": \"cache\",\n \"path\": \"cache.maxRetries\",\n \"description\": \"最大重试次数;默认 3\",\n \"value\": \"3\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_CACHE_PASSWORD\",\n \"module\": \"cache\",\n \"path\": \"cache.password\",\n \"description\": \"单机、Cluster 和 Sentinel 数据节点的认证密码;url 模式使用 URL 内凭据。\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_PORT\",\n \"module\": \"cache\",\n \"path\": \"cache.port\",\n \"description\": \"端口号;默认 6379\",\n \"value\": \"6379\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_CACHE_READONLY\",\n \"module\": \"cache\",\n \"path\": \"cache.readOnly\",\n \"description\": \"是否只读模式;默认 false\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_CACHE_RETRYDELAY\",\n \"module\": \"cache\",\n \"path\": \"cache.retryDelay\",\n \"description\": \"重试间隔基数(毫秒);实际间隔 = retryDelay × 重试次数;默认 50\",\n \"value\": \"50\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel\",\n \"description\": \"哨兵配置;配置后以哨兵模式连接\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL_NAME\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel.name\",\n \"description\": \"哨兵监控的主节点名称\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL_SENTINELS\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel.sentinels\",\n \"description\": \"哨兵节点列表(至少 1 个)\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL_SENTINELS_0\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel.sentinels.0\",\n \"description\": \"哨兵节点列表(至少 1 个);此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL_SENTINELS_0_HOST\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel.sentinels.0.host\",\n \"description\": \"节点主机地址\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CACHE_SENTINEL_SENTINELS_0_PORT\",\n \"module\": \"cache\",\n \"path\": \"cache.sentinel.sentinels.0.port\",\n \"description\": \"节点端口号(1~65535)\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_CACHE_TLS\",\n \"module\": \"cache\",\n \"path\": \"cache.tls\",\n \"description\": \"是否开启 TLS;默认 false\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_CACHE_TYPE\",\n \"module\": \"cache\",\n \"path\": \"cache.type\",\n \"description\": \"后端或功能类型,按枚举选择\",\n \"value\": \"memory\",\n \"constraint\": \"字符串;取值:memory | redis\"\n },\n {\n \"name\": \"HAI_CACHE_URL\",\n \"module\": \"cache\",\n \"path\": \"cache.url\",\n \"description\": \"Redis 连接 URL(如 redis://user:pass\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CONTACT_RECIPIENT\",\n \"module\": \"contact\",\n \"path\": \"HAI_CONTACT_RECIPIENT\",\n \"description\": \"企业官网联系表单的通知收件人\",\n \"value\": \"\",\n \"constraint\": \"有效邮箱地址\"\n },\n {\n \"name\": \"HAI_CONTAINER_ENGINE\",\n \"module\": \"container\",\n \"path\": \"HAI_CONTAINER_ENGINE\",\n \"description\": \"部署/集成测试使用的容器引擎\",\n \"value\": \"\",\n \"constraint\": \"docker | podman\"\n },\n {\n \"name\": \"HAI_CORE\",\n \"module\": \"core\",\n \"path\": \"core\",\n \"description\": \"应用名称、环境、语言和日志的基础设置;整体覆盖会替换未提供的字段\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CORE_DEFAULTLOCALE\",\n \"module\": \"core\",\n \"path\": \"core.defaultLocale\",\n \"description\": \"默认语言(默认 'zh-CN')\",\n \"value\": \"zh-CN\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CORE_ENV\",\n \"module\": \"core\",\n \"path\": \"core.env\",\n \"description\": \"运行环境(默认 'development')\",\n \"value\": \"development\",\n \"constraint\": \"字符串;取值:development | production | test | staging\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING\",\n \"module\": \"core\",\n \"path\": \"core.logging\",\n \"description\": \"日志配置(可选)\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING_CONTEXT\",\n \"module\": \"core\",\n \"path\": \"core.logging.context\",\n \"description\": \"默认上下文,会自动添加到每条日志\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING_FORMAT\",\n \"module\": \"core\",\n \"path\": \"core.logging.format\",\n \"description\": \"日志格式:'json' 用于生产环境,'pretty' 用于开发环境(默认 'json')\",\n \"value\": \"json\",\n \"constraint\": \"字符串;取值:json | pretty\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING_LEVEL\",\n \"module\": \"core\",\n \"path\": \"core.logging.level\",\n \"description\": \"日志级别(默认 'info')\",\n \"value\": \"info\",\n \"constraint\": \"字符串;取值:trace | debug | info | warn | error | fatal\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING_REDACT\",\n \"module\": \"core\",\n \"path\": \"core.logging.redact\",\n \"description\": \"额外业务隐私的日志字段路径,如 customer.email、recipients[*].phone;* 匹配一层,区分大小写,默认 []。已知密码/令牌始终脱敏。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_CORE_LOGGING_REDACT_0\",\n \"module\": \"core\",\n \"path\": \"core.logging.redact.0\",\n \"description\": \"额外业务隐私的日志字段路径,如 customer.email、recipients[*].phone;* 匹配一层,区分大小写,默认 []。已知密码/令牌始终脱敏。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CORE_NAME\",\n \"module\": \"core\",\n \"path\": \"core.name\",\n \"description\": \"应用名称(默认 'hai Admin')\",\n \"value\": \"hai Admin\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CORE_VERSION\",\n \"module\": \"core\",\n \"path\": \"core.version\",\n \"description\": \"应用版本(默认 '0.1.0')\",\n \"value\": \"0.1.0\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_CRYPTO\",\n \"module\": \"crypto\",\n \"path\": \"crypto\",\n \"description\": \"宿主应用声明的加密和传输参数;密钥只在服务端或受保护运行环境提供\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体替换该配置\"\n },\n {\n \"name\": \"HAI_CRYPTO_TRANSPORT\",\n \"module\": \"crypto\",\n \"path\": \"HAI_CRYPTO_TRANSPORT\",\n \"description\": \"桌面示例公开传输配置;在构建阶段与浏览器使用同一 Schema 校验\",\n \"value\": \"false\",\n \"constraint\": \"false 关闭;或 JSON/YAML 对象,keyExchangePath 须以 / 开头;不接受 true\"\n },\n {\n \"name\": \"HAI_CRYPTO_TRANSPORT_KEYEXCHANGEPATH\",\n \"module\": \"crypto\",\n \"path\": \"HAI_CRYPTO_TRANSPORT_KEYEXCHANGEPATH\",\n \"description\": \"桌面示例公开密钥交换端点,构建期插值\",\n \"value\": \"/_hai/key-exchange\",\n \"constraint\": \"以 / 开头的路径\"\n },\n {\n \"name\": \"HAI_DB\",\n \"module\": \"db\",\n \"path\": \"db\",\n \"description\": \"关系数据库后端及连接池;按 type 选择 SQLite、PostgreSQL 或 MySQL 参数\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DB_DATABASE\",\n \"module\": \"db\",\n \"path\": \"db.database\",\n \"description\": \"数据库:SQLite文件路径或:memory:;PostgreSQL必填名称;MySQL无URL时必填,URL模式从URL读取\",\n \"value\": \"./data/admin.db\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DB_HOST\",\n \"module\": \"db\",\n \"path\": \"db.host\",\n \"description\": \"数据库主机地址(默认 localhost)\",\n \"value\": \"localhost\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_DB_MYSQL\",\n \"module\": \"db\",\n \"path\": \"db.mysql\",\n \"description\": \"MySQL 特定选项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DB_MYSQL_CHARSET\",\n \"module\": \"db\",\n \"path\": \"db.mysql.charset\",\n \"description\": \"字符集(默认 utf8mb4),推荐使用 utf8mb4 支持完整 Unicode\",\n \"value\": \"utf8mb4\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_DB_OPERATIONLOG\",\n \"module\": \"db\",\n \"path\": \"db.operationLog\",\n \"description\": \"db 操作日志的读写开关、级别与字段截断规则\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DB_OPERATIONLOG_LEVEL\",\n \"module\": \"db\",\n \"path\": \"db.operationLog.level\",\n \"description\": \"操作日志的输出级别\",\n \"value\": \"debug\",\n \"constraint\": \"字符串;取值:info | debug | trace\"\n },\n {\n \"name\": \"HAI_DB_OPERATIONLOG_MAXLENGTH\",\n \"module\": \"db\",\n \"path\": \"db.operationLog.maxLength\",\n \"description\": \"安全数量摘要的最大字符数;0 表示省略摘要,永不记录 SQL 原文或参数值。\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_DB_OPERATIONLOG_READ\",\n \"module\": \"db\",\n \"path\": \"db.operationLog.read\",\n \"description\": \"是否记录读取操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_OPERATIONLOG_WRITE\",\n \"module\": \"db\",\n \"path\": \"db.operationLog.write\",\n \"description\": \"是否记录写入操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_PASSWORD\",\n \"module\": \"db\",\n \"path\": \"db.password\",\n \"description\": \"数据库密码\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_DB_POOL\",\n \"module\": \"db\",\n \"path\": \"db.pool\",\n \"description\": \"连接池配置:PostgreSQL支持min/idleTimeout;MySQL仅max/acquireTimeout/queueLimit,拒绝其他字段\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DB_POOL_ACQUIRETIMEOUT\",\n \"module\": \"db\",\n \"path\": \"db.pool.acquireTimeout\",\n \"description\": \"获取连接超时,毫秒(默认10000);PostgreSQL >=0,0禁用;MySQL排队+建连总期限为1–2147483647\",\n \"value\": \"10000\",\n \"constraint\": \"整数;PostgreSQL >=0(0禁用);MySQL 1–2147483647\"\n },\n {\n \"name\": \"HAI_DB_POOL_IDLETIMEOUT\",\n \"module\": \"db\",\n \"path\": \"db.pool.idleTimeout\",\n \"description\": \"PostgreSQL 空闲连接超时,毫秒(默认 30000;0 禁用)\",\n \"value\": \"30000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_DB_POOL_MAX\",\n \"module\": \"db\",\n \"path\": \"db.pool.max\",\n \"description\": \"最大连接数(默认 10)\",\n \"value\": \"10\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_DB_POOL_MIN\",\n \"module\": \"db\",\n \"path\": \"db.pool.min\",\n \"description\": \"PostgreSQL 已建立连接的最小保留数(默认 1,不主动预建)\",\n \"value\": \"1\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_DB_POOL_QUEUELIMIT\",\n \"module\": \"db\",\n \"path\": \"db.pool.queueLimit\",\n \"description\": \"MySQL 等待队列最大请求数(默认 1000;正整数,不支持无限队列)\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_DB_PORT\",\n \"module\": \"db\",\n \"path\": \"db.port\",\n \"description\": \"数据库端口 - PostgreSQL 默认 5432 - MySQL 默认 3306\",\n \"value\": \"5432\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_DB_SQLITE\",\n \"module\": \"db\",\n \"path\": \"db.sqlite\",\n \"description\": \"SQLite 特定选项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DB_SQLITE_EXECUTOR\",\n \"module\": \"db\",\n \"path\": \"db.sqlite.executor\",\n \"description\": \"执行方式(默认 sync)。 - `sync`:主线程直接执行 better-sqlite3(同步阻塞主线程事件循环)。 - `worker`:在专用 worker 线程持有唯一连接执行,把阻塞移出主线程。 注意 WAL 只改善数据库锁并发,无法避免 better-sqlite3 同步调用占用调用线程。\",\n \"value\": \"sync\",\n \"constraint\": \"字符串;取值:sync | worker\"\n },\n {\n \"name\": \"HAI_DB_SQLITE_READONLY\",\n \"module\": \"db\",\n \"path\": \"db.sqlite.readonly\",\n \"description\": \"是否只读模式(默认 false)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_SQLITE_WALMODE\",\n \"module\": \"db\",\n \"path\": \"db.sqlite.walMode\",\n \"description\": \"是否启用 WAL 模式(默认 true),可提高并发读写性能\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_SQLITE_WORKERCONNECTTIMEOUTMS\",\n \"module\": \"db\",\n \"path\": \"db.sqlite.workerConnectTimeoutMs\",\n \"description\": \"worker 执行方式下等待连接打开的超时(毫秒,默认 10000)\",\n \"value\": \"10000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_DB_SSL\",\n \"module\": \"db\",\n \"path\": \"db.ssl\",\n \"description\": \"TLS:PostgreSQL使用其模式;MySQL仅false或严格对象,空对象默认校验证书链和DNS身份\",\n \"value\": \"false\",\n \"constraint\": \"MySQL:false 或严格 TLS 对象({} 默认校验证书链和 DNS 身份);PostgreSQL:布尔值、require/prefer/allow/disable 或 TLS 对象\"\n },\n {\n \"name\": \"HAI_DB_SSL_CA\",\n \"module\": \"db\",\n \"path\": \"db.ssl.ca\",\n \"description\": \"MySQL 信任的 CA,PEM 内容;省略时使用 Node 信任库\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DB_SSL_CERT\",\n \"module\": \"db\",\n \"path\": \"db.ssl.cert\",\n \"description\": \"MySQL 客户端证书,PEM 内容;必须同时提供 key\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DB_SSL_KEY\",\n \"module\": \"db\",\n \"path\": \"db.ssl.key\",\n \"description\": \"MySQL 客户端私钥,PEM 内容;必须同时提供 cert\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DB_SSL_REJECTUNAUTHORIZED\",\n \"module\": \"db\",\n \"path\": \"db.ssl.rejectUnauthorized\",\n \"description\": \"MySQL 是否校验证书链(默认 true);false 明确放弃服务端认证\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_SSL_VERIFYIDENTITY\",\n \"module\": \"db\",\n \"path\": \"db.ssl.verifyIdentity\",\n \"description\": \"MySQL 是否验证 DNS 主机身份(默认 true);仅证书链验证开启时有效\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DB_TYPE\",\n \"module\": \"db\",\n \"path\": \"db.type\",\n \"description\": \"后端或功能类型,按枚举选择\",\n \"value\": \"sqlite\",\n \"constraint\": \"字符串;取值:sqlite | postgresql | mysql\"\n },\n {\n \"name\": \"HAI_DB_URL\",\n \"module\": \"db\",\n \"path\": \"db.url\",\n \"description\": \"网络数据库URL;MySQL空串表示使用分字段,非空仅mysql://且拒绝query/fragment,优先于host/port/database/user/password\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri;取值:\"\n },\n {\n \"name\": \"HAI_DB_USER\",\n \"module\": \"db\",\n \"path\": \"db.user\",\n \"description\": \"数据库用户名\",\n \"value\": \"postgres\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_DEPLOY\",\n \"module\": \"deploy\",\n \"path\": \"deploy\",\n \"description\": \"项目部署目标、服务与资源开通设置;由 CLI 部署入口读取,不是运行时业务开关\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_ASKPASS_PASSWORD\",\n \"module\": \"deploy\",\n \"path\": \"HAI_DEPLOY_ASKPASS_PASSWORD\",\n \"description\": \"凭据输入;使用位置 packages/deploy/src/container/deploy-ssh-askpass.ts\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串;启用相应功能时必填,不得提交真实值\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container\",\n \"description\": \"Docker Compose 部署参数;构建配置位于项目 hai.json.build。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose\",\n \"description\": \"以项目镜像角色为单位附加 Compose 运行参数。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE_SERVICES\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose.services\",\n \"description\": \"按已构建项目的镜像角色分别设置容器扩展。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE_SERVICES_SERV\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose.services.serv\",\n \"description\": \"API 后端容器的 Compose 扩展。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE_SERVICES_SERV_EXTRA_HOSTS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose.services.serv.extra_hosts\",\n \"description\": \"容器内的主机名到 IPv4 或 IPv6 地址映射,不能覆盖框架内部服务名。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE_SERVICES_WEB\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose.services.web\",\n \"description\": \"Web 容器的 Compose 扩展。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_COMPOSE_SERVICES_WEB_EXTRA_HOSTS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.compose.services.web.extra_hosts\",\n \"description\": \"容器内的主机名到 IPv4 或 IPv6 地址映射,不能覆盖框架内部服务名。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_CONTAINER_S3ENGINE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.container.s3Engine\",\n \"description\": \"自建 S3 服务实现;协议仍为 storage.type=s3。\",\n \"value\": \"rustfs\",\n \"constraint\": \"字符串;取值:rustfs | minio\"\n },\n {\n \"name\": \"HAI_DEPLOY_ENVIRONMENT\",\n \"module\": \"deploy\",\n \"path\": \"deploy.environment\",\n \"description\": \"部署环境文件模式;dev/test/prod 或自定义模式,禁止 local/example。\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][\\\\w-]*$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PRIVATE_PROXY\",\n \"module\": \"deploy\",\n \"path\": \"HAI_DEPLOY_PRIVATE_PROXY\",\n \"description\": \"受管 Compose 私有代理拓扑的内部标志,由部署工具生成;应用用户不要手动设置\",\n \"value\": \"\",\n \"constraint\": \"仅后端无公开端口且存在入口代理时为 1;普通宿主不设置,使用显式 trustedProxies 配置自管入口\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider\",\n \"description\": \"应用部署目标平台及其连接参数,按 type 选择对应平台字段\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose\",\n \"description\": \"应用暴露方式\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_CONTAINERPORT\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.containerPort\",\n \"description\": \"容器内监听端口(adapter-node 默认 3000)\",\n \"value\": \"3000\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HOSTPORT\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.hostPort\",\n \"description\": \"宿主机映射端口\",\n \"value\": \"18080\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https\",\n \"description\": \"可选 HTTPS 入口;files 使用已有证书,letsencrypt 使用官方 Certbot 申请续期,省略保持 HTTP\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_ACCEPTTERMS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.acceptTerms\",\n \"description\": \"明确同意 Let’s Encrypt 服务条款后才可设置为 true\",\n \"value\": \"true\",\n \"constraint\": \"true;取值:true\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_CERTIFICATEFILE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.certificateFile\",\n \"description\": \"PEM 完整证书链路径,相对工程根或绝对路径;打包时复制到私有发布目录\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_DOMAIN\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.domain\",\n \"description\": \"HTTPS 公开域名;证书必须匹配该域名\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 253;正则 ^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_EMAIL\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.email\",\n \"description\": \"Let’s Encrypt 账号联系邮箱\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 email;正则 ^(?:[A-Za-z0-9_'+\\\\-]+\\\\.)*[A-Za-z0-9_'+\\\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\\\-]*\\\\.)+[A-Za-z]{2,}$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_PORT\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.port\",\n \"description\": \"HTTPS 宿主端口,默认 443,须与 HTTP 端口不同\",\n \"value\": \"443\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_PRIVATEKEYFILE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.privateKeyFile\",\n \"description\": \"未加密 PEM 私钥路径,相对工程根或绝对路径;必须与证书匹配\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_REDIRECTHTTP\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.redirectHttp\",\n \"description\": \"普通 HTTP 请求是否以 308 跳转至 HTTPS,健康检查和 ACME 挑战除外\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_HTTPS_TYPE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.https.type\",\n \"description\": \"应用部署:平台/暴露方式,按所在节点的枚举选择\",\n \"value\": \"files\",\n \"constraint\": \"字符串;取值:files | letsencrypt\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_EXPOSE_TYPE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.expose.type\",\n \"description\": \"应用部署:平台/暴露方式,按所在节点的枚举选择\",\n \"value\": \"port\",\n \"constraint\": \"字符串;取值:port\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_REMOTE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.remote\",\n \"description\": \"远程主机运行参数\",\n \"value\": \"{\\\"baseDir\\\":\\\"/opt/hai/apps\\\",\\\"runtime\\\":\\\"auto\\\"}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_REMOTE_BASEDIR\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.remote.baseDir\",\n \"description\": \"远程应用根目录\",\n \"value\": \"/opt/hai/apps\",\n \"constraint\": \"字符串;正则 ^\\\\/[\\\\w/. -]+$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_REMOTE_RUNTIME\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.remote.runtime\",\n \"description\": \"远程容器运行时(auto 优先 podman)\",\n \"value\": \"auto\",\n \"constraint\": \"字符串;取值:auto | docker | podman\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh\",\n \"description\": \"SSH 连接参数\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_AUTH\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.auth\",\n \"description\": \"认证方式;省略时非空 password 使用密码,否则保留私钥/agent;显式 key 忽略残留密码。\",\n \"value\": \"key\",\n \"constraint\": \"字符串;取值:key | password\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_CONNECTTIMEOUTSECONDS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.connectTimeoutSeconds\",\n \"description\": \"连接超时(秒)\",\n \"value\": \"10\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_HOST\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.host\",\n \"description\": \"远程主机地址或 ~/.ssh/config 中的 Host 别名\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^[a-z0-9][a-z0-9.:-]*$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_IDENTITYFILE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.identityFile\",\n \"description\": \"私钥文件路径(省略时使用 ssh-agent 或 ~/.ssh 默认密钥)\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_KNOWNHOSTSFILE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.knownHostsFile\",\n \"description\": \"known_hosts 文件路径(省略时使用默认;配合 CI/临时环境隔离主机指纹)\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_PASSWORD\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.password\",\n \"description\": \"SSH 密码(保留原值);密码方式必须非空、无 CR/LF/NUL,UTF-8 不超过 1023 字节。\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_PORT\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.port\",\n \"description\": \"SSH 端口\",\n \"value\": \"22\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_STRICTHOSTKEYCHECKING\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.strictHostKeyChecking\",\n \"description\": \"严格主机密钥校验,默认开启(true→accept-new 首次信任并拒绝变更;false→关闭校验)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_SSH_USERNAME\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.ssh.username\",\n \"description\": \"SSH 用户名\",\n \"value\": \"deploy\",\n \"constraint\": \"字符串;正则 ^[a-z_][\\\\w-]*$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_TOKEN\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.token\",\n \"description\": \"应用部署:部署平台访问令牌\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_TRUSTEDEDGEPROXIES\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.trustedEdgeProxies\",\n \"description\": \"Nginx 前方可信负载均衡的 IP/CIDR;省略时不接受外部转发头。\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_TRUSTEDEDGEPROXIES_0\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.trustedEdgeProxies.0\",\n \"description\": \"Nginx 前方可信负载均衡的 IP/CIDR;省略时不接受外部转发头。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_DEPLOY_PROVIDER_TYPE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.provider.type\",\n \"description\": \"应用部署:平台/暴露方式,按所在节点的枚举选择\",\n \"value\": \"docker-ssh\",\n \"constraint\": \"字符串;取值:vercel | docker-ssh\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services\",\n \"description\": \"自动开通依赖服务的服务商及连接配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_CACHE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.cache\",\n \"description\": \"自动开通缓存服务的服务商及连接配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_CACHE_APIKEY\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.cache.apiKey\",\n \"description\": \"自动开通 cache 服务:服务商 API 密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_CACHE_EMAIL\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.cache.email\",\n \"description\": \"自动开通 cache 服务:服务商账号邮箱\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 email;正则 ^(?:[A-Za-z0-9_'+\\\\-]+\\\\.)*[A-Za-z0-9_'+\\\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\\\-]*\\\\.)+[A-Za-z]{2,}$\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_CACHE_PROVISIONER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.cache.provisioner\",\n \"description\": \"自动开通 cache 服务:资源开通服务商\",\n \"value\": \"upstash\",\n \"constraint\": \"字符串;取值:upstash\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_DB\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.db\",\n \"description\": \"自动开通关系数据库服务的服务商及连接配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_DB_APIKEY\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.db.apiKey\",\n \"description\": \"自动开通 db 服务:服务商 API 密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_DB_PROVISIONER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.db.provisioner\",\n \"description\": \"自动开通 db 服务:资源开通服务商\",\n \"value\": \"neon\",\n \"constraint\": \"字符串;取值:neon\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_EMAIL\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.email\",\n \"description\": \"自动开通 email 服务:服务商账号邮箱\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_EMAIL_APIKEY\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.email.apiKey\",\n \"description\": \"自动开通 email 服务:服务商 API 密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_EMAIL_FROM\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.email.from\",\n \"description\": \"自动开通 email 服务:已验证域名的发件邮箱\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 email;正则 ^(?:[A-Za-z0-9_'+\\\\-]+\\\\.)*[A-Za-z0-9_'+\\\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\\\-]*\\\\.)+[A-Za-z]{2,}$\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_EMAIL_PROVISIONER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.email.provisioner\",\n \"description\": \"自动开通 email 服务:资源开通服务商\",\n \"value\": \"resend\",\n \"constraint\": \"字符串;取值:resend\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_SMS\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.sms\",\n \"description\": \"是否允许短信验证码\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_SMS_ACCESSKEYID\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.sms.accessKeyId\",\n \"description\": \"自动开通 sms 服务:服务商访问密钥 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_SMS_ACCESSKEYSECRET\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.sms.accessKeySecret\",\n \"description\": \"自动开通 sms 服务:服务商访问密钥 Secret\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_SMS_PROVISIONER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.sms.provisioner\",\n \"description\": \"自动开通 sms 服务:资源开通服务商\",\n \"value\": \"aliyun\",\n \"constraint\": \"字符串;取值:aliyun\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_SMS_SIGNNAME\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.sms.signName\",\n \"description\": \"自动开通 sms 服务:短信服务审核通过的签名\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage\",\n \"description\": \"自动开通对象存储服务的服务商及连接配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE_ACCESSKEYID\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage.accessKeyId\",\n \"description\": \"自动开通 storage 服务:服务商访问密钥 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE_ACCOUNTID\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage.accountId\",\n \"description\": \"自动开通 storage 服务:Cloudflare 账号 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE_APITOKEN\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage.apiToken\",\n \"description\": \"自动开通 storage 服务:Cloudflare API 令牌\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE_PROVISIONER\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage.provisioner\",\n \"description\": \"自动开通 storage 服务:资源开通服务商\",\n \"value\": \"cloudflare-r2\",\n \"constraint\": \"字符串;取值:cloudflare-r2\"\n },\n {\n \"name\": \"HAI_DEPLOY_SERVICES_STORAGE_SECRETACCESSKEY\",\n \"module\": \"deploy\",\n \"path\": \"deploy.services.storage.secretAccessKey\",\n \"description\": \"自动开通 storage 服务:对象存储访问密钥 Secret\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_DOCKER_PROD_BUILD\",\n \"module\": \"docker\",\n \"path\": \"HAI_DOCKER_PROD_BUILD\",\n \"description\": \"容器生产构建时省略声明文件和 sourcemap\",\n \"value\": \"\",\n \"constraint\": \"true 启用;其余值关闭\"\n },\n {\n \"name\": \"HAI_E2E\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E\",\n \"description\": \"示例/模板端到端测试开关\",\n \"value\": \"\",\n \"constraint\": \"1 启用;其余值关闭\"\n },\n {\n \"name\": \"HAI_E2E_APP_URL\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_APP_URL\",\n \"description\": \"Fullstack 移动端浏览器预览验收地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;同时决定对应预览服务的监听地址\"\n },\n {\n \"name\": \"HAI_E2E_DATA_ROOT\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_DATA_ROOT\",\n \"description\": \"端到端测试的隔离运行数据目录\",\n \"value\": \"\",\n \"constraint\": \"目录路径\"\n },\n {\n \"name\": \"HAI_E2E_DESKTOP_URL\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_DESKTOP_URL\",\n \"description\": \"Fullstack 桌面端浏览器预览验收地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;同时决定对应预览服务的监听地址\"\n },\n {\n \"name\": \"HAI_E2E_GROUP\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_GROUP\",\n \"description\": \"环境入口;使用位置 packages/cli/templates/apps/fullstack/playwright.config.ts.hbs\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"HAI_E2E_LIVE\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_LIVE\",\n \"description\": \"AI 示例启用真实厂商端到端测试\",\n \"value\": \"\",\n \"constraint\": \"1 启用;其余值关闭\"\n },\n {\n \"name\": \"HAI_E2E_MOCK\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_MOCK\",\n \"description\": \"AI 示例使用确定性端到端测试服务\",\n \"value\": \"\",\n \"constraint\": \"1 启用;其余值关闭\"\n },\n {\n \"name\": \"HAI_E2E_WEB_URL\",\n \"module\": \"e2e\",\n \"path\": \"HAI_E2E_WEB_URL\",\n \"description\": \"Fullstack Web 端验收地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;同时决定对应预览服务的监听地址\"\n },\n {\n \"name\": \"HAI_FEEDBACK\",\n \"module\": \"feedback\",\n \"path\": \"feedback\",\n \"description\": \"问题反馈采集、证据容量、私有归档和独立通知;不会自动启用其他业务通知\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_FEEDBACK_ADMINURL\",\n \"module\": \"feedback\",\n \"path\": \"feedback.adminUrl\",\n \"description\": \"管理员通知中的反馈管理页面地址。\",\n \"value\": \"http://localhost:5173/admin/feedback\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_FEEDBACK_APPID\",\n \"module\": \"feedback\",\n \"path\": \"feedback.appId\",\n \"description\": \"反馈所属应用标识;应与浏览器及 API 入口配置一致。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_FEEDBACK_APPVERSION\",\n \"module\": \"feedback\",\n \"path\": \"feedback.appVersion\",\n \"description\": \"当前应用版本,作为默认诊断信息保存。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 128\"\n },\n {\n \"name\": \"HAI_FEEDBACK_BUILDID\",\n \"module\": \"feedback\",\n \"path\": \"feedback.buildId\",\n \"description\": \"构建标识,帮助定位发布产物。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 128\"\n },\n {\n \"name\": \"HAI_FEEDBACK_BUSINESSCOLLECTIONTIMEOUTMS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.businessCollectionTimeoutMs\",\n \"description\": \"业务 collectEvidence 异步回调的等待上限,单位毫秒;超时后重试采集任务。\",\n \"value\": \"30000\",\n \"constraint\": \"整数;>= 1;<= 300000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_COLLECTIONTIMEOUTMS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.collectionTimeoutMs\",\n \"description\": \"补充材料收集超时,单位毫秒;超时后冻结为完整或部分材料。\",\n \"value\": \"60000\",\n \"constraint\": \"整数;>= 0;<= 300000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_COMMIT\",\n \"module\": \"feedback\",\n \"path\": \"feedback.commit\",\n \"description\": \"源码提交标识,帮助定位对应代码。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 128\"\n },\n {\n \"name\": \"HAI_FEEDBACK_CONSOLECONTENT\",\n \"module\": \"feedback\",\n \"path\": \"feedback.consoleContent\",\n \"description\": \"console 通知内容;metadata 只输出定位和采集状态,summary 显式加入通用脱敏摘要。\",\n \"value\": \"metadata\",\n \"constraint\": \"字符串;取值:metadata | summary\"\n },\n {\n \"name\": \"HAI_FEEDBACK_ENVALLOWLIST\",\n \"module\": \"feedback\",\n \"path\": \"feedback.envAllowlist\",\n \"description\": \"允许采集的服务端环境变量名;凭据类名称仍按敏感信息策略排除。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_FEEDBACK_ENVALLOWLIST_0\",\n \"module\": \"feedback\",\n \"path\": \"feedback.envAllowlist.0\",\n \"description\": \"允许采集的服务端环境变量名;凭据类名称仍按敏感信息策略排除。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_FEEDBACK_EXPORTRETENTIONHOURS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.exportRetentionHours\",\n \"description\": \"已完成导出的有效小时数;过期禁止下载,后台删除对象,默认 24 小时。\",\n \"value\": \"24\",\n \"constraint\": \"整数;>= 1;<= 720\"\n },\n {\n \"name\": \"HAI_FEEDBACK_LEASEMS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.leaseMs\",\n \"description\": \"持久任务执行租约时长,单位毫秒;过期后允许其他实例接管。\",\n \"value\": \"30000\",\n \"constraint\": \"整数;>= 1000;<= 300000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXATTACHMENTBYTES\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxAttachmentBytes\",\n \"description\": \"单个附件允许的最大字节数;同时受总预算约束。\",\n \"value\": \"5242880\",\n \"constraint\": \"整数;>= 1;<= 5242880\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXATTEMPTS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxAttempts\",\n \"description\": \"汇集、通知、Webhook 和导出任务最大尝试次数;到期清理持续重试。\",\n \"value\": \"5\",\n \"constraint\": \"整数;>= 1;<= 20\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXBYTESPERUSERDAY\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxBytesPerUserDay\",\n \"description\": \"单个用户每日预留存储字节(报告与最多历史导出);默认 2 GiB。\",\n \"value\": \"2147483648\",\n \"constraint\": \"整数;>= 4194304;<= 1099511627776\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXEVIDENCEBYTES\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxEvidenceBytes\",\n \"description\": \"单份反馈累计证据允许的最大字节数。\",\n \"value\": \"4194304\",\n \"constraint\": \"整数;>= 1024;<= 4194304\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXEVIDENCECOUNT\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxEvidenceCount\",\n \"description\": \"单份反馈累计证据允许的最大条数。\",\n \"value\": \"2000\",\n \"constraint\": \"整数;>= 1;<= 10000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXEXPORTSPERREPORT\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxExportsPerReport\",\n \"description\": \"单份报告最多历史导出数;已有有效快照复用,不重复计数。\",\n \"value\": \"5\",\n \"constraint\": \"整数;>= 1;<= 20\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXREPORTSPERUSERDAY\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxReportsPerUserDay\",\n \"description\": \"单个用户按数据库 UTC 日累计受理上限;幂等重试不重复计数。\",\n \"value\": \"20\",\n \"constraint\": \"整数;>= 1;<= 10000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXSTOREDBYTESPERSCOPE\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxStoredBytesPerScope\",\n \"description\": \"应用内单个 scope 的持久材料预留容量;到期清理成功后释放,默认 10 GiB。\",\n \"value\": \"10737418240\",\n \"constraint\": \"整数;>= 4194304;<= 1099511627776\"\n },\n {\n \"name\": \"HAI_FEEDBACK_MAXTOTALBYTES\",\n \"module\": \"feedback\",\n \"path\": \"feedback.maxTotalBytes\",\n \"description\": \"未压缩导出总预算;客户端、附件总量和传输预算由此派生。\",\n \"value\": \"33554432\",\n \"constraint\": \"整数;>= 4194304;<= 41943040\"\n },\n {\n \"name\": \"HAI_FEEDBACK_NOTIFICATIONMODE\",\n \"module\": \"feedback\",\n \"path\": \"feedback.notificationMode\",\n \"description\": \"disabled 不通知,console 默认仅输出元数据,reach 使用已有通知通道。\",\n \"value\": \"reach\",\n \"constraint\": \"字符串;取值:disabled | console | reach\"\n },\n {\n \"name\": \"HAI_FEEDBACK_NOTIFICATIONPROVIDER\",\n \"module\": \"feedback\",\n \"path\": \"feedback.notificationProvider\",\n \"description\": \"已初始化 Reach Provider 的唯一名称,不限制为邮件。\",\n \"value\": \"email\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_FEEDBACK_RECIPIENTS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.recipients\",\n \"description\": \"Reach 接收方,由实际 Provider 校验邮箱、手机号或业务目的地。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 20\"\n },\n {\n \"name\": \"HAI_FEEDBACK_RECIPIENTS_0\",\n \"module\": \"feedback\",\n \"path\": \"feedback.recipients.0\",\n \"description\": \"Reach 接收方,由实际 Provider 校验邮箱、手机号或业务目的地。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 320\"\n },\n {\n \"name\": \"HAI_FEEDBACK_RETENTIONDAYS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.retentionDays\",\n \"description\": \"已受理反馈及对象附件的保留天数。\",\n \"value\": \"30\",\n \"constraint\": \"整数;>= 1;<= 3650\"\n },\n {\n \"name\": \"HAI_FEEDBACK_WEBHOOKSECRET\",\n \"module\": \"feedback\",\n \"path\": \"feedback.webhookSecret\",\n \"description\": \"Webhook HMAC-SHA256 签名密钥;空字符串不签名,仅服务端私有环境配置。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 4096\"\n },\n {\n \"name\": \"HAI_FEEDBACK_WEBHOOKTIMEOUTMS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.webhookTimeoutMs\",\n \"description\": \"单次 Webhook 请求超时,单位毫秒;非 2xx 或超时均进入持久重试。\",\n \"value\": \"10000\",\n \"constraint\": \"整数;>= 1;<= 60000\"\n },\n {\n \"name\": \"HAI_FEEDBACK_WEBHOOKURL\",\n \"module\": \"feedback\",\n \"path\": \"feedback.webhookUrl\",\n \"description\": \"反馈采集结束后的 Webhook 地址;空字符串禁用,只允许可信 HTTP(S) 地址且不跟随重定向。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最大字符数 2048\"\n },\n {\n \"name\": \"HAI_FEEDBACK_WORKERINTERVALMS\",\n \"module\": \"feedback\",\n \"path\": \"feedback.workerIntervalMs\",\n \"description\": \"持久任务扫描间隔,单位毫秒;零值由宿主手动运行任务。\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 0;<= 60000\"\n },\n {\n \"name\": \"HAI_IAM\",\n \"module\": \"iam\",\n \"path\": \"iam\",\n \"description\": \"账号认证、密码、会话和访问策略;仅在服务端修改,重启后对对应入口生效\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_ACCOUNTS\",\n \"module\": \"iam\",\n \"path\": \"iam.accounts\",\n \"description\": \"账号自动休眠策略;未配置时不启动扫描。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_ACCOUNTS_DORMANTAFTERDAYS\",\n \"module\": \"iam\",\n \"path\": \"iam.accounts.dormantAfterDays\",\n \"description\": \"连续未成功登录多少天后休眠,0 关闭。未登录账号从创建时间起算。\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 36500\"\n },\n {\n \"name\": \"HAI_IAM_ACCOUNTS_SCANINTERVALSECONDS\",\n \"module\": \"iam\",\n \"path\": \"iam.accounts.scanIntervalSeconds\",\n \"description\": \"自动扫描间隔(秒);开启自动休眠时执行,默认每小时。\",\n \"value\": \"3600\",\n \"constraint\": \"整数;>= 60;<= 86400\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements\",\n \"description\": \"协议展示配置\",\n \"value\": \"{\\\"showOnRegister\\\":true,\\\"showOnLogin\\\":false}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_PRIVACYPOLICYMARKDOWN\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.privacyPolicyMarkdown\",\n \"description\": \"隐私协议 Markdown 正文;YAML 使用 | 保留段落和换行。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_PRIVACYPOLICYURL\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.privacyPolicyUrl\",\n \"description\": \"隐私协议 URL\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_SHOWONLOGIN\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.showOnLogin\",\n \"description\": \"登录时展示协议\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_SHOWONREGISTER\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.showOnRegister\",\n \"description\": \"注册时展示协议\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_USERAGREEMENTMARKDOWN\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.userAgreementMarkdown\",\n \"description\": \"用户协议 Markdown 正文;同时配置 URL 时优先显示正文。\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_IAM_AGREEMENTS_USERAGREEMENTURL\",\n \"module\": \"iam\",\n \"path\": \"iam.agreements.userAgreementUrl\",\n \"description\": \"用户协议 URL\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_IAM_APIKEY\",\n \"module\": \"iam\",\n \"path\": \"iam.apikey\",\n \"description\": \"API Key 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_APIKEY_DEFAULTEXPIRATIONDAYS\",\n \"module\": \"iam\",\n \"path\": \"iam.apikey.defaultExpirationDays\",\n \"description\": \"API Key 默认有效期(天,0 表示永不过期,默认 0)\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_APIKEY_MAXKEYSPERUSER\",\n \"module\": \"iam\",\n \"path\": \"iam.apikey.maxKeysPerUser\",\n \"description\": \"单用户最大 API Key 数量(默认 10)\",\n \"value\": \"10\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_APIKEY_PREFIX\",\n \"module\": \"iam\",\n \"path\": \"iam.apikey.prefix\",\n \"description\": \"API Key 前缀(默认 'hai_')\",\n \"value\": \"hai_\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_CAPTCHA\",\n \"module\": \"iam\",\n \"path\": \"iam.captcha\",\n \"description\": \"可选的自托管交互挑战。\",\n \"value\": \"{\\\"enabled\\\":false,\\\"ttlSeconds\\\":120,\\\"cost\\\":5000,\\\"maxCounter\\\":100}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_CAPTCHA_COST\",\n \"module\": \"iam\",\n \"path\": \"iam.captcha.cost\",\n \"description\": \"单次挑战的计算工作量;越高越难自动滥用,但低性能客户端等待也越久。\",\n \"value\": \"5000\",\n \"constraint\": \"整数;>= 100;<= 50000\"\n },\n {\n \"name\": \"HAI_IAM_CAPTCHA_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.captcha.enabled\",\n \"description\": \"是否在认证提交前校验自托管计算挑战;开启会有验证等待,关闭时不加载浏览器求解器。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_CAPTCHA_MAXCOUNTER\",\n \"module\": \"iam\",\n \"path\": \"iam.captcha.maxCounter\",\n \"description\": \"求解随机计数范围;与 cost 共同决定客户端计算负担,不是密码失败次数。\",\n \"value\": \"100\",\n \"constraint\": \"整数;>= 1;<= 2000\"\n },\n {\n \"name\": \"HAI_IAM_CAPTCHA_TTLSECONDS\",\n \"module\": \"iam\",\n \"path\": \"iam.captcha.ttlSeconds\",\n \"description\": \"挑战证明有效期,单位秒;到期或重复使用需重新计算,不是登录会话期限。\",\n \"value\": \"120\",\n \"constraint\": \"整数;>= 1;<= 600\"\n },\n {\n \"name\": \"HAI_IAM_INITIALCREDENTIALS\",\n \"module\": \"iam\",\n \"path\": \"iam.initialCredentials\",\n \"description\": \"管理端可用单次邀请代替共享初始密码;需要已配置的密码重置通知通道。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_INITIALCREDENTIALS_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.initialCredentials.enabled\",\n \"description\": \"是否通过一次性邀请设密;开启前配置密码重置入口、用户联系方式与真实通知通道,不显示共享初始密码。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LDAP\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap\",\n \"description\": \"LDAP 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_BINDDN\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.bindDn\",\n \"description\": \"绑定 DN\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_BINDPASSWORD\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.bindPassword\",\n \"description\": \"绑定密码\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_CONNECTTIMEOUT\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.connectTimeout\",\n \"description\": \"连接超时(毫秒)\",\n \"value\": \"5000\",\n \"constraint\": \"整数;>= 1000;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_DISPLAYNAMEATTRIBUTE\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.displayNameAttribute\",\n \"description\": \"显示名称属性\",\n \"value\": \"cn\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_EMAILATTRIBUTE\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.emailAttribute\",\n \"description\": \"邮箱属性\",\n \"value\": \"mail\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_SEARCHBASE\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.searchBase\",\n \"description\": \"搜索基础 DN\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_SEARCHFILTER\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.searchFilter\",\n \"description\": \"搜索过滤器(默认使用 uid)\",\n \"value\": \"(uid={{username}})\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_URL\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.url\",\n \"description\": \"LDAP 服务器 URL\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_USERNAMEATTRIBUTE\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.usernameAttribute\",\n \"description\": \"用户名属性\",\n \"value\": \"uid\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LDAP_USETLS\",\n \"module\": \"iam\",\n \"path\": \"iam.ldap.useTls\",\n \"description\": \"启用 TLS\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGIN\",\n \"module\": \"iam\",\n \"path\": \"iam.login\",\n \"description\": \"登录启用配置\",\n \"value\": \"{\\\"password\\\":true,\\\"otp\\\":true,\\\"ldap\\\":false,\\\"apikey\\\":false}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_LOGIN_APIKEY\",\n \"module\": \"iam\",\n \"path\": \"iam.login.apikey\",\n \"description\": \"是否启用 API Key 登录\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGIN_LDAP\",\n \"module\": \"iam\",\n \"path\": \"iam.login.ldap\",\n \"description\": \"是否启用 LDAP 登录;需要显式开启并提供 ldap 配置。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGIN_OTP\",\n \"module\": \"iam\",\n \"path\": \"iam.login.otp\",\n \"description\": \"是否启用 OTP 登录\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGIN_PASSWORD\",\n \"module\": \"iam\",\n \"path\": \"iam.login.password\",\n \"description\": \"是否启用密码登录\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess\",\n \"description\": \"宿主提供可信客户端地址;绝不从凭据 JSON 或任意转发头取得 IP。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_ALLOWIPS\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.allowIps\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_ALLOWIPS_0\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.allowIps.0\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;非空时只允许匹配的可信客户端地址。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_DENYIPS\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.denyIps\",\n \"description\": \"拒绝的 IP/CIDR;拒绝优先,空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_DENYIPS_0\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.denyIps.0\",\n \"description\": \"拒绝的 IP/CIDR;与 allowIps 同时命中时拒绝优先。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.enabled\",\n \"description\": \"是否限制新建登录会话;已有会话的每次请求限制由 Serv/Kit 的 access 策略负责。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_TIMEZONE\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.timezone\",\n \"description\": \"访问时间窗口使用的 IANA 时区,默认 UTC,使用服务器时钟\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows\",\n \"description\": \"允许的访问时间窗口;空数组不限时间,最多 100 个\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS_0\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows.0\",\n \"description\": \"允许的时段;空列表不限时间,跨午夜窗口按开始日归属。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS_0_DAYS\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows.0.days\",\n \"description\": \"允许窗口的开始日,周一 1 至周日 7,至少一项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 7\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS_0_DAYS_0\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows.0.days.0\",\n \"description\": \"周一为 1、周日为 7;跨午夜填写开始日。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 7\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS_0_END\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows.0.end\",\n \"description\": \"允许窗口结束时间 HH:mm,不含结束;早于开始表示跨午夜,不得与开始相同\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_IAM_LOGINACCESS_WINDOWS_0_START\",\n \"module\": \"iam\",\n \"path\": \"iam.loginAccess.windows.0.start\",\n \"description\": \"允许窗口开始时间 HH:mm,包含开始时刻\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_IAM_OTP\",\n \"module\": \"iam\",\n \"path\": \"iam.otp\",\n \"description\": \"OTP 配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_OTP_EMAIL\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.email\",\n \"description\": \"分别启用邮件、短信验证码\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_OTP_EXPIRESIN\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.expiresIn\",\n \"description\": \"验证码过期时间(秒,默认 300)\",\n \"value\": \"300\",\n \"constraint\": \"整数;>= 60;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_OTP_LENGTH\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.length\",\n \"description\": \"验证码长度(默认 6)\",\n \"value\": \"6\",\n \"constraint\": \"整数;>= 4;<= 8\"\n },\n {\n \"name\": \"HAI_IAM_OTP_MAXATTEMPTS\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.maxAttempts\",\n \"description\": \"最大重试次数(默认 3)\",\n \"value\": \"3\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_OTP_RESENDINTERVAL\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.resendInterval\",\n \"description\": \"发送间隔(秒,默认 60)\",\n \"value\": \"60\",\n \"constraint\": \"整数;>= 30;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_OTP_SMS\",\n \"module\": \"iam\",\n \"path\": \"iam.otp.sms\",\n \"description\": \"是否允许短信验证码\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD\",\n \"module\": \"iam\",\n \"path\": \"iam.password\",\n \"description\": \"密码配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_EXPIRATIONDAYS\",\n \"module\": \"iam\",\n \"path\": \"iam.password.expirationDays\",\n \"description\": \"密码过期天数(0 表示不过期)\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_MAXLENGTH\",\n \"module\": \"iam\",\n \"path\": \"iam.password.maxLength\",\n \"description\": \"新设密码的最多字符数,须不小于 minLength;避免超长输入消耗鉴别资源。\",\n \"value\": \"128\",\n \"constraint\": \"整数;>= 1;<= 256\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_MINCHARACTERCLASSES\",\n \"module\": \"iam\",\n \"path\": \"iam.password.minCharacterClasses\",\n \"description\": \"至少包含的字符类别数(大小写、数字、特殊字符),0 不额外限制。\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 4\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_MINLENGTH\",\n \"module\": \"iam\",\n \"path\": \"iam.password.minLength\",\n \"description\": \"新设密码的最少字符数;提高后只约束新建、重置和改密,不会反查已有密码的散列。\",\n \"value\": \"8\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_PREVENTSAMEPASSWORD\",\n \"module\": \"iam\",\n \"path\": \"iam.password.preventSamePassword\",\n \"description\": \"拒绝新旧密码相同;启用口令期限或首次强改时也始终拒绝相同密码。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_REQUIREINITIALCHANGE\",\n \"module\": \"iam\",\n \"path\": \"iam.password.requireInitialChange\",\n \"description\": \"管理员创建或重置的初始密码必须先更换;不影响用户自行注册设密。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_REQUIRELOWERCASE\",\n \"module\": \"iam\",\n \"path\": \"iam.password.requireLowercase\",\n \"description\": \"是否必须包含小写字母;false 不代表取消长度或其他字符类别条件。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_REQUIRENUMBER\",\n \"module\": \"iam\",\n \"path\": \"iam.password.requireNumber\",\n \"description\": \"是否必须包含数字;开启后所有服务端设密入口统一拒绝缺少数字的新密码。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_REQUIRESPECIALCHAR\",\n \"module\": \"iam\",\n \"path\": \"iam.password.requireSpecialChar\",\n \"description\": \"是否必须包含特殊字符;开启会增加密码输入要求,不影响已经保存的密码散列。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORD_REQUIREUPPERCASE\",\n \"module\": \"iam\",\n \"path\": \"iam.password.requireUppercase\",\n \"description\": \"是否必须包含大写字母;与 minCharacterClasses 同时执行,false 仅取消这一项强制要求。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset\",\n \"description\": \"密码重置配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset.enabled\",\n \"description\": \"是否启用密码重置\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET_MAXATTEMPTS\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset.maxAttempts\",\n \"description\": \"最大验证尝试次数(默认 3)\",\n \"value\": \"3\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET_MODE\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset.mode\",\n \"description\": \"重置通知渠道,phone 使用 password_reset_sms 模板。\",\n \"value\": \"email\",\n \"constraint\": \"字符串;取值:email | phone\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET_RESETURL\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset.resetUrl\",\n \"description\": \"重置页面的绝对地址,通知模板可使用 resetUrl。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_IAM_PASSWORDRESET_TOKENEXPIRESIN\",\n \"module\": \"iam\",\n \"path\": \"iam.passwordReset.tokenExpiresIn\",\n \"description\": \"重置令牌有效期(秒,默认 3600 = 1小时)\",\n \"value\": \"3600\",\n \"constraint\": \"整数;>= 300;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_RBAC\",\n \"module\": \"iam\",\n \"path\": \"iam.rbac\",\n \"description\": \"RBAC 配置\",\n \"value\": \"{\\\"enabled\\\":true,\\\"superAdminRole\\\":\\\"super_admin\\\",\\\"defaultRole\\\":\\\"user\\\"}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_RBAC_DEFAULTROLE\",\n \"module\": \"iam\",\n \"path\": \"iam.rbac.defaultRole\",\n \"description\": \"默认用户角色\",\n \"value\": \"user\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_RBAC_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.rbac.enabled\",\n \"description\": \"是否启用 RBAC\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_RBAC_SUPERADMINROLE\",\n \"module\": \"iam\",\n \"path\": \"iam.rbac.superAdminRole\",\n \"description\": \"超级管理员角色代码\",\n \"value\": \"super_admin\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_REAUTHENTICATION\",\n \"module\": \"iam\",\n \"path\": \"iam.reauthentication\",\n \"description\": \"指定敏感操作额外验证原密码;凭据短期且单次使用。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_REAUTHENTICATION_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.reauthentication.enabled\",\n \"description\": \"是否让已登录用户在敏感动作前弹窗验证当前密码;不创建另一个账号的登录,也不授予额外权限。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_REAUTHENTICATION_OPERATIONS\",\n \"module\": \"iam\",\n \"path\": \"iam.reauthentication.operations\",\n \"description\": \"需要二次认证的操作 ID 清单,例如 iam.users.delete;两端须已接入同名守卫,仅添加名字不会保护自定义接口。\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_IAM_REAUTHENTICATION_OPERATIONS_0\",\n \"module\": \"iam\",\n \"path\": \"iam.reauthentication.operations.0\",\n \"description\": \"需要二次认证的操作 ID 清单,例如 iam.users.delete;两端须已接入同名守卫,仅添加名字不会保护自定义接口。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 128\"\n },\n {\n \"name\": \"HAI_IAM_REAUTHENTICATION_TTLSECONDS\",\n \"module\": \"iam\",\n \"path\": \"iam.reauthentication.ttlSeconds\",\n \"description\": \"二次认证凭据的有效秒数;仅供当前用户/会话的指定操作单次使用,取消不发送敏感业务请求。\",\n \"value\": \"300\",\n \"constraint\": \"整数;>= 1;<= 900\"\n },\n {\n \"name\": \"HAI_IAM_REGISTER\",\n \"module\": \"iam\",\n \"path\": \"iam.register\",\n \"description\": \"注册配置\",\n \"value\": \"{\\\"enabled\\\":true,\\\"defaultAccountStatus\\\":\\\"active\\\"}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_REGISTER_DEFAULTACCOUNTSTATUS\",\n \"module\": \"iam\",\n \"path\": \"iam.register.defaultAccountStatus\",\n \"description\": \"自助注册的初始生命周期;active 可登录,dormant 等待管理员激活;默认 active。\",\n \"value\": \"active\",\n \"constraint\": \"字符串;取值:active | dormant\"\n },\n {\n \"name\": \"HAI_IAM_REGISTER_ENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.register.enabled\",\n \"description\": \"是否允许访客自助注册;关闭后隐藏注册入口并由服务端拒绝注册,不影响已有账号登录或管理员创建账号。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SECURITY\",\n \"module\": \"iam\",\n \"path\": \"iam.security\",\n \"description\": \"安全策略配置\",\n \"value\": \"{\\\"lockoutEnabled\\\":true,\\\"failureWindow\\\":86400,\\\"maxLoginAttempts\\\":5,\\\"lockoutDuration\\\":900}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_SECURITY_FAILUREWINDOW\",\n \"module\": \"iam\",\n \"path\": \"iam.security.failureWindow\",\n \"description\": \"从首次失败开始的固定计数窗口,单位秒;86400 为24小时,不是滚动窗口。\",\n \"value\": \"86400\",\n \"constraint\": \"整数;>= 1;<= 31536000\"\n },\n {\n \"name\": \"HAI_IAM_SECURITY_LOCKOUTDURATION\",\n \"module\": \"iam\",\n \"path\": \"iam.security.lockoutDuration\",\n \"description\": \"达到失败阈值后禁止密码鉴别的秒数;至少60秒,1200表示20分钟,锁定期间正确密码也不能登录。\",\n \"value\": \"900\",\n \"constraint\": \"整数;>= 60;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_SECURITY_LOCKOUTENABLED\",\n \"module\": \"iam\",\n \"path\": \"iam.security.lockoutEnabled\",\n \"description\": \"是否累计失败并暂时锁定密码鉴别;关闭忽略历史锁,成功密码验证会重置计数。\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SECURITY_MAXLOGINATTEMPTS\",\n \"module\": \"iam\",\n \"path\": \"iam.security.maxLoginAttempts\",\n \"description\": \"固定窗口内达到此失败次数后锁定密码鉴别;验证码失败等独立入口按各自策略处理。\",\n \"value\": \"5\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_SEEDDEFAULTDATA\",\n \"module\": \"iam\",\n \"path\": \"iam.seedDefaultData\",\n \"description\": \"是否初始化默认角色和权限(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SESSION\",\n \"module\": \"iam\",\n \"path\": \"iam.session\",\n \"description\": \"会话配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_ABSOLUTETIMEOUT\",\n \"module\": \"iam\",\n \"path\": \"iam.session.absoluteTimeout\",\n \"description\": \"从首次登录起的绝对期限(秒),0 关闭;刷新不能重新起算。\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 31536000\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_ENDONPAGEHIDE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.endOnPageHide\",\n \"description\": \"页面离开时尽力撤销会话;浏览器关闭不可保证,仍应配置服务端闲置/绝对期限。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_IDLETIMEOUT\",\n \"module\": \"iam\",\n \"path\": \"iam.session.idleTimeout\",\n \"description\": \"闲置期限(秒),0 关闭;真实访问记录活动,自动刷新不延长闲置;access/refresh 均执行。\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 31536000\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_MAXAGE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.maxAge\",\n \"description\": \"新会话的默认 access 时长(秒);创建时可用 maxAge 覆盖,滑动/刷新沿用会话固有时长。\",\n \"value\": \"86400\",\n \"constraint\": \"整数;>= 60;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_MAXSESSIONS\",\n \"module\": \"iam\",\n \"path\": \"iam.session.maxSessions\",\n \"description\": \"每个用户的最大有效会话数,0 不限制;包含 access 到期但仍可刷新的会话。\",\n \"value\": \"0\",\n \"constraint\": \"整数;>= 0;<= 10000\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_REFRESHTOKENMAXAGE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.refreshTokenMaxAge\",\n \"description\": \"refreshToken 独立有效期(秒,默认 604800 = 7天);从签发时刻起算,access 到期仍可刷新。\",\n \"value\": \"604800\",\n \"constraint\": \"整数;>= 3600;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_SINGLEDEVICE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.singleDevice\",\n \"description\": \"单设备登录(踢掉其他设备)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_SINGLEDEVICEMODE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.singleDeviceMode\",\n \"description\": \"单设备超限策略:replace 顶旧保新,reject 保留旧会话并拒绝新登录。\",\n \"value\": \"replace\",\n \"constraint\": \"字符串;取值:replace | reject\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_SLIDING\",\n \"module\": \"iam\",\n \"path\": \"iam.session.sliding\",\n \"description\": \"是否滑动窗口(每次访问刷新过期时间)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_TERMINALLIMITMODE\",\n \"module\": \"iam\",\n \"path\": \"iam.session.terminalLimitMode\",\n \"description\": \"终端配额超限时 reject 拒绝新登录;replace 仅替换同类最早会话,不影响其他终端。\",\n \"value\": \"reject\",\n \"constraint\": \"字符串;取值:reject | replace\"\n },\n {\n \"name\": \"HAI_IAM_SESSION_TERMINALLIMITS\",\n \"module\": \"iam\",\n \"path\": \"iam.session.terminalLimits\",\n \"description\": \"各终端类型的最大会话数,例如 {web:2,app:1};空对象关闭。启用后未列终端不能新登录,旧会话归为 web;仍受全局上限约束。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_UI\",\n \"module\": \"iam\",\n \"path\": \"iam.ui\",\n \"description\": \"认证页外观\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_IAM_UI_BRANDTEXT\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.brandText\",\n \"description\": \"认证页品牌介绍正文\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_BRANDTITLE\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.brandTitle\",\n \"description\": \"认证页品牌区域标题\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_ILLUSTRATIONURL\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.illustrationUrl\",\n \"description\": \"认证页插图 URL\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_LOGOURL\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.logoUrl\",\n \"description\": \"认证页品牌 Logo URL\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_SUBTITLE\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.subtitle\",\n \"description\": \"认证面板副标题\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_TITLE\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.title\",\n \"description\": \"认证面板标题\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_IAM_UI_VARIANT\",\n \"module\": \"iam\",\n \"path\": \"iam.ui.variant\",\n \"description\": \"认证页布局样式\",\n \"value\": \"card\",\n \"constraint\": \"字符串;取值:card | split\"\n },\n {\n \"name\": \"HAI_KIT\",\n \"module\": \"kit\",\n \"path\": \"kit\",\n \"description\": \"SvelteKit 服务端安全头、认证守卫及传输设置;仅适用于对应宿主集成\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS\",\n \"module\": \"kit\",\n \"path\": \"kit.access\",\n \"description\": \"每次请求的路径/IP/时间策略;false 关闭,内联规则与独立 YAML 文件引用不能混用\",\n \"value\": \"false\",\n \"constraint\": \"true | false;false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_FILE\",\n \"module\": \"kit\",\n \"path\": \"kit.access.file\",\n \"description\": \"独立 yml/yaml 策略文件;按工作目录解析,启动读一次,最大 1 MiB\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 4096;正则 \\\\.ya?ml$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global\",\n \"description\": \"所有宿主请求的共同条件;包含健康检查,省略不增加全局限制\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_ALLOWIPS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.allowIps\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_ALLOWIPS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.allowIps.0\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;非空时只允许匹配的可信客户端地址。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_DENYIPS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.denyIps\",\n \"description\": \"拒绝的 IP/CIDR;拒绝优先,空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_DENYIPS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.denyIps.0\",\n \"description\": \"拒绝的 IP/CIDR;与 allowIps 同时命中时拒绝优先。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_TIMEZONE\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.timezone\",\n \"description\": \"访问时间窗口使用的 IANA 时区,默认 UTC,使用服务器时钟\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows\",\n \"description\": \"允许的访问时间窗口;空数组不限时间,最多 100 个\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows.0\",\n \"description\": \"允许的时段;空列表不限时间,跨午夜窗口按开始日归属。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS_0_DAYS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows.0.days\",\n \"description\": \"允许窗口的开始日,周一 1 至周日 7,至少一项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 7\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS_0_DAYS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows.0.days.0\",\n \"description\": \"周一为 1、周日为 7;跨午夜填写开始日。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 7\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS_0_END\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows.0.end\",\n \"description\": \"允许窗口结束时间 HH:mm,不含结束;早于开始表示跨午夜,不得与开始相同\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_GLOBAL_WINDOWS_0_START\",\n \"module\": \"kit\",\n \"path\": \"kit.access.global.windows.0.start\",\n \"description\": \"允许窗口开始时间 HH:mm,包含开始时刻\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules\",\n \"description\": \"路径访问规则,最多 1000 条;全局和所有匹配规则都必须通过\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0\",\n \"description\": \"路径规则;仅支持精确路径和末尾 /**,不用正则表达式。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_ALLOWIPS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.allowIps\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_ALLOWIPS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.allowIps.0\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;非空时只允许匹配的可信客户端地址。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_DENYIPS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.denyIps\",\n \"description\": \"拒绝的 IP/CIDR;拒绝优先,空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_DENYIPS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.denyIps.0\",\n \"description\": \"拒绝的 IP/CIDR;与 allowIps 同时命中时拒绝优先。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_ENCRYPTION\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.encryption\",\n \"description\": \"路径的应用层加解密模式;省略沿用宿主,required 强制加密,disabled 明文;重叠路径和方法不得冲突\",\n \"value\": \"required\",\n \"constraint\": \"字符串;取值:required | disabled\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_ID\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.id\",\n \"description\": \"唯一规则编号,用于日志定位;1–64 个字母数字下划线、点或连字符\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 64;正则 ^[\\\\w.-]+$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_METHODS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.methods\",\n \"description\": \"受该规则约束的 HTTP 方法;空数组全部方法,GET 不隐含 HEAD\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 9\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_METHODS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.methods.0\",\n \"description\": \"HTTP 方法,空数组表示所有方法;GET 不隐含 HEAD。;此变量整体替换单个数组项\",\n \"value\": \"GET\",\n \"constraint\": \"字符串;取值:GET | HEAD | POST | PUT | PATCH | DELETE | OPTIONS | CONNECT | TRACE\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_PATHS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.paths\",\n \"description\": \"完整请求路径列表,包含部署前缀;精确或末尾 /**,最多 100 项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 100\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_PATHS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.paths.0\",\n \"description\": \"完整请求路径;末尾 /** 同时匹配该路径及子路径,大小写敏感。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 2048\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_TIMEZONE\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.timezone\",\n \"description\": \"访问时间窗口使用的 IANA 时区,默认 UTC,使用服务器时钟\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows\",\n \"description\": \"允许的访问时间窗口;空数组不限时间,最多 100 个\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows.0\",\n \"description\": \"允许的时段;空列表不限时间,跨午夜窗口按开始日归属。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS_0_DAYS\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows.0.days\",\n \"description\": \"允许窗口的开始日,周一 1 至周日 7,至少一项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 7\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS_0_DAYS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows.0.days.0\",\n \"description\": \"周一为 1、周日为 7;跨午夜填写开始日。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 7\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS_0_END\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows.0.end\",\n \"description\": \"允许窗口结束时间 HH:mm,不含结束;早于开始表示跨午夜,不得与开始相同\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_KIT_ACCESS_RULES_0_WINDOWS_0_START\",\n \"module\": \"kit\",\n \"path\": \"kit.access.rules.0.windows.0.start\",\n \"description\": \"允许窗口开始时间 HH:mm,包含开始时刻\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_KIT_COOKIE_KEY\",\n \"module\": \"kit\",\n \"path\": \"HAI_KIT_COOKIE_KEY\",\n \"description\": \"kit Cookie 加密密钥\",\n \"value\": \"\",\n \"constraint\": \"满足 crypto SM4 密钥格式;敏感值仅本机或目标进程注入\"\n },\n {\n \"name\": \"HAI_KIT_SERVER\",\n \"module\": \"kit\",\n \"path\": \"kit.server\",\n \"description\": \"HTTP 服务监听地址与端口\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_SERVER_HOST\",\n \"module\": \"kit\",\n \"path\": \"kit.server.host\",\n \"description\": \"HTTP 监听主机名或 IP\",\n \"value\": \"127.0.0.1\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_KIT_SERVER_PORT\",\n \"module\": \"kit\",\n \"path\": \"kit.server.port\",\n \"description\": \"HTTP 监听端口\",\n \"value\": \"3000\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT\",\n \"module\": \"kit\",\n \"path\": \"kit.transport\",\n \"description\": \"传输加密开关或密钥协商配置\",\n \"value\": \"false\",\n \"constraint\": \"false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.excludePaths\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS_0\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.excludePaths.0\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/api/storage\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS_1\",\n \"module\": \"kit\",\n \"path\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS_1\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/api/public\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS_2\",\n \"module\": \"kit\",\n \"path\": \"HAI_KIT_TRANSPORT_EXCLUDEPATHS_2\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/api/auth/profile/avatar\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_KEYEXCHANGEPATH\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.keyExchangePath\",\n \"description\": \"客户端与服务端约定的密钥交换端点\",\n \"value\": \"/api/_hai/key-exchange\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_MAXFUTURESKEWSECONDS\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.maxFutureSkewSeconds\",\n \"description\": \"允许客户端请求时间领先服务器的秒数\",\n \"value\": \"30\",\n \"constraint\": \"整数;>= 0;<= 300\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_MAXPLAINTEXTBYTES\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.maxPlaintextBytes\",\n \"description\": \"普通业务双向明文上限;auto 为 1 MiB;大材料使用 routePlaintextBytes 单独声明\",\n \"value\": \"auto\",\n \"constraint\": \"整数;>= 1024;<= 67108864;字符串;取值:auto\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_MAXREQUESTAGESECONDS\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.maxRequestAgeSeconds\",\n \"description\": \"请求从签发起的有效秒数\",\n \"value\": \"300\",\n \"constraint\": \"整数;>= 1;<= 600\"\n },\n {\n \"name\": \"HAI_KIT_TRANSPORT_ROUTEPLAINTEXTBYTES\",\n \"module\": \"kit\",\n \"path\": \"kit.transport.routePlaintextBytes\",\n \"description\": \"完整路径段到双向明文字节上限的映射;星号匹配单段,供附件和归档独立容量\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_KIT_TRUSTEDPROXIES\",\n \"module\": \"kit\",\n \"path\": \"kit.trustedProxies\",\n \"description\": \"可信代理 IP/CIDR;默认 auto 在普通宿主忽略转发头,仅受管私有 Compose 采用容器网段\",\n \"value\": \"auto\",\n \"constraint\": \"字符串;JSON 数组;索引可按 0、1、2 扩展;最多项数 1000;取值:auto\"\n },\n {\n \"name\": \"HAI_KIT_TRUSTEDPROXIES_0\",\n \"module\": \"kit\",\n \"path\": \"kit.trustedProxies.0\",\n \"description\": \"可信代理的 IP/CIDR,只有这些代理的转发头会被信任\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_MODEL_API_KEY\",\n \"module\": \"model\",\n \"path\": \"HAI_MODEL_API_KEY\",\n \"description\": \"本地语音模型 HTTP 服务的 Bearer 认证密钥\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串;空值表示该模型服务未启用认证\"\n },\n {\n \"name\": \"HAI_MODEL_ID\",\n \"module\": \"model\",\n \"path\": \"HAI_MODEL_ID\",\n \"description\": \"本地模型权重的 Hugging Face 仓库 ID\",\n \"value\": \"\",\n \"constraint\": \"有效模型仓库 ID,例如组织名/模型名;由模型目录提供默认值\"\n },\n {\n \"name\": \"HAI_MODEL_OUTPUT_DIR\",\n \"module\": \"model\",\n \"path\": \"HAI_MODEL_OUTPUT_DIR\",\n \"description\": \"模型 prepare 子进程的权重输出目录\",\n \"value\": \"\",\n \"constraint\": \"目录路径;通常由 model:prepare 自动注入\"\n },\n {\n \"name\": \"HAI_MODEL_REVISION\",\n \"module\": \"model\",\n \"path\": \"HAI_MODEL_REVISION\",\n \"description\": \"Hugging Face 权重修订版本\",\n \"value\": \"\",\n \"constraint\": \"仓库已有的分支、标签或 commit;为空时使用厂商默认版本\"\n },\n {\n \"name\": \"HAI_MODELSCOPE_ID\",\n \"module\": \"modelscope\",\n \"path\": \"HAI_MODELSCOPE_ID\",\n \"description\": \"本地模型权重的 ModelScope 仓库 ID\",\n \"value\": \"\",\n \"constraint\": \"有效模型仓库 ID;优先使用模型目录的配置\"\n },\n {\n \"name\": \"HAI_MODELSCOPE_REVISION\",\n \"module\": \"modelscope\",\n \"path\": \"HAI_MODELSCOPE_REVISION\",\n \"description\": \"ModelScope 权重修订版本\",\n \"value\": \"\",\n \"constraint\": \"仓库已有的分支、标签或 commit;通常为 master\"\n },\n {\n \"name\": \"HAI_PARTNER\",\n \"module\": \"partner\",\n \"path\": \"partner\",\n \"description\": \"应用自定义的 partner 参数集合;字段由该应用配置声明,不会自动启用框架模块\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体替换该配置\"\n },\n {\n \"name\": \"HAI_PARTNER_PASSWORD\",\n \"module\": \"partner\",\n \"path\": \"HAI_PARTNER_PASSWORD\",\n \"description\": \"企业官网合作伙伴演示的登录密码\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,仅本机或目标进程注入\"\n },\n {\n \"name\": \"HAI_PARTNER_SESSIONTTLSECONDS\",\n \"module\": \"partner\",\n \"path\": \"HAI_PARTNER_SESSIONTTLSECONDS\",\n \"description\": \"合作伙伴演示会话有效期\",\n \"value\": \"14400\",\n \"constraint\": \"正整数,单位秒\"\n },\n {\n \"name\": \"HAI_PARTNER_USERNAME\",\n \"module\": \"partner\",\n \"path\": \"HAI_PARTNER_USERNAME\",\n \"description\": \"企业官网合作伙伴演示的登录用户名\",\n \"value\": \"partner-admin\",\n \"constraint\": \"非空字符串\"\n },\n {\n \"name\": \"HAI_PAYMENT\",\n \"module\": \"payment\",\n \"path\": \"payment\",\n \"description\": \"支付渠道商户配置与通知验签;按所用渠道配置密钥和回调地址\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay\",\n \"description\": \"支付宝渠道的商户配置与验签参数\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_ALIPAYPUBLICKEY\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.alipayPublicKey\",\n \"description\": \"alipay:支付宝平台公钥,用于验签\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_APPID\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.appId\",\n \"description\": \"alipay:商户应用 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_PRIVATEKEY\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.privateKey\",\n \"description\": \"alipay:商户签名私钥(PEM)\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_RETURNURL\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.returnUrl\",\n \"description\": \"手机网站支付完成后返回的可信 HTTPS 地址;仅用于页面导航,不能证明付款。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_SANDBOX\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.sandbox\",\n \"description\": \"alipay:是否使用沙箱网关\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_SELLERID\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.sellerId\",\n \"description\": \"alipay:支付宝卖家 ID,通知 seller_id 必须与之匹配\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_ALIPAY_SIGNTYPE\",\n \"module\": \"payment\",\n \"path\": \"payment.alipay.signType\",\n \"description\": \"alipay:请求和通知允许的签名算法\",\n \"value\": \"RSA2\",\n \"constraint\": \"字符串;取值:RSA2 | RSA\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe\",\n \"description\": \"Stripe渠道的商户配置与验签参数\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE_CANCELURL\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe.cancelUrl\",\n \"description\": \"托管 Checkout 取消按钮的可信跳转地址;省略时不显示返回按钮。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE_SECRETKEY\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe.secretKey\",\n \"description\": \"stripe:Stripe 服务端密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:sk|rk)_(?:test|live)_\\\\S+$\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE_SUCCESSURL\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe.successUrl\",\n \"description\": \"托管 Checkout 完成后的可信跳转地址,可含 {CHECKOUT_SESSION_ID}。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE_WEBHOOKSECRET\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe.webhookSecret\",\n \"description\": \"stripe:Stripe Webhook 验签密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_STRIPE_WEBHOOKTOLERANCESECONDS\",\n \"module\": \"payment\",\n \"path\": \"payment.stripe.webhookToleranceSeconds\",\n \"description\": \"stripe:Webhook 时间戳允许偏差,单位秒\",\n \"value\": \"300\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat\",\n \"description\": \"微信支付渠道的商户配置与验签参数\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_APIV3KEY\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.apiV3Key\",\n \"description\": \"wechat:微信支付 API v3 密钥\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_APPID\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.appId\",\n \"description\": \"wechat:商户应用 ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_MCHID\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.mchId\",\n \"description\": \"wechat:微信支付商户号\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_PLATFORMKEYS\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.platformKeys\",\n \"description\": \"精确按 Wechatpay-Serial 选择平台证书/公钥,轮换期间同时配置新旧标识。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_PRIVATEKEY\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.privateKey\",\n \"description\": \"wechat:商户签名私钥(PEM)\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_PAYMENT_WECHAT_SERIALNO\",\n \"module\": \"payment\",\n \"path\": \"payment.wechat.serialNo\",\n \"description\": \"wechat:商户 API 证书序列号\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH\",\n \"module\": \"reach\",\n \"path\": \"reach\",\n \"description\": \"邮件、短信和 API 通知通道及模板;开发 Console 只输出日志,不实际投递\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_DND\",\n \"module\": \"reach\",\n \"path\": \"reach.dnd\",\n \"description\": \"免打扰配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_DND_ENABLED\",\n \"module\": \"reach\",\n \"path\": \"reach.dnd.enabled\",\n \"description\": \"是否启用免打扰(默认 false)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_DND_END\",\n \"module\": \"reach\",\n \"path\": \"reach.dnd.end\",\n \"description\": \"免打扰结束时间(HH:mm 格式)\",\n \"value\": \"00:00\",\n \"constraint\": \"字符串;正则 ^([01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_REACH_DND_START\",\n \"module\": \"reach\",\n \"path\": \"reach.dnd.start\",\n \"description\": \"免打扰开始时间(HH:mm 格式)\",\n \"value\": \"00:00\",\n \"constraint\": \"字符串;正则 ^([01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_REACH_DND_STRATEGY\",\n \"module\": \"reach\",\n \"path\": \"reach.dnd.strategy\",\n \"description\": \"discard 丢弃;delay 要求数据库队列就绪并确认入队(默认 discard)。\",\n \"value\": \"discard\",\n \"constraint\": \"字符串;取值:discard | delay\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS\",\n \"module\": \"reach\",\n \"path\": \"reach.providers\",\n \"description\": \"Provider 配置列表\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0\",\n \"description\": \"Provider 配置列表;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_ACCESSKEYID\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.accessKeyId\",\n \"description\": \"阿里云 AccessKey ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_ACCESSKEYSECRET\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.accessKeySecret\",\n \"description\": \"阿里云 AccessKey Secret\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_ENDPOINT\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.endpoint\",\n \"description\": \"直连 API 端点(默认 dysmsapi.aliyuncs.com);配置网关时使用网关 URL。\",\n \"value\": \"dysmsapi.aliyuncs.com\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_FROM\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.from\",\n \"description\": \"发件人地址\",\n \"value\": \"noreply@example.com\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_GATEWAY\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.gateway\",\n \"description\": \"可选的短信隔离网关,以 POST 请求转发已签名的查询参数。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_GATEWAY_ALLOWINSECUREHTTP\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.gateway.allowInsecureHttp\",\n \"description\": \"仅在受信内网显式允许明文 HTTP。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_GATEWAY_BODY\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.gateway.body\",\n \"description\": \"网关请求体;对象和数组序列化为 JSON,字符串原样发送。省略时不发请求体。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象、数组或原始文本\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_GATEWAY_HEADERS\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.gateway.headers\",\n \"description\": \"网关自定义请求头;连接与消息长度相关的头由 HTTP 客户端管理。\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_GATEWAY_URL\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.gateway.url\",\n \"description\": \"网关的完整 HTTP(S) URL;包含路径,不允许凭据、查询参数或片段。\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_HEADERS\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.headers\",\n \"description\": \"自定义请求头\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_HOST\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.host\",\n \"description\": \"SMTP 服务器地址\",\n \"value\": \"smtp.example.com\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_IDEMPOTENT\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.idempotent\",\n \"description\": \"接收端按 Idempotency-Key 原子持久去重,且覆盖所有重试与旧节点迟到请求时才启用;默认 false。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_METHOD\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.method\",\n \"description\": \"HTTP 方法(默认 POST)\",\n \"value\": \"POST\",\n \"constraint\": \"字符串;取值:POST | PUT\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_NAME\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.name\",\n \"description\": \"Provider 唯一名称\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_PASS\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.pass\",\n \"description\": \"SMTP 认证密码\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_PORT\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.port\",\n \"description\": \"SMTP 端口(默认 465)\",\n \"value\": \"465\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_REDIRECT\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.redirect\",\n \"description\": \"HTTP 重定向策略;默认拒绝。敏感发送始终拒绝,即使普通发送显式允许。\",\n \"value\": \"error\",\n \"constraint\": \"字符串;取值:error | follow\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_REQUIREHTTPS\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.requireHttps\",\n \"description\": \"强制 HTTPS;省略时生产敏感发送要求 HTTPS,显式 false 仅用于受信内网传输。\",\n \"value\": \"\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_SECURE\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.secure\",\n \"description\": \"是否使用 TLS(默认 true)\",\n \"value\": \"true\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_SIGNNAME\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.signName\",\n \"description\": \"短信签名\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_TIMEOUT\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.timeout\",\n \"description\": \"请求超时毫秒数(默认 10000)\",\n \"value\": \"10000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_TYPE\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.type\",\n \"description\": \"后端或功能类型,按枚举选择\",\n \"value\": \"console\",\n \"constraint\": \"字符串;取值:console | smtp | aliyun-sms | api\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_URL\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.url\",\n \"description\": \"回调 URL\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_0_USER\",\n \"module\": \"reach\",\n \"path\": \"reach.providers.0.user\",\n \"description\": \"SMTP 认证用户名\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_1_ACCESSKEYID\",\n \"module\": \"reach\",\n \"path\": \"HAI_REACH_PROVIDERS_1_ACCESSKEYID\",\n \"description\": \"阿里云 AccessKey ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_1_ACCESSKEYSECRET\",\n \"module\": \"reach\",\n \"path\": \"HAI_REACH_PROVIDERS_1_ACCESSKEYSECRET\",\n \"description\": \"阿里云 AccessKey Secret\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_1_TYPE\",\n \"module\": \"reach\",\n \"path\": \"HAI_REACH_PROVIDERS_1_TYPE\",\n \"description\": \"后端或功能类型,按枚举选择\",\n \"value\": \"console\",\n \"constraint\": \"字符串;取值:console | smtp | aliyun-sms | api\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_2_HEADERS_AUTHORIZATION\",\n \"module\": \"reach\",\n \"path\": \"HAI_REACH_PROVIDERS_2_HEADERS_AUTHORIZATION\",\n \"description\": \"凭据输入;使用位置 packages/cli/src/commands/cli-config-templates.ts\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串;启用相应功能时必填,不得提交真实值\"\n },\n {\n \"name\": \"HAI_REACH_PROVIDERS_2_IDEMPOTENT\",\n \"module\": \"reach\",\n \"path\": \"HAI_REACH_PROVIDERS_2_IDEMPOTENT\",\n \"description\": \"接收端按 Idempotency-Key 原子持久去重,且覆盖所有重试与旧节点迟到请求时才启用;默认 false。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_REACH_QUEUE\",\n \"module\": \"reach\",\n \"path\": \"reach.queue\",\n \"description\": \"可靠队列重试策略;每条消息入队时持久保存。\",\n \"value\": \"{}\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_QUEUE_MAXATTEMPTS\",\n \"module\": \"reach\",\n \"path\": \"reach.queue.maxAttempts\",\n \"description\": \"每条队列消息最多处理多少次,包含首次发送、失败重试和异常退出后的重新处理;默认 5,范围 1–100。\",\n \"value\": \"5\",\n \"constraint\": \"整数;>= 1;<= 100\"\n },\n {\n \"name\": \"HAI_REACH_QUEUE_MAXRETRYDELAYMS\",\n \"module\": \"reach\",\n \"path\": \"reach.queue.maxRetryDelayMs\",\n \"description\": \"后续失败时等待时间逐次加倍,但不超过此值;默认 3600000(1 小时),不得小于 retryDelayMs。\",\n \"value\": \"3600000\",\n \"constraint\": \"整数;>= 1000;<= 86400000\"\n },\n {\n \"name\": \"HAI_REACH_QUEUE_RETRYDELAYMS\",\n \"module\": \"reach\",\n \"path\": \"reach.queue.retryDelayMs\",\n \"description\": \"第一次发送失败后,等待多少毫秒再试;默认 60000(1 分钟),范围 1000–86400000。\",\n \"value\": \"60000\",\n \"constraint\": \"整数;>= 1000;<= 86400000\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES\",\n \"module\": \"reach\",\n \"path\": \"reach.templates\",\n \"description\": \"模板配置(通过配置文件注册)\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES_0\",\n \"module\": \"reach\",\n \"path\": \"reach.templates.0\",\n \"description\": \"模板配置(通过配置文件注册);此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES_0_BODY\",\n \"module\": \"reach\",\n \"path\": \"reach.templates.0.body\",\n \"description\": \"正文模板\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES_0_NAME\",\n \"module\": \"reach\",\n \"path\": \"reach.templates.0.name\",\n \"description\": \"模板名称\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES_0_PROVIDER\",\n \"module\": \"reach\",\n \"path\": \"reach.templates.0.provider\",\n \"description\": \"绑定的 Provider 名称\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_REACH_TEMPLATES_0_SUBJECT\",\n \"module\": \"reach\",\n \"path\": \"reach.templates.0.subject\",\n \"description\": \"邮件主题模板\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"ADMIN_E2E_BASE_URL\",\n \"module\": \"runtime\",\n \"path\": \"ADMIN_E2E_BASE_URL\",\n \"description\": \"管理台独立 E2E 服务地址,可由根验收透传以避开其它工作区端口\",\n \"value\": \"\",\n \"constraint\": \"本机 HTTP(S) URL;直接运行时 BASE_URL 优先\"\n },\n {\n \"name\": \"ALL_PROXY\",\n \"module\": \"runtime\",\n \"path\": \"ALL_PROXY\",\n \"description\": \"构建下载的其他代理入口;仅 inherit 模式原样传递,其他模式清空\",\n \"value\": \"\",\n \"constraint\": \"代理 URL;协议支持由下载工具决定;小写 all_proxy 也受支持\"\n },\n {\n \"name\": \"ANTHROPIC_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"ANTHROPIC_API_KEY\",\n \"description\": \"ANTHROPIC 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"ANTHROPIC_BASE_URL\",\n \"module\": \"runtime\",\n \"path\": \"ANTHROPIC_BASE_URL\",\n \"description\": \"厂商 SDK 服务基础地址回退\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL\"\n },\n {\n \"name\": \"ARK_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"ARK_API_KEY\",\n \"description\": \"ARK 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"BASE_URL\",\n \"module\": \"runtime\",\n \"path\": \"BASE_URL\",\n \"description\": \"Playwright 验收访问的前端基础地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;按项目 Playwright 配置选择默认端口\"\n },\n {\n \"name\": \"CAPACITOR_SERVER_URL\",\n \"module\": \"runtime\",\n \"path\": \"CAPACITOR_SERVER_URL\",\n \"description\": \"Capacitor 开发时的前端热加载地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;发布原生包时不设置\"\n },\n {\n \"name\": \"CARGO_TARGET_DIR\",\n \"module\": \"runtime\",\n \"path\": \"CARGO_TARGET_DIR\",\n \"description\": \"环境入口;使用位置 packages/cli/src/commands/cli-build.ts\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"CI\",\n \"module\": \"runtime\",\n \"path\": \"CI\",\n \"description\": \"持续集成环境标记\",\n \"value\": \"\",\n \"constraint\": \"true 或 1 启用;未设置为本地运行\"\n },\n {\n \"name\": \"COMPUTE_TYPE\",\n \"module\": \"runtime\",\n \"path\": \"COMPUTE_TYPE\",\n \"description\": \"faster-whisper 计算精度\",\n \"value\": \"auto\",\n \"constraint\": \"auto | default | float32 | float16 | bfloat16 | int16 | int8 | int8_float32 | int8_float16 | int8_bfloat16;须受当前设备支持\"\n },\n {\n \"name\": \"DASHSCOPE_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"DASHSCOPE_API_KEY\",\n \"description\": \"DASHSCOPE 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"DASHSCOPE_WORKSPACE_ID\",\n \"module\": \"runtime\",\n \"path\": \"DASHSCOPE_WORKSPACE_ID\",\n \"description\": \"DashScope 厂商工作空间标识\",\n \"value\": \"\",\n \"constraint\": \"字符串,由厂商控制台提供\"\n },\n {\n \"name\": \"DEVICE\",\n \"module\": \"runtime\",\n \"path\": \"DEVICE\",\n \"description\": \"本地语音模型运行设备\",\n \"value\": \"auto\",\n \"constraint\": \"auto | cpu | cuda;auto 按 CUDA 可用性选择\"\n },\n {\n \"name\": \"E2E_ADMIN_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"E2E_ADMIN_PASSWORD\",\n \"description\": \"端到端测试创建的管理员密码\",\n \"value\": \"\",\n \"constraint\": \"满足 IAM 密码策略;仅测试进程使用\"\n },\n {\n \"name\": \"E2E_AUDIT_ADMIN_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"E2E_AUDIT_ADMIN_PASSWORD\",\n \"description\": \"Fullstack端到端测试的audit_admin初始密码\",\n \"value\": \"\",\n \"constraint\": \"仅测试进程使用;验收已部署服务时与该环境HAI_AUDIT_ADMIN_PASSWORD一致\"\n },\n {\n \"name\": \"E2E_BUILD_COMMIT\",\n \"module\": \"runtime\",\n \"path\": \"E2E_BUILD_COMMIT\",\n \"description\": \"环境入口;使用位置 packages/cli/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"E2E_BUSINESS_OPERATOR_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"E2E_BUSINESS_OPERATOR_PASSWORD\",\n \"description\": \"Fullstack端到端测试的business_operator初始密码\",\n \"value\": \"\",\n \"constraint\": \"仅测试进程使用;验收已部署服务时与该环境HAI_BUSINESS_OPERATOR_PASSWORD一致\"\n },\n {\n \"name\": \"E2E_CONFIG_ADMIN_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"E2E_CONFIG_ADMIN_PASSWORD\",\n \"description\": \"Fullstack端到端测试的config_admin初始密码\",\n \"value\": \"\",\n \"constraint\": \"仅测试进程使用;验收已部署服务时与该环境HAI_CONFIG_ADMIN_PASSWORD一致\"\n },\n {\n \"name\": \"E2E_PORT\",\n \"module\": \"runtime\",\n \"path\": \"E2E_PORT\",\n \"description\": \"端到端测试 Web 服务监听端口\",\n \"value\": \"\",\n \"constraint\": \"整数 1–65535\"\n },\n {\n \"name\": \"FTP_PROXY\",\n \"module\": \"runtime\",\n \"path\": \"FTP_PROXY\",\n \"description\": \"构建下载的 FTP 代理入口;仅 inherit 模式原样传递,其他模式清空\",\n \"value\": \"\",\n \"constraint\": \"代理 URL;协议支持由下载工具决定;小写 ftp_proxy 也受支持\"\n },\n {\n \"name\": \"GEMINI_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"GEMINI_API_KEY\",\n \"description\": \"GEMINI 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"GITHUB_API_URL\",\n \"module\": \"runtime\",\n \"path\": \"GITHUB_API_URL\",\n \"description\": \"发布检查使用的 GitHub API 基础地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL;默认 https://api.github.com\"\n },\n {\n \"name\": \"GITHUB_OUTPUT\",\n \"module\": \"runtime\",\n \"path\": \"GITHUB_OUTPUT\",\n \"description\": \"GitHub Actions 步骤输出文件\",\n \"value\": \"\",\n \"constraint\": \"由工作流自动注入的可写文件路径\"\n },\n {\n \"name\": \"GITHUB_REF_NAME\",\n \"module\": \"runtime\",\n \"path\": \"GITHUB_REF_NAME\",\n \"description\": \"发布检查使用的 Git 分支或标签名\",\n \"value\": \"\",\n \"constraint\": \"由 GitHub Actions 注入的引用名称\"\n },\n {\n \"name\": \"GITHUB_REPOSITORY\",\n \"module\": \"runtime\",\n \"path\": \"GITHUB_REPOSITORY\",\n \"description\": \"发布检查使用的 GitHub 仓库\",\n \"value\": \"\",\n \"constraint\": \"owner/repo 格式\"\n },\n {\n \"name\": \"GITHUB_TOKEN\",\n \"module\": \"runtime\",\n \"path\": \"GITHUB_TOKEN\",\n \"description\": \"发布检查调用 GitHub API 的认证令牌\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串;权限由目标仓库与工作流决定\"\n },\n {\n \"name\": \"HAI_AUDIT_ADMIN_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"HAI_AUDIT_ADMIN_PASSWORD\",\n \"description\": \"首次创建审计管理员的独立密码\",\n \"value\": \"\",\n \"constraint\": \"满足 IAM 密码策略;仅在本地或目标进程注入;已有账号不改密\"\n },\n {\n \"name\": \"HAI_BUSINESS_OPERATOR_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"HAI_BUSINESS_OPERATOR_PASSWORD\",\n \"description\": \"首次创建业务操作员的独立密码\",\n \"value\": \"\",\n \"constraint\": \"满足 IAM 密码策略;仅在本地或目标进程注入;已有账号不改密\"\n },\n {\n \"name\": \"HAI_CONFIG_ADMIN_PASSWORD\",\n \"module\": \"runtime\",\n \"path\": \"HAI_CONFIG_ADMIN_PASSWORD\",\n \"description\": \"首次创建配置管理员的独立密码\",\n \"value\": \"\",\n \"constraint\": \"满足 IAM 密码策略;仅在本地或目标进程注入;已有账号不改密\"\n },\n {\n \"name\": \"HAI_CRYPTO_TRANSPORT_SERVERKEYRING\",\n \"module\": \"runtime\",\n \"path\": \"HAI_CRYPTO_TRANSPORT_SERVERKEYRING\",\n \"description\": \"服务端受管版本化传输密钥环;仅私有环境或 Secret Manager 注入\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象 {activeKeyId,keys:{id:{publicKey,privateKey}}};所有节点共享,ID 为 1-64 个字母/数字/下划线/连字符;禁止 PUBLIC_/VITE_/公开 YAML/日志\"\n },\n {\n \"name\": \"HAI_NGINX_IMAGE\",\n \"module\": \"runtime\",\n \"path\": \"HAI_NGINX_IMAGE\",\n \"description\": \"Dockerfile 的 Nginx 基础镜像构建参数,由 CLI 按 build.sources.image 或 --image-source 注入\",\n \"value\": \"\",\n \"constraint\": \"OCI 镜像引用;不是应用 .env 配置项\"\n },\n {\n \"name\": \"HAI_NODE_IMAGE\",\n \"module\": \"runtime\",\n \"path\": \"HAI_NODE_IMAGE\",\n \"description\": \"Dockerfile 的 Node 基础镜像构建参数,由 CLI 按 build.sources.image 或 --image-source 注入\",\n \"value\": \"\",\n \"constraint\": \"OCI 镜像引用;不是应用 .env 配置项\"\n },\n {\n \"name\": \"HF_ENDPOINT\",\n \"module\": \"runtime\",\n \"path\": \"HF_ENDPOINT\",\n \"description\": \"Hugging Face 下载服务基础地址\",\n \"value\": \"https://hf-mirror.com\",\n \"constraint\": \"有效 HTTP(S) URL;本地模型下载回退默认 https://hf-mirror.com\"\n },\n {\n \"name\": \"HF_HUB_OFFLINE\",\n \"module\": \"runtime\",\n \"path\": \"HF_HUB_OFFLINE\",\n \"description\": \"本地模型是否只使用已存在的离线权重\",\n \"value\": \"\",\n \"constraint\": \"1 启用;其余值关闭;离线权重缺失时启动失败\"\n },\n {\n \"name\": \"HOST\",\n \"module\": \"runtime\",\n \"path\": \"HOST\",\n \"description\": \"部署平台 HTTP 监听地址,覆盖 serv/kit server.host\",\n \"value\": \"0.0.0.0\",\n \"constraint\": \"主机名或 IP\"\n },\n {\n \"name\": \"HTTP_PROXY\",\n \"module\": \"runtime\",\n \"path\": \"HTTP_PROXY\",\n \"description\": \"构建下载的 HTTP 代理;inherit 模式继承进程环境,system/custom/none 模式由 CLI 覆盖\",\n \"value\": \"\",\n \"constraint\": \"HTTP(S) 代理 URL;小写 http_proxy 也受支持;镜像拉取仍取决于引擎代理\"\n },\n {\n \"name\": \"HTTPS_PROXY\",\n \"module\": \"runtime\",\n \"path\": \"HTTPS_PROXY\",\n \"description\": \"构建下载的 HTTPS 代理;未提供时回退 HTTP_PROXY;system/custom/none 模式由 CLI 覆盖\",\n \"value\": \"\",\n \"constraint\": \"HTTP(S) 代理 URL;小写 https_proxy 也受支持;镜像拉取仍取决于引擎代理\"\n },\n {\n \"name\": \"IAM_FIXTURE_LDAP\",\n \"module\": \"runtime\",\n \"path\": \"IAM_FIXTURE_LDAP\",\n \"description\": \"通知测试服务是否启用 LDAP fixture\",\n \"value\": \"\",\n \"constraint\": \"0 关闭;1 启用\"\n },\n {\n \"name\": \"IAM_NOTIFICATION_PORT\",\n \"module\": \"runtime\",\n \"path\": \"IAM_NOTIFICATION_PORT\",\n \"description\": \"通知测试服务监听端口\",\n \"value\": \"\",\n \"constraint\": \"整数 1–65535\"\n },\n {\n \"name\": \"IAM_NOTIFICATION_URL\",\n \"module\": \"runtime\",\n \"path\": \"IAM_NOTIFICATION_URL\",\n \"description\": \"确定性通知测试服务地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL\"\n },\n {\n \"name\": \"LANG\",\n \"module\": \"runtime\",\n \"path\": \"LANG\",\n \"description\": \"子进程默认语言与字符集\",\n \"value\": \"\",\n \"constraint\": \"操作系统支持的 locale,例如 en_US.UTF-8\"\n },\n {\n \"name\": \"LC_ALL\",\n \"module\": \"runtime\",\n \"path\": \"LC_ALL\",\n \"description\": \"子进程所有 locale 分类的覆盖值\",\n \"value\": \"\",\n \"constraint\": \"操作系统支持的 locale,例如 en_US.UTF-8\"\n },\n {\n \"name\": \"LC_MESSAGES\",\n \"module\": \"runtime\",\n \"path\": \"LC_MESSAGES\",\n \"description\": \"CLI 消息语言;HAI_CORE_DEFAULTLOCALE、LC_ALL 优先,LANG 后备\",\n \"value\": \"\",\n \"constraint\": \"操作系统支持的 locale,例如 en_US.UTF-8\"\n },\n {\n \"name\": \"LEAK_WORDS\",\n \"module\": \"runtime\",\n \"path\": \"LEAK_WORDS\",\n \"description\": \"提交检查禁止出现的词语\",\n \"value\": \"\",\n \"constraint\": \"JSON 字符串数组,或逗号/换行分隔的词语列表\"\n },\n {\n \"name\": \"MIMO_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"MIMO_API_KEY\",\n \"description\": \"MIMO 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"MOBILE_E2E_PORT\",\n \"module\": \"runtime\",\n \"path\": \"MOBILE_E2E_PORT\",\n \"description\": \"移动示例独立 E2E 预览端口,可由根验收透传\",\n \"value\": \"\",\n \"constraint\": \"整数 1–65535;默认 5175,直接运行时 E2E_PORT 优先\"\n },\n {\n \"name\": \"MODEL_PATH\",\n \"module\": \"runtime\",\n \"path\": \"MODEL_PATH\",\n \"description\": \"模型容器内的权重目录或模型仓库 ID\",\n \"value\": \"/opt/models\",\n \"constraint\": \"可读取的模型路径或有效仓库 ID;默认 /opt/models\"\n },\n {\n \"name\": \"NO_PROXY\",\n \"module\": \"runtime\",\n \"path\": \"NO_PROXY\",\n \"description\": \"构建下载的代理绕过列表;inherit 模式继承,可由 build.proxy.bypass 或 --proxy-bypass 覆盖\",\n \"value\": \"\",\n \"constraint\": \"逗号分隔的主机或地址;小写 no_proxy 也受支持;none 模式清空\"\n },\n {\n \"name\": \"NODE_ENV\",\n \"module\": \"runtime\",\n \"path\": \"NODE_ENV\",\n \"description\": \"Node/Vite 运行模式\",\n \"value\": \"\",\n \"constraint\": \"development | test | production\"\n },\n {\n \"name\": \"OPENAI_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"OPENAI_API_KEY\",\n \"description\": \"OPENAI 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"OPENAI_BASE_URL\",\n \"module\": \"runtime\",\n \"path\": \"OPENAI_BASE_URL\",\n \"description\": \"厂商 SDK 服务基础地址回退\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL\"\n },\n {\n \"name\": \"PATH\",\n \"module\": \"runtime\",\n \"path\": \"PATH\",\n \"description\": \"操作系统提供的可执行程序搜索路径;CLI 用于定位已安装的 pnpm\",\n \"value\": \"\",\n \"constraint\": \"保留系统原值;由操作系统路径分隔符连接,不要在 .env 中置空或作为应用配置覆盖\"\n },\n {\n \"name\": \"PLAYWRIGHT_HTML_OUTPUT_DIR\",\n \"module\": \"runtime\",\n \"path\": \"PLAYWRIGHT_HTML_OUTPUT_DIR\",\n \"description\": \"环境入口;使用位置 packages/cli/templates/shared/run-e2e.mjs\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"PLAYWRIGHT_HTML_REPORT\",\n \"module\": \"runtime\",\n \"path\": \"PLAYWRIGHT_HTML_REPORT\",\n \"description\": \"环境入口;使用位置 packages/cli/templates/shared/run-e2e.mjs\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"POLLINATIONS_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"POLLINATIONS_API_KEY\",\n \"description\": \"POLLINATIONS 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"PORT\",\n \"module\": \"runtime\",\n \"path\": \"PORT\",\n \"description\": \"部署平台 HTTP 监听端口,覆盖 serv/kit server.port\",\n \"value\": \"8000\",\n \"constraint\": \"整数 1–65535\"\n },\n {\n \"name\": \"PUBLIC_API_BASE\",\n \"module\": \"runtime\",\n \"path\": \"PUBLIC_API_BASE\",\n \"description\": \"浏览器/原生客户端 API 地址,不能含凭据\",\n \"value\": \"-\",\n \"constraint\": \"有效 HTTP(S) URL;是否含 /api/v1 以对应客户端为准\"\n },\n {\n \"name\": \"PUBLIC_API_BASE_BASE64\",\n \"module\": \"runtime\",\n \"path\": \"PUBLIC_API_BASE_BASE64\",\n \"description\": \"容器生成前端运行时配置时使用的 API 地址编码\",\n \"value\": \"\",\n \"constraint\": \"PUBLIC_API_BASE 的 Base64 编码,不含凭据\"\n },\n {\n \"name\": \"PUBLIC_API_KEY_EXCHANGE_PATH\",\n \"module\": \"runtime\",\n \"path\": \"PUBLIC_API_KEY_EXCHANGE_PATH\",\n \"description\": \"公开密钥交换端点,须与服务端一致\",\n \"value\": \"\",\n \"constraint\": \"以 / 开头的路径\"\n },\n {\n \"name\": \"PUBLIC_API_TRANSPORT\",\n \"module\": \"runtime\",\n \"path\": \"PUBLIC_API_TRANSPORT\",\n \"description\": \"客户端传输加密开关,须与服务端一致\",\n \"value\": \"\",\n \"constraint\": \"on | off\"\n },\n {\n \"name\": \"PUBLIC_BASE_PATH\",\n \"module\": \"runtime\",\n \"path\": \"PUBLIC_BASE_PATH\",\n \"description\": \"构建进程公开网站目录;SvelteKit编译base及Vite固定基址,Docker网站制品保留此值\",\n \"value\": \"\",\n \"constraint\": \"默认空字符串表示根路径;各段仅ASCII字母、数字、_、.、-,以/开头且无末尾/、查询、片段、外部地址和单独.或..段;原生目标拒绝\"\n },\n {\n \"name\": \"SERVED_MODEL_NAME\",\n \"module\": \"runtime\",\n \"path\": \"SERVED_MODEL_NAME\",\n \"description\": \"vLLM 对外报告的模型名\",\n \"value\": \"qwen3-4b\",\n \"constraint\": \"非空字符串;客户端请求 model 须与之匹配\"\n },\n {\n \"name\": \"SERVICE_BASE_URL\",\n \"module\": \"runtime\",\n \"path\": \"SERVICE_BASE_URL\",\n \"description\": \"Fullstack 开发代理访问服务端的地址\",\n \"value\": \"\",\n \"constraint\": \"有效 HTTP(S) URL\"\n },\n {\n \"name\": \"TAURI_DEV_HOST\",\n \"module\": \"runtime\",\n \"path\": \"TAURI_DEV_HOST\",\n \"description\": \"Tauri 开发时 HMR 可访问的宿主机地址\",\n \"value\": \"\",\n \"constraint\": \"主机名或 IP,由 Tauri 开发工具注入\"\n },\n {\n \"name\": \"VITE_ADAPTER\",\n \"module\": \"runtime\",\n \"path\": \"VITE_ADAPTER\",\n \"description\": \"SvelteKit 构建适配器\",\n \"value\": \"\",\n \"constraint\": \"node | static;未识别的值回退 node\"\n },\n {\n \"name\": \"VITEST\",\n \"module\": \"runtime\",\n \"path\": \"VITEST\",\n \"description\": \"Vitest 自动注入的测试运行标记\",\n \"value\": \"\",\n \"constraint\": \"true 表示运行测试;通常无需手动设置\"\n },\n {\n \"name\": \"VLLM_EXTRA_ARGS\",\n \"module\": \"runtime\",\n \"path\": \"VLLM_EXTRA_ARGS\",\n \"description\": \"追加到 vLLM 服务的启动参数\",\n \"value\": \"\",\n \"constraint\": \"按 shell 参数语法拆分的字符串;参数由当前 vLLM 版本校验\"\n },\n {\n \"name\": \"VLLM_USE_MODELSCOPE\",\n \"module\": \"runtime\",\n \"path\": \"VLLM_USE_MODELSCOPE\",\n \"description\": \"vLLM 是否通过 ModelScope 下载权重\",\n \"value\": \"\",\n \"constraint\": \"1 | true | yes 启用(忽略大小写);其余值关闭\"\n },\n {\n \"name\": \"VOLC_ACCESS_KEY\",\n \"module\": \"runtime\",\n \"path\": \"VOLC_ACCESS_KEY\",\n \"description\": \"VOLC 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"VOLC_API_KEY\",\n \"module\": \"runtime\",\n \"path\": \"VOLC_API_KEY\",\n \"description\": \"VOLC 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"VOLC_APP_KEY\",\n \"module\": \"runtime\",\n \"path\": \"VOLC_APP_KEY\",\n \"description\": \"VOLC 厂商凭据回退;优先在模型项配置 apiKey\",\n \"value\": \"\",\n \"constraint\": \"敏感字符串,启用对应厂商时注入\"\n },\n {\n \"name\": \"HAI_SCHEDULER\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler\",\n \"description\": \"后台任务检查频率、共享租约与日志保留;业务任务仍由宿主注册\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SCHEDULER_ENABLEDB\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.enableDb\",\n \"description\": \"必须使用共享数据库保存执行状态;false 不再允许,需要先初始化\",\n \"value\": \"true\",\n \"constraint\": \"true;取值:true\"\n },\n {\n \"name\": \"HAI_SCHEDULER_LEASEMS\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.leaseMs\",\n \"description\": \"执行租约毫秒数(默认 300000,范围 1000–86400000),在途每三分之一周期续期。\",\n \"value\": \"300000\",\n \"constraint\": \"整数;>= 1000;<= 86400000\"\n },\n {\n \"name\": \"HAI_SCHEDULER_MAXLOGS\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.maxLogs\",\n \"description\": \"执行日志最大保留条数(启用 DB 时生效)\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_SCHEDULER_NODEID\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.nodeId\",\n \"description\": \"节点标识(默认自动生成 UUID,多节点部署时建议设置固定标识以便审计)\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_SCHEDULER_RETENTIONDAYS\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.retentionDays\",\n \"description\": \"执行日志保留天数(启用 DB 时生效)\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_SCHEDULER_TICKINTERVAL\",\n \"module\": \"scheduler\",\n \"path\": \"scheduler.tickInterval\",\n \"description\": \"调度检查间隔,单位毫秒(默认 1000,即每秒检查一次)\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 100;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_SERV\",\n \"module\": \"serv\",\n \"path\": \"serv\",\n \"description\": \"HTTP 服务、路由、跨域和加密传输;监听与访问策略改变后需重启服务\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_CORS\",\n \"module\": \"serv\",\n \"path\": \"serv.cors\",\n \"description\": \"跨域访问的来源、请求头与凭据策略\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.allowedHeaders\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"[\\\"Authorization\\\",\\\"Content-Type\\\",\\\"X-Requested-With\\\",\\\"X-Hai-Reauthentication\\\",\\\"X-Hai-Terminal\\\"]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.allowedHeaders.0\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"Authorization\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_1\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_1\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"Content-Type\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_2\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_2\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Client-Id\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_3\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_3\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Encrypted\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_4\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_4\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Hai-Locale\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_5\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_5\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Request-Id\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_6\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_6\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Requested-With\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_7\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_7\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Hai-Transport\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ALLOWEDHEADERS_8\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_ALLOWEDHEADERS_8\",\n \"description\": \"CORS 允许客户端发送的请求头\",\n \"value\": \"X-Hai-Reauthentication\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_CREDENTIALS\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.credentials\",\n \"description\": \"是否允许跨域请求携带凭据\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_SERV_CORS_EXPOSEDHEADERS\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.exposedHeaders\",\n \"description\": \"CORS 允许客户端读取的响应头\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_SERV_CORS_EXPOSEDHEADERS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.exposedHeaders.0\",\n \"description\": \"CORS 允许客户端读取的响应头\",\n \"value\": \"X-Encrypted\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_EXPOSEDHEADERS_1\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_EXPOSEDHEADERS_1\",\n \"description\": \"CORS 允许客户端读取的响应头\",\n \"value\": \"X-Request-Id\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_EXPOSEDHEADERS_2\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_CORS_EXPOSEDHEADERS_2\",\n \"description\": \"CORS 允许客户端读取的响应头\",\n \"value\": \"X-Hai-Transport\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_NATIVEORIGINS\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.nativeOrigins\",\n \"description\": \"允许使用原生凭据通道的完整 Origin 列表\",\n \"value\": \"http://localhost,https://localhost,http://tauri.localhost,https://tauri.localhost,tauri://localhost,capacitor://localhost\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_CORS_ORIGIN\",\n \"module\": \"serv\",\n \"path\": \"serv.cors.origin\",\n \"description\": \"CORS 允许的 Origin,星号表示任意来源\",\n \"value\": \"*\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP\",\n \"module\": \"serv\",\n \"path\": \"serv.http\",\n \"description\": \"HTTP 基础路径、请求体大小及访问配置\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access\",\n \"description\": \"每次请求的路径/IP/时间策略;false 关闭,内联规则与独立 YAML 文件引用不能混用\",\n \"value\": \"false\",\n \"constraint\": \"true | false;false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_FILE\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.file\",\n \"description\": \"独立 yml/yaml 策略文件;按工作目录解析,启动读一次,最大 1 MiB\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 4096;正则 \\\\.ya?ml$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global\",\n \"description\": \"所有宿主请求的共同条件;包含健康检查,省略不增加全局限制\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_ALLOWIPS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.allowIps\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_ALLOWIPS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.allowIps.0\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;非空时只允许匹配的可信客户端地址。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_DENYIPS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.denyIps\",\n \"description\": \"拒绝的 IP/CIDR;拒绝优先,空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_DENYIPS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.denyIps.0\",\n \"description\": \"拒绝的 IP/CIDR;与 allowIps 同时命中时拒绝优先。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_TIMEZONE\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.timezone\",\n \"description\": \"访问时间窗口使用的 IANA 时区,默认 UTC,使用服务器时钟\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows\",\n \"description\": \"允许的访问时间窗口;空数组不限时间,最多 100 个\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows.0\",\n \"description\": \"允许的时段;空列表不限时间,跨午夜窗口按开始日归属。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS_0_DAYS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows.0.days\",\n \"description\": \"允许窗口的开始日,周一 1 至周日 7,至少一项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 7\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS_0_DAYS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows.0.days.0\",\n \"description\": \"周一为 1、周日为 7;跨午夜填写开始日。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 7\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS_0_END\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows.0.end\",\n \"description\": \"允许窗口结束时间 HH:mm,不含结束;早于开始表示跨午夜,不得与开始相同\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_GLOBAL_WINDOWS_0_START\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.global.windows.0.start\",\n \"description\": \"允许窗口开始时间 HH:mm,包含开始时刻\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules\",\n \"description\": \"路径访问规则,最多 1000 条;全局和所有匹配规则都必须通过\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0\",\n \"description\": \"路径规则;仅支持精确路径和末尾 /**,不用正则表达式。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_ALLOWIPS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.allowIps\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_ALLOWIPS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.allowIps.0\",\n \"description\": \"允许的 IPv4/IPv6 地址或 CIDR;非空时只允许匹配的可信客户端地址。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_DENYIPS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.denyIps\",\n \"description\": \"拒绝的 IP/CIDR;拒绝优先,空数组不限,最多 1000 项\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 1000\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_DENYIPS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.denyIps.0\",\n \"description\": \"拒绝的 IP/CIDR;与 allowIps 同时命中时拒绝优先。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_ENCRYPTION\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.encryption\",\n \"description\": \"路径的应用层加解密模式;省略沿用宿主,required 强制加密,disabled 明文;重叠路径和方法不得冲突\",\n \"value\": \"required\",\n \"constraint\": \"字符串;取值:required | disabled\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_ID\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.id\",\n \"description\": \"唯一规则编号,用于日志定位;1–64 个字母数字下划线、点或连字符\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 64;正则 ^[\\\\w.-]+$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_METHODS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.methods\",\n \"description\": \"受该规则约束的 HTTP 方法;空数组全部方法,GET 不隐含 HEAD\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 9\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_METHODS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.methods.0\",\n \"description\": \"HTTP 方法,空数组表示所有方法;GET 不隐含 HEAD。;此变量整体替换单个数组项\",\n \"value\": \"GET\",\n \"constraint\": \"字符串;取值:GET | HEAD | POST | PUT | PATCH | DELETE | OPTIONS | CONNECT | TRACE\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_PATHS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.paths\",\n \"description\": \"完整请求路径列表,包含部署前缀;精确或末尾 /**,最多 100 项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 100\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_PATHS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.paths.0\",\n \"description\": \"完整请求路径;末尾 /** 同时匹配该路径及子路径,大小写敏感。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1;最大字符数 2048\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_TIMEZONE\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.timezone\",\n \"description\": \"访问时间窗口使用的 IANA 时区,默认 UTC,使用服务器时钟\",\n \"value\": \"UTC\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows\",\n \"description\": \"允许的访问时间窗口;空数组不限时间,最多 100 个\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最多项数 100\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows.0\",\n \"description\": \"允许的时段;空列表不限时间,跨午夜窗口按开始日归属。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS_0_DAYS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows.0.days\",\n \"description\": \"允许窗口的开始日,周一 1 至周日 7,至少一项\",\n \"value\": \"\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展;最少项数 1;最多项数 7\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS_0_DAYS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows.0.days.0\",\n \"description\": \"周一为 1、周日为 7;跨午夜填写开始日。;此变量整体替换单个数组项\",\n \"value\": \"\",\n \"constraint\": \"整数;>= 1;<= 7\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS_0_END\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows.0.end\",\n \"description\": \"允许窗口结束时间 HH:mm,不含结束;早于开始表示跨午夜,不得与开始相同\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_ACCESS_RULES_0_WINDOWS_0_START\",\n \"module\": \"serv\",\n \"path\": \"serv.http.access.rules.0.windows.0.start\",\n \"description\": \"允许窗口开始时间 HH:mm,包含开始时刻\",\n \"value\": \"\",\n \"constraint\": \"字符串;正则 ^(?:[01]\\\\d|2[0-3]):[0-5]\\\\d$\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_APIPREFIX\",\n \"module\": \"serv\",\n \"path\": \"serv.http.apiPrefix\",\n \"description\": \"业务 HTTP API 的基础路径前缀\",\n \"value\": \"/api/v1\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_DOCS\",\n \"module\": \"serv\",\n \"path\": \"serv.http.docs\",\n \"description\": \"HTTP API 文档功能开关或文档访问配置\",\n \"value\": \"false\",\n \"constraint\": \"true | false;false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_DOCS_PATH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.docs.path\",\n \"description\": \"当前 HTTP 功能的端点路径\",\n \"value\": \"/docs\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_DOCS_REQUIREAUTH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.docs.requireAuth\",\n \"description\": \"是否要求认证后访问接口文档\",\n \"value\": \"\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_HEALTH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.health\",\n \"description\": \"HTTP 健康检查开关或检查配置\",\n \"value\": \"{\\\"path\\\":\\\"/health\\\",\\\"readyPath\\\":\\\"/ready\\\"}\",\n \"constraint\": \"JSON 对象;false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_HEALTH_PATH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.health.path\",\n \"description\": \"当前 HTTP 功能的端点路径\",\n \"value\": \"/health\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_HEALTH_READYPATH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.health.readyPath\",\n \"description\": \"服务就绪检查的端点路径\",\n \"value\": \"/ready\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_OPENAPI\",\n \"module\": \"serv\",\n \"path\": \"serv.http.openapi\",\n \"description\": \"OpenAPI 端点开关或端点配置\",\n \"value\": \"false\",\n \"constraint\": \"true | false;false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_OPENAPI_PATH\",\n \"module\": \"serv\",\n \"path\": \"serv.http.openapi.path\",\n \"description\": \"当前 HTTP 功能的端点路径\",\n \"value\": \"/openapi.json\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_TRUSTEDPROXIES\",\n \"module\": \"serv\",\n \"path\": \"serv.http.trustedProxies\",\n \"description\": \"可信代理 IP/CIDR;默认 auto 在普通宿主忽略转发头,仅受管私有 Compose 采用容器网段\",\n \"value\": \"auto\",\n \"constraint\": \"字符串;JSON 数组;索引可按 0、1、2 扩展;最多项数 1000;取值:auto\"\n },\n {\n \"name\": \"HAI_SERV_HTTP_TRUSTEDPROXIES_0\",\n \"module\": \"serv\",\n \"path\": \"serv.http.trustedProxies.0\",\n \"description\": \"可信代理的 IP/CIDR,只有这些代理的转发头会被信任\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 ipv4;正则 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$;格式 ipv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$;格式 cidrv4;正则 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/([0-9]|[1-2][0-9]|3[0-2])$;格式 cidrv6;正则 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$\"\n },\n {\n \"name\": \"HAI_SERV_REFRESH_COOKIE_SECURE\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_REFRESH_COOKIE_SECURE\",\n \"description\": \"Serv 刷新 Cookie 的 Secure 属性;留空沿用环境默认值,生产默认开启\",\n \"value\": \"\",\n \"constraint\": \"true | false;仅在受控内网或 VPN 的 HTTP 入口使用 false\"\n },\n {\n \"name\": \"HAI_SERV_SERVER\",\n \"module\": \"serv\",\n \"path\": \"serv.server\",\n \"description\": \"HTTP 服务监听地址与端口\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_SERV_SERVER_HOST\",\n \"module\": \"serv\",\n \"path\": \"serv.server.host\",\n \"description\": \"HTTP 监听主机名或 IP\",\n \"value\": \"127.0.0.1\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_SERV_SERVER_PORT\",\n \"module\": \"serv\",\n \"path\": \"serv.server.port\",\n \"description\": \"HTTP 监听端口\",\n \"value\": \"3000\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT\",\n \"module\": \"serv\",\n \"path\": \"serv.transport\",\n \"description\": \"传输加密开关或密钥协商配置\",\n \"value\": \"false\",\n \"constraint\": \"false;JSON 对象;整体覆盖时替换该节点;取值:false\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.excludePaths\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"[]\",\n \"constraint\": \"JSON 数组;索引可按 0、1、2 扩展\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_0\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.excludePaths.0\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/health\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_1\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_1\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/ready\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_2\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_2\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/openapi.json\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_3\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_3\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/docs\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_4\",\n \"module\": \"serv\",\n \"path\": \"HAI_SERV_TRANSPORT_EXCLUDEPATHS_4\",\n \"description\": \"不进入传输加密管道的路径\",\n \"value\": \"/_hai/scalar.js\",\n \"constraint\": \"以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_KEYEXCHANGEPATH\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.keyExchangePath\",\n \"description\": \"客户端与服务端约定的密钥交换端点\",\n \"value\": \"/_hai/key-exchange\",\n \"constraint\": \"字符串;以 / 开头的路径字符串\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_MAXFUTURESKEWSECONDS\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.maxFutureSkewSeconds\",\n \"description\": \"允许客户端请求时间领先服务器的秒数\",\n \"value\": \"30\",\n \"constraint\": \"整数;>= 0;<= 300\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_MAXPLAINTEXTBYTES\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.maxPlaintextBytes\",\n \"description\": \"普通业务双向明文上限;auto 为 1 MiB;大材料使用 routePlaintextBytes 单独声明\",\n \"value\": \"1048576\",\n \"constraint\": \"整数;>= 1024;<= 67108864;字符串;取值:auto\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_MAXREQUESTAGESECONDS\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.maxRequestAgeSeconds\",\n \"description\": \"请求从签发起的有效秒数\",\n \"value\": \"300\",\n \"constraint\": \"整数;>= 1;<= 600\"\n },\n {\n \"name\": \"HAI_SERV_TRANSPORT_ROUTEPLAINTEXTBYTES\",\n \"module\": \"serv\",\n \"path\": \"serv.transport.routePlaintextBytes\",\n \"description\": \"完整路径段到双向明文字节上限的映射;星号匹配单段,供附件和归档独立容量\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_STORAGE\",\n \"module\": \"storage\",\n \"path\": \"storage\",\n \"description\": \"文件和私有归档存储;按 type 选择本地目录或 S3,公开地址影响文件访问方式\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_STORAGE_ACCESSKEYID\",\n \"module\": \"storage\",\n \"path\": \"storage.accessKeyId\",\n \"description\": \"Access Key ID\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_STORAGE_BUCKET\",\n \"module\": \"storage\",\n \"path\": \"storage.bucket\",\n \"description\": \"存储桶名称\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_STORAGE_CREATEBUCKET\",\n \"module\": \"storage\",\n \"path\": \"storage.createBucket\",\n \"description\": \"初始化时检查并创建缺失的桶;默认关闭,启用后凭据须有建桶权限。\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_STORAGE_DIRECTORYMODE\",\n \"module\": \"storage\",\n \"path\": \"storage.directoryMode\",\n \"description\": \"目录创建权限\",\n \"value\": \"493\",\n \"constraint\": \"数字\"\n },\n {\n \"name\": \"HAI_STORAGE_ENDPOINT\",\n \"module\": \"storage\",\n \"path\": \"storage.endpoint\",\n \"description\": \"自定义端点(用于 MinIO、RustFS、阿里云 OSS 等)\",\n \"value\": \"https://s3.amazonaws.com\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_STORAGE_FILEMODE\",\n \"module\": \"storage\",\n \"path\": \"storage.fileMode\",\n \"description\": \"文件创建权限\",\n \"value\": \"420\",\n \"constraint\": \"数字\"\n },\n {\n \"name\": \"HAI_STORAGE_FORCEPATHSTYLE\",\n \"module\": \"storage\",\n \"path\": \"storage.forcePathStyle\",\n \"description\": \"强制使用路径风格 URL(某些 S3 兼容服务需要)\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_STORAGE_OPERATIONLOG\",\n \"module\": \"storage\",\n \"path\": \"storage.operationLog\",\n \"description\": \"storage 操作日志的读写开关、级别与字段截断规则\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_STORAGE_OPERATIONLOG_LEVEL\",\n \"module\": \"storage\",\n \"path\": \"storage.operationLog.level\",\n \"description\": \"操作日志的输出级别\",\n \"value\": \"debug\",\n \"constraint\": \"字符串;取值:info | debug | trace\"\n },\n {\n \"name\": \"HAI_STORAGE_OPERATIONLOG_MAXLENGTH\",\n \"module\": \"storage\",\n \"path\": \"storage.operationLog.maxLength\",\n \"description\": \"操作日志字段的最大字符数,0 表示不截断\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_STORAGE_OPERATIONLOG_READ\",\n \"module\": \"storage\",\n \"path\": \"storage.operationLog.read\",\n \"description\": \"是否记录读取操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_STORAGE_OPERATIONLOG_WRITE\",\n \"module\": \"storage\",\n \"path\": \"storage.operationLog.write\",\n \"description\": \"是否记录写入操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_STORAGE_PREFIX\",\n \"module\": \"storage\",\n \"path\": \"storage.prefix\",\n \"description\": \"S3 桶内对象键前缀,例如 my-app/uploads/,留空使用桶根\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_STORAGE_PUBLICENDPOINT\",\n \"module\": \"storage\",\n \"path\": \"storage.publicEndpoint\",\n \"description\": \"浏览器预签名端点,可含代理目录(如 /delivery/files),不含桶名、凭据或查询;代理须去除目录并保留 Host。\",\n \"value\": \"https://files.example.com\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_STORAGE_PUBLICURL\",\n \"module\": \"storage\",\n \"path\": \"storage.publicUrl\",\n \"description\": \"公开访问基础 URL(用于生成公开 URL)\",\n \"value\": \"\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_STORAGE_REGION\",\n \"module\": \"storage\",\n \"path\": \"storage.region\",\n \"description\": \"区域\",\n \"value\": \"us-east-1\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_STORAGE_ROOT\",\n \"module\": \"storage\",\n \"path\": \"storage.root\",\n \"description\": \"根目录路径\",\n \"value\": \"./data/uploads\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_STORAGE_SECRETACCESSKEY\",\n \"module\": \"storage\",\n \"path\": \"storage.secretAccessKey\",\n \"description\": \"Secret Access Key\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_STORAGE_TYPE\",\n \"module\": \"storage\",\n \"path\": \"storage.type\",\n \"description\": \"存储类型\",\n \"value\": \"local\",\n \"constraint\": \"字符串;取值:s3 | local\"\n },\n {\n \"name\": \"HAI_TEST_IMAGE_LEDGER\",\n \"module\": \"test\",\n \"path\": \"HAI_TEST_IMAGE_LEDGER\",\n \"description\": \"环境入口;使用位置 packages/cli/src/commands/cli-build.ts\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"HAI_TEST_IMAGE_RUN\",\n \"module\": \"test\",\n \"path\": \"HAI_TEST_IMAGE_RUN\",\n \"description\": \"环境入口;使用位置 packages/cli/src/commands/cli-build.ts\",\n \"value\": \"\",\n \"constraint\": \"字符串;按使用位置的校验规则填写\"\n },\n {\n \"name\": \"HAI_VECDB\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb\",\n \"description\": \"向量检索后端及连接;生产多节点使用共享向量服务,不能用本地目录替代\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_VECDB_APIKEY\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.apiKey\",\n \"description\": \"Qdrant:API key;Chroma:Authorization Bearer token,用于同协议的自托管服务/网关,不提供 Chroma Cloud 契约\",\n \"value\": \"\",\n \"constraint\": \"字符串;Qdrant API key;Chroma 为空串或无空白的可打印 ASCII Bearer token\"\n },\n {\n \"name\": \"HAI_VECDB_DATABASE\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.database\",\n \"description\": \"数据库名称\",\n \"value\": \"\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_VECDB_HOST\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.host\",\n \"description\": \"主机(默认 localhost)\",\n \"value\": \"localhost\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_VECDB_INDEXTYPE\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.indexType\",\n \"description\": \"索引类型(默认 hnsw)\",\n \"value\": \"hnsw\",\n \"constraint\": \"字符串;取值:ivfflat | hnsw\"\n },\n {\n \"name\": \"HAI_VECDB_METRIC\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.metric\",\n \"description\": \"距离度量(默认 cosine)\",\n \"value\": \"cosine\",\n \"constraint\": \"字符串;取值:cosine | euclidean | dot\"\n },\n {\n \"name\": \"HAI_VECDB_OPERATIONLOG\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.operationLog\",\n \"description\": \"vecdb 操作日志的读写开关、级别与字段截断规则\",\n \"value\": \"\",\n \"constraint\": \"JSON 对象;整体覆盖时替换该节点\"\n },\n {\n \"name\": \"HAI_VECDB_OPERATIONLOG_LEVEL\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.operationLog.level\",\n \"description\": \"操作日志的输出级别\",\n \"value\": \"debug\",\n \"constraint\": \"字符串;取值:info | debug | trace\"\n },\n {\n \"name\": \"HAI_VECDB_OPERATIONLOG_MAXLENGTH\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.operationLog.maxLength\",\n \"description\": \"操作日志字段的最大字符数,0 表示不截断\",\n \"value\": \"1000\",\n \"constraint\": \"整数;>= 0;<= 9007199254740991\"\n },\n {\n \"name\": \"HAI_VECDB_OPERATIONLOG_READ\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.operationLog.read\",\n \"description\": \"是否记录读取操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_VECDB_OPERATIONLOG_WRITE\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.operationLog.write\",\n \"description\": \"是否记录写入操作\",\n \"value\": \"false\",\n \"constraint\": \"true | false\"\n },\n {\n \"name\": \"HAI_VECDB_PASSWORD\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.password\",\n \"description\": \"密码\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_VECDB_PATH\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.path\",\n \"description\": \"本地持久化路径(嵌入式模式:提供且无 url 时自动拉起本地服务)\",\n \"value\": \"./data/vecdb\",\n \"constraint\": \"字符串;最小字符数 1\"\n },\n {\n \"name\": \"HAI_VECDB_PORT\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.port\",\n \"description\": \"端口(默认 8000)\",\n \"value\": \"5432\",\n \"constraint\": \"整数;>= 1;<= 65535\"\n },\n {\n \"name\": \"HAI_VECDB_SERVERCOMMAND\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.serverCommand\",\n \"description\": \"拉起本地服务的可执行命令(默认 'chroma',可指定绝对路径)\",\n \"value\": \"chroma\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_VECDB_STARTUPTIMEOUT\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.startupTimeout\",\n \"description\": \"拉起本地服务的就绪等待超时(毫秒,默认 30000)\",\n \"value\": \"30000\",\n \"constraint\": \"整数;<= 9007199254740991;> 0\"\n },\n {\n \"name\": \"HAI_VECDB_TABLEPREFIX\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.tablePrefix\",\n \"description\": \"表名前缀(默认 'vec_')\",\n \"value\": \"vec_\",\n \"constraint\": \"字符串\"\n },\n {\n \"name\": \"HAI_VECDB_TYPE\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.type\",\n \"description\": \"后端或功能类型,按枚举选择\",\n \"value\": \"lancedb\",\n \"constraint\": \"字符串;取值:lancedb | pgvector | qdrant | chroma\"\n },\n {\n \"name\": \"HAI_VECDB_URL\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.url\",\n \"description\": \"pgvector:连接串;Qdrant:HTTP(S) 服务地址;Chroma:HTTP(S) 根端点,优先于 host/port,不允许凭据、路径前缀、query 或 fragment\",\n \"value\": \"http://localhost:6333\",\n \"constraint\": \"字符串;格式 uri\"\n },\n {\n \"name\": \"HAI_VECDB_USER\",\n \"module\": \"vecdb\",\n \"path\": \"vecdb.user\",\n \"description\": \"用户名\",\n \"value\": \"\",\n \"constraint\": \"字符串\"\n }\n]\n","/**\n * 配置模板与环境变量清单共用的转换逻辑。\n * @module cli-config-environment\n */\nimport { isMap, isScalar, isSeq, LineCounter, parseDocument, Scalar } from 'yaml'\nimport catalog from './cli-config-catalog.json' with { type: 'json' }\n\nconst catalogByName = new Map(catalog.map(entry => [entry.name, entry]))\nconst catalogByPath = new Map(catalog.map(entry => [entry.path, entry]))\n\n/** YAML 使用配置块和列表表达结构;环境变量目录中的 JSON 覆盖说明不适合作为字段填写提示。 */\nfunction configurationConstraint(value: string): string {\n return value.replaceAll('JSON 对象;整体覆盖时替换该节点', '配置块(填写下方缩进字段)')\n .replaceAll('JSON 数组;索引可按 0、1、2 扩展', '列表(每项以 - 开头)')\n .replaceAll('string,null', '字符串或空值')\n .replaceAll(';<= 9007199254740991', '')\n}\n\n/** 只清理生成的 YAML 注释,不能误删协议正文、标题等字符串里的同名文字。 */\nfunction withoutGeneratedDocumentation(content: string): string {\n const { lines, document: optional, counter } = readOptionalConfig(content)\n const starts: number[] = []\n let offset = 0\n for (const line of lines) {\n starts.push(offset)\n offset += line.length + 1\n }\n const ranges: Array<[number, number]> = []\n function originalOffset(position: number, end: boolean): number {\n const location = counter.linePos(position)\n const line = lines[location.line - 1] ?? ''\n const prefix = /^(\\s*)# (?=\\s*(?:[a-z][\\w-]*:|-\\s))/i.exec(line)\n const column = location.col - 1\n const removed = prefix && (column > prefix[1].length || (!end && column === prefix[1].length))\n ? 2\n : 0\n return (starts[location.line - 1] ?? content.length) + column + removed\n }\n function collect(node: unknown, virtual: boolean): void {\n if (isMap(node)) {\n for (const pair of node.items)\n collect(pair.value, virtual)\n }\n else if (isSeq(node)) {\n node.items.forEach(item => collect(item, virtual))\n }\n else if (isScalar(node) && node.range) {\n ranges.push(virtual\n ? [\n originalOffset(node.range[0], false),\n originalOffset(node.range[1], true),\n ]\n : [node.range[0], node.range[1]])\n }\n }\n collect(parseDocument(content).contents, false)\n if (!optional.errors.length)\n collect(optional.contents, true)\n const protectedAt = (position: number) => ranges.some(([start, end]) => position >= start && position < end)\n return lines.flatMap((line, index) => {\n const metadata = /^(\\s*)#\\s*(?:用途|说明|取值):/.exec(line)\n if (metadata && !protectedAt(starts[index] + metadata[1].length))\n return []\n const suffix = line.lastIndexOf(' # 说明:')\n return [\n suffix >= 0 && !protectedAt(starts[index] + suffix + 1)\n ? line.slice(0, suffix)\n : line,\n ]\n }).join('\\n')\n}\n\n/**\n * 将 Schema 的用途说明同步到真实 YAML 字段,保留既有注释和值;重复生成不追加副本。\n * @param name - 模块配置名\n * @param content - 已有 YAML 或已参数化的模板\n * @returns 带字段用途说明的 YAML\n * @example 模块内部上下文\n * ```ts\n * const yaml = documentConfig('iam', 'register:\\n enabled: false\\n')\n * // 保留 false,并说明关闭自助注册不会阻止已有账号登录。\n * ```\n */\nexport function documentConfig(name: string, content: string): string {\n content = withoutGeneratedDocumentation(content)\n const document = parseDocument(content)\n if (document.errors.length)\n throw new Error(`Invalid ${name} configuration documentation source`)\n let changed = false\n function clearGeneratedComments(node: unknown): void {\n if (isMap(node) || isSeq(node) || isScalar(node)) {\n for (const field of ['commentBefore', 'comment'] as const) {\n const previous = node[field]\n if (!previous)\n continue\n const kept = previous.split('\\n').filter(line => !/^\\s*(?:用途|说明|取值):/.test(line)).join('\\n') || null\n if (kept !== previous) {\n node[field] = kept\n changed = true\n }\n }\n }\n }\n function walk(node: unknown, segments: string[], sequenceItem = false): void {\n // 首字段/段尾的注释可能附在容器或前一个值上;只清理元数据,不触碰 Markdown 正文。\n clearGeneratedComments(node)\n if (isMap(node)) {\n for (const [index, pair] of node.items.entries()) {\n if (!isScalar(pair.key))\n continue\n clearGeneratedComments(pair.key)\n const field = [\n ...segments,\n String(pair.key.value),\n ]\n const description = catalogByPath.get([name, ...field].join('.').replace(/\\.\\d+(?=\\.|$)/g, '.0'))?.description\n if (description) {\n // 数组项的首字段说明放在短横线之前,避免生成 \"- # 注释\" 破坏既有排版规范。\n const target = sequenceItem && index === 0\n ? node\n : pair.key\n const entry = catalogByPath.get([name, ...field].join('.').replace(/\\.\\d+(?=\\.|$)/g, '.0'))\n const comment = [\n target.commentBefore,\n ` 说明:${description}`,\n entry?.constraint\n ? ` 取值:${configurationConstraint(entry.constraint)}`\n : undefined,\n ].filter(Boolean).join('\\n')\n if (target.commentBefore !== comment) {\n target.commentBefore = comment\n changed = true\n }\n }\n walk(pair.value, field)\n }\n }\n else if (isSeq(node)) {\n node.items.forEach((item, index) => walk(item, [\n ...segments,\n String(index),\n ], true))\n }\n }\n walk(document.contents, [])\n // YAML 序列化可能把空注释行写成 \"# \";只清理顶格空注释,不触碰块字符串内容。\n return documentOptionalConfig(name, changed\n ? document.toString({ lineWidth: 0 })\n : content).replace(/^#[\\t ]+$/gm, '#')\n}\n\n/** 注释中的可选字段同样要说明用途与取值;保持单层 #,不启用可选功能。 */\nfunction documentOptionalConfig(name: string, content: string): string {\n const { lines, document, counter } = readOptionalConfig(content)\n if (document.errors.length)\n return content\n const additions = new Map<number, string>()\n function walk(node: unknown, path: string[]): void {\n if (isMap(node)) {\n for (const pair of node.items) {\n if (!isScalar(pair.key))\n continue\n const segments = [\n ...path,\n String(pair.key.value),\n ]\n const entry = catalogByPath.get([name, ...segments].join('.').replace(/\\.\\d+(?=\\.|$)/g, '.0'))\n if (entry && pair.key.range) {\n const line = counter.linePos(pair.key.range[0]).line - 1\n const prefix = /^(\\s*#\\s*)(?:-\\s*)?[A-Z][\\w-]*:/i.exec(lines[line])?.[1]\n // 用行尾说明保留可直接取消注释的 YAML,不额外生成会被误取消注释的说明行。\n if (prefix && !additions.has(line))\n additions.set(line, ` # 说明:${entry.description};取值:${configurationConstraint(entry.constraint)}`)\n }\n walk(pair.value, segments)\n }\n }\n else if (isSeq(node)) {\n node.items.forEach((item, index) => walk(item, [\n ...path,\n String(index),\n ]))\n }\n }\n walk(document.contents, [])\n return lines.map((line, index) => line + (additions.get(index) ?? '')).join('\\n')\n}\n\n/** 将可选示例临时作为 YAML 读取,只用于获取路径和位置,原文件仍保持注释。 */\nfunction readOptionalConfig(content: string) {\n // 行尾注释必须追加在换行符之前;去掉 CRLF 中的 CR,避免说明被挤到下一行。\n const lines = content.split(/\\r?\\n/)\n const virtual = lines.map(line => line.replace(/^(\\s*)# (?=\\s*(?:[A-Z][\\w-]*:|-\\s))/i, '$1')).join('\\n')\n const counter = new LineCounter()\n const document = parseDocument(virtual, { uniqueKeys: false, lineCounter: counter })\n return { lines, document, counter }\n}\n\n/**\n * 单个环境变量的配置位置、示例建议值和取值说明。\n * @example 模块内部上下文\n * ```ts\n * const variable: ConfigEnvironmentVariable = { name: 'HAI_DB_TYPE', path: 'db.type', value: 'sqlite', constraint: 'sqlite | postgresql | mysql' }\n * ```\n */\nexport interface ConfigEnvironmentVariable {\n /** 环境变量名,例如 HAI_DB_TYPE。 */\n name: string\n /** YAML 字段路径;显式别名使用变量名辅助定位。 */\n path: string\n /** 仍包含必要 YAML 引号的非敏感示例建议值;不等于所有 Provider 的 Schema 默认值。 */\n value: string\n /** 类型、枚举、范围、单位或条件约束。 */\n constraint: string\n /** 字段用途;优先来自模块配置 Schema 的源码注释。 */\n description?: string\n /** 仅出现在注释示例中;.env.example 保持注释,避免误以为该功能已经启用。 */\n optional?: boolean\n}\n\n/**\n * 将运行参数改为显式环境引用,保留本地启动默认值和 YAML 注释。\n * 业务正文、表/列名、模型 ID 等结构定义保留在 YAML 中。\n * @param name - 配置名,不含文件名前导下划线\n * @param content - YAML 内容\n * @returns 含环境变量引用的 YAML\n * @example 模块内部上下文\n * ```ts\n * const yaml = parameterizeConfig('db', 'type: sqlite\\n') // type: ${HAI_DB_TYPE:sqlite}\n * ```\n */\nexport function parameterizeConfig(name: string, content: string): string {\n content = parameterizeOptionalConfig(name, content)\n const document = parseDocument(content)\n if (document.errors.length > 0)\n throw new Error(`Invalid ${name} configuration template`)\n if (!document.contents || (isScalar(document.contents) && document.contents.value === null))\n return content\n\n let changed = false\n function walk(node: unknown, path: string[]): void {\n // 固定业务契约不配置化;正文中的 {code} 等占位符也不能作为环境变量默认值。\n if (['templates', 'supportedLocales', 'id'].includes(path[0]) || path.includes('redact')\n || (name === 'audit' && /^(?:userTable|userIdColumn|userNameColumn)$/.test(path[0] ?? ''))\n || (name === 'iam' && ['ui', 'agreements', 'rbac'].includes(path[0]) && !(path.at(-1) ?? '').endsWith('Url'))\n || (['id', 'name', 'operations'].includes(path.at(-1) ?? '') && path.some(segment => /^\\d+$/.test(segment)))) {\n return\n }\n\n if (isMap(node)) {\n for (const pair of node.items) {\n if (isScalar(pair.key)) {\n walk(pair.value, [\n ...path,\n String(pair.key.value),\n ])\n }\n }\n }\n else if (isSeq(node)) {\n node.items.forEach((item, index) => walk(item, [\n ...path,\n String(index),\n ]))\n }\n else if (isScalar(node) && node.value !== null && node.value !== undefined) {\n const value = String(node.value)\n // 显式厂商凭据名沿用原约定;多行正文和含花括号的业务文本不能嵌入默认值语法。\n if (value.includes('${') || /[\\n\\r}]/.test(value))\n return\n const variable = ['HAI', name, ...path].map(part => part.replace(/[^a-z0-9]+/gi, '_').replace(/^_+|_+$/g, '').toUpperCase()).join('_')\n const parsed = parseDocument(value)\n const fallback = typeof node.value === 'string' && value !== '' && (parsed.errors.length > 0 || !isScalar(parsed.contents) || parsed.contents.value !== value)\n ? JSON.stringify(value)\n : value\n node.value = `\\${${variable}:${fallback}}`\n node.type = Scalar.PLAIN\n changed = true\n }\n }\n\n walk(document.contents, [])\n return changed\n ? document.toString({ lineWidth: 0 })\n : content\n}\n\n/** 可选 YAML 示例保留注释状态,但使用与启用字段相同的环境路径,便于取消注释后直接配置。 */\nfunction parameterizeOptionalConfig(name: string, content: string): string {\n const { lines, document, counter } = readOptionalConfig(content)\n if (document.errors.length)\n return content\n const edits = new Map<number, Array<{ start: number, end: number, value: string }>>()\n function walk(node: unknown, segments: string[]): void {\n if (isMap(node)) {\n for (const pair of node.items) {\n if (isScalar(pair.key)) {\n walk(pair.value, [\n ...segments,\n String(pair.key.value),\n ])\n }\n }\n }\n else if (isSeq(node)) {\n node.items.forEach((item, index) => walk(item, [\n ...segments,\n String(index),\n ]))\n }\n else if (isScalar(node) && node.range && node.value !== null && node.value !== undefined) {\n const location = counter.linePos(node.range[0])\n const line = lines[location.line - 1]\n if (!/^\\s*# /.test(line) || /[\\n\\r}]/.test(String(node.value)) || String(node.value).includes('${'))\n return\n const field = [name, ...segments].join('.').replace(/\\.\\d+(?=\\.|$)/g, '.0')\n if (!catalogByPath.has(field) || ['id', 'name', 'operations'].includes(segments.at(-1) ?? '') || segments.includes('templates') || segments.includes('redact'))\n return\n const variable = ['HAI', name, ...segments].map(part => part.replace(/[^a-z0-9]+/gi, '_').replace(/^_+|_+$/g, '').toUpperCase()).join('_')\n const text = String(node.value)\n const parsed = parseDocument(text)\n const fallback = typeof node.value === 'string' && text !== '' && (parsed.errors.length > 0 || !isScalar(parsed.contents) || parsed.contents.value !== text)\n ? JSON.stringify(text)\n : text\n const replacement = `\\${${variable}:${fallback}}`\n const list = edits.get(location.line - 1) ?? []\n list.push({\n start: location.col + 1,\n end: location.col + 1 + node.range[1] - node.range[0],\n value: JSON.stringify(replacement),\n })\n edits.set(location.line - 1, list)\n }\n }\n walk(document.contents, [])\n for (const [index, replacements] of edits) {\n for (const edit of replacements.sort((a, b) => b.start - a.start))\n lines[index] = lines[index].slice(0, edit.start) + edit.value + lines[index].slice(edit.end)\n }\n return lines.join('\\n')\n}\n\n/**\n * 从实际 YAML 引用提取变量清单,避免 .env 与模板的默认值各维护一份。\n * @param name - 配置名\n * @param content - 已转换的 YAML\n * @returns 去重后的变量列表(含注释中的可选凭据)\n * @example 模块内部上下文\n * ```ts\n * const variables = configEnvironmentVariables('db', 'type: ${HAI_DB_TYPE:sqlite}\\n')\n * const name = variables[0]?.name // HAI_DB_TYPE\n * ```\n */\nexport function configEnvironmentVariables(name: string, content: string): ConfigEnvironmentVariable[] {\n const variables = new Map<string, ConfigEnvironmentVariable>()\n const locations = new Map<string, string>()\n const activeValues = new Map<string, string>()\n function locate(node: unknown, path: string[]): void {\n if (isMap(node)) {\n for (const pair of node.items) {\n if (isScalar(pair.key)) {\n locate(pair.value, [\n ...path,\n String(pair.key.value),\n ])\n }\n }\n }\n else if (isSeq(node)) {\n node.items.forEach((item, index) => locate(item, [\n ...path,\n String(index),\n ]))\n }\n else if (isScalar(node) && typeof node.value === 'string') {\n for (const match of node.value.matchAll(/\\$\\{([^}:]+)(?::([^}]*))?\\}/g)) {\n locations.set(match[1], [name, ...path].join('.'))\n if (!activeValues.has(match[1]))\n activeValues.set(match[1], match[2] ?? '')\n }\n }\n }\n locate(parseDocument(content).contents, [])\n for (const match of content.matchAll(/\\$\\{((?:HAI_|PUBLIC_|VITE_|AI_|OPENAI_|GEMINI_|DASHSCOPE_|ARK_|LDAP_)[A-Z0-9_]*)(?::([^}]*))?\\}/g)) {\n const [, variable, value = ''] = match\n if (variables.has(variable))\n continue\n const normalized = catalogByName.get(variable.replace(/_\\d+(?=_|$)/g, '_0'))\n const entry = catalogByName.get(variable) ?? normalized\n const indices = [\n ...variable.matchAll(/_(\\d+)(?=_|$)/g),\n ].map(item => item[1])\n const catalogPath = (entry?.path === variable\n ? normalized?.path\n : entry?.path)?.replace(/\\.0(?=\\.|$)/g, () => `.${indices.shift() ?? '0'}`)\n variables.set(variable, {\n name: variable,\n path: locations.get(variable) ?? catalogPath ?? `${name} (${variable},可选块)`,\n value: activeValues.get(variable) ?? value,\n constraint: variableConstraint(variable, value),\n description: entry?.description,\n optional: !locations.has(variable),\n })\n }\n return [\n ...variables.values(),\n ]\n}\n\n/** 根据公开模块 Schema 和基础标量类型描述取值约束。 */\nfunction variableConstraint(name: string, value: string): string {\n const known = catalogByName.get(name) ?? catalogByName.get(name.replace(/_\\d+(?=_|$)/g, '_0'))\n if (known)\n return known.constraint\n const enums: Record<string, string> = {\n HAI_CORE_ENV: 'development | test | production | staging',\n HAI_CORE_LOGGING_LEVEL: 'trace | debug | info | warn | error | fatal',\n HAI_CORE_LOGGING_FORMAT: 'json | pretty',\n HAI_DB_TYPE: 'sqlite | postgresql | mysql',\n HAI_CACHE_TYPE: 'memory | redis',\n HAI_STORAGE_TYPE: 'local | s3',\n HAI_VECDB_TYPE: 'lancedb | pgvector | qdrant | chroma',\n HAI_AI_LLM_PROTOCOL: 'chat | responses | anthropic',\n HAI_DB_SSL: 'MySQL:false 或严格 TLS 对象({} 默认校验证书链和 DNS 身份);PostgreSQL:布尔值、require/prefer/allow/disable 或 TLS 对象',\n HAI_IAM_PASSWORD_MINLENGTH: '整数 >= 1,且不大于 maxLength',\n HAI_IAM_PASSWORD_MAXLENGTH: '整数 1–256,且不小于 minLength',\n HAI_IAM_PASSWORD_EXPIRATIONDAYS: '整数 >= 0,单位天;0 表示不过期',\n HAI_IAM_SESSION_MAXAGE: '整数 >= 60,单位秒',\n HAI_IAM_SESSION_REFRESHTOKENMAXAGE: '整数 >= 3600,单位秒',\n HAI_IAM_SECURITY_MAXLOGINATTEMPTS: '整数 >= 1',\n HAI_IAM_SECURITY_LOCKOUTDURATION: '整数 >= 60,单位秒',\n HAI_IAM_OTP_LENGTH: '整数 4–8',\n HAI_IAM_OTP_EXPIRESIN: '整数 >= 60,单位秒',\n HAI_IAM_OTP_MAXATTEMPTS: '整数 >= 1',\n HAI_IAM_OTP_RESENDINTERVAL: '整数 >= 30,单位秒',\n HAI_IAM_PASSWORDRESET_MODE: 'email | phone',\n HAI_IAM_PASSWORDRESET_TOKENEXPIRESIN: '整数 >= 300,单位秒',\n HAI_IAM_PASSWORDRESET_MAXATTEMPTS: '整数 >= 1',\n }\n if (enums[name])\n return enums[name]\n if (value === 'true' || value === 'false')\n return 'true | false'\n if (/(?:PASSWORD|SECRET|TOKEN|API_?KEY|ACCESS_?KEY|PRIVATEKEY|BINDPASSWORD|_PASS$)(?:_|$)/.test(name))\n return '敏感字符串;启用对应 Provider 时必须注入,禁止提交真实值'\n if (/(?:^|_)PORT$/.test(name))\n return '整数 1–65535'\n if (name.endsWith('TEMPERATURE'))\n return '数字 0–2'\n if (/^HAI_AI_.*(?:TIMEOUT|MAXTOKENS|CACHE_TTL)$/.test(name)) {\n return name.endsWith('MAXTOKENS')\n ? '数字 > 0,单位 token'\n : '数字 > 0,单位毫秒'\n }\n if (name === 'HAI_CACHE_DB')\n return '整数 0–15'\n if (name === 'HAI_DB_DATABASE')\n return 'SQLite 文件路径或 :memory:;PostgreSQL/MySQL 数据库名'\n if (/(?:BASEURL|ENDPOINT|RESETURL|_URL)$/.test(name))\n return '启用时填写有效 URL;协议由对应 Provider 校验'\n if (/^-?\\d+(?:\\.\\d+)?$/.test(value))\n return '数字;单位与上下界见对应模块 Schema 和 YAML 字段注释'\n return '字符串;枚举、格式及必填条件由对应模块 Schema 校验'\n}\n\n/**\n * 将变量列表序列化为可直接复制的 dotenv 配置及逐项说明。\n * @param variables - 从 YAML 提取的变量\n * @returns dotenv 内容\n * @example 模块内部上下文\n * ```ts\n * const variables = configEnvironmentVariables('db', parameterizeConfig('db', 'type: sqlite\\n'))\n * const dotenv = renderEnvironment(variables)\n * ```\n */\nexport function renderEnvironment(variables: ConfigEnvironmentVariable[]): string {\n return variables.map((variable) => {\n // 单引号保留 #、空格与双引号;含单引号时改用双引号并转义。\n const value = variable.value.includes('\\'')\n ? JSON.stringify(variable.value)\n : `'${variable.value}'`\n return `# ${variable.path}${variable.description\n ? ` — ${variable.description}`\n : ''}\\n# 约束:${variable.constraint}\\n${variable.name}=${value}`\n }).join('\\n\\n')\n}\n\n/**\n * 获取模块所有可配置变量的说明;未声明在 YAML 中的字段应先启用对应路径。\n * @param module - 配置名,例如 db\n * @returns 从公开 Schema 生成的变量清单\n * @example 模块内部上下文\n * ```ts\n * const variable = moduleEnvironmentVariables('db').find(item => item.name === 'HAI_DB_TYPE')\n * ```\n */\nexport function moduleEnvironmentVariables(module: string): ConfigEnvironmentVariable[] {\n return catalog.filter(entry => entry.module === module)\n}\n\n/**\n * 提取生成源码直接使用的环境入口,复用统一清单中的用途与约束。\n * @param content - 生成后的 Vite、Playwright 或运行时源码\n * @returns 已知入口的去重清单,供环境示例的可选部分使用\n * @example 模块内部上下文\n * ```ts\n * const variables = runtimeEnvironmentVariables('const port = process.env.PORT')\n * const name = variables[0]?.name // PORT(仅提取目录中已知变量)\n * ```\n */\nexport function runtimeEnvironmentVariables(content: string): ConfigEnvironmentVariable[] {\n const variables = new Map<string, ConfigEnvironmentVariable>()\n for (const match of content.matchAll(/(?:process\\.env|import\\.meta\\.env)(?:\\?\\.)?\\.?(?:([A-Z][A-Z0-9_]+)|\\[['\"]([A-Z][A-Z0-9_]+)['\"]\\])|\\$\\{((?:HAI_|PUBLIC_|VITE_)[A-Z0-9_]+)(?::[^}]*)?\\}/g)) {\n const name = match[1] ?? match[2] ?? match[3]\n if (match[0].startsWith('import.meta.env') && [\n 'SSR',\n 'MODE',\n 'DEV',\n 'PROD',\n 'BASE_URL',\n ].includes(name)) {\n continue\n }\n const variable = catalogByName.get(name)\n if (variable)\n variables.set(name, variable)\n }\n return [\n ...variables.values(),\n ]\n}\n","/**\n * @h-ai/cli — 配置文件模板\n *\n * 为各模块生成默认配置及按需取消注释的选项;配置字段以模块 Schema 为准。\n * @module cli-config-templates\n */\n\nimport type { AiModuleConfig, CacheModuleConfig, CoreModuleConfig, DbModuleConfig, FeatureId, IamModuleConfig, ModuleConfigs, StorageModuleConfig } from '../cli-types.js'\nimport { stringify } from 'yaml'\nimport { configEnvironmentVariables, documentConfig, moduleEnvironmentVariables, parameterizeConfig, renderEnvironment } from './cli-config-environment.js'\n\n/**\n * 生成模块配置文件内容\n *\n * @param moduleKey - 拥有配置 Schema 的模块标识\n * @param configs - 用户自定义配置值\n * @param enabled - 是否启用;未启用模块保留完整注释示例。\n * @returns YAML 格式的配置内容\n * @example 模块内部上下文\n * ```ts\n * const yaml = generateConfigFile('db', { db: { type: 'postgresql', host: 'db', database: 'shop' } })\n * // 输出显式 HAI_DB_* 引用;连接密码仍由私有环境注入。\n * ```\n */\nexport function generateConfigFile(moduleKey: string, configs?: ModuleConfigs, enabled = true): string {\n const content = documentConfig(moduleKey, parameterizeConfig(moduleKey, generateLiteralConfigFile(moduleKey, configs)))\n return enabled\n ? content\n : `# # 未启用:安装对应模块并在服务端 runtime 中初始化,再取消所需配置的注释。\\n${content.split('\\n').map(line => line\n ? `# ${line}`\n : '').join('\\n')}`\n}\n\nfunction generateLiteralConfigFile(moduleKey: string, configs?: ModuleConfigs): string {\n switch (moduleKey) {\n case 'core':\n return generateCoreConfig(configs?.core)\n case 'serv':\n return generateServConfig()\n case 'kit':\n return generateKitConfig()\n case 'db':\n return generateDbConfig(configs?.db)\n case 'cache':\n return generateCacheConfig(configs?.cache)\n case 'iam':\n return generateIamConfig(configs?.iam)\n case 'storage':\n return generateStorageConfig(configs?.storage)\n case 'ai':\n return generateAiConfig(configs?.ai)\n case 'deploy':\n return generateDeployConfig()\n case 'vecdb':\n return generateVecdbConfig()\n case 'reach':\n return generateReachConfig()\n case 'feedback':\n return generateFeedbackConfig()\n case 'scheduler':\n return generateSchedulerConfig()\n case 'audit':\n return generateAuditConfig()\n case 'payment':\n return generatePaymentConfig()\n default:\n return `# ${moduleKey} 配置\\n`\n }\n}\n\nfunction generateCoreConfig(cfg?: CoreModuleConfig): string {\n const name = cfg?.name ?? 'my-app'\n const locale = cfg?.defaultLocale ?? 'zh-CN'\n\n return `# =============================================================================\n# 应用配置\n# =============================================================================\n\n${stringify({ name }).trim()}\nversion: 0.1.0\nenv: development\n\nlogging:\n level: info\n format: pretty\n # context:\n # service: api\n # redact 填日志字段路径;customer.email 遮盖客户邮箱,recipients[*].phone 遮盖数组中的电话。\n # 只匹配指定层级,* 匹配一层;密码和令牌等已知凭据默认仍会脱敏。\n redact:\n - password\n - token\n - secret\n\ndefaultLocale: ${locale}\n`\n}\n\nfunction generateKitConfig(): string {\n return `# SvelteKit 服务端入口;私有访问策略不传给浏览器。\nserver:\n host: 127.0.0.1\n port: 3000\n# auto 仅在受管私有 Compose 代理中采用容器网段;普通宿主忽略转发头。\n# 自建代理填写明确的 IP/CIDR;[] 显式忽略转发头。\ntrustedProxies: auto\naccess: false\n# access:\n# file: ./config/security/request-access.yml\ntransport: false\n`\n}\n\nfunction generateServConfig(): string {\n return `# =============================================================================\n# Service / HTTP 入口配置\n# =============================================================================\n\nserver:\n host: 127.0.0.1\n port: 3000\n\nhttp:\n trustedProxies: auto\n access: false\n # access:\n # file: ./config/security/request-access.yml\n # 或将 access: false 替换为下列内联配置;与 file 二选一。\n # access:\n # global:\n # timezone: UTC # 可用 HAI_SERV_HTTP_ACCESS_GLOBAL_TIMEZONE=Asia/Shanghai\n # allowIps: []\n # denyIps: []\n # windows: []\n # rules: []\n apiPrefix: /api/v1\n openapi:\n path: /openapi.json\n # HAI_SERV_HTTP_DOCS=false 关闭文档;开启时再配置 path/requireAuth。\n docs:\n path: /docs\n # requireAuth: true\n health:\n path: /health\n readyPath: /ready\n\n# 按需开启跨域访问,生产环境填写明确的 Origin。\n# cors:\n# origin: https://app.example.com\n# nativeOrigins: capacitor://localhost,tauri://localhost\n# allowedHeaders: [Authorization, Content-Type, X-Request-Id]\n# exposedHeaders: [X-Request-Id]\n# credentials: true\n\n# 开发期默认关闭 transport;启用 @h-ai/crypto 后可按需改为对象配置\ntransport: false\n# transport:\n# maxPlaintextBytes: \\${HAI_SERV_TRANSPORT_MAXPLAINTEXTBYTES:1048576} # 双向 UTF-8 明文,1 KiB~64 MiB\n# keyExchangePath: /_hai/key-exchange\n# excludePaths: [/health, /ready]\n# 单条路径需要更大请求体时填写字节数,* 只匹配一段路径。\n# routePlaintextBytes: # HAI_SERV_TRANSPORT_ROUTEPLAINTEXTBYTES 可填 JSON 路径映射\n# /api/v1/uploads/*: 8388608\n`\n}\n\nfunction generateDbConfig(cfg?: DbModuleConfig): string {\n const dbType = cfg?.type ?? 'sqlite'\n const database = cfg?.database ?? (dbType === 'sqlite'\n ? './data/app.db'\n : 'hai')\n const host = cfg?.host ?? 'localhost'\n const port = cfg?.port ?? (dbType === 'mysql'\n ? 3306\n : 5432)\n\n const user = dbType === 'mysql'\n ? 'root'\n : 'postgres'\n const connection = stringify({ host, port, user, password: '' }).trim()\n const networkOptions = `# url: \\${HAI_DB_URL} # 可用连接串替代 host/port/user/password\n# PostgreSQL ssl:布尔值、require/prefer/allow/disable 或 TLS 对象。\n# MySQL ssl:false 或严格对象;{} 默认校验证书链和 DNS 身份,不能用 true 或 PostgreSQL 字符串模式。\n# MySQL 自定义 CA / mTLS 使用 ca/cert/key 的 PEM 内容;cert/key 必须成对,私钥仅注入私有环境。\n# pool:\n# min: 1\n# max: 10\n# idleTimeout: 30000\n# acquireTimeout: 10000\n# MySQL 专用;PostgreSQL 无需此块。\n# mysql:\n# charset: utf8mb4\n# MySQL 不支持 timezone 配置;不要在 mysql 块内填写该字段。`\n\n return `# =============================================================================\n# 数据库配置\n# =============================================================================\n\n# 数据库类型: sqlite | postgresql | mysql\ntype: ${dbType}\n\n# SQLite 使用文件路径,PostgreSQL/MySQL 使用数据库名称。\n${stringify({ database }).trim()}\n\n${connection}\nurl: \\${HAI_DB_URL:}\nssl: \\${HAI_DB_SSL:false}\n${networkOptions}\n\n# 操作日志按需开启,只记录耗时、数量等安全摘要;maxLength 限制摘要长度,不记录 SQL 原文和参数。\n# operationLog:\n# read: false\n# write: false\n# maxLength: 1000\n# level: debug # trace | debug | info\n`\n}\n\nfunction generateCacheConfig(cfg?: CacheModuleConfig): string {\n const cacheType = cfg?.type ?? 'memory'\n const host = cfg?.host ?? 'localhost'\n const port = cfg?.port ?? 6379\n const connection = stringify({\n host,\n port,\n password: '',\n keyPrefix: 'hai:',\n }).trim()\n\n return `# =============================================================================\n# 缓存配置\n# =============================================================================\n\n# 缓存类型: memory | redis\ntype: ${cacheType}\n\n# Redis 配置;memory 时不生效;跨环境切换 type 后自动使用连接项。\n${connection}\nurl: ''\ndb: 0\nconnectTimeout: 10000\ncommandTimeout: 5000\ntls: false\nmaxRetries: 3\nretryDelay: 50\nreadOnly: false\n# 集群与 Sentinel 二选一;普通 Redis 不需要这两块。\n# cluster:\n# - host: redis-1.internal\n# port: 6379\n# - host: redis-2.internal\n# port: 6379\n# sentinel:\n# sentinels:\n# - host: sentinel.internal\n# port: 26379\n# name: mymaster\n`\n}\n\nfunction generateIamConfig(cfg?: IamModuleConfig): string {\n const loginPassword = cfg?.loginPassword ?? true\n const loginOtp = cfg?.loginOtp ?? false\n\n return `# =============================================================================\n# IAM 配置\n# =============================================================================\n\n# 登录配置\nlogin:\n password: ${loginPassword}\n otp: ${loginOtp}\n ldap: false\n apikey: false\n\n# 注册与登录安全\nregister:\n enabled: true\n defaultAccountStatus: active\nsecurity:\n lockoutEnabled: false # 按需开启;关闭后历史锁不阻止登录/旧密码验证\n failureWindow: 86400 # 从首次失败起计数的固定窗口(秒)\n maxLoginAttempts: 5\n lockoutDuration: 1200\n\n# 自托管轻量挑战;关闭时不加载浏览器求解器。强度影响客户端计算时间。\ncaptcha:\n enabled: false\n ttlSeconds: 120\n cost: 5000\n maxCounter: 100\n\n# LDAP 可选:安装 ldapts 后开启 login.ldap;也可在 iam.init 中注入 ldapClientFactory。\n# ldap:\n# url: ldaps://ldap.example.com:636\n# bindDn: cn=service,dc=example,dc=com\n# bindPassword: \\${HAI_IAM_LDAP_BINDPASSWORD}\n# searchBase: ou=users,dc=example,dc=com\n# searchFilter: '(uid={{username}})'\n# usernameAttribute: uid\n# emailAttribute: mail\n# displayNameAttribute: cn\n# useTls: false # ldap:// 连接可开启 STARTTLS;ldaps:// 已使用 TLS\n# connectTimeout: 5000\n# API Key 登录可选;密钥管理入口由应用按权限接入。\n# apikey:\n# maxKeysPerUser: 10\n# defaultExpirationDays: 0 # 0 表示不限制有效期\n# prefix: hai_ # 新建 API Key 的开头,例如 hai_abc123;只填应用标识,不放密码。\n# OTP 需启用 login.otp,并选择 Reach 标准模板或自定义发送回调。\n${(loginOtp ? '' : '# 保留默认策略入口,单独切换 login.otp 即可启用验证码登录。\\notp: {}\\n# 定制策略时用下方配置块替换空对象,或通过 HAI_IAM_OTP 整体覆盖。\\n') + `otp:\n email: true\n sms: true\n length: 6\n expiresIn: 300\n maxAttempts: 3\n resendInterval: 60`.split('\\n').map(line => loginOtp\n ? line\n : `# ${line}`).join('\\n')}\npasswordReset:\n enabled: true\n mode: email # phone 使用 password_reset_sms 模板\n tokenExpiresIn: 3600\n maxAttempts: 3\n # resetUrl: https://example.com/auth/reset-password\nagreements:\n showOnRegister: true\n showOnLogin: false\n # 用 | 配置 Markdown 正文;同主题同时提供 URL 时优先显示正文。\n userAgreementMarkdown: |\n # 用户协议示例\n\n 请妥善保管账户凭据,并按应用提供的功能使用服务。\n privacyPolicyMarkdown: |\n # 隐私政策示例\n\n 注册资料用于账户管理,会话信息用于身份认证。\n # userAgreementUrl: https://example.com/terms\n # privacyPolicyUrl: https://example.com/privacy\nui:\n variant: card\n # title: Account center\n # subtitle: Welcome back\n # brandTitle: Your application\n # brandText: Sign in securely\n # logoUrl: /logo.svg\n # illustrationUrl: /auth-illustration.svg\n\n# 密码策略\npassword:\n minLength: 8\n maxLength: 128\n requireUppercase: false\n requireLowercase: false\n requireNumber: false\n requireSpecialChar: false\n minCharacterClasses: 0 # 大写、小写、数字、特殊字符中至少满足的类别数;0 关闭\n expirationDays: 0 # 0 表示不限制密码有效期\n preventSamePassword: false # 启用后新旧密码必须不同;有效期策略也强制不同\n requireInitialChange: false # 管理员创建/重置后首次登录先改密\n\ninitialCredentials:\n enabled: false # 单次邀请;需密码重置和通知通道\n\nreauthentication:\n enabled: false\n ttlSeconds: 300\n operations: [] # 例如 iam.users.delete、iam.roles.update\n\nloginAccess:\n enabled: false\n timezone: UTC\n allowIps: [] # 空列表不限制;支持 IPv4、IPv6 与 CIDR\n denyIps: [] # 拒绝优先\n windows: [] # 留空允许任何时间;以下例子只允许周一至周五 09:00–18:00 登录。\n # windows:\n # - days: [1, 2, 3, 4, 5]\n # start: '09:00'\n # end: '18:00'\n # timezone 设为 Asia/Shanghai 时,上述时间按北京时间解释。\n\n# 会话配置\nsession:\n endOnPageHide: false # 页面关闭/整页导航时尽力撤销;配合服务端超时\n maxAge: 86400 # 会话超时(秒),默认 24 小时\n sliding: true # 滑动窗口(每次请求刷新过期时间)\n singleDevice: false # 单设备登录\n singleDeviceMode: replace # replace 顶旧保新;reject 拒绝重复登录\n maxSessions: 0 # 每用户有效会话上限,0 不限制\n # 按终端分别限制;非空时仅允许列出的类型,仍受全局最大会话数约束。\n terminalLimits: {} # 留空不按终端限制。下面例子允许 web 2 个、app 1 个,其余终端不允许新登录。\n # terminalLimits:\n # web: 2\n # app: 1\n # 前端发送的终端名称必须与键名相同;此限制同时受 maxSessions 约束。\n terminalLimitMode: reject\n idleTimeout: 0 # 闲置期限(秒),0 关闭;access/refresh 均执行\n absoluteTimeout: 0 # 从首次登录起的绝对期限(秒),0 关闭\n refreshTokenMaxAge: 604800 # refreshToken 过期(秒),默认 7 天\n\n# 自动休眠策略\naccounts:\n dormantAfterDays: 0 # 连续未成功登录天数,0 关闭\n scanIntervalSeconds: 3600 # 开启时的扫描间隔(秒)\n\n# RBAC 配置\nrbac:\n enabled: true\n superAdminRole: super_admin\n defaultRole: user\n\n# 是否自动创建默认数据\nseedDefaultData: true\n`\n}\n\nfunction generateStorageConfig(cfg?: StorageModuleConfig): string {\n const type = cfg?.type ?? 'local'\n const local = `${stringify({ root: cfg?.localPath ?? './data/uploads' }).trim()}\n# directoryMode: 493 # 0o755\n# fileMode: 420 # 0o644`\n const s3 = `bucket: ''\n# 显式开启后,storage.init 检查并创建缺失桶;外部存储默认不开启。\ncreateBucket: false\nregion: us-east-1\naccessKeyId: ''\nsecretAccessKey: ''\nendpoint: \\${HAI_STORAGE_ENDPOINT:https://s3.amazonaws.com}\nforcePathStyle: false\n# 可直接设置 HAI_STORAGE_PREFIX=my-app/uploads/;保存 report.pdf 后的键名为 my-app/uploads/report.pdf。\n# prefix: \"\\${HAI_STORAGE_PREFIX:}\"\n# publicEndpoint: https://app.example.com # 浏览器下载入口,可带 /files 等代理目录;不含桶名\n# publicUrl: https://cdn.example.com`\n return `# 存储配置;HAI_STORAGE 可整体替换连接配置。\ntype: ${type}\n${local}\n${s3}\n\n# type 选择 Provider;未选分支字段由模块 Schema 忽略。\n# S3 兼容服务由环境注入 endpoint / forcePathStyle;默认端点用于 us-east-1。\n\n# operationLog:\n# read: false\n# write: false\n# maxLength: 1000\n# level: debug # trace | debug | info\n`\n}\n\nfunction generateAiConfig(cfg?: AiModuleConfig): string {\n const model = cfg?.model ?? 'gpt-4o-mini'\n const api = cfg?.defaultProvider === 'anthropic'\n ? 'anthropic'\n : 'chat'\n return `# =============================================================================\n# AI 配置\n# =============================================================================\n\n# 对话模型(使用对话功能时配置)\nllm:\n # API Key(约定环境变量 HAI_AI_LLM_APIKEY 优先)\n apiKey: ''\n # Base URL(约定环境变量 HAI_AI_LLM_BASEURL 优先)\n # baseUrl: https://api.openai.com/v1\n # 默认模型\n${stringify({ model }).trim().split('\\n').map(line => ` ${line}`).join('\\n')}\n protocol: ${api} # 请求格式:OpenAI 兼容选 chat,Responses 选 responses,Claude Messages 选 anthropic。\n # 全局最大 Token 数(默认 4096)\n # maxTokens: 4096\n # 采样温度(0-2,默认 0.7)\n # temperature: 0.7\n # 请求超时(毫秒,默认 60000)\n # timeout: 60000\n # tempModelCacheTtl: 600000\n\n # 多模型配置:id 是应用中的短名,model 是供应商的真实型号。各项可单独设置协议、地址和密钥。\n # models:\n # - id: fast\n # model: gpt-4o-mini\n # protocol: chat\n # apiKey: ''\n # baseUrl: https://api.openai.com/v1\n # maxTokens: 4096\n # temperature: 0.7\n # timeout: 60000\n # capabilities: # 能力来自供应商确认;未知时省略,不能用 maxTokens 预算猜容量。\n # contextWindow: 128000\n # maxOutputTokens: 16384\n # inputModalities: [text, image]\n # outputModalities: [text]\n # toolCalling: true\n # reasoning:\n # supported: false\n # - id: smart\n # model: gpt-4o\n # apiKey: ''\n # - id: coding # Codex 使用独立的 Responses 端点;按实际服务填写型号、地址和密钥。\n # model: your-coding-model\n # protocol: responses\n # baseUrl: https://your-responses-service.example/v1\n # apiKey: ''\n\n # 场景模型映射:普通对话用 fast,复杂推理用 smart;值对应上方 models 的 id。\n # scenarios:\n # default: fast\n # chat: fast\n # reasoning: smart\n # plan: smart\n # execute: fast\n # extraction: fast\n # summary: fast\n # embedding: embedding\n # rerank: rerank\n # ocr: vision\n # fast: fast\n # embedding / rerank / vision 须在 models 中声明对应厂商模型,不能只填写场景 ID。\n\n# 可选子模块只取消需要的块;生产环境先初始化共享数据库与网络向量库,再初始化 AI。\n# ACP 仅服务端使用;agents/workspaces 可写配置或通过 ai.acp 保存数据库,配置同 ID 优先且只读。\n# 模型、MCP、检索源清单同样合并两份来源,详见 .agents/skills/hai-ai/resources.md。\n# embedded 在本机运行原生进程;builtin-service 使用 Podman 优先的容器和持久 volume;\n# custom-service 连接原生 HTTP/WS 服务,不注入模型。详见 .agents/skills/hai-ai/acp.md。\n# acp:\n# requestTimeout: 30000\n# promptTimeout: 600000\n# cancelTimeout: 5000\n# maxContentBytes: 8388608\n# maxPendingEvents: 1024\n# agents:\n# - id: coder\n# name: Codex\n# mode: embedded\n# adapter: codex\n# modelIds: [coding]\n# workspaces:\n# - id: project\n# storage:\n# type: directory\n# path: /srv/projects/project\n# repositories:\n# - id: api\n# url: https://git.example.com/team/api.git\n# mainBranch: trunk\n# mcp:\n# servers:\n# - id: docs\n# name: Docs\n# transport: stdio\n# command: docs-mcp\n# environmentRefs:\n# API_TOKEN: DOCS_API_TOKEN\n# server:\n# name: my-app\n# version: 1.0.0\n# capabilities:\n# tools: true\n# resources: true\n# prompts: true\n# embedding:\n# dimensions: 1536\n# batchSize: 100\n# knowledge:\n# collection: hai_ai_knowledge\n# dimension: 1536\n# enableEntityExtraction: true\n# entityBoostWeight: 0.15\n# entityTypes: [person, organization, location]\n# systemPrompt: 'Extract entities from the input.'\n# cleanOptions:\n# removeHtml: true\n# removeUrls: false\n# removeEmails: false\n# normalizeWhitespace: true\n# trim: true\n# customReplacements:\n# - pattern: '\\\\t+'\n# replacement: ' '\n# chunkOptions:\n# mode: markdown # sentence | paragraph | markdown | page | word | character | custom\n# maxSize: 1500\n# overlap: 200\n# separator: '\\\\n\\\\n' # 仅 custom 模式使用\n# markdownMinLevel: 2\n# markdownKeepTitle: true\n# memory:\n# provider: native # native | mem0\n# allowEphemeralFallback: false\n# maxEntriesPerObject: 1000\n# maxEntriesGlobal: 100000\n# systemPrompt: 'Extract useful memories from the conversation.'\n# recencyDecay: 0.95\n# embeddingEnabled: true\n# defaultTopK: 10\n# candidateMultiplier: 5\n# writebackRelatedTopK: 20\n# token:\n# tokenRatio: 0.25\n# summary:\n# systemPrompt: 'Summarize the conversation.'\n# compress:\n# defaultStrategy: hybrid # summary | sliding-window | hybrid\n# defaultMaxTokens: 0\n# preserveLastN: 4\n# retrieval:\n# sources:\n# - id: docs\n# collection: documentation\n# name: Product documentation\n# url: https://docs.example.com\n# topK: 5\n# minScore: 0.7\n# filter:\n# published: true\n# file:\n# systemPrompt: 'Extract text from the image.'\n# a2a:\n# agentCard:\n# name: my-agent\n# description: Application agent\n# url: https://agent.example.com\n# version: 1.0.0\n# skills:\n# - id: chat\n# name: Chat\n# description: General conversation\n# tags: [chat]\n# security:\n# apiKey:\n# in: header # header | query\n# name: x-api-key\n# execution:\n# leaseMs: 30000\n# pollIntervalMs: 250\n# maxExecutionMs: 300000\n# audio:\n# inheritLlmApiKey: false\n# transcribeModel: asr\n# synthesizeModel: tts\n# maxAudioBytes: 10485760\n# maxStreamDurationMs: 300000\n# models:\n# - id: asr\n# provider: openai # openai | mimo | qwen | doubao | whisper | indextts\n# model: whisper-1\n# operations: [transcribe]\n# apiKey: ''\n# baseUrl: https://api.openai.com/v1\n# timeout: 60000\n# appKey: '' # 豆包旧版控制台 ASR 使用\n# accessKey: ''\n# resourceId: ''\n# workspaceId: '' # 百炼业务空间\n# - id: tts\n# provider: openai\n# model: tts-1\n# operations: [synthesize]\n# image:\n# maxImageBytes: 20971520 # 单张图片/参考图字节上限;JSON 上限为 max(64KiB, 两倍该值)\n# maxImages: 4 # 图片/参考图数量上限,临时 URL 串行下载\n# generateModel: image\n# models:\n# - id: image\n# provider: openai # openai | google | qwen | seedream | pollinations\n# model: gpt-image-1\n# apiKey: ''\n# baseUrl: https://api.openai.com/v1\n# workspaceId: ''\n# timeout: 120000\n`\n}\n\n/**\n * 根据选中的功能模块生成 .env.example 内容\n *\n * @param features - 选中的功能模块列表\n * @param configs - 用户自定义配置值\n * @param includeDisabled - 是否输出所有模块的完整注释示例;创建项目时统一保留。\n * @param configContents - 按配置名索引的已渲染 YAML,使示例与真实引用一致;省略项使用默认模板。\n * @returns .env.example 文件内容\n * @example 模块内部上下文\n * ```ts\n * const yaml = generateConfigFile('db', { db: { type: 'postgresql', database: 'shop' } })\n * const example = generateEnvExample(['db'], undefined, false, { db: yaml })\n * ```\n */\nexport function generateEnvExample(features: FeatureId[], configs?: ModuleConfigs, includeDisabled = false, configContents: Record<string, string> = {}): string {\n const keys = new Set([\n 'core',\n ...['serv', 'kit'].filter(key => configContents[key]),\n ...features.filter(feature => ![\n 'crypto',\n 'api-client',\n 'capacitor',\n 'datapipe',\n ].includes(feature)),\n ])\n const allKeys = [\n 'core',\n 'serv',\n 'kit',\n 'crypto',\n 'db',\n 'cache',\n 'iam',\n 'storage',\n 'ai',\n 'vecdb',\n 'reach',\n 'payment',\n 'scheduler',\n 'deploy',\n 'audit',\n 'feedback',\n ]\n const sections = [`# Environment configuration\n# .env / .env.dev / .env.test / .env.prod are public configuration tracked in Git.\n# .env.local is private to this machine and ignored by Git.\n# Priority: process environment > .env.<mode>.local > .env.local > .env.<mode> > .env > YAML.\n# Naming: HAI_<CONFIG>_<PATH>; camelCase stays joined (apiKey -> APIKEY); arrays use zero-based indexes.\n# PUBLIC_ / VITE_ variables are visible in browsers and must never contain secrets.\n# YAML declares references and local fallbacks; constraints are validated by module Schemas.\n# Values in this example are safe defaults. Keep real credentials in ignored .env.local or secret management.\n`]\n for (const key of allKeys) {\n if (!keys.has(key) && !includeDisabled)\n continue\n const variables = configEnvironmentVariables(key, configContents[key] ?? generateConfigFile(key, configs))\n const section = renderEnvironment(variables.filter(variable => !variable.optional))\n const declaredOptional = renderEnvironment(variables.filter(variable => variable.optional))\n const activeNames = new Set(variables.map(variable => variable.name))\n const candidates = moduleEnvironmentVariables(key)\n const primitiveArrays = candidates.filter(variable => variable.constraint.includes('JSON 数组') && candidates.some(child => child.name === `${variable.name}_0` && !child.constraint.includes('JSON 对象')))\n const optional = renderEnvironment(candidates.filter(variable => !activeNames.has(variable.name)\n && !primitiveArrays.some(parent => variable.name.startsWith(`${parent.name}_`))\n && !variables.some(child => child.name.startsWith(`${variable.name}_`) && (variable.constraint.includes('JSON 对象') || variable.constraint.includes('JSON 数组')) && !variable.constraint.includes('false'))\n && (!(variable.constraint.includes('JSON 对象') || variable.constraint.includes('JSON 数组')) || variable.constraint.includes('false') || !candidates.some(child => child.name.startsWith(`${variable.name}_`)) || primitiveArrays.includes(variable))))\n const commented = (value: string) => value.split('\\n').map(line => line && !line.startsWith('#')\n ? `# ${line}`\n : line).join('\\n')\n sections.push(`# --- ${key} ---\\n${keys.has(key)\n ? section\n : commented(section)}\\n\\n# 可选字段:先在 YAML 中启用对应配置块;下列变量名与字段路径一一对应。\\n${commented(declaredOptional)}\\n${commented(optional)}`)\n }\n if (includeDisabled)\n sections.push('# 服务端传输密钥环:启用 crypto transport 后,通过私有环境注入版本化 JSON;不得下发到浏览器。\\n# HAI_CRYPTO_TRANSPORT_SERVERKEYRING=')\n return `${sections.join('\\n\\n')}\\n`\n}\n\n/**\n * 为启用模块生成共享生产后端配置;凭据只列出必需入口,由私有环境注入。\n * 只返回文本,不连接服务,也不保证私有凭据已提供。\n * @param features - 本次启用的功能标识。\n * @param configs - 用户指定的模块配置。\n * @returns 共享生产后端的 dotenv 文本;凭据仅说明注入入口。\n * @example 模块内部上下文\n * ```ts\n * const dotenv = generateProductionEnvironment(['ai', 'cache', 'storage'], { db: { type: 'mysql', database: 'shop' } })\n * // AI 补齐 db/vecdb;生成 db/cache/storage/vecdb 服务 DNS,真实凭据另行注入。\n * ```\n */\nexport function generateProductionEnvironment(features: FeatureId[], configs?: ModuleConfigs): string {\n const enabled = new Set(features)\n if (enabled.has('ai')) {\n enabled.add('db')\n enabled.add('vecdb')\n }\n const sections = [\n '# 生产环境必须使用共享后端;以下服务名对应 Compose 内部 DNS。',\n '# 其他服务凭据通过部署 Secret / 进程环境或被忽略的 .env.local 注入。',\n 'HAI_CORE_ENV=production',\n 'HAI_CORE_LOGGING_LEVEL=info',\n ]\n if (enabled.has('db')) {\n const mysql = configs?.db?.type === 'mysql'\n const database = configs?.db?.type !== 'sqlite' && configs?.db?.database\n ? configs.db.database\n : 'hai'\n sections.push('', '# 必须私有注入 HAI_DB_PASSWORD;外部数据库可覆盖下列连接字段。', `HAI_DB_TYPE=${mysql ? 'mysql' : 'postgresql'}`, 'HAI_DB_HOST=db', `HAI_DB_PORT=${mysql ? 3306 : 5432}`, renderEnvironment([\n {\n name: 'HAI_DB_DATABASE',\n path: 'db.database',\n value: database,\n constraint: '生产数据库名',\n },\n ]), `HAI_DB_USER=${mysql ? 'root' : 'postgres'}`)\n }\n if (enabled.has('cache'))\n sections.push('', '# 必须私有注入 HAI_CACHE_PASSWORD。', 'HAI_CACHE_TYPE=redis', 'HAI_CACHE_HOST=cache', 'HAI_CACHE_PORT=6379')\n if (enabled.has('storage')) {\n sections.push('', '# 必须私有注入 HAI_STORAGE_ACCESSKEYID / HAI_STORAGE_SECRETACCESSKEY。', 'HAI_STORAGE_TYPE=s3', 'HAI_STORAGE_BUCKET=hai', 'HAI_STORAGE_REGION=us-east-1', 'HAI_STORAGE_ENDPOINT=http://storage:9000', 'HAI_STORAGE_FORCEPATHSTYLE=true', 'HAI_STORAGE_CREATEBUCKET=true')\n }\n if (enabled.has('vecdb'))\n sections.push('', '# 受保护的 Qdrant 必须私有注入 HAI_VECDB_APIKEY。', 'HAI_VECDB_TYPE=qdrant', 'HAI_VECDB_URL=http://vecdb:6333')\n if (enabled.has('ai'))\n sections.push('', '# 必须私有注入 HAI_AI_LLM_APIKEY 及所选模型的其它凭据;AI 自动复用已初始化的共享 db/vecdb。')\n if (enabled.has('reach')) {\n sections.push('', '# 在 .env.prod.local 或部署进程中用 HAI_REACH_PROVIDERS 注入完整的生产通知 Provider JSON。', '# 空数组有意让应用拒绝启动。只有完整列表中已有的项才能使用索引环境变量覆盖。', 'HAI_REACH_PROVIDERS=\\'[]\\'')\n }\n return `${sections.join('\\n')}\\n`\n}\n\nfunction generateDeployConfig(): string {\n return `# 部署已有镜像;运行 pnpm run deploy --build 可先构建再发布。\n# SSH 参数由向导保存在本机 .env.<环境>.local;离线打包不要求 SSH。\nprovider:\n type: docker-ssh\n remote:\n baseDir: /opt/hai/apps\n runtime: auto # 优先 Podman,其次 Docker\n expose:\n hostPort: 18080\n containerPort: 3000\n # HTTPS 也可在 pnpm run deploy 的可选证书环节中配置。\n # https:\n # type: files\n # domain: app.example.com\n # port: 443\n # redirectHttp: true\n # certificateFile: .hai/certificates/fullchain.pem\n # privateKeyFile: .hai/certificates/privkey.pem\n # Let's Encrypt:type 改为 letsencrypt,HTTP hostPort 设为 80;\n # 以 email 和 acceptTerms: true 替代两个文件路径。\n\ncontainer:\n s3Engine: \\${HAI_DEPLOY_CONTAINER_S3ENGINE:rustfs} # rustfs | minio\n\n# 完整包包含自建中间件镜像,服务器启动禁止拉取。\n# 外部数据库/存储等连接在对应模块配置和环境文件中设置。\n# Vercel 仅消费已有 .vercel/output,云 Provider/Provisioner 不适用于完全离线。\n# provider:\n# type: vercel\n# token: \\${HAI_DEPLOY_PROVIDER_TOKEN}\n`\n}\n\nfunction generateVecdbConfig(): string {\n return `# =============================================================================\n# 向量数据库配置 (@h-ai/vecdb)\n# =============================================================================\n\n# 数据库类型: lancedb | pgvector | qdrant | chroma\ntype: lancedb\n\n# LanceDB 数据目录\npath: ./data/vecdb\nurl: \\${HAI_VECDB_URL:http://localhost:6333}\napiKey: \\${HAI_VECDB_APIKEY:}\n\n# 距离度量: cosine | euclidean | dot\n# metric: cosine\n\n# pgvector 配置(当 type 为 pgvector 时使用)\n# type: pgvector\n# url: \\${HAI_VECDB_URL}\n# host: localhost\n# port: 5432\n# database: hai\n# user: postgres\n# password: ''\n# indexType: hnsw\n# tablePrefix: vec_\n\n# Qdrant 配置(当 type 为 qdrant 时使用)\n# type: qdrant\n# url: http://localhost:6333\n# apiKey: ''\n\n# Chroma 配置(替换 type;url 指向已有服务,path 用于本地子进程数据目录)\n# 直连仅支持 HTTP(S) 根 url;apiKey 按 Bearer 网关协议发送,不提供 Chroma Cloud 配置。\n# type: chroma\n# path: ./data/chroma\n# url: http://localhost:8000\n# host: localhost\n# port: 8000\n# apiKey: ''\n# serverCommand: chroma\n# startupTimeout: 30000\n\n# operationLog:\n# read: false\n# write: false\n# maxLength: 1000\n# level: debug # trace | debug | info\n`\n}\n\nfunction generateReachConfig(): string {\n return `# =============================================================================\n# 消息推送配置 (@h-ai/reach)\n# =============================================================================\n\nproviders:\n # 控制台输出(开发/测试用)\n - name: console_dev\n type: console\n\n# 生产示例:用下面 providers 整段替换上方控制台列表;保留需要的项。\n# 数组索引从 0 开始,删掉某项后同步修改其余环境变量中的索引。\n# providers:\n # SMTP 邮件\n # - name: email\n # type: smtp\n # host: \\${HAI_REACH_PROVIDERS_0_HOST:smtp.example.com}\n # port: \\${HAI_REACH_PROVIDERS_0_PORT:465}\n # secure: true\n # user: \\${HAI_REACH_PROVIDERS_0_USER:}\n # pass: \\${HAI_REACH_PROVIDERS_0_PASS:}\n # from: \\${HAI_REACH_PROVIDERS_0_FROM:noreply@example.com}\n\n # 阿里云短信(按需开启)\n # - name: sms\n # type: aliyun-sms\n # accessKeyId: \\${HAI_REACH_PROVIDERS_1_ACCESSKEYID}\n # accessKeySecret: \\${HAI_REACH_PROVIDERS_1_ACCESSKEYSECRET}\n # signName: MyApp\n # endpoint: dysmsapi.aliyuncs.com\n # gateway: # 可选;配置后向完整 URL 发送 POST\n # url: https://sms-gateway.example.com/dx\n # headers:\n # X-Gateway-Client: delivery\n # body: {}\n\n # 通用 API(按需开启;可对接应用自有投递服务)\n # - name: custom\n # type: api\n # url: https://notify.example.com/send\n # method: POST # POST | PUT\n # headers:\n # Authorization: 'Bearer \\${HAI_REACH_PROVIDERS_2_HEADERS_AUTHORIZATION}'\n # timeout: 10000\n # redirect: error # 普通消息才可显式 follow;敏感发送始终拒绝跳转。\n # requireHttps: true # 强制 HTTPS;省略时生产敏感发送仍要求 HTTPS。\n\n# IAM 标准模板:保留空数组以支持 HAI_REACH_TEMPLATES 整体覆盖。\ntemplates: []\n# 开启对应 Provider 后,将空数组替换为需要的模板列表,例如:\n# templates:\n# - name: otp_email\n# provider: email\n# subject: \"Verification code\"\n# body: \"Your verification code is {code}.\"\n# - name: otp_sms\n# provider: sms\n# body: \"Your verification code is {code}.\"\n# - name: password_reset\n# provider: email\n# subject: \"Password reset\"\n# body: \"Reset your password: {resetUrl}. Expires at {expiresAt}.\"\n# - name: password_reset_sms\n# provider: sms\n# body: \"Reset your password: {resetUrl}. Expires at {expiresAt}.\"\n\n# 免打扰(可选)\n# dnd:\n# enabled: true\n# strategy: delay\n# start: \"22:00\"\n# end: \"08:00\"\n\n# 发送失败时最多尝试 5 次;等待时间从 1 分钟逐次加倍,最长 1 小时。\n# 无法确认对方是否收到时停止自动重发,先核对投递结果。修改策略只影响以后进入队列的消息。\nqueue:\n maxAttempts: \\${HAI_REACH_QUEUE_MAXATTEMPTS:5}\n retryDelayMs: \\${HAI_REACH_QUEUE_RETRYDELAYMS:60000}\n maxRetryDelayMs: \\${HAI_REACH_QUEUE_MAXRETRYDELAYMS:3600000}\n`\n}\n\nfunction generateSchedulerConfig(): string {\n return `# =============================================================================\n# 任务调度配置 (@h-ai/scheduler)\n# =============================================================================\n\n# 必须先初始化共享 @h-ai/reldb;执行日志和租约始终落库,不能设 false\nenableDb: true\n\n# 检查间隔(毫秒)\ntickInterval: 1000\n\n# 执行租约(1000~86400000 毫秒,运行中自动续期);unknown 须人工核对并先停止旧执行\nleaseMs: 300000\n\n# 节点 ID 默认自动生成;多节点部署时每个实例应使用独立 ID。\n# nodeId: worker-1\n# 尝试日志保留策略(不删除执行journal与去重历史)\n# maxLogs: 10000\n# retentionDays: 30\n`\n}\n\nfunction generateAuditConfig(): string {\n return `# =============================================================================\n# 审计日志配置 (@h-ai/audit)\n# =============================================================================\n\n# 审计列表查询操作者名称时使用的用户表。使用框架 IAM 时保持下面三个默认值。\nuserTable: hai_iam_users\n\n# 用户表主键列名\nuserIdColumn: id\n\n# 用户名列名\nuserNameColumn: username\n\n# 自动记录已接入框架的重要操作;includeReads=true 时也记录成功查询,会增加记录量。\n# enabled=false 只关闭自动采集,业务主动调用 audit.log() 仍可写入。\ncapture:\n enabled: true\n includeReads: false\n\n# enabled=true 后,最近 minDays 天的记录不能修改或删除;超过保护期也不会自动删除。\n# 保护设置会存入数据库,删掉这一段会沿用已有设置;明确 enabled=false 才关闭保护。\nretention:\n enabled: false\n minDays: 90\n\n# fields 填额外的隐私字段名,例如 [customerPhone, idCard],不区分大小写。\n# 密码、令牌等凭据始终遮盖;enabled 只控制这里补充的业务字段,不恢复历史原文。\nprivacy:\n enabled: true\n fields: []\n\n# 将审计另存为私有 JSONL 备份,启用前先初始化私有 Storage。\n# batchSize 是每批读取条数;maxRecordBytes 是单条上限(字节),超限报错,不截断记录。\n# schedule.enabled=true 按 cron 自动备份;例如 UTC 02:00 对应北京时间 10:00。\nbackup:\n enabled: false\n batchSize: 200\n maxRecordBytes: 1048576\n schedule:\n enabled: false\n cron: '0 2 * * *'\n timezone: UTC\n\n# 按一段时间内的事件数量通知管理员;启用前配置 Reach,并将 provider 填为已注册的通道名称。\n# 例子:5 分钟内登录失败/拒绝达到 10 次时通知安全团队;规则和定时检查需要分别启用。\nalerts:\n enabled: false\n maxNotificationsPerCheck: 100\n rules: []\n # 用下面的 rules 列表替换空数组。\n # rules:\n # - id: login-failures\n # actions: [auth.login]\n # outcomes: [failure, denied]\n # threshold: 10\n # windowSeconds: 300\n # severity: warning\n # targets: [{ id: security-team, provider: email, to: security@example.com }]\n schedule:\n enabled: false\n cron: '* * * * *'\n timezone: UTC\n`\n}\n\nfunction generatePaymentConfig(): string {\n return `# =============================================================================\n# 支付配置 (@h-ai/payment)\n# =============================================================================\n\n# 微信支付(仅公众号 JSAPI,需当前 appId 的 openid)\n# wechat:\n# mchId: ''\n# apiV3Key: ''\n# serialNo: ''\n# privateKey: ''\n# platformKeys: # 必填;按 Wechatpay-Serial 精确选择平台证书/公钥,轮换时保留新旧项\n# PUB_KEY_ID_123: '' # 平台公钥 PEM;证书则以其真实序列号作为 key\n# appId: ''\n\n# 支付宝(仅 H5/WAP,浏览器 POST 签名字段)\n# alipay:\n# appId: ''\n# sellerId: '' # 必填;回调 seller_id 必须与此一致\n# privateKey: ''\n# alipayPublicKey: ''\n# returnUrl: 'https://app.example/payment/return' # 必填 HTTPS;回跳不代表已付款\n# signType: RSA2\n# sandbox: false\n\n# Stripe(按需开启;先初始化共享 reldb,持久化渠道映射和幂等结果)\n# stripe:\n# secretKey: ''\n# webhookSecret: ''\n# successUrl: 'https://app.example/payment/success?session_id={CHECKOUT_SESSION_ID}'\n# cancelUrl: 'https://app.example/payment/cancel' # 可选\n# webhookToleranceSeconds: 300\n`\n}\n\nfunction generateFeedbackConfig(): string {\n return `# 问题反馈:生产使用共享数据库与私有存储;通知独立选择 disabled / console / reach。\nappId: my-app\nappVersion: 0.1.0\nnotificationMode: console\nconsoleContent: metadata\nmaxTotalBytes: 33554432\nrecipients: []\n# Reach 模式设置真实 Provider 和接收方,不影响其它通知的免打扰策略。\n# recipients:\n# - \\${HAI_FEEDBACK_RECIPIENTS_0:}\nnotificationProvider: email\nadminUrl: http://localhost:5173/#/feedback\ncollectionTimeoutMs: 60000\nbusinessCollectionTimeoutMs: 30000\n# 采集结束后回调;地址空值禁用,密钥只放服务端私有环境,不进入 PUBLIC_ 配置。\nwebhookUrl: ''\nwebhookSecret: ''\nwebhookTimeoutMs: 10000\nworkerIntervalMs: 1000\nleaseMs: 30000\nmaxAttempts: 5\nretentionDays: 30\nmaxAttachmentBytes: 5242880\nenvAllowlist:\n - NODE_ENV\n - TZ\n`\n}\n"]}