Skip to content

dsh-fable8cents

Verified

dsh-fable8cents · v0.2.0 · MIT · Web UI

DeepSeek Harness 二创插件:显示 Anthropic 的 Claude Fable 8,后台按规则路由到本机最新模型,附带 Cent 思考强度、模型身份预设与首次安装免责声明。

Install

dsh plugin add dsh-fable8cents

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Readme

dsh-fable8cents

release npm license

一个娱乐性的 DeepSeek Harness 插件:在模型列表里显示 Anthropic 的 Claude Fable 8(claude-fable-8), 实际请求由本机已有的模型承接,并新增 Cent 思考强度档位、按承接模型自动套用「模型身份预设」。

本插件为 DeepSeek 社区二创,不代表 DeepSeek 官方立场;显示的模型并非真实的 Claude Fable 8, 所有内容仅供娱乐。首次加载会弹出免责声明,确认后不再自动弹出。


功能

1. 显示模型与路由

模型列表里出现一组 Anthropic → Claude Fable 8(id claude-fable-8)。 若列表里已经存在同名模型(id 或名称相同),插件不会再添加一条。

每次请求按以下顺序选择真正承接的模型:

  1. 最新的 Fable 系列且大版本 ≤ 8 的模型;
  2. 否则,最新的 Anthropic / Claude 模型(含中转站里以 claude-* 提供的模型);
  3. 否则,最新的 DeepSeek 模型(含中转站);
  4. 否则,模型列表中最新的模型。

“最新”是确定性启发式:先比较 id/名称里的版本号,再按目录出现顺序(越靠后越新)。 选路结果缓存 15 秒,避免每次请求都全量扫描。

UI 只显示 Anthropic / Claude Fable 8 与 Cent;承接请求的提供方与模型名不会出现在目录、选择器或错误信息里 (错误文本会把上游 provider/model 替换为 Anthropic / claude-fable-8)。

2. Cent 思考强度

思考强度列表在 Max 之后新增 Cent(排在最后),选择后实际映射到承接模型支持的最高一档思考强度。 承接模型不支持思考强度时,不显示 Cent(没有可映射的档位)。

3. 模型身份预设

当会话选择 claude-fable-8 时,插件在系统提示中追加一段身份预设,并把 {{model}} / {{provider}} 模板变量改写为 Claude Fable 8 / Anthropic,因此 agent preset 里的“powered by … model”也会跟着变。

预设按承接模型分两种:

  • 非 DeepSeek 承接 → 使用 Fable 系列预设(Anthropic 最高能力线的人设),模型名称字段改为 Fable 8;
  • DeepSeek 承接 → 使用 DeepSeek 预设,但把提供方、模型名称等身份字段改写为 Anthropic / Claude Fable 8。

这正是需求里的“彩蛋”:内在沿用 DeepSeek 预设的工作风格,对外身份仍是 Anthropic 的 Fable 8。 预设中任何残留的模型身份描述都以本段为准。

另外,插件会像中转站改写模型自我认知那样,处理预设里已经写死的身份句(只在选中 Fable 8 时、只改身份句):

  • You are a coding agent powered by the DeepSeek model. → … powered by the Claude Fable 8 model.
  • You are DeepSeek, … / I am DeepSeek … → You are / I am Claude Fable 8 …
  • 本模型由 DeepSeek 公司开发。 → 本模型由 Anthropic 开发。

DeepSeek Harness 这类产品名、工具说明与无关正文保持原样;改写是幂等的(已经是 Fable 8 的句子不会被再次替换)。

4. 免责声明

首次加载时在 shell.overlay 弹出书面语免责声明(中文/英文,跟随 DSH 语言设置),需勾选确认; 确认状态存在浏览器 localStorage。模型设置页底部有一条常驻说明,可随时「重新查看说明」。

声明要点:社区二创、非官方、显示模型并非真实 Fable 8、娱乐用途、按现状提供、费用与合规自负、 不收集个人数据、商标归各自权利人、可随时停用或卸载。

5. 语言

前端文案随 DSH 的 Language 设置(zh / en)切换;插件清单的中英文标题/描述分别在 locale/zh.json、locale/en.json。

6. 启动更新与扩展包

每次启动(延迟 4 秒)以及之后每 6 小时:

  • 依次询问 npm 官方源、~/.npmrc 里的 registry(映射源)、https://registry.npmmirror.com, 以及环境变量 DSH_FABLE8_REGISTRY(可逗号分隔多个);
  • 同时查询本仓库的 GitHub Release(package.json#repository 解析出的 owner/name), 两个通道取版本号较新的一方;仓库不可匿名访问时可配 update.githubToken;
  • 若 dsh-fable8cents 有更新,下载并解包到插件家目录 ~/.dsh/fable8cents/versions/<version>/, 写为待用代际;下次启动优先加载该代际,加载失败两次后自动弃用并回退,不会把自己改坏;
  • 按 extensions 配置扫描已安装插件:命中“插件名 + 最低版本”规则时,把对应的扩展包预取到 ~/.dsh/fable8cents/extensions/,供后续联动彩蛋使用(只预取,不安装任何 profile 包)。

扩展规则有两个来源,启动时合并:

  1. profile 里本行 config.extensions(见下);
  2. 远程清单包 dsh-fable8cents-extensions:在 registry 的 manifest 里用 dsh.extensions 或 extensions 数组声明规则,插件每次启动都会重新读取,因此后续新增彩蛋 不需要更新本插件本体。

匹配与下载是严格的「命中才下」:

  • 只扫描本机已安装的插件(profile 的 dependencies + node_modules 顶层,含 scoped 包);
  • 规则的 plugin 未安装、或版本低于 minVersion → 完全不会发起下载;
  • 规则的目标包(package)已经装在本机 → 也不会重复预取;
  • 命中且目标未装时,才按 registry 顺序下载并解到 <DSH_HOME>/fable8cents/extensions/<包名>/<版本>/。

联动插件(例如桌宠类插件)可以通过当前会话的 provider = anthropic、model = claude-fable-8 识别“现在是 Fable 8”,据此切换成对应的皮肤/桌宠/台词;本插件只负责把扩展包提前放到本机。

内置的滑条皮肤层(0.1.1+)

如果本机装了 dsh-codex-effort-slider(Codex 风格推理等级滑条), 不需要换包:本插件的 client 会在当前模型是 claude-fable-8 时,给 <html> 挂 data-fable8="1" 并注入一段样式,把滑条换成暖棕 → 象牙金(旋钮 ✦、星星/刻度/扫光同步变金)。

  • 只在 Fable 8 下生效,其他模型完全走上游原样式;
  • 选择器只依赖上游稳定的 .ces-* 类名,上游改类名时最多是皮肤失效,不影响滑条功能;
  • 想单独分发带皮肤的完整滑条,可以用 dsh-codex-effort-slider-fable8(fork,与上游二选一)。

更新/扩展只读取包信息与下载 tarball,不修改 profile 的 package.json、patch 或锁文件。


安装

插件以 bundle 形式安装(package.json 的 dsh.bundle.patch + dsh.client):

plugin_manager install_bundle  <本目录绝对路径>

或在支持“本地目录安装”的插件管理器里选择本目录。

从 GitHub 安装有三种方式:

  1. 下载 Releases 里的 dsh-fable8cents-<version>.tgz,解压后用上面的 install_bundle 指向解压目录;
  2. git clone 仓库后,在仓库根目录运行 node scripts/install.mjs --profile desktop(幂等,创建 node_modules junction 并写入 profile 的 cordis.patch.yml);
  3. 直接 plugin_manager install_bundle 指向 clone 下来的目录。

也可以从 npm 安装:

plugin_manager install_bundle  dsh-fable8cents

(或 npm view dsh-fable8cents version 确认最新版本后再装。)

安装后重启一次 DSH,模型列表即出现 Claude Fable 8。

发布流程(GitHub Release、npm 发布、自动更新前提)见 docs/PUBLISH.zh.md。

开发期也可以用 dev_inject_plugin(运行时注入)快速加载。

配置(可选)

在 profile 的 cordis.patch.yml 中给本行加配置:

- id: dsh-fable8cents
  name: dsh-fable8cents
  config:
    update:
      enabled: true
      registries:
        - https://registry.npmjs.org
        - https://registry.npmmirror.com
      intervalMs: 21600000
    extensions:
      # 命中已安装插件时预取扩展包(示例,默认不启用任何规则)
      - plugin: get-fable
        minVersion: 1.16.0
        package: get-fable
        version: 1.16.0
字段 默认 含义
update.enabled true 关闭启动更新检查
update.registries [] 额外 registry,排在 npmrc 与默认源之前
update.intervalMs 6 小时 周期检查间隔(最小 30 分钟)
update.github 本包 repository GitHub owner/name;设为 false 关闭该源
update.githubToken 环境变量 GITHUB_TOKEN / GH_TOKEN 访问私有或被限制仓库的 Release 时使用
extensions[].plugin — 要探测的已安装插件名
extensions[].minVersion — 最低版本(含)
extensions[].package — 命中后预取的扩展包名
extensions[].version — 扩展包最低版本(含)

卸载

在插件管理器中禁用/移除本插件,或 dev_uninject_plugin dsh-fable8cents。 插件家目录 ~/.dsh/fable8cents/(更新暂存、扩展包、状态)可手动删除。

目录

lib/index.js      Host 入口:注册路由、身份预设、启动更新
lib/router.js     选路规则(Fable≤8 → Anthropic → DeepSeek → 最新)
lib/adapter.js    Anthropic/Fable 8 适配器与 Cent 映射、错误脱敏
lib/identity.js   两套模型身份预设与提示改写
lib/updater.js    npm/映射源检查、暂存更新、扩展包预取
lib/client.js     免责声明弹窗 + 模型设置页脚说明
locale/…          插件管理器显示用中英文标题/描述
tests/            选路、适配、身份、版本、apply 集成测试

测试

node --test tests/*.test.mjs

覆盖:四级选路优先级、Cent → 最高档映射、错误脱敏、两套身份预设、身份句改写、版本比较、apply 集成。

验证记录

  • 真实 dsh-llm + 真实 Cordis:注册 anthropic / claude-fable-8,目录、Cent 档位、cent → 最高档 转发均通过。
  • 运行中的宿主(同代码临时包):providers 出现 anthropic,resolveModelInfo 返回 Claude Fable 8、1M 上下文、cent/off/low/high/max;真实发起 cent 请求成功流式返回。
  • 全新 DSH 进程(独立 DSH_HOME + 正式包名 + patch insert):catalog = [{provider:"anthropic", id:"claude-fable-8", name:"Claude Fable 8"}]。
  • 真实网络:更新检查解析 npm 源与 ~/.npmrc 映射源;未发布时把 404 记为 update.error 而不抛出;扩展扫描命中已装插件 [email protected] 并下载扩展包到 ~/.dsh/fable8cents/extensions/。

开发提示:模块缓存与热加载

Host 插件由 Cordis loader 以包名解析入口。Node 的 ESM 缓存以文件 URL 为键,因此 「同名包 + 同入口文件」在同一个宿主进程里只会加载第一次的代码——即使改了 lib/index.js。

开发期有两种做法:

  • 直接重启宿主(最干净);
  • 或者让 patch 的 entry 指向 lib/entry.js(一个稳定的 file:// 薄壳,只 re-export lib/index.js), 并在需要时改 entry 的 id 触发 loader 重建。因为薄壳的 URL 固定、真正逻辑仍在 index.js, 重启后新进程会自然加载最新的 index.js,不需要再维护任何 .v4.js 副本。

本项目为个人二创的娱乐性插件,与 DeepSeek、Anthropic 均无隶属或合作关系。 「Anthropic」「Claude」「DeepSeek」等名称与商标归各自权利人所有。 使用者应自行确认所用模型服务的条款与计费,并对使用后果负责。