dsh-data-domain-knowledge 0.1.0-alpha.12 → 0.1.0-alpha.13

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 (62) hide show
  1. package/README.md +15 -7
  2. package/lib/client.js +64 -7
  3. package/lib/types/environment/install.d.ts +2 -1
  4. package/lib/types/environment/install.d.ts.map +1 -1
  5. package/lib/types/environment/install.js +20 -11
  6. package/lib/types/environment/install.js.map +1 -1
  7. package/lib/types/environment/manifest.d.ts +203 -12
  8. package/lib/types/environment/manifest.d.ts.map +1 -1
  9. package/lib/types/environment/manifest.js +23 -21
  10. package/lib/types/environment/manifest.js.map +1 -1
  11. package/lib/types/environment/model-catalog.d.ts +191 -0
  12. package/lib/types/environment/model-catalog.d.ts.map +1 -0
  13. package/lib/types/environment/model-catalog.js +91 -0
  14. package/lib/types/environment/model-catalog.js.map +1 -0
  15. package/lib/types/environment/selection.d.ts +9 -0
  16. package/lib/types/environment/selection.d.ts.map +1 -0
  17. package/lib/types/environment/selection.js +29 -0
  18. package/lib/types/environment/selection.js.map +1 -0
  19. package/lib/types/environment/service.d.ts +1 -1
  20. package/lib/types/environment/service.d.ts.map +1 -1
  21. package/lib/types/environment/service.js +54 -33
  22. package/lib/types/environment/service.js.map +1 -1
  23. package/lib/types/environment/types.d.ts +7 -1
  24. package/lib/types/environment/types.d.ts.map +1 -1
  25. package/lib/types/images.d.ts +26 -0
  26. package/lib/types/images.d.ts.map +1 -0
  27. package/lib/types/images.js +196 -0
  28. package/lib/types/images.js.map +1 -0
  29. package/lib/types/index.d.ts.map +1 -1
  30. package/lib/types/index.js +25 -3
  31. package/lib/types/index.js.map +1 -1
  32. package/lib/types/layout.d.ts +2 -0
  33. package/lib/types/layout.d.ts.map +1 -1
  34. package/lib/types/layout.js +2 -0
  35. package/lib/types/layout.js.map +1 -1
  36. package/lib/types/runtime.d.ts +9 -3
  37. package/lib/types/runtime.d.ts.map +1 -1
  38. package/lib/types/runtime.js +73 -16
  39. package/lib/types/runtime.js.map +1 -1
  40. package/lib/types/store/migrate.d.ts.map +1 -1
  41. package/lib/types/store/migrate.js +5 -4
  42. package/lib/types/store/migrate.js.map +1 -1
  43. package/lib/types/types.d.ts +1 -1
  44. package/lib/types/types.d.ts.map +1 -1
  45. package/lib/types/types.js +3 -4
  46. package/lib/types/types.js.map +1 -1
  47. package/package.json +1 -1
  48. package/python/prepare-models.py +1 -1
  49. package/scripts/setup-embedding.sh +11 -2
  50. package/src/client/EnvironmentSetup.tsx +54 -8
  51. package/src/environment/install.ts +22 -10
  52. package/src/environment/manifest.ts +25 -22
  53. package/src/environment/model-catalog.ts +105 -0
  54. package/src/environment/selection.ts +29 -0
  55. package/src/environment/service.ts +46 -26
  56. package/src/environment/types.ts +5 -1
  57. package/src/images.ts +203 -0
  58. package/src/index.ts +30 -4
  59. package/src/layout.ts +2 -0
  60. package/src/runtime.ts +68 -16
  61. package/src/store/migrate.ts +4 -4
  62. package/src/types.ts +4 -5
package/README.md CHANGED
@@ -16,10 +16,11 @@ Tita Agent 的固定数据根目录是 `$DSH_HOME/tita-agent`(默认 `~/.dsh/t
16
16
 
17
17
  ## 首次运行环境准备
18
18
 
19
- Python、向量模型、重排模型是部署必需项。打开 Tita 设置 → 环境准备 → 一键安装 / 修复。
20
- 系统使用 uv 安装专属 Python 环境,下载固定 revision 的 `BAAI/bge-small-zh-v1.5`
19
+ 向量模型和重排模型是部署必需项。打开 Tita 设置 → 环境准备 → 一键安装 / 修复。
20
+ 系统用 DSH 自带的 Python 3.12 创建专属依赖环境,不另行下载 Python;再下载固定 revision 的 `BAAI/bge-small-zh-v1.5`
21
21
  (512 维)和 `BAAI/bge-reranker-base`,然后运行真实推理自检。阶段、错误和下载日志
22
22
  可查看;下载失败可以重试。未就绪时阻止编译和知识召回,来源与历史内容仍可保存、读取。
23
+ 自检不单独检查 `sentencepiece`;依赖安装失败会显示安装错误,模型真实推理失败会显示对应模型的错误。
23
24
 
24
25
  命令行入口:
25
26
 
@@ -29,7 +30,7 @@ pnpm --filter dsh-data-domain-knowledge environment:check
29
30
  pnpm --filter dsh-data-domain-knowledge doctor
30
31
  ```
31
32
 
32
- 自检失败时命令返回非零退出码。安装不修改系统 Python,也不隐式运行 npm postinstall
33
+ 自检失败时命令返回非零退出码。依赖装在 Tita 专属虚拟环境中,不修改系统 Python,也不隐式运行 npm postinstall
33
34
  模型下载。已有知识在准备完成后需重新编译;宿主无需重启。自定义路径保留,使用默认
34
35
  资源时把高级设置中的路径恢复为空,并使用匹配的向量维度。
35
36
  细节见 [运行环境准备与自检](../../docs/current/16-知识运行环境准备与自检.md)。
@@ -228,20 +229,22 @@ SourceRaw → Knowledge → Wiki Card → Wiki Note → FTS / Vector / Rerank
228
229
 
229
230
  ## 本地启用 WeMM
230
231
 
231
- 在 Apple Silicon 上执行一次(在插件包目录内):
232
+ 推荐使用「环境准备」面板选择 WeMM 量化版或腾讯 BF16 版。面板会安装所选模型并自动
233
+ 设置匹配的维度。也可在 Apple Silicon 上执行旧版辅助脚本(在插件包目录内):
232
234
 
233
235
  ```bash
234
236
  bash scripts/setup-embedding.sh
235
237
  ```
236
238
 
237
- 脚本会把 Python 环境放到 `~/.dsh/tita-agent/resource/python`,把量化模型放到
239
+ 脚本会用 `DSH_PYTHON`(未设置时为系统 `python3`)建立隔离依赖环境,把模型放到
238
240
  `~/.dsh/tita-agent/resource/models/WeMM-Embedding-2B-Quantized`。新配置会自动发现这两个路径;
239
- 设置位于 Tita Data Agent → Agent 概览 →「构建」节点:
241
+ 当前脚本安装的是 `ewin-reg` 社区维护的 INT4 / FP8 量化版,不是腾讯官方发行,模型卡将许可标为 `other`。
242
+ 它的输出维度为 2048。设置位于 Tita Data Agent → Agent 概览 →「构建」节点:
240
243
 
241
244
  - Provider:`WeMM Python(本地)`
242
245
  - Python:`~/.dsh/tita-agent/resource/python/bin/python`
243
246
  - Model:`~/.dsh/tita-agent/resource/models/WeMM-Embedding-2B-Quantized`
244
- - 维度:`1024`
247
+ - 维度:`2048`
245
248
  - 设备:`自动(优先 MPS)`
246
249
 
247
250
  知识库默认保存在 `~/.dsh/tita-agent/domain_knowledge/<库 id>`。点击「编译」后,
@@ -328,6 +331,11 @@ HTTP `GET /knowledge/bases` 在返回前先刷新。
328
331
  | `derived.db` | wikiNotes、知识图谱、检索索引 | 可重新编译 |
329
332
  | `assets/` | 来源图片与附件 | 丢失对应素材 |
330
333
 
334
+ 知识库提供 `images.publish` 工具作为本地图床。它接收宿主本地 `file_path` 或 Base64 图片,按
335
+ `assets/<SHA-256 前 12 位>/<文件名>` 写入当前知识库,并返回 `/knowledge/assets/<kb>/<路径>` 地址
336
+ 和 Markdown 图片引用。独立图床图片不要求来源或卡片引用,也不会被孤儿清理误删。工具会校验图片格式和 MIME,
337
+ 单张图片上限为 20 MiB;写入不需要用户审批。
338
+
331
339
  `resource/` 保存模型、Python 环境与 `knowledge-bases.json`。
332
340
  如果资源目录没有本地 Python 或模型,就使用 `python3` 或 Hugging Face 模型名。
333
341
 
package/lib/client.js CHANGED
@@ -21507,6 +21507,9 @@ var import_jsx_runtime22 = require("react/jsx-runtime");
21507
21507
  function Select2({ ...props }) {
21508
21508
  return (0, import_jsx_runtime22.jsx)(dist_exports8.Root, { "data-slot": "select", ...props });
21509
21509
  }
21510
+ function SelectGroup3({ className, ...props }) {
21511
+ return (0, import_jsx_runtime22.jsx)(dist_exports8.Group, { "data-slot": "select-group", className: cn("scroll-my-1 p-1", className), ...props });
21512
+ }
21510
21513
  function SelectValue3({ ...props }) {
21511
21514
  return (0, import_jsx_runtime22.jsx)(dist_exports8.Value, { "data-slot": "select-value", ...props });
21512
21515
  }
@@ -21516,6 +21519,9 @@ function SelectTrigger3({ className, size: size5 = "default", children, ...props
21516
21519
  function SelectContent3({ className, children, position: position2 = "item-aligned", align = "center", ...props }) {
21517
21520
  return (0, import_jsx_runtime22.jsx)(dist_exports8.Portal, { children: (0, import_jsx_runtime22.jsxs)(dist_exports8.Content, { "data-slot": "select-content", "data-align-trigger": position2 === "item-aligned", className: cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position2 === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position2, align, ...props, children: [(0, import_jsx_runtime22.jsx)(SelectScrollUpButton3, {}), (0, import_jsx_runtime22.jsx)(dist_exports8.Viewport, { "data-position": position2, className: cn("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)", position2 === "popper" && ""), children }), (0, import_jsx_runtime22.jsx)(SelectScrollDownButton3, {})] }) });
21518
21521
  }
21522
+ function SelectLabel3({ className, ...props }) {
21523
+ return (0, import_jsx_runtime22.jsx)(dist_exports8.Label, { "data-slot": "select-label", className: cn("px-1.5 py-1 text-xs text-muted-foreground", className), ...props });
21524
+ }
21519
21525
  function SelectItem3({ className, children, ...props }) {
21520
21526
  return (0, import_jsx_runtime22.jsxs)(dist_exports8.Item, { "data-slot": "select-item", className: cn("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className), ...props, children: [(0, import_jsx_runtime22.jsx)("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: (0, import_jsx_runtime22.jsx)(dist_exports8.ItemIndicator, { children: (0, import_jsx_runtime22.jsx)(Check, { className: "pointer-events-none" }) }) }), (0, import_jsx_runtime22.jsx)(dist_exports8.ItemText, { children })] });
21521
21527
  }
@@ -22378,10 +22384,10 @@ function useKnowledgeEnvironment(visible, revision) {
22378
22384
  window.removeEventListener("focus", onFocus);
22379
22385
  };
22380
22386
  }, [visible, revision, busy, refresh]);
22381
- const prepare = (0, import_react8.useCallback)(async (action) => {
22387
+ const prepare = (0, import_react8.useCallback)(async (action, selection) => {
22382
22388
  setSubmitting(true);
22383
22389
  try {
22384
- setView(await environmentRequest({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action }) }));
22390
+ setView(await environmentRequest({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ action, ...selection ? { selection } : {} }) }));
22385
22391
  setError(void 0);
22386
22392
  } catch (cause) {
22387
22393
  setError(cause instanceof Error ? cause.message : String(cause));
@@ -22391,28 +22397,54 @@ function useKnowledgeEnvironment(visible, revision) {
22391
22397
  }, []);
22392
22398
  return { view, error: error2, busy, prepare };
22393
22399
  }
22400
+ function ModelSelect({ id: id3, label, value, options, disabled, onChange }) {
22401
+ const chosen = options.find((option) => option.id === value);
22402
+ const descriptionId = `${id3}-description`;
22403
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "grid min-w-0 gap-1.5", children: [
22404
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("label", { htmlFor: id3, className: "text-xs font-medium text-tita-ink", children: label }),
22405
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Select2, { value, onValueChange: onChange, disabled, children: [
22406
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectTrigger3, { id: id3, "aria-describedby": descriptionId, className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectValue3, {}) }),
22407
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectContent4, { position: "popper", align: "start", className: "max-h-64", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(SelectGroup3, { children: [
22408
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectLabel3, { children: "\u6309\u8D44\u6E90\u5360\u7528\u4ECE\u4F4E\u5230\u9AD8" }),
22409
+ options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(SelectItem3, { value: option.id, children: [
22410
+ option.label,
22411
+ " \xB7 ",
22412
+ option.download
22413
+ ] }, option.id))
22414
+ ] }) })
22415
+ ] }),
22416
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { id: descriptionId, className: "m-0 text-xs leading-relaxed text-tita-ink-muted", children: chosen ? `${chosen.description} \u4E0B\u8F7D\u7EA6 ${chosen.download}${chosen.dimension ? `\uFF0C\u8F93\u51FA ${chosen.dimension} \u7EF4` : ""}\u3002` : "\u8BF7\u9009\u62E9\u6A21\u578B\u3002" }),
22417
+ chosen?.modelCardUrl && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("a", { href: chosen.modelCardUrl, target: "_blank", rel: "noreferrer", className: "w-fit text-xs text-tita-ink underline underline-offset-2", children: "\u67E5\u770B\u6A21\u578B\u5361\u4E0E\u8BB8\u53EF" })
22418
+ ] });
22419
+ }
22394
22420
  function EnvironmentNotice({ controller, onOpen }) {
22395
22421
  const { view, error: error2, busy } = controller;
22396
22422
  if (!error2 && (!view || view.report.state === "ready")) return null;
22397
22423
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "mx-3 mt-2 flex shrink-0 items-center gap-2 border-b border-tita-line pb-2 text-xs text-tita-ink", role: "status", children: [
22398
22424
  busy ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LoaderCircle, { size: 14, className: "tita-spin shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CircleAlert, { size: 14, className: "shrink-0 text-tita-warning" }),
22399
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "min-w-0 flex-1", children: error2 ? "\u73AF\u5883\u72B6\u6001\u8BFB\u53D6\u5931\u8D25" : busy ? view?.job?.stage ?? "\u6B63\u5728\u68C0\u67E5\u8FD0\u884C\u73AF\u5883" : "\u9996\u6B21\u4F7F\u7528\u524D\uFF0C\u8BF7\u5B8C\u6210 Python \u4E0E\u6A21\u578B\u51C6\u5907" }),
22425
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "min-w-0 flex-1", children: error2 ? "\u73AF\u5883\u72B6\u6001\u8BFB\u53D6\u5931\u8D25" : busy ? view?.job?.stage ?? "\u6B63\u5728\u68C0\u67E5\u8FD0\u884C\u73AF\u5883" : "\u9996\u6B21\u4F7F\u7528\u524D\uFF0C\u8BF7\u51C6\u5907\u5411\u91CF\u548C\u91CD\u6392\u6A21\u578B" }),
22400
22426
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { variant: "outline", size: "sm", onClick: onOpen, children: "\u73AF\u5883\u51C6\u5907" })
22401
22427
  ] });
22402
22428
  }
22403
22429
  function EnvironmentSetup({ controller }) {
22404
22430
  const { view, error: error2, busy, prepare } = controller;
22405
22431
  const [details, setDetails] = (0, import_react8.useState)(false);
22432
+ const [selection, setSelection] = (0, import_react8.useState)();
22433
+ (0, import_react8.useEffect)(() => {
22434
+ if (view) setSelection(view.selection);
22435
+ }, [view?.selection.embedding, view?.selection.rerank]);
22406
22436
  const ready = view?.report.state === "ready";
22407
22437
  const job = view?.job;
22408
22438
  const running = job?.state === "running";
22409
22439
  const failure = job?.state === "failed" ? job.error : void 0;
22440
+ const chosen = selection ?? view?.selection;
22441
+ const selectionChanged = Boolean(chosen && view && (chosen.embedding !== view.selection.embedding || chosen.rerank !== view.selection.rerank));
22410
22442
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("section", { id: "tita-environment", tabIndex: -1, "aria-labelledby": "tita-environment-title", className: "tita-settingsSection", children: [
22411
22443
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "tita-settingsSectionHeader", children: [
22412
22444
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h3", { id: "tita-environment-title", children: "\u73AF\u5883\u51C6\u5907" }),
22413
22445
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: cn("text-xs", ready ? "text-tita-success" : "text-tita-ink-muted"), role: "status", "aria-live": "polite", children: ready ? "\u5DF2\u5C31\u7EEA" : busy ? "\u8FDB\u884C\u4E2D" : "\u5FC5\u9700" })
22414
22446
  ] }),
22415
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 mb-3 text-xs leading-relaxed text-tita-ink-muted", children: "Python\u3001\u5411\u91CF\u6A21\u578B\u548C\u91CD\u6392\u6A21\u578B\u662F\u77E5\u8BC6\u68C0\u7D22\u7684\u5FC5\u9700\u9879\u3002\u9996\u6B21\u51C6\u5907\u9700\u8981\u8054\u7F51\uFF0C\u8D44\u6E90\u4FDD\u5B58\u5728 Tita \u4E13\u5C5E\u76EE\u5F55\u3002" }),
22447
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 mb-3 text-xs leading-relaxed text-tita-ink-muted", children: "\u9996\u6B21\u51C6\u5907\u9700\u8981\u8054\u7F51\u4E0B\u8F7D\u6240\u9009\u6A21\u578B\u548C\u63A8\u7406\u4F9D\u8D56\u3002\u6A21\u578B\u4FDD\u5B58\u5728 Tita \u4E13\u5C5E\u76EE\u5F55\uFF0C\u5E76\u901A\u8FC7\u5B9E\u9645\u63A8\u7406\u81EA\u68C0\u540E\u542F\u7528\u3002" }),
22416
22448
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("ul", { className: "m-0 grid list-none gap-3 p-0", "aria-label": "\u8FD0\u884C\u73AF\u5883\u68C0\u67E5\u9879", children: (view?.report.items ?? []).map((item) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("li", { className: "flex min-w-0 items-start gap-2", children: [
22417
22449
  item.state === "ready" ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Check, { size: 14, className: "mt-0.5 shrink-0 text-tita-success" }) : item.state === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LoaderCircle, { size: 14, className: "tita-spin mt-0.5 shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CircleAlert, { size: 14, className: "mt-0.5 shrink-0 text-tita-warning" }),
22418
22450
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "min-w-0 flex-1 text-xs leading-relaxed", children: [
@@ -22420,6 +22452,31 @@ function EnvironmentSetup({ controller }) {
22420
22452
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 break-words text-tita-ink-muted", children: item.message })
22421
22453
  ] })
22422
22454
  ] }, item.id)) }),
22455
+ view && chosen && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "my-4 grid gap-3", "aria-label": "\u6A21\u578B\u9009\u62E9", children: [
22456
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
22457
+ ModelSelect,
22458
+ {
22459
+ id: "tita-embedding-model",
22460
+ label: "\u5411\u91CF\u6A21\u578B",
22461
+ value: chosen.embedding,
22462
+ options: view.models.embedding,
22463
+ disabled: busy,
22464
+ onChange: (value) => setSelection((current2) => ({ ...current2 ?? view.selection, embedding: value }))
22465
+ }
22466
+ ),
22467
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
22468
+ ModelSelect,
22469
+ {
22470
+ id: "tita-rerank-model",
22471
+ label: "\u91CD\u6392\u6A21\u578B",
22472
+ value: chosen.rerank,
22473
+ options: view.models.rerank,
22474
+ disabled: busy,
22475
+ onChange: (value) => setSelection((current2) => ({ ...current2 ?? view.selection, rerank: value }))
22476
+ }
22477
+ ),
22478
+ selectionChanged && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "m-0 text-xs leading-relaxed text-tita-warning", role: "status", children: "\u5B89\u88C5\u5E76\u901A\u8FC7\u5B9E\u9645\u63A8\u7406\u81EA\u68C0\u540E\u624D\u4F1A\u5207\u6362\u5F53\u524D\u6A21\u578B\u3002\u66F4\u6539\u5411\u91CF\u6A21\u578B\u540E\uFF0C\u5DF2\u6709\u77E5\u8BC6\u9700\u8981\u91CD\u65B0\u7F16\u8BD1\u3002" })
22479
+ ] }),
22423
22480
  !view && !error2 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "text-xs text-tita-ink-muted", role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u73AF\u5883\u72B6\u6001\u2026" }),
22424
22481
  running && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("p", { className: "my-3 text-xs text-tita-ink", role: "status", "aria-live": "polite", children: [
22425
22482
  job.stage,
@@ -22429,12 +22486,12 @@ function EnvironmentSetup({ controller }) {
22429
22486
  job?.state === "cancelled" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "my-3 text-xs text-tita-ink-muted", role: "status", children: job.error }),
22430
22487
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "mt-4 flex flex-wrap gap-2", children: [
22431
22488
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { size: "sm", variant: ready ? "outline" : "default", disabled: busy, onClick: () => {
22432
- void prepare("install");
22489
+ void prepare("install", chosen);
22433
22490
  }, children: [
22434
22491
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Download, { size: 13 }),
22435
- ready ? "\u4FEE\u590D\u9ED8\u8BA4\u8D44\u6E90" : job?.state === "failed" || job?.state === "cancelled" ? "\u91CD\u8BD5\u51C6\u5907" : "\u4E00\u952E\u5B89\u88C5 / \u4FEE\u590D"
22492
+ selectionChanged ? "\u5B89\u88C5\u6240\u9009\u6A21\u578B" : ready ? "\u4FEE\u590D\u5F53\u524D\u73AF\u5883" : job?.state === "failed" || job?.state === "cancelled" ? "\u91CD\u8BD5\u51C6\u5907" : "\u4E00\u952E\u5B89\u88C5 / \u4FEE\u590D"
22436
22493
  ] }),
22437
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { variant: "outline", size: "sm", disabled: busy, onClick: () => {
22494
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Button, { variant: "outline", size: "sm", disabled: busy || selectionChanged, onClick: () => {
22438
22495
  void prepare("check");
22439
22496
  }, children: [
22440
22497
  /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(RefreshCw, { size: 13 }),
@@ -1,6 +1,7 @@
1
+ import { type ModelSelection } from './model-catalog.js';
1
2
  import { runProcess } from './process.js';
2
3
  export declare const requirementsFile: string;
3
4
  export declare const setupScript: string;
4
5
  export declare function managedPython(root: string): string;
5
- export declare function installRequiredEnvironment(root: string, signal: AbortSignal, stage: (label: string) => void, log: (line: string) => void, runner?: typeof runProcess): Promise<void>;
6
+ export declare function installRequiredEnvironment(root: string, signal: AbortSignal, stage: (label: string) => void, log: (line: string) => void, runner?: typeof runProcess, selection?: ModelSelection, basePython?: string): Promise<void>;
6
7
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;AAE9D,eAAO,MAAM,gBAAgB,QAA8E,CAAA;AAC3G,eAAO,MAAM,WAAW,QAA+E,CAAA;AACvG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAgI;AA6EnL,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,GAAE,OAAO,UAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BtM"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEjF,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAA;AAE9D,eAAO,MAAM,gBAAgB,QAA8E,CAAA;AAC3G,eAAO,MAAM,WAAW,QAA+E,CAAA;AACvG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAgI;AA6EnL,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,GAAE,OAAO,UAAuB,EAAE,SAAS,GAAE,cAAwC,EAAE,UAAU,SAAsC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC7S"}
@@ -4,7 +4,9 @@ import { chmod, copyFile, mkdir, open, readFile, readdir, rename, rm, writeFile
4
4
  import { homedir } from 'node:os';
5
5
  import { dirname, join } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
- import { MANAGED_PYTHON, REQUIRED_MODELS, UV_VERSION } from './manifest.js';
7
+ import { modelsForSelection, UV_VERSION } from './manifest.js';
8
+ import { DEFAULT_MODEL_SELECTION } from './model-catalog.js';
9
+ import { writeModelSelection } from './selection.js';
8
10
  import { runProcess } from './process.js';
9
11
  export const requirementsFile = fileURLToPath(new URL('../../../python/requirements.txt', import.meta.url));
10
12
  export const setupScript = fileURLToPath(new URL('../../../python/prepare-models.py', import.meta.url));
@@ -121,20 +123,25 @@ async function installLock(root) {
121
123
  }
122
124
  throw new Error('无法获取环境安装锁');
123
125
  }
124
- export async function installRequiredEnvironment(root, signal, stage, log, runner = runProcess) {
126
+ export async function installRequiredEnvironment(root, signal, stage, log, runner = runProcess, selection = DEFAULT_MODEL_SELECTION, basePython = process.env.DSH_PYTHON || 'python3') {
125
127
  await mkdir(root, { recursive: true });
126
128
  const unlock = await installLock(root);
127
- const env = { ...process.env, UV_PYTHON_INSTALL_DIR: join(root, 'python-managed'), UV_CACHE_DIR: join(root, 'cache', 'uv'), HF_HOME: join(root, 'cache', 'huggingface'), PIP_DISABLE_PIP_VERSION_CHECK: '1' };
129
+ const env = { ...process.env, UV_CACHE_DIR: join(root, 'cache', 'uv'), HF_HOME: join(root, 'cache', 'huggingface'), PIP_DISABLE_PIP_VERSION_CHECK: '1' };
128
130
  const run = (command, args, extra = {}) => runner(command, args, { env, signal, timeoutMs: 30 * 60_000, onLine: log, ...extra });
129
131
  try {
130
- stage('准备 Python');
132
+ stage('准备模型运行时');
131
133
  const uv = await ensureUv(root, signal, log, runner);
134
+ const versionOutput = await run(basePython, ['-c', 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")'], { timeoutMs: 15_000 });
135
+ const baseVersion = versionOutput.trim().split(/\r?\n/).at(-1);
136
+ if (!baseVersion || !/^3\.(10|11|12|13)$/.test(baseVersion)) {
137
+ throw new Error(`DSH Python 版本不受支持:${baseVersion || '无法读取'};需要 Python 3.10–3.13`);
138
+ }
132
139
  const python = managedPython(root);
133
140
  let compatible = false;
134
141
  if (existsSync(python)) {
135
142
  try {
136
- await run(python, ['-c', 'import sys; assert sys.version_info.major == 3 and 10 <= sys.version_info.minor < 14'], { timeoutMs: 15_000 });
137
- compatible = true;
143
+ const output = await run(python, ['-c', 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")'], { timeoutMs: 15_000 });
144
+ compatible = output.trim().split(/\r?\n/).at(-1) === baseVersion;
138
145
  }
139
146
  catch {
140
147
  if (signal.aborted)
@@ -145,16 +152,18 @@ export async function installRequiredEnvironment(root, signal, stage, log, runne
145
152
  if (existsSync(join(root, 'python'))) {
146
153
  const backup = join(root, `python-backup-${randomUUID()}`);
147
154
  await rename(join(root, 'python'), backup);
148
- log(`原 Python 环境不可用,已保留备份:${backup}`);
155
+ log(`原模型运行环境不可用,已保留备份:${backup}`);
149
156
  }
150
- await run(uv, ['venv', '--python', MANAGED_PYTHON, '--python-preference', 'managed', join(root, 'python')]);
157
+ await run(uv, ['venv', '--python', basePython, '--python-preference', 'only-system', join(root, 'python')]);
151
158
  }
152
- stage('安装 Python 依赖');
159
+ stage('安装推理依赖');
153
160
  await run(uv, ['pip', 'install', '--reinstall', '--python', python, '-r', requirementsFile]);
154
- for (const model of REQUIRED_MODELS) {
155
- stage(model.id === 'embedding' ? '下载向量模型' : '下载重排模型');
161
+ const selectedModels = modelsForSelection(selection);
162
+ for (const model of selectedModels) {
163
+ stage(model.kind === 'embedding' ? '下载向量模型' : '下载重排模型');
156
164
  await run(python, [setupScript, '--repo', model.repo, '--revision', model.revision, '--destination', join(root, 'models', model.directory)]);
157
165
  }
166
+ await writeModelSelection(root, selection);
158
167
  }
159
168
  finally {
160
169
  await unlock();
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/environment/install.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,208 @@
1
1
  /** Revisions are immutable Hub commit IDs, not a moving main branch. */
2
+ export declare const MODEL_REVISIONS: {
3
+ readonly 'bge-small-zh-v1.5': "7999e1d3359715c523056ef9478215996d62a620";
4
+ readonly 'bge-base-zh-v1.5': "f03589ceff5aac7111bd60cfc7d497ca17ecac65";
5
+ readonly 'bge-large-zh-v1.5': "79e7739b6ab944e86d6171e44d24c997fc1e0116";
6
+ readonly 'wemm-embedding-2b-quantized': "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993";
7
+ readonly 'wemm-embedding-2b': "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
8
+ readonly 'bge-reranker-base': "2cfc18c9415c912f9d8155881c133215df768a70";
9
+ readonly 'bge-reranker-large': "55611d7bca2a7133960a6d3b71e083071bbfc312";
10
+ readonly 'qwen3-reranker-0.6b': "e61197ed45024b0ed8a2d74b80b4d909f1255473";
11
+ readonly 'qwen3-reranker-4b': "22e683669bc0f0bd69640a1354a6d0aebcfeede5";
12
+ readonly 'qwen3-reranker-8b': "77d193c791ed757ca307ee72715aa132723da912";
13
+ };
14
+ export declare function modelsForSelection(selection?: import("./model-catalog.js").ModelSelection): ({
15
+ kind: "embedding";
16
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
17
+ id: "bge-small-zh-v1.5";
18
+ repo: "BAAI/bge-small-zh-v1.5";
19
+ directory: "bge-small-zh-v1.5";
20
+ label: "BGE Small 中文";
21
+ dimension: 512;
22
+ download: "约 96 MB";
23
+ description: "资源占用最低,适合先跑通本地知识检索。";
24
+ } | {
25
+ kind: "embedding";
26
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
27
+ id: "bge-base-zh-v1.5";
28
+ repo: "BAAI/bge-base-zh-v1.5";
29
+ directory: "bge-base-zh-v1.5";
30
+ label: "BGE Base 中文";
31
+ dimension: 768;
32
+ download: "约 409 MB";
33
+ description: "效果与资源占用较均衡。";
34
+ } | {
35
+ kind: "embedding";
36
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
37
+ id: "bge-large-zh-v1.5";
38
+ repo: "BAAI/bge-large-zh-v1.5";
39
+ directory: "bge-large-zh-v1.5";
40
+ label: "BGE Large 中文";
41
+ dimension: 1024;
42
+ download: "约 1.3 GB";
43
+ description: "中文向量效果优先,需要更多内存与磁盘。";
44
+ } | {
45
+ kind: "embedding";
46
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
47
+ id: "wemm-embedding-2b-quantized";
48
+ repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
49
+ directory: "WeMM-Embedding-2B-Quantized";
50
+ label: "WeMM Embedding 2B 社区量化版";
51
+ dimension: 2048;
52
+ download: "约 1.8 GB";
53
+ description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
54
+ } | {
55
+ kind: "embedding";
56
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
57
+ id: "wemm-embedding-2b";
58
+ repo: "tencent/WeMM-Embedding-2B";
59
+ directory: "WeMM-Embedding-2B";
60
+ label: "腾讯 WeMM Embedding 2B(BF16)";
61
+ dimension: 2048;
62
+ download: "约 5.5 GB";
63
+ description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
64
+ } | {
65
+ kind: "rerank";
66
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
67
+ id: "bge-reranker-base";
68
+ repo: "BAAI/bge-reranker-base";
69
+ directory: "bge-reranker-base";
70
+ label: "BGE Reranker Base";
71
+ download: "约 1.1 GB";
72
+ description: "中文重排的轻量选项。";
73
+ } | {
74
+ kind: "rerank";
75
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
76
+ id: "qwen3-reranker-0.6b";
77
+ repo: "Qwen/Qwen3-Reranker-0.6B";
78
+ directory: "Qwen3-Reranker-0.6B";
79
+ label: "Qwen3 Reranker 0.6B";
80
+ download: "约 1.2 GB";
81
+ description: "支持 100 多种语言,适合先试用 Qwen 重排。";
82
+ } | {
83
+ kind: "rerank";
84
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
85
+ id: "bge-reranker-large";
86
+ repo: "BAAI/bge-reranker-large";
87
+ directory: "bge-reranker-large";
88
+ label: "BGE Reranker Large";
89
+ download: "约 2.2 GB";
90
+ description: "中文和英文重排效果优先,推理速度较慢。";
91
+ } | {
92
+ kind: "rerank";
93
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
94
+ id: "qwen3-reranker-4b";
95
+ repo: "Qwen/Qwen3-Reranker-4B";
96
+ directory: "Qwen3-Reranker-4B";
97
+ label: "Qwen3 Reranker 4B";
98
+ download: "约 8.1 GB";
99
+ description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
100
+ } | {
101
+ kind: "rerank";
102
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
103
+ id: "qwen3-reranker-8b";
104
+ repo: "Qwen/Qwen3-Reranker-8B";
105
+ directory: "Qwen3-Reranker-8B";
106
+ label: "Qwen3 Reranker 8B";
107
+ download: "约 16.4 GB";
108
+ description: "资源占用最高;下载前请确认有足够磁盘与内存。";
109
+ })[];
2
110
  export declare const REQUIRED_MODELS: ({
3
- id: "embedding";
4
- repo: string;
5
- directory: string;
6
- revision: string;
7
- } | {
8
- id: "rerank";
9
- repo: string;
10
- directory: string;
11
- revision: string;
111
+ kind: "embedding";
112
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
113
+ id: "bge-small-zh-v1.5";
114
+ repo: "BAAI/bge-small-zh-v1.5";
115
+ directory: "bge-small-zh-v1.5";
116
+ label: "BGE Small 中文";
117
+ dimension: 512;
118
+ download: "约 96 MB";
119
+ description: "资源占用最低,适合先跑通本地知识检索。";
120
+ } | {
121
+ kind: "embedding";
122
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
123
+ id: "bge-base-zh-v1.5";
124
+ repo: "BAAI/bge-base-zh-v1.5";
125
+ directory: "bge-base-zh-v1.5";
126
+ label: "BGE Base 中文";
127
+ dimension: 768;
128
+ download: "约 409 MB";
129
+ description: "效果与资源占用较均衡。";
130
+ } | {
131
+ kind: "embedding";
132
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
133
+ id: "bge-large-zh-v1.5";
134
+ repo: "BAAI/bge-large-zh-v1.5";
135
+ directory: "bge-large-zh-v1.5";
136
+ label: "BGE Large 中文";
137
+ dimension: 1024;
138
+ download: "约 1.3 GB";
139
+ description: "中文向量效果优先,需要更多内存与磁盘。";
140
+ } | {
141
+ kind: "embedding";
142
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
143
+ id: "wemm-embedding-2b-quantized";
144
+ repo: "ewin-reg/WeMM-Embedding-2B-Quantized";
145
+ directory: "WeMM-Embedding-2B-Quantized";
146
+ label: "WeMM Embedding 2B 社区量化版";
147
+ dimension: 2048;
148
+ download: "约 1.8 GB";
149
+ description: "社区维护的 INT4 / FP8 量化模型,非腾讯官方发布;模型卡标注 license: other,请查看协议。";
150
+ } | {
151
+ kind: "embedding";
152
+ revision: "7999e1d3359715c523056ef9478215996d62a620" | "f03589ceff5aac7111bd60cfc7d497ca17ecac65" | "79e7739b6ab944e86d6171e44d24c997fc1e0116" | "524bbe61e1b8ce4673e4e17dcf6a8694a3c45993" | "bbd6cd4bf52cfc6716f752a2df80b2706720bd95";
153
+ id: "wemm-embedding-2b";
154
+ repo: "tencent/WeMM-Embedding-2B";
155
+ directory: "WeMM-Embedding-2B";
156
+ label: "腾讯 WeMM Embedding 2B(BF16)";
157
+ dimension: 2048;
158
+ download: "约 5.5 GB";
159
+ description: "多模态向量模型,支持文本和图片;下载与推理资源占用较高。";
160
+ } | {
161
+ kind: "rerank";
162
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
163
+ id: "bge-reranker-base";
164
+ repo: "BAAI/bge-reranker-base";
165
+ directory: "bge-reranker-base";
166
+ label: "BGE Reranker Base";
167
+ download: "约 1.1 GB";
168
+ description: "中文重排的轻量选项。";
169
+ } | {
170
+ kind: "rerank";
171
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
172
+ id: "qwen3-reranker-0.6b";
173
+ repo: "Qwen/Qwen3-Reranker-0.6B";
174
+ directory: "Qwen3-Reranker-0.6B";
175
+ label: "Qwen3 Reranker 0.6B";
176
+ download: "约 1.2 GB";
177
+ description: "支持 100 多种语言,适合先试用 Qwen 重排。";
178
+ } | {
179
+ kind: "rerank";
180
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
181
+ id: "bge-reranker-large";
182
+ repo: "BAAI/bge-reranker-large";
183
+ directory: "bge-reranker-large";
184
+ label: "BGE Reranker Large";
185
+ download: "约 2.2 GB";
186
+ description: "中文和英文重排效果优先,推理速度较慢。";
187
+ } | {
188
+ kind: "rerank";
189
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
190
+ id: "qwen3-reranker-4b";
191
+ repo: "Qwen/Qwen3-Reranker-4B";
192
+ directory: "Qwen3-Reranker-4B";
193
+ label: "Qwen3 Reranker 4B";
194
+ download: "约 8.1 GB";
195
+ description: "Qwen 中档重排模型;请先确认磁盘与内存充足。";
196
+ } | {
197
+ kind: "rerank";
198
+ revision: "2cfc18c9415c912f9d8155881c133215df768a70" | "55611d7bca2a7133960a6d3b71e083071bbfc312" | "e61197ed45024b0ed8a2d74b80b4d909f1255473" | "22e683669bc0f0bd69640a1354a6d0aebcfeede5" | "77d193c791ed757ca307ee72715aa132723da912";
199
+ id: "qwen3-reranker-8b";
200
+ repo: "Qwen/Qwen3-Reranker-8B";
201
+ directory: "Qwen3-Reranker-8B";
202
+ label: "Qwen3 Reranker 8B";
203
+ download: "约 16.4 GB";
204
+ description: "资源占用最高;下载前请确认有足够磁盘与内存。";
12
205
  })[];
13
206
  export declare const UV_VERSION = "0.13.1";
14
- export declare const MANAGED_PYTHON = "3.11";
15
- export declare const ENVIRONMENT_PROBE_VERSION = 1;
16
- export declare const PYTHON_PROBE = "\nimport contextlib, importlib, importlib.metadata, io, json, sys\npackages = {'torch':'torch', 'transformers':'transformers', 'sentence-transformers':'sentence_transformers', 'Pillow':'PIL', 'numpy':'numpy', 'sentencepiece':'sentencepiece', 'huggingface-hub':'huggingface_hub'}\nmissing = []\nversions = {}\nfor package, module in packages.items():\n try:\n with contextlib.redirect_stdout(io.StringIO()):\n importlib.import_module(module)\n versions[package] = importlib.metadata.version(package)\n except Exception as error:\n missing.append(package + ': ' + str(error))\nprint(json.dumps({'version': list(sys.version_info[:3]), 'executable': sys.executable, 'missing': missing, 'packages': versions}))\n";
207
+ export declare const ENVIRONMENT_PROBE_VERSION = 2;
17
208
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/environment/manifest.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,eAAO,MAAM,eAAe;;;;;;;;;;IAG3B,CAAA;AACD,eAAO,MAAM,UAAU,WAAW,CAAA;AAClC,eAAO,MAAM,cAAc,SAAS,CAAA;AACpC,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C,eAAO,MAAM,YAAY,8uBAaxB,CAAA"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/environment/manifest.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,eAAO,MAAM,eAAe;;;;;;;;;;;CAWlB,CAAA;AAEV,wBAAgB,kBAAkB,CAAC,SAAS,8CAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAOrE;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAuB,CAAA;AACnD,eAAO,MAAM,UAAU,WAAW,CAAA;AAClC,eAAO,MAAM,yBAAyB,IAAI,CAAA"}
@@ -1,24 +1,26 @@
1
- import { LOCAL_RERANK_MODEL_DIR, PREFERRED_LOCAL_EMBEDDING_MODEL_DIR } from '../types.js';
1
+ import { DEFAULT_MODEL_SELECTION, embeddingModel, rerankModel } from './model-catalog.js';
2
2
  /** Revisions are immutable Hub commit IDs, not a moving main branch. */
3
- export const REQUIRED_MODELS = [
4
- { id: 'embedding', repo: 'BAAI/bge-small-zh-v1.5', directory: PREFERRED_LOCAL_EMBEDDING_MODEL_DIR, revision: '7999e1d3359715c523056ef9478215996d62a620' },
5
- { id: 'rerank', repo: 'BAAI/bge-reranker-base', directory: LOCAL_RERANK_MODEL_DIR, revision: '2cfc18c9415c912f9d8155881c133215df768a70' },
6
- ];
3
+ export const MODEL_REVISIONS = {
4
+ 'bge-small-zh-v1.5': '7999e1d3359715c523056ef9478215996d62a620',
5
+ 'bge-base-zh-v1.5': 'f03589ceff5aac7111bd60cfc7d497ca17ecac65',
6
+ 'bge-large-zh-v1.5': '79e7739b6ab944e86d6171e44d24c997fc1e0116',
7
+ 'wemm-embedding-2b-quantized': '524bbe61e1b8ce4673e4e17dcf6a8694a3c45993',
8
+ 'wemm-embedding-2b': 'bbd6cd4bf52cfc6716f752a2df80b2706720bd95',
9
+ 'bge-reranker-base': '2cfc18c9415c912f9d8155881c133215df768a70',
10
+ 'bge-reranker-large': '55611d7bca2a7133960a6d3b71e083071bbfc312',
11
+ 'qwen3-reranker-0.6b': 'e61197ed45024b0ed8a2d74b80b4d909f1255473',
12
+ 'qwen3-reranker-4b': '22e683669bc0f0bd69640a1354a6d0aebcfeede5',
13
+ 'qwen3-reranker-8b': '77d193c791ed757ca307ee72715aa132723da912',
14
+ };
15
+ export function modelsForSelection(selection = DEFAULT_MODEL_SELECTION) {
16
+ const embedding = embeddingModel(selection.embedding);
17
+ const rerank = rerankModel(selection.rerank);
18
+ return [
19
+ { ...embedding, kind: 'embedding', revision: MODEL_REVISIONS[embedding.id] },
20
+ { ...rerank, kind: 'rerank', revision: MODEL_REVISIONS[rerank.id] },
21
+ ];
22
+ }
23
+ export const REQUIRED_MODELS = modelsForSelection();
7
24
  export const UV_VERSION = '0.13.1';
8
- export const MANAGED_PYTHON = '3.11';
9
- export const ENVIRONMENT_PROBE_VERSION = 1;
10
- export const PYTHON_PROBE = `
11
- import contextlib, importlib, importlib.metadata, io, json, sys
12
- packages = {'torch':'torch', 'transformers':'transformers', 'sentence-transformers':'sentence_transformers', 'Pillow':'PIL', 'numpy':'numpy', 'sentencepiece':'sentencepiece', 'huggingface-hub':'huggingface_hub'}
13
- missing = []
14
- versions = {}
15
- for package, module in packages.items():
16
- try:
17
- with contextlib.redirect_stdout(io.StringIO()):
18
- importlib.import_module(module)
19
- versions[package] = importlib.metadata.version(package)
20
- except Exception as error:
21
- missing.append(package + ': ' + str(error))
22
- print(json.dumps({'version': list(sys.version_info[:3]), 'executable': sys.executable, 'missing': missing, 'packages': versions}))
23
- `;
25
+ export const ENVIRONMENT_PROBE_VERSION = 2;
24
26
  //# sourceMappingURL=manifest.js.map