pi 源码模式缺少模型数据清单 (pi Source Mode Missing Model Data Manifest)
出现条件
从 git clone 的 pi 仓库直接用 tsx 跑源码(pi-test.sh / pi-test.ps1),且该仓库从未执行过模型数据生成步骤。npm install 本身不会补上它。
症状
Error [ERR_MODULE_NOT_FOUND]: Cannot find module
'.../packages/ai/src/providers/data/.manifest.json'
imported from '.../packages/ai/src/providers/all.ts'
code: 'ERR_MODULE_NOT_FOUND'进程在启动瞬间就崩,连 --version 都跑不出来,容易误判成"依赖没装好"。
根因
packages/ai/src/providers/data/ 是生成目录,不入版本库,clone 后为空。它由 packages/ai/scripts/generate-models.ts 从仓库内已有的 src/providers/*.models.ts 派生,产出每个 provider 的 JSON 加一份 .manifest.json(含 schemaVersion / generatedAt / structureHash / files 校验信息)。
而 providers/all.ts 用静态 JSON 导入引用清单:
import modelDataManifest from "./data/.manifest.json" with { type: "json" };静态导入在模块解析阶段就必须存在文件,所以缺失即致命错误,不是运行期可降级的告警。
解决
npm install --ignore-scripts
npm run hydrate:model-data # = packages/ai: generate-models.ts --strict --data-onlyhydrate:model-data 只生成数据目录,不触碰 models.generated.ts。对比 npm run generate:models 会连带重新生成 models.generated.ts(该文件按仓库规范禁止手改,只能重新生成)。
边界与前提
- 走过一次
npm run build的仓库不会遇到:packages/ai的build脚本第一步就是generate-models。 - 生成过程需要网络:脚本会
fetchopenrouter、nvidia、vercel ai-gateway 等上游模型列表。网络受限时先配置代理(本机约定 7890,见 AGENTS.md)。 - 生成耗时约 5 秒,输出会列出每个 provider 的模型数量,可用它确认成功。
下次如何识别
在 pi 仓库里看到 Cannot find module .../providers/data/...json,第一反应就是"模型数据未 hydrate",直接 npm run hydrate:model-data,不必去读 all.ts 追导入链。
相关概念
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/AI apps