## AI 兜底安装与授权弹窗 安装走**确定性通道链**:`配置源(主→备)→ curl 手动安装 → git 通道 → EPERM 清理重试 → 仓库子包展开`。常规通道全部失败时,才轮到**本地 AI 兜底**。 **本地 AI 兜底是什么**:拉起一个本地 AI 子代理接管安装——它会像人工一样诊断(查仓库结构、识别子包/聚合包、清理残留),用正确管理器完成安装并落配置。**注意:这一步会调用 DeepSeek API 模型,可能产生 API 费用。** **授权弹窗逻辑(费用透明)**: 1. 常规通道全失败后,任务进入「等待授权」状态,屏幕中央弹出**最上层模态框**: - 明确说明"将调用 DeepSeek API 模型,可能产生 API 费用" - 提供 **同意,继续** / **取消** 两个按钮(取消 = 零费用) - 10 分钟未决定自动取消 2. 模态框内可勾选 **"以后不再提醒"**(自动同意)——勾选后可随时在**插件市场页面最底部**恢复弹窗提醒 3. 右上角悬浮的 **"AI 兜底"开关**可彻底关闭该功能:常规通道失败将直接取消安装,**永远不会调用模型 API(零费用)** --- ## 框架层补丁(cordis.patch.yml 解析容错) **问题(issue #5)**:`cordis.patch.yml` 若含顶格 `[]` 占位符 + 后续条目(两个 YAML 根节点), DSH 启动时解析崩溃:`end of the stream or a document separator is expected`。 **修复位置**:DSH 框架 `dsh-app-boot` 的 `parsePatchList`——解析失败时自动移除顶格空数组占位行(视为 no-op)后重试; 正常文件、纯 `[]` 文件、缩进子数组均不受影响。 **应用方式**(DSH 升级后需重新执行,升级会覆盖框架文件): ```bash node scripts/apply-framework-patch.cjs ``` 脚本自动定位 npx 缓存中的 `dsh-app-boot/lib/index.js`,检测到已补丁则跳过(幂等),首次应用会保留 `.bak-issue5` 备份。 --- ## 安全说明 - 全部路由仅允许环回地址访问; - GitHub 元数据只用于发现公开插件,npm 安装走 registry 的完整 TLS 校验; - GitHub 源搜索在浏览器内直连;Gitee / 自定义源检索与请求头(含认证信息)仅经服务端处理,不下发浏览器; - 自定义源地址仅允许 https 与本机/私网 http(127.0.0.1、localhost、10.x、192.168.x、172.16-31.x 等); - 技能是纯文件(SKILL.md + 资源)——安装技能**不会执行任何代码**;git clone 来自你选择的仓库,安装前请自行核验。