新闻详情

新闻详情

首页 / 资讯中心 / 详情

Operit DeepSeek Harness 运行时 pnpm 依赖构建策略:allowBuilds 审批、node-pty 本地重建与失败诊断实战

发布时间:2026/9/27 9:18:03来源:尧图网络
Operit DeepSeek Harness 运行时 pnpm 依赖构建策略:allowBuilds 审批、node-pty 本地重建与失败诊断实战
AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆【免费下载链接】OperitThe most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent项目地址https://gitcode.com/gh_mirrors/op/Operit点击查看免费下载本文聚焦 Operit 的sidebar_deepseek_harnessToolPkg 在 Android Linux 容器中托管 DeepSeek Harness Web Runtime 时遇到的 pnpm 生命周期脚本构建审批问题。围绕ERR_PNPM_IGNORED_BUILDS报错完整讲解pnpm-workspace.yaml的allowBuilds白名单策略、pnpm install --prod对半安装状态的补救、node-pty原生模块的本地重建以及显式成功标记 原始 pnpm 输出的界面诊断机制。读完你将掌握一套在受限容器环境中安全放行 pnpm 依赖构建脚本并可靠诊断安装失败的完整方案。背景ToolPkg 如何在 Android 上托管 DeepSeek HarnessOperit 的 ToolPkg 不能直接解析 NPM/Cordis bundle但 Linux 终端运行时可以执行原始 Node 与 pnpm 依赖图。因此sidebar_deepseek_harness采用终端跑原生运行时、侧边栏 WebView 承载官方 UI的架构在/root/sidebar_deepseek_harness运行目录下安装deepseek-ai/dshlatest服务仅监听http://127.0.0.1:3081WebView 中展示官方 Web UI。相关设计脉络见 DeepSeek Harness Runtime ToolPkg 总体文档。这套架构要求安装链路完整走通 pnpm 依赖图其中包括需要执行生命周期脚本install/postinstall的依赖——这正是本篇文章要解决的痛点。原状pnpm 拒绝执行生命周期脚本导致连锁失败Debug Linux 容器中的 pnpm 拒绝执行 DSH 依赖的生命周期脚本并报告ERR_PNPM_IGNORED_BUILDS。这一错误带来三条连锁后果pnpm add直接失败退出脚本在pnpm add返回失败后即退出流程中断node-pty本地重建失去机会后续针对 Operit Node 24 运行时ARM64 容器无node-pty1.1.0预编译产物的重建步骤根本没有机会执行失败信息不可用安装失败标记只包含概括性文本界面没有显示 pnpm 原始错误用户无法判断真实原因。从根因看pnpm 从较新版本开始默认拒绝执行依赖包的生命周期脚本这是出于供应链安全的默认策略但对于node-pty这类必须编译原生模块的依赖忽略构建脚本等于直接宣告安装失败。修改方案allowBuilds 白名单 半安装状态补救 界面诊断针对上述问题解决方案包含四个要点在 DSH 运行时目录写入pnpm-workspace.yaml的allowBuilds配置仅允许日志中列出的 DSH 依赖执行构建脚本最小权限原则安装 DSH 后执行pnpm install --prod让先前半安装状态也应用该配置将失败标记和最后的 pnpm 输出一起作为界面诊断。1. 运行时目录写入 pnpm-workspace.yaml在源码 deepseek_harness_web_runtime.ts 中buildPnpmBuildApprovalScript通过 shell 的printf将配置直接写入运行时目录function buildPnpmBuildApprovalScript(): string { const config [ allowBuilds:, ...DSH_ALLOWED_BUILD_PACKAGES.map((packageName) ${JSON.stringify(packageName)}: true), , ].join(\n); return printf %s ${shellQuote(config)} ${shellQuote(PNPM_WORKSPACE_PATH)}; }其中PNPM_WORKSPACE_PATH指向运行时目录下的pnpm-workspace.yaml/root/sidebar_deepseek_harness/pnpm-workspace.yaml这意味着审批策略被限制在 DSH 专属运行目录内不会污染其他 ToolPkg 或系统级 pnpm 配置。生成的配置文件形如allowBuilds: deepseek-ai/dsh-subprocess-local: true google/genai: true koffi: true node-pty: true protobufjs: true仓库根目录的 pnpm-workspace.yaml 也采用了完全相同的allowBuilds语法如esbuild: true可作为配置语法的参考示例。2. 五个 DSH 依赖的构建白名单白名单定义在源码常量DSH_ALLOWED_BUILD_PACKAGESdeepseek_harness_web_runtime.tsconst DSH_ALLOWED_BUILD_PACKAGES [ deepseek-ai/dsh-subprocess-local, google/genai, koffi, node-pty, protobufjs, ];这五个包是 DSH 依赖图中需要生命周期脚本的成员其中node-pty是关键——它编译出pty.node原生模块为 DSH 提供子进程、shell 与 PTY 能力。采用白名单而非全量放行遵循最小权限原则只有日志中列出的依赖才被允许执行构建脚本其余包维持 pnpm 默认的忽略策略。3.pnpm install --prod补救半安装状态如果 DSH 运行时此前已经处于半安装状态例如上次安装因审批失败中断仅靠后续新增的pnpm add不会自动重跑生命周期脚本。因此安装流程在pnpm add之后追加一次pnpm install --prod让整个依赖树重新应用新的allowBuilds审批策略pnpm add --prod deepseek-ai/dshlatest --reporterappend-only pnpm install --prod --reporterappend-only两条命令都使用--prod跳过 devDependencies和--reporterappend-only输出追加式、便于按行捕获完整命令串见 installRuntime 安装流程。4. 失败标记 pnpm 原始输出进界面诊断安装链路中的每一个失败点都会通过runtime_fail打出结构化失败标记runtime_fail() { runtime_event install_result failed $2 $3 $1; exit $1; }标记包含类型install_result、状态failed、错误消息、失败命令与退出码。界面侧收到后buildInstallDiagnosticdeepseek_harness_web_runtime.ts会将其整理成诊断文本包含错误消息如Failed to install deepseek-ai/dsh.执行命令原文命令退出码最近 8 条install_output事件中的 pnpm 原始输出。若安装命令未返回结构化结果则回退展示终端原始输出的最后 20 行。这样ERR_PNPM_IGNORED_BUILDS等 pnpm 真实报错会直接出现在侧边栏而不是被笼统的安装失败掩盖。源码级安装链路从编译工具到成功标记完整的installRuntime流程源码路径 deepseek_harness_web_runtime.ts按进度事件编号推进进度阶段关键动作20环境检查校验node、pnpm存在缺失时退出码 11/1235–46编译工具准备dpkg --configure -a→apt-get update→ 安装build-essential52构建策略写入pnpm-workspace.yaml的allowBuilds56运行时初始化无package.json时执行pnpm init64下载 DSHpnpm add --prod deepseek-ai/dshlatest76构建脚本pnpm install --prod执行已审批的生命周期脚本86node-pty 准备定位并重建pty.node解引用符号链接96最终验证dsh --version可执行输出install_result ready编译工具链准备buildNativeBuildToolsPreparationScript源码在检测不到gcc/g/make时自动安装编译工具链export DEBIAN_FRONTENDnoninteractive dpkg --configure -a apt-get update apt-get install -y --no-install-recommends build-essential这是node-pty生命周期脚本得以编译的前提README 记载编译工具包约占 113 MB 容器存储。上游node-pty1.1.0没有 Linux ARM64 预编译产物编译链缺失会导致原生模块构建直接失败退出码 23。node-pty 原生模块重建与符号链接解引用buildNodePtySetupScript源码处理了容器环境的两个特有坑pnpm 保留安装命令不直接跑包的生命周期脚本——于是定位 pnpm 自带的node-gyp.js入口在node-pty目录内手动执行node $node_gyp_script rebuild --nodedir/usrnode-gyp.js通过find在/usr/lib/node_modules、/usr/local/lib/node_modules和/root/.local/share/pnpm下查找。Android 容器可能把 node-gyp 的 Release 产物做成符号链接——node-gyp的 Release 输出可能是指向obj.target的悬空符号链接而node-pty的postinstall随后会删除obj.target。因此脚本用cp -L把pty.node解引用为普通原生文件再替换回去最后用node -e require(...)显式加载校验确认产物可被 Node 24 ABI 正确加载。显式成功标记只有 ready 才允许启动 Web安装是否成功不再依赖终端 API 的exitCode。因为交互式 PTY 中内层bash -lc即使以错误状态结束外层会话仍可能被报告为正常完成详见 运行时失败反馈文档。因此安装脚本在全部步骤通过后打印显式成功标记runtime_event install_result readyinstallCompleted源码要求同时满足exitCode 0、未超时、且解析到install_result事件状态为ready。只有收到该标记才启动 DSH Web缺少 Node、缺少 pnpm、安装失败、node-pty构建/加载失败等任何一条路径都不会进入dsh web启动环节也不会去等待127.0.0.1:3081。主要失败路径与退出码映射见 安装流程源码退出码失败场景11Linux 运行时缺少 Node.js12Linux 运行时缺少 pnpm13DSH CLI 未安装node_modules/.bin/dsh不存在14无法读取/读取到空版本号15node-pty未随 DSH 安装16node-pty原生模块构建/复制/替换失败17未找到 pnpm 自带的 node-gyp 入口18node-pty原生模块无法加载19dsh --version无法执行20pnpm init失败21pnpm add安装 DSH 失败22pnpm install --prod执行已审批构建脚本失败23build-essential等 Linux 包准备失败验收标准与完成形态本文档对应的验收标准不再出现ERR_PNPM_IGNORED_BUILDSallowBuilds白名单使五个 DSH 依赖的生命周期脚本获得审批node-pty本地重建和加载检查实际执行pnpm install --prod触发构建脚本node-gyp rebuild编译pty.node加载校验通过仍然只有收到安装成功标记才启动 DSH Webinstall_result ready是启动 Web 的唯一前提失败时直接展示诊断信息。整体安装链路与运行合约的完整说明见 sidebar_deepseek_harness 包 README侧边栏失败反馈的通用机制见 运行时失败反馈node-pty 模块路径解析见 07_node_pty_module_resolution.md。小结ERR_PNPM_IGNORED_BUILDS本质是 pnpm 供应链安全策略与必须编译原生模块之间的冲突。Operit 的解法可归纳为三句话用pnpm-workspace.yaml的allowBuilds做最小化白名单审批用第二次pnpm install --prod覆盖半安装状态用显式成功标记加结构化诊断替代不可靠的终端退出码。这套组合既保证了node-pty等依赖能完成本地重建又确保了任何失败都能被用户直接看到是受限容器环境中运行含原生模块 Node 应用的可复用范本。赞分享AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆【免费下载链接】OperitThe most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent项目地址https://gitcode.com/gh_mirrors/op/Operit点击查看免费下载相关推荐pnpm / pacquet共享 Store 复用 Git 依赖时强制 allowBuilds 审批的构建安全修复pnpm / pacquet共享 Store 复用 Git 依赖时强制 allowBuilds 审批的构建安全修复 本篇技术指南围绕 .changeset/t包管理器开发工具CLIOperit 中 DeepSeek HarnessDSHLinux 运行时宿主node-pty 原生模块修复与回环 Web 服务接入实战Operit 中 DeepSeek HarnessDSHLinux 运行时宿主node pty 原生模块修复与回环 Web 服务接入实战 本文围绕 OpeAI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆GUI 自动化pnpm 依赖构建脚本审批机制从自动运行到先审批后构建的变更深度解析pnpm 依赖构建脚本审批机制从自动运行到先审批后构建的变更深度解析 导读 本文围绕 pnpm 仓库中编号为 patched install scri包管理器开发工具CLI上一篇LeRobot项目数据集创建与格式转换完全指南下一篇机器人学习数据集构建终极指南从零到一的完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

出口电商平台怎么选?3个维度避开域名服务器坑 2026/9/27 10:12:17

出口电商平台怎么选?3个维度避开域名服务器坑

出口电商平台怎么选?3个维度避开域名服务器坑 域名服务器搞不懂,选出口电商平台时最容易踩坑。很多新手觉得买个服务器就行,结果备案卡住,或者服务器性能撑不住海外访问,最后网站打开像蜗牛。别慌,今天把怎么选出口电商平台这件事拆透。…

阅读更多 →
怎么搭建自己的网页:5个避坑注意事项 2026/9/27 10:12:10

怎么搭建自己的网页:5个避坑注意事项

怎么搭建自己的网页:5个避坑注意事项 网站做好了没人访问,是不是因为你连域名和服务器都没配好? 很多老板觉得只要页面漂亮就行,结果上线后打开速度慢得像蜗牛,甚至直接打不开。 这时候再谈SEO优化就是扯淡,地基没打好,楼盖得再高也是危房。…

阅读更多 →
GenOffice Sheets 数据来源标注指南(data-attribution):用超链接 + 单元格 + 格式化实现可追溯的外部数据填充 2026/9/27 10:11:55

GenOffice Sheets 数据来源标注指南(data-attribution):用超链接 + 单元格 + 格式化实现可追溯的外部数据填充

人工智能AI 应用桌面应用AI AgentMCP 服务AI 技能 【免费下载链接】genoffice Free, open-source AI Office suite: Docs, Sheets, Slides, PDF, Markdown and HTML editors with a built-in AI agent, plus a genoffice CLI and agent skill so Claude Code, Codex and Cursor…

阅读更多 →
视觉网站建设哪家好?3步搞定被黑挂马的救命方案 2026/9/27 10:11:26

视觉网站建设哪家好?3步搞定被黑挂马的救命方案

视觉网站建设哪家好?3步搞定被黑挂马的救命方案 网站突然打开变成赌博页面,后台登录不进去,客户投诉链接带毒。这种时候,别急着重启服务器,先深呼吸。 我见过太多做视觉设计的老板,因为不懂技术,网站被黑后只能干瞪眼。其实,…

阅读更多 →
AutoBangumi 搜索面板重设计:从下拉列表到可过滤的模态搜索体验 2026/9/27 10:11:11

AutoBangumi 搜索面板重设计:从下拉列表到可过滤的模态搜索体验

后端前端音视频 【免费下载链接】Auto_Bangumi AutoBangumi - 全自动追番工具 项目地址: https://gitcode.com/gh_mirrors/au/Auto_Bangumi 点击查看 免费下载 本文基于 AutoBangumi 仓库内的设计文档 docs/plans/2026-01-25-search-panel-redesign.md,…

阅读更多 →
孩子总说“你不懂我”?用AI语音记录重构亲子沟通,3个月后我发现惊人变化 2026/9/27 10:11:11

孩子总说“你不懂我”?用AI语音记录重构亲子沟通,3个月后我发现惊人变化

不知道你有没有这样的经历:晚上睡前想跟孩子聊聊学校的事,结果问十句答一句,全程“嗯”“哦”“还行”;好不容易孩子主动开口说个什么事,你正忙着手里的活,等回过头来,已经忘了刚才的关键细节。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉