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

语言模组工坊 HCY7757/dsh-lexiforge

DeepSeek Harness
HCY775753 天前有提交已提供中文文档扫描:含敏感能力

装语言包改写回复风格,多包叠加随装随用

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

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

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add HCY7757/dsh-lexiforge
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/09/29·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 53 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(dependency_conflict · 2026/9/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-lexiforge(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 00:30:35

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 74 处,展示前 74 条)
  • 发起网络请求
    dist/client/index.js:32
    const response = await fetch("/lexiforge/api", { method: "POST", headers: { "Content-Type": "application/json", "X-LexiForge": "1" }, body: JSON.strin
  • 读取本地文件
    dist/cli.js:52
    const text = await readFile(resolve(input), 'utf8');
  • 删除本地文件
    dist/cli.js:56
    await rm(file, { force: true });
  • 读取密钥环境变量
    dist/cli.js:69
    const market = new MarketService(join(root, '.cache'), process.env.GITHUB_TOKEN);
  • 删除本地文件
    dist/cli.js:100
    await rm(file, { force: true });
  • 写入本地文件
    dist/services/package-manager.js:42
    await mkdir(this.root, { recursive: true });
  • 读取本地文件
    dist/services/package-manager.js:44
    const value = JSON.parse(await readFile(join(this.root, 'state.json'), 'utf8'));
  • 读取本地文件
    dist/services/package-manager.js:69
    const stat = await lstat(root);
  • 写入本地文件
    dist/services/package-manager.js:101
    await writeFile(tmp, JSON.stringify(this.state, null, 2), { flag: 'wx' });
  • 写入本地文件
    dist/services/package-manager.js:102
    await rename(tmp, join(this.root, 'state.json'));
  • 删除本地文件
    dist/services/package-manager.js:105
    await rm(tmp, { force: true });
  • 写入本地文件
    dist/services/package-manager.js:109
    await mkdir(this.root, { recursive: true });
  • 写入本地文件
    dist/services/package-manager.js:111
    await mkdir(lock);
  • 删除本地文件递归
    dist/services/package-manager.js:117
    await rm(lock, { recursive: true, force: true });
  • 读取本地文件
    dist/services/package-manager.js:132
    const entries = await readdir(staging);
  • 写入本地文件
    dist/services/package-manager.js:145
    await rename(staging, target);
  • 删除本地文件递归
    dist/services/package-manager.js:152
    await rm(staging, { recursive: true, force: true });
  • 删除本地文件递归
    dist/services/package-manager.js:154
    await rm(target, { recursive: true, force: true });
  • 删除本地文件递归
    dist/services/package-manager.js:181
    await rm(resolve(this.root, id), { recursive: true, force: true });
  • 删除本地文件
    dist/web.js:75
    await rm(file, { force: true });
  • 写入本地文件
    dist/debug.js:11
    appendFileSync(target, `${new Date().toISOString()} [${where}] ${body}\n`);
  • 发起网络请求
    dist/services/market.js:15
    return fetch(url, { signal: AbortSignal.timeout(30000), redirect: 'error' });
  • 请求外部主机api.github.com
    dist/services/market.js:28
    const r = await fetch(`https://api.github.com${path}`, { headers, signal: AbortSignal.timeout(20000), redirect: 'error' });
  • 发起网络请求
    dist/services/market.js:28
    const r = await fetch(`https://api.github.com${path}`, { headers, signal: AbortSignal.timeout(20000), redirect: 'error' });
  • 写入本地文件
    dist/services/market.js:40
    await mkdir(this.cacheDir, { recursive: true });
  • 读取本地文件
    dist/services/market.js:43
    const cache = JSON.parse(await readFile(file, 'utf8'));
  • 写入本地文件
    dist/services/market.js:51
    await writeFile(file, JSON.stringify({ at: Date.now(), items }));
  • 写入本地文件
    dist/services/market.js:95
    await mkdir(this.cacheDir, { recursive: true });
  • 写入本地文件
    dist/services/market.js:98
    await writeFile(out, Buffer.concat(chunks), { flag: 'wx' });
  • 删除本地文件
    dist/services/market.js:102
    await rm(out, { force: true });
  • 读取本地文件
    dist/services/manifest.js:14
    const stat = await lstat(path);
  • 读取本地文件
    dist/services/manifest.js:21
    const source = await readFile(path, 'utf8');
  • 读取本地文件
    dist/services/manifest.js:70
    const source = await readFile(path, 'utf8');
  • 写入本地文件
    dist/utils/unpacker.js:21
    await mkdir(target, { recursive: false });
  • 写入本地文件
    dist/utils/unpacker.js:57
    await mkdir(file, { recursive: true });
  • 写入本地文件
    dist/utils/unpacker.js:61
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    dist/utils/unpacker.js:67
    await pipeline(input, limiter, createWriteStream(file, { flags: 'wx' }));
  • 删除本地文件递归
    dist/utils/unpacker.js:78
    await rm(target, { recursive: true, force: true });
  • 读取本地文件
    src/cli.ts:31
    const text = await readFile(resolve(input), 'utf8');
  • 删除本地文件
    src/cli.ts:33
    } catch (error) { await rm(file, { force: true }); throw error; }
  • 读取密钥环境变量
    src/cli.ts:41
    const market = new MarketService(join(root, '.cache'), process.env.GITHUB_TOKEN);
  • 删除本地文件
    src/cli.ts:63
    finally { await rm(file, { force: true }); }
  • 写入本地文件
    src/debug.ts:13
    appendFileSync(target, `${new Date().toISOString()} [${where}] ${body}\n`);
  • 读取本地文件
    src/services/manifest.ts:14
    const stat = await lstat(path);
  • 读取本地文件
    src/services/manifest.ts:20
    const source = await readFile(path, 'utf8');
  • 读取本地文件
    src/services/manifest.ts:50
    const source = await readFile(path, 'utf8');
  • 发起网络请求
    src/services/market.ts:19
    return fetch(url, { signal: AbortSignal.timeout(30000), redirect: 'error' });
  • 请求外部主机api.github.com
    src/services/market.ts:27
    const r = await fetch(`https://api.github.com${path}`, { headers, signal: AbortSignal.timeout(20000), redirect: 'error' });
  • 发起网络请求
    src/services/market.ts:27
    const r = await fetch(`https://api.github.com${path}`, { headers, signal: AbortSignal.timeout(20000), redirect: 'error' });
  • 写入本地文件
    src/services/market.ts:37
    await mkdir(this.cacheDir, { recursive: true });
  • 读取本地文件
    src/services/market.ts:40
    const cache = JSON.parse(await readFile(file, 'utf8')) as { at: number; items: MarketPack[] };
  • 写入本地文件
    src/services/market.ts:46
    await writeFile(file, JSON.stringify({ at: Date.now(), items }));
  • 写入本地文件
    src/services/market.ts:84
    await mkdir(this.cacheDir, { recursive: true });
  • 写入本地文件
    src/services/market.ts:86
    try { await writeFile(out, Buffer.concat(chunks), { flag: 'wx' }); return out; }
  • 删除本地文件
    src/services/market.ts:87
    catch (error) { await rm(out, { force: true }); throw error; }
  • 写入本地文件
    src/services/package-manager.ts:36
    await mkdir(this.root, { recursive: true });
  • 读取本地文件
    src/services/package-manager.ts:38
    const value = JSON.parse(await readFile(join(this.root, 'state.json'), 'utf8')) as PackState;
  • 读取本地文件
    src/services/package-manager.ts:51
    const stat = await lstat(root);
  • 写入本地文件
    src/services/package-manager.ts:79
    try { await writeFile(tmp, JSON.stringify(this.state, null, 2), { flag: 'wx' }); await rename(tmp, join(this.root, 'state.json')); }
  • 写入本地文件
    src/services/package-manager.ts:79
    try { await writeFile(tmp, JSON.stringify(this.state, null, 2), { flag: 'wx' }); await rename(tmp, join(this.root, 'state.json')); }
  • 删除本地文件
    src/services/package-manager.ts:80
    finally { await rm(tmp, { force: true }); }
  • 写入本地文件
    src/services/package-manager.ts:83
    await mkdir(this.root, { recursive: true });
  • 写入本地文件
    src/services/package-manager.ts:85
    await mkdir(lock);
  • 删除本地文件递归
    src/services/package-manager.ts:87
    finally { await rm(lock, { recursive: true, force: true }); }
  • 读取本地文件
    src/services/package-manager.ts:99
    const entries = await readdir(staging);
  • 写入本地文件
    src/services/package-manager.ts:107
    await rename(staging, target); moved = true;
  • 删除本地文件递归
    src/services/package-manager.ts:110
    } finally { await rm(staging, { recursive: true, force: true }); if (moved) await rm(target, { recursive: true, force: true }); }
  • 删除本地文件递归
    src/services/package-manager.ts:130
    await rm(resolve(this.root, id), { recursive: true, force: true });
  • 写入本地文件
    src/utils/unpacker.ts:20
    await mkdir(target, { recursive: false });
  • 写入本地文件
    src/utils/unpacker.ts:42
    if (entry.fileName.endsWith('/')) await mkdir(file, { recursive: true });
  • 写入本地文件
    src/utils/unpacker.ts:45
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    src/utils/unpacker.ts:51
    await pipeline(input, limiter, createWriteStream(file, { flags: 'wx' }));
  • 删除本地文件递归
    src/utils/unpacker.ts:59
    } catch (error) { await rm(target, { recursive: true, force: true }); throw error; }
  • 删除本地文件
    src/web.ts:52
    finally { await rm(file, { force: true }); }
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.github.com

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 安装语言包改写风格
  • 多包叠加
  • 市场一键装包
展开完整介绍(136 字)↓

装个语言包,AI 就换种说话方式:文言文、中二病、火星文、术语替换、输出纠错,多包可叠加,市场一键装包。当“酒馆”玩也行——口吻按每条回复硬加工,不会忘、不用提醒、不用另装软件。LangPack framework plugin for DeepSeek Harness.

README

由 DeepSeek 最新模型翻译生成
dsh-LexiForge · DSH 语言模组框架 LexiForge — 一个面向 DeepSeek Harness(DSH)的可插拔语言模组(LangPack)框架。它拦截模型的回复流,并通过可安装的、基于 ZIP 的语言包对其重新处理:风格改写、术语感知检索、本地规则后处理,或三者组合而成的流水线。面向 DeepSeek Harness 的社区语言模组插件:配置驱动、安全优先、按需计算、零运维。 ✨ 特性一览 / Features | 🧩 语言包即配置 | ZIP 承载、零可执行代码、格式白名单(.yaml/.yml/.json/.db/.txt),Zip Slip / 炸弹防护 | | A/B/C 三模式引擎 | A LLM 整段改写(独立请求,不占主上下文)· B SQLite FTS5 术语库检索增强 · C 纯本地规则替换(零 token) | | 🧬 复合模式 | 单包内 pipeline: [B, A, C] 编排:检索注入 → 一次改写 → 规则收尾,全程只一次 LLM 请求 | | 🔗 链式多包 | 多个包按优先级依次加工同一回复(如 校对 → 文言 → 口头禅收尾) |
展开完整文档(README 剩余 1 节)
dsh-LexiForge · DSH 语言模组框架

LexiForge — 一个面向 DeepSeek Harness(DSH)的可插拔语言模组(LangPack)框架。它拦截模型的回复流,并通过可安装的、基于 ZIP 的语言包对其重新处理:风格改写、术语感知检索、本地规则后处理,或三者组合而成的流水线。面向 DeepSeek Harness 的社区语言模组插件:配置驱动、安全优先、按需计算、零运维。

✨ 特性一览 / Features

| 🧩 语言包即配置 | ZIP 承载、零可执行代码、格式白名单(.yaml/.yml/.json/.db/.txt),Zip Slip / 炸弹防护 |
| A/B/C 三模式引擎 | A LLM 整段改写(独立请求,不占主上下文)· B SQLite FTS5 术语库检索增强 · C 纯本地规则替换(零 token) |
| 🧬 复合模式 | 单包内 pipeline: [B, A, C] 编排:检索注入 → 一次改写 → 规则收尾,全程只一次 LLM 请求 |
| 🔗 链式多包 | 多个包按优先级依次加工同一回复(如 校对 → 文言 → 口头禅收尾) |
| 🛡️ 安全 | 解压校验(穿越/重复/链接/加密/条目/大小)、manifest/dict/knowledge 结构校验、worker 线程隔离查询、超时回退原文、独立请求防递归 |
| 🎨 原生 UI | 融入 DSH 设置页(settings.section):启停、拖拽排序、GitHub 市场、手动安装、超时(0.1–600s)、调试日志开关(相对路径) |
| 🌐 市场分发 | 纯 GitHub 驱动:topic:dsh-langpack 搜索;单包仓库(根 langpack.zip)与 多合一仓库(langpacks.json 索引,逐包识别安装)双支持 |
| 🧪 可观测 | 可选运行日志(开关在设置页),记录拦截/跳过原因与每段改写结果 |

📦 演示语言包 / Demo packs

examples/ 下五个官方示例(源码 + zip),并单独发布多合一示例仓库:

| 包 | 模式 | 效果 |
| demo-a-wenyan | A | 白话 → 文言文风格 |
| demo-b-gufeng | B | 古风称谓术语(RAG) |
| demo-b-huoxing | composite B→A→C | 重度火星文(字形检索 + 六技法改写 + 混排保险层) |
| demo-a-rikka | A | 中二病·小鸟游六花 语气模仿 |
| demo-a-proofread | A | 输出复查·纠错(无错逐字原样) |

多合一语言包发布示例:dsh-langpack-demo —— 一个仓库包含 4 个可分别安装的语言包(含 langpacks.json 索引)。

🚀 安装 / Install

前置条件
- DeepSeek Harness(web profile)已就绪
- Node.js ≥ 22(构建用)、pnpm

加载插件(本地开发)
1. 把插件加入 web profile(~/.dsh/profiles/web/package.json) "dsh-lexiforge": "file:F:/dev/dsh-LexiForge" ← 替换为你的本地路径并在 dsh.profile.bundles 增加 "dsh-lexiforge"

2. 安装依赖并构建
pnpm install
pnpm build # tsc + esbuild 客户端打包(scripts/build-client.mjs)

3. 在 profile 的 cordis.patch.yml 注入配置(entry id 必须为 dsh-LexiForge)
- id: dsh-LexiForge
config:
packagesDir: F:/dev/lexiforge-demo # 数据目录(D/F 盘,绝对路径) enabled: true debugLog: debug.log # 可选:日志位置(相对 packagesDir)

4. 重启 dsh web → 设置页出现「语言模组」

插件包须同时声明 dsh.bundle.patch(cordis.patch.yml,insert 挂载)与 dsh.client(浏览器端 UI);exports 必须包含 "./package.json",客户端 bundle 需按 __ModuleLoader__.load 的 CJS 工厂契约构建(见 scripts/build-client.mjs)。修改源码后需删除 profile node_modules 中的拷贝再 pnpm install,host 代码改动需重启 dsh。

CLI(语言包管理)构建后生成可执行入口
pnpm build
node dist/cli.js --help

lexiforge disclaimer # 阅读第三方免责声明 lexiforge install 包.zip 包ID --accept-risk # 本地 zip 安装 lexiforge market-install owner/repo 包ID --accept-risk # 从 GitHub 安装(合集仓需包ID) lexiforge search 关键词 # 搜索 topic:dsh-langpack lexiforge enable 包ID | disable 包ID | on | off | order ID... lexiforge uninstall 包ID lexiforge knowledge 词条.csv 输出.db # 生成 B 模式知识库(FTS5 trigram)

📖 语言包规范 / LangPack spec

ZIP 内仅允许四类文件(根目录平铺):manifest.yaml(必填)、dict.json、knowledge.db、说明.txt。

manifest.yaml
name: 我的语言包 # 必填 version: 1.0.0 # 必填(semver) author: 某人 # 必填 mode: composite # A | B | C | composite
pipeline: [B, A, C] # composite 必填:至少含 A 或 C;B 的检索结果注入其后的 A
prompt_template: | # 含 A 时必填;{{text}}=原文,{{knowledge}}=B 检索结果 ... dict_path: dict.json # 含 C 时必填:replacements 字面量替换 + rules 正则 knowledge_db: knowledge.db # 含 B 时必填:由 lexiforge knowledge 生成

- A:一次独立 LLM 请求整段改写(不带历史/工具,防递归)
- B:先用回复文本检索 knowledge.db(FTS5 trigram),Top-N 注入 A 的 prompt
- C:worker 线程执行字典与正则,零 token;可作“保险层”强制收尾
- 多包可链式叠加;顺序在 UI 拖拽或 CLI order 调整;每个包可设置全局处理超时(默认 0.5s,UI 可调 0.1–600s,超时自动回退原文)

详细示例与多合一发布模板见 dsh-langpack-demo。

🔒 安全设计 / Security

- 解压:扩展名白名单、路径穿越/重复/链接/加密拒绝、64MB & 1024 条目上限、实际字节复核
- 校验:manifest 字段白名单 + semver;dict 规模/正则合法性;knowledge.db 只读打开(trusted_schema OFF),查询运行于可终止的 worker
- 流处理:完整缓冲、超时回退原文、改写请求剥离 session/历史/tools、independentRequests 防递归
- 安装门:首次使用强制《第三方免责声明》闸门;接受记录仅存本机 state.json
- 边界:所有防护为“格式层”,不构成内容安全担保;第三方包可能包含恶意提示词/词条,请按免责声明自查

🧑💻 开发 / Development

pnpm install
pnpm build # tsc + client bundle (esbuild)
pnpm test # node --test(11 项:安装/恶意包/检索/复合/免责声明/流拦截…)

目录结构:src/services(package-manager / processor / knowledge / market / stream-interceptor / manifest)、src/utils/unpacker.ts(安全解压)、src/client(设置页 UI)、src/disclaimer.ts(免责声明权威文本)、scripts/build-client.mjs(客户端 bundle 契约构建)、tests。

⚖️ 免责 / Disclaimer

本插件只提供语言包的发现、下载与安装能力。语言包由第三方作者制作,插件作者不承担内容审核、质量保证与法律责任。请阅读插件内《第三方语言包免责声明》后自行评估风险。演示包均为学习示例,不构成任何担保。

📄 License

MIT — 详见 LICENSE。
预览分享卡片长什么样 ↓HCY7757/dsh-lexiforge
分享 · DeepSeek Harness Hub
HCY7757/dsh-lexiforge

装语言包改写回复风格,多包叠加随装随用

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部