跳到主内容

fabric 使用指南

为 DSH 安装 Stent/Mixin 扩展层,提供 stent-dsh 启动器和两个 profile 行,让受信插件在不修改源码的前提下改写其他模块的函数行为。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

fabric

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add github:omdsh-dev/fabric

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

关键要点

  • 状态:活文档(每节记录决策及其历史)
  • 范围:本独立 Fabric 扩展仓库
  • 上游锚点:deepseek-harness 快照 7b9644f2(0812)/ 9f9e2782a4(0813)、fork tip 65bcaf9902(feat-fabric)
  • 消费侧构建使用根目录显式的 build 脚本;trio 与 launcher 在打包前由 tsdown 构建,不需要安装期 prepare。
  • 本 workspace 的 allowBuilds: esbuild;

— 源: plugin_wiki.readme_zh (fallback readme_raw)

常见问题

这个插件装好后能做什么?

在 profile 里同时启用 stent 和 stent-dsh 两行后,DSH 进程就具备 Stent 扩展能力:受信插件可针对 npm 包的指定文件与函数注册 patch(前置改参、结果拦截、整体替换等四种操作),无需 fork 上游包。

安装后为什么 profile 列表里看不到效果?

stent 与 stent-dsh 两行默认 disabled——纯 stent 包没有 apply,作为描述符载体存在;只有主动把这两行启用,且通过 stent-dsh 启动器(而非普通 dsh)启动,Stent hook 才会真正安装。

能不能用普通 dsh 命令启动?

不行。普通 dsh 启动不会写入 stent-dsh 的进程级启动标记,Stent 依赖插件会保持 pending 而不挂载;任何声明了 config.stent.patches 的行若在普通 dsh 下被启用,boot 会直接抛出错误提示你改用 stent-dsh 启动。

patch 注册后能撤销吗?

单次注册的 disposer 由所属 Cordis fiber 持有,插件卸载时自动 disable + remove;同一 patch id 仅属于一个属主,其他插件再注册会被直接拒绝;同属主 HMR 重注册会把所有权转给新一代,旧一代清理动作自动 no-op。

怎么知道 patch 真的命中了目标函数?

ctx.stent.list() 返回每个 patch 的有序快照,ctx.stent.bindings(id) 返回实际改写的文件清单;如果声明了 required: true 而启动后绑定为空,launcher 会在 boot 后 loud 失败并点名 patch id 与目标。

哪些 DSH 客户端面也支持 Stent?

stent-dsh 同时发布 ./client 浏览器入口(closure factory 形态),DSH 客户端加载 client.js 时会在浏览器 Cordis 树上安装 ctx.stent,并把 ctx.stentClient 暴露给 Mod 使用 commands 与命名 UI slot。

卸载这个插件会不会留下残余状态?

卸载时把 stent 与 stent-dsh 两行从 cordis.patch.yml / dsh.profile.bundles 里删除,重启即可;运行时的 hook 安装由注册 fiber 的 effect 跟踪,插件卸载会自动释放。

移动端或国产 CPU 能用吗?

本插件未声明 os / cpu 限制,跨平台可用;但运行时需要 Node ≥ 22.19.0 且当 loader-thread hook 共存时建议 ≥ 22.22.3 / ≥ 24.11.1,否则 CommonJS 模块可能触发 Node load 校验崩溃。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.0+(peerDependencies 钉住 @deepseek-ai/dsh-* 全家桶 ^0.1.0-rc.0)
  • Node: ^22.19.0 || >=24.0.0(loader-thread 共存场景建议 ≥ 22.22.3 / ≥ 24.11.1)

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则