DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-ofm-codearts-pin

b

dsh-ofm-codearts-pin

Discovered

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

Machine translated

dsh-ofm-codearts-pin

Pins dsh-our-free-model (OFM) to 2.5.8 — the last release that still ships Huawei Cloud's CodeArts channel, and the one where that channel was fixed — and heals the install back to it on every boot.

中文说明见 README.zh-CN.md。

Why this exists

OFM 2.5.9 deleted the Huawei Cloud channel outright. The channel pack stops registering ["CODEARTS", "codearts"], the settings page loses the card, and the account entry (codearts-… in ~/.dsh/channel-pack/state.json) plus its credential are left behind, unusable and unreachable. Nothing in 2.5.9 can be configured back into existence.

Version history matters here:

ReleaseCodeArts channelWorks?
2.5.6presentNo — its request signature is rewritten by any plugin that patches global fetch (billion-context, cost-meter), so upstream rejects it
2.5.7presentYes — PR #481 moved CodeArts onto an independent signed transport and added the 4004 retry
2.5.8presentYes — and it is the newest build that still has the channel
2.5.9deleted—

So 2.5.8 is the correct landing point: newest, and working.

What it does

StepBehaviour
Byte checkOn each boot, all 80 installed files are compared to the shipped payload by SHA-256
Exact repairOnly files whose hash actually differs are rewritten; each is backed up, replaced atomically, read back and re-hashed
Syntax gateEvery .js it writes is node --check-ed; a file that fails is restored from backup immediately
All-or-nothingIf any step in a pass fails, every file that pass already wrote is rolled back — a half-applied pin never reaches the next boot
Payload gateThe archive is unpacked and every extracted file re-hashed first; a payload that fails verification aborts the pin without writing a byte
Update checkSets updateCheckHours = 0 in ~/.dsh/our-free-model/settings.json (OFM's own documented opt-out, one key only)
Honest reportindex.js, client.js and package.json were already read by the time this plugin runs, so the report says restart required rather than claiming the whole change is live

The payload is not a rebuild. It is the exact file set that 2.5.8's own Ed25519-signed feed/manifest.json pins, copied byte-for-byte — which is what makes "restore" reproducible instead of a snapshot of whatever happened to be installed.

It ships as vendor/payload/2.5.8.tar.gz (the same form upstream publishes), unpacked on first use to ~/.dsh/ofm-codearts-pin/payload-2.5.8/ and verified file by file before anything is written. The archive form exists because upstream's pack.js embeds a Google OAuth client secret: loose files make the repository unpushable (GitHub push protection rejects the commit), and rewriting that byte would change the hash the pin is built on. The archive is the only shape that is both byte-exact and pushable.

Install

dsh plugin --profile desktop install <this directory>

Or from the tarball / git (all three dsh.install entries are filled in).

⚠️ Order matters. In dsh.profile.bundles, this plugin must appear before dsh-our-free-model. That way OFM has not yet imported vendor/channel-pack/pack.js when the pin lands, so the healed pack is the one that loads and CodeArts is back on that same start. The row in cordis.patch.yml is an id-addressed insert: it adds itself, it does not move OFM.

Commands

/ofm-pin            # status: install dir, files matching, both halves of the channel, profile tarball
/ofm-pin apply      # restore from the payload now
/ofm-pin restore    # undo: put the backups back (removes the pin)
/ofm-pin quiet      # only disable the in-app update check
/ofm-pin why        # why the pin sits at 2.5.8

Read-only status is also served over HTTP: GET http://127.0.0.1:<port>/dsh-ofm-codearts-pin (loopback only).

Config

config:
  autoPin: true        # false = report drift only, never write
  target: ''           # explicit dsh-our-free-model directory
  quietUpdates: true   # disable the in-app update check
  verbose: false       # log every step, including a no-op boot
  archivePath: ''      # override the shipped payload archive
  manifestPath: ''     # override the pinned manifest
  cacheDir: ''         # override the extraction cache directory

The one thing it cannot do for you

The profile's tarball specifier. If dependencies["dsh-our-free-model"] still points at an older package, the next pnpm install reinstalls that build underneath the pin. The status output shows the specifier currently in use and warns about it, but it does not edit profile dependencies — that is the package manager's territory. Point it at the 2.5.8 tarball.

Tests

Two suites, both against throwaway fixtures in a temp directory — no network, no touching a real install:

npm test           # 11 cases: archive reader and pinner behaviour
npm run test:boot  # 1 simulation: real apply() against a fake cordis context

Covered: the archive extracts exactly the 80 files the manifest pins; a corrupt archive is refused; a clean install is left untouched; a 2.5.9-shaped install is healed (both channel halves return); a single drifted file is the only one written; a poisoned payload entry is refused; a mid-pass failure rolls everything back; backups and undo; stale staging files are swept; quietUpdates touches one key; a foreign .bak is never mistaken for ours. test:boot additionally proves apply() cannot throw, that the command and read-only route each register once, and that a re-apply is idempotent.

Licence

MIT. vendor/payload/2.5.8.tar.gz is an unmodified copy of the dsh-our-free-model 2.5.8 release payload, redistributed under that project's MIT licence (see the last section of LICENSE). This plugin does not alter upstream behaviour, branding or endpoints — it only restores files that belong to that release.

Comments

Loading…

Similar plugins

dsh-fail-soft

by lanbaolu

⛔ 已停止更新(2026-09-12):坏插件隔离等保底能力已内置于 DSH Desktop → 请直接使用 https://github.com/dataelement/dsh-desktop

Workflow & AutomationManifest valid

★ 7

↓ 365/wk

JavaScript

Sep 12, 2026

dsh plugin --profile web add @lanbaolu/dsh-fail-soft

by anye-99

DeepSeek Harness 插件:华为云 CodeArts 浏览器登录与凭据管理,并把 CodeBuddy / WorkBuddy / LobsterAI / Qoder / TRAE / Cline / Loomy / Raccoon / MiniMax / TeleAgent / ZCode / Step Code / Antigravity 注册为 LLM 提供商,含多账号池、静默续期、额度与每日签到。

Models & ProvidersManifest valid

★ 13

↓ 588/wk

MIT

TypeScript

Oct 13, 2026

dsh plugin --profile web add dsh-codearts-auth

by zxmqq1234

DeepSeek Harness(dsh)自动重试插件:报错自动重试、中断自动继续、挂起自动唤醒、 每一步右上角弹窗告诉你,不用再手动发"继续",数据看板还原每一次重试的真相。与 dsh系统重试互补而非替代——在内置重试耗尽或不覆盖的错误码上追加保障。

Tools & CapabilitiesManifest valid

★ 13

MIT

TypeScript

Oct 15, 2026

dsh plugin --profile web add dsh-auto-retry

by 1250589385

DSH 测试自动修复:给 agent 一个 run_tests 工具,跑测试并把结构化失败(文件/行号/断言)直接交给它修复。自动识别 pytest / jest / vitest / cargo / go / npm,Windows 中文断言不乱码,同一失败反复出现时自动停止。

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Oct 23, 2026

dsh plugin --profile web add dsh-test-autofix

将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness — bring WorkBuddy desktop app models into DeepSeek Harness with zero configuration.

Terminal & ClientsModels & ProvidersManifest valid

★ 0

dsh plugin --profile web add dsh-workbuddy-connect

by HRuiCcc

DSH 本机维护插件:预检 → 快照 → 原子写入 → 冲突检测回滚;含提示词管理与设置面板。基于 ZiPengWei/dsh-purge(MIT)。

Development & InfrastructureManifest valid

★ 16

MIT

JavaScript

Oct 23, 2026

dsh plugin --profile web add ruic-dsh-purge