🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

版本钉守 basaltfold/dsh-ofm-codearts-pin

DeepSeek 客户端
basaltfold8 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

锁定可用版本并在每次启动校验回滚,保住华为云渠道

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/basaltfold/dsh-ofm-codearts-pin.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 45 处,展示前 17 条)
  • 读取本地文件
    lib/pinner.js:90
    return createHash('sha256').update(readFileSync(path)).digest('hex')
  • 读取本地文件
    lib/pinner.js:145
    const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 读取本地文件
    lib/pinner.js:160
    if (!existsSync(path)) {
  • 读取本地文件
    lib/pinner.js:166
    bytes = readFileSync(path)
  • 读取本地文件
    lib/pinner.js:202
    if (!existsSync(archivePath)) {
  • 读取本地文件
    lib/pinner.js:205
    const archive = readFileSync(archivePath)
  • 删除本地文件递归
    lib/pinner.js:224
    rmSync(staging, { recursive: true, force: true })
  • 写入本地文件
    lib/pinner.js:228
    mkdirSync(dirname(dest), { recursive: true })
  • 写入本地文件
    lib/pinner.js:229
    writeFileSync(dest, entry.data)
  • 删除本地文件递归
    lib/pinner.js:240
    rmSync(cacheDir, { recursive: true, force: true })
  • 写入本地文件
    lib/pinner.js:241
    mkdirSync(dirname(cacheDir), { recursive: true })
  • 写入本地文件
    lib/pinner.js:242
    renameSync(staging, cacheDir)
  • 写入本地文件
    lib/pinner.js:243
    writeFileSync(
  • 删除本地文件递归
    lib/pinner.js:248
    rmSync(staging, { recursive: true, force: true })
  • 写入本地文件
    lib/pinner.js:344
    renameSync(from, to)
  • 执行外部命令来自配置/变量
    lib/pinner.js:359
    const result = spawnSync(process.execPath, ['--check', file], {
  • 删除本地文件
    lib/pinner.js:661
    rmSync(full, { force: true })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(131 字)↓

把 dsh-our-free-model 钉在 2.5.8(最后一个带可用华为云 CodeArts 渠道的版本)并在每次启动自愈回滚:逐文件 SHA-256 校验、payload 验签失败即弃用、失败整体还原、升级后自动重打,同时关掉会把华为云删掉的自动更新检查

README

由 DeepSeek 最新模型翻译生成
dsh-ofm-codearts-pin 把 dsh-our-free-model(OFM)钉在 2.5.8 —— 最后一个还带华为云 CodeArts 渠道、并且已经修好该渠道的版本 —— 然后在每次启动时自愈回滚。 English: README.md 为什么需要它 OFM 2.5.9 把华为云渠道整个删了:渠道包里不再注册 ["CODEARTS", "codearts"],设置页也没有卡片,而你的账号 codearts-…(在 ~/.dsh/channel-pack/state.json 里)和凭据都还在,白白闲置。2.5.9 里没有任何配置能把这条渠道变回来。 版本之间差别很关键: | 版本 | 华为云渠道 | 能用吗 | | 2.5.6 | 在 | 不能 —— 请求签名会被任何改写全局 fetch 的插件(billion-context、cost-meter)破坏,上游直接拒 | | 2.5.7 | 在 | 能 —— PR #481 把 CodeArts 改成独立签名传输,并加了 4004 重试 | | 2.5.8 | 在 | 能,而且是最后一个还带这条渠道的版本 | | 2.5.9 | 已删 | — | 所以 2.5.8 才是正确落点:最新,且可用。
展开完整文档(README 剩余 1 节)
dsh-ofm-codearts-pin

把 dsh-our-free-model(OFM)钉在 2.5.8 —— 最后一个还带华为云 CodeArts 渠道、并且已经修好该渠道的版本 —— 然后在每次启动时自愈回滚。

English: README.md

为什么需要它

OFM 2.5.9 把华为云渠道整个删了:渠道包里不再注册 ["CODEARTS", "codearts"],设置页也没有卡片,而你的账号 codearts-…(在 ~/.dsh/channel-pack/state.json 里)和凭据都还在,白白闲置。2.5.9 里没有任何配置能把这条渠道变回来。

版本之间差别很关键:

| 版本 | 华为云渠道 | 能用吗 |
| 2.5.6 | 在 | 不能 —— 请求签名会被任何改写全局 fetch 的插件(billion-context、cost-meter)破坏,上游直接拒 |
| 2.5.7 | 在 | 能 —— PR #481 把 CodeArts 改成独立签名传输,并加了 4004 重试 |
| 2.5.8 | 在 | 能,而且是最后一个还带这条渠道的版本 |
| 2.5.9 | 已删 | — |

所以 2.5.8 才是正确落点:最新,且可用。

它做什么

| 动作 | 说明 |
| 逐文件校验 | 每启动一次,把安装目录 80 个文件和 payload 的 SHA-256 逐个比对 |
| 精确回滚 | 只重写确实不一致的文件;每个文件先备份、再原子替换、再读回校验哈希 |
| 语法门禁 | 写完后对 .js 跑 node --check,语法不过立刻从备份还原 |
| 失败回滚 | 一次执行里如果中途失败,已经写过的文件全部还原,绝不留下半套 |
| payload 校验 | 解包后先逐文件验 hash,验不过就整轮放弃、一个字节都不写 |
| 关掉自动更新 | 把 ~/.dsh/our-free-model/settings.json 的 updateCheckHours 设为 0(OFM 的官方关闭方式,只动这一个键) |
| 报告口径诚实 | index.js / client.js / package.json 在插件运行前就已经被读过,所以这几项必须再重启一次才生效;报告里直接写 restart required |

payload 不是"重新打包",而是该版本自己的 Ed25519 签名 manifest 所钉住的那套字节。
它以 vendor/payload/2.5.8.tar.gz 形式随仓库分发(和上游发 release 的形态一致),首次使用时解包到 ~/.dsh/ofm-codearts-pin/payload-2.5.8/,并逐文件核对 SHA-256 之后才拿来用。

为什么是压缩包:上游 pack.js 里嵌着 Google OAuth 的 client secret,明文散装会让仓库无法推送(GitHub push protection 会拦);而这个字节又不能改,改了就和新版 hash 对不上、钉版失效。压缩包是唯一同时满足"原样"和"能推送"的形态。

安装

dsh plugin --profile desktop install <这个目录>

或者从 tarball / git 安装(package.json 的 dsh.install 三段都填好了)。

⚠️ 顺序很重要:dsh.profile.bundles 里本插件必须排在 dsh-our-free-model 前面。这样启动时 OFM 还没 import vendor/channel-pack/pack.js,钉子落地后加载的就是恢复好的那一份,本次启动华为云就回来了。cordis.patch.yml 里的插入行是 id 寻址的,只加自己,不会挪动 OFM。

命令

/ofm-pin # 状态:装在哪个目录、几个文件对上、华为云两半在不在、profile 指向哪个 tarball /ofm-pin apply # 立刻按 payload 回滚 /ofm-pin restore # 撤销:把备份放回去(等于解除钉子) /ofm-pin quiet # 只关自动更新检查 /ofm-pin why # 为什么钉在 2.5.8

只读状态也走 HTTP:GET http://127.0.0.1:<port>/dsh-ofm-codearts-pin(仅回环)。

配置

config:
autoPin: true # false = 只报告漂移,绝不写盘 target: '' # 显式指定 dsh-our-free-model 目录 quietUpdates: true # 关掉自动更新检查 verbose: false # 每个步骤都写日志(包括无需变更的启动) archivePath: '' # 覆盖内置 payload 压缩包(默认用包内 vendor/payload/2.5.8.tar.gz) manifestPath: '' # 覆盖 manifest cacheDir: '' # 覆盖解包缓存目录

还剩一件它管不了的事

profile 里的 tarball specifier。如果 package.json 的
dependencies["dsh-our-free-model"] 还指着旧包,下次 pnpm install 会在钉子下面
重新装回那个构建。本插件会在状态里显示当前 specifier 并提示,但不会替你改 profile 依赖(那属于包管理器领地)。把它指向 2.5.8 的 tarball 即可。

测试

两个套件,都在临时目录里的假安装上跑,不联网、不碰真实安装:

npm test # 11 个用例
npm run test:boot # 1 个模拟:真实 apply() 走一遍假 cordis 上下文

覆盖:压缩包解出的 80 个文件逐个对上 manifest、坏包拒用、干净安装不动、 2.5.9 形状能被还原(渠道两半都回来)、单文件漂移只写那一个、坏 payload 拒写、中途失败整体回滚、备份与撤销、残留临时文件清理、quietUpdates 只动一个键、外来 .bak 不被误认;test:boot 另外证明 apply() 不抛错、命令与只读路由各注册一次、重复 apply 幂等。

许可

MIT。vendor/payload/2.5.8.tar.gz 是 dsh-our-free-model 2.5.8 的原样副本,按该项目 MIT 许可再分发(见 LICENSE 末节)。本插件不改上游行为、品牌或端点。
预览分享卡片长什么样 ↓basaltfold/dsh-ofm-codearts-pin
分享 · DeepSeek Harness Hub
basaltfold/dsh-ofm-codearts-pin

锁定可用版本并在每次启动校验回滚,保住华为云渠道

回到顶部