DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

BroWhitebyte /

BroWhitebyte/dsh-plugin-baiguangda-style

Verified

白广大风格写作插件:机核编辑的中文文风与结构判据,装进 DeepSeek Harness(4 A + 27 B 条机检,阈值按 444 篇语料标定)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@2dc116d7

dsh-plugin-baiguangda-style

白广大风格写作插件(v2.5.0)。把机核网资深编辑白广大的中文写作风格——文风与写作逻辑——装进 DeepSeek Harness: 技能正文教模型怎么写,三个工具管写完怎么验,设置里还有一页:一个总开关管技能的挂与摘,三个配置项,外加贴一段稿子当场跑分数。资源随包携带,装到任何 profile 都能独立工作。

v2.3.0:阈值按 444 篇全量语料重标定

把该账号全部文章(444 篇 / 80.2 万字)抓下来重算分布之后,机检改了五处:

项 旧 新 依据
短句占比 下限 2%、上限 10% 下限 1%、上限 15% 池化 6.0%,但逐篇中位 0%——一半文章一句 ≤10 字短句都没有,4.4% 是均值,照它写会变成每段撒钉子
段首连接词 > 5% > 18% 按段落统计:中位 3.7%、p90 21.4%;旧值 3.1% 是句子口径
破折号 <1 也告警 只报 >4 中位 1.03,半数文章不到 1 处
强判断 > 0.4/千字 > 1.0/千字 实测 p90 = 0.88
数字密度 年份 < 3 年份 < 1 短文常无年份,误报

另新增两条检测:

  • B22 AI 口头禅:说实话/说白了/说到底/值得一提的是/综上所述…全量语料合计 31 次 / 80 万字,密度约 0.04/千字;
  • B23 导读腔:先把结论/先说结论/后面我会/总结一下,语料 0 处;
  • B24 孤证数字:百分比/万亿级金额/次数 ≥3 处且句内无来源,提示补出处(全量语料误报率 4/60)。

还有一个细节:引号里的词不再计入检测。写文章讨论「先说」「说实话」这类词时,它们是被引用的对象,不该按作者口癖扣分——机检先剥掉 「」、“”、"" 里的内容再扫。

v2.5.0:去 AI 痕迹判据全表(4 A + 27 B)

机检由 skill/scripts/style_lint.js 实现,阈值读 skill/scripts/thresholds.json。

A 级(出现即回炉):A1 ASCII 直引号混排 | A2 元叙述(先说/再说)| A3「不是…而是…」| A4 黑名单(综上所述/值得注意的是/随着…的发展)。

B 级 27 条,按四层分:

层 判据
词法 B1 签名超量 · B2 括号吐槽 · B5 数字密度不足 · B21 强度形容与自述框架 · B22 口头禅(说实话/说白了/说到底)· B25 冗余量词(一个/一种过密、「一个重要的变化」空壳)
句法 B3 句长落差与短句区间 · B6 破折号/括号密度 · B9 段首价值升华 · B11 段首连接词 · B16 自我限定腔 · B20 句号密度与逗号比 · B26 段落节奏(段长 p90/p10 < 4)· B27 连接词单一(单一词占 ≥70%)
修辞 B8 强判断金句 · B12 强对比 · B14 加粗金句 · B15 否定对举 · B18 辩证对冲与名词化强调 · B19 假设立论/正反重述/方法声明链
结构 B4 无引用出处 · B7 段落长度均匀 · B10 小标题同义展开 · B13 对象漂移 · B17 句子功能层(标签句/元衔接/评价性短句/操作引导)· B23 导读腔 · B24 孤证数字

引号里的词不计入(「」、“”、"" 先剥掉再扫),避免"讨论『先说』这个词"被当成作者口癖。

配套命令

命令 作用
npm test 冒烟 24 项:机检解析、审计判据、路由、开关、合写切分、访谈识别
npm run bench 回归基准:7 个固定样本,容差 ±3 分、A 级须一致
npm run corpus -- --stats <目录> 按语料重算分布,写 skill/corpus/baseline.json;加 --apply 按 p90 重写阈值
npm run corpus -- --crawl <目录> 抓取该账号全部署名稿(约 5 次请求)

设置页另有两块:批量试跑(最多 20 篇,出均分与区间)与阈值表(当前生效值 + 标定日期)。

为什么是「技能 + 工具」两层

市场上写作类插件分两派:一派只塞提示词(换个说法,模型还是原来那个模型),一派只做 lint(挑毛病,但不知道好文章长什么样)。 这个插件两头接上:

层 载体 解决的问题
怎么写 skill/SKILL.md(40KB,12 章) 标题公式、开头套路、节奏、语域三档、引用习惯、结尾、体裁变体、写作纪律 9.1—9.11
写完怎么验 style_lint 工具 A 级硬错误 / B 级阈值警告 / C 级体检 / 预估得分(≥85 可发布)
逻辑站不站得住 style_audit 工具 立论是否前置、段末是否落在物证上、核心对象是否回访、小标题是否序数外露
阈值出处 style_rules 工具 按关键词回查工具层 / 负样本库 / 完整版节选,返回 文件:行号
手上没文件时 设置页「白广大风格」 贴一段文字直接跑机检 / 结构审计,改配置也不用碰 YAML

机检只覆盖词法与阈值;8 项人工判据(可交换性测试、判断的证据成本、零容忍清单……)仍要人过。插件不假装能替你判断。

安装

# 1) 装进 profile
dsh plugin --profile web add "C:\path\to\dsh-plugin-baiguangda-style"

# 2) 重启 dsh web(bundle 层在启动时组合,热改不生效)
# 3) 验证:会话里应出现 baiguangda-writing-style 技能 + 3 个工具;
#    「设置 → 白广大风格」出现一页(状态 + 配置 + 试跑)

不装 profile 也能单独跑:

node test/smoke.mjs     # 22 项断言:机检解析、审计判据、条文检索、权限声明、设置页路由、总开关、插件装配
npm run sync            # 从工作区 skill 目录重新同步 skill/ 快照
node scripts/sync-skill.mjs "D:/path/to/skill"   # 指定源

配置:设置页或 cordis.patch.yml

三个键在「设置 → 白广大风格」里直接改,也可以写在 cordis.patch.yml 的 config 里(两种写法等价;设置页写的是 profile 的插件配置层):

键 默认 说明
enabled true 总开关。关掉后不注册技能、不挂三个工具,设置页仍保留——在那页点一下就能再打开,不用重启
skillName baiguangda-writing-style 注册进技能目录的名字
registerSkill auto auto 时若工作区/用户目录已有同名文件系统 skill 则跳过运行时注册;always 强制注册;never 只提供工具(旧的 true / false 仍然认)
maxLintIssues 12 style_lint 与设置页最多回显多少条 B 级警告(A 级全给),范围 0—50

为什么要 auto:DSH 技能注册是「同一层内项目条目优先于运行时条目」。文件系统里已有 .dsh/skills/baiguangda-writing-style 时,运行时注册的副本会被遮蔽—— 白注册一份,技能目录里还多出一行重复项。auto 会探测到这种情况并只提供工具,同时在日志里说明原因。

设置页(/api/baiguangda-style + client.js)

装好重启后,设置里多一项「白广大风格」。它做三件事,全程不用开终端:

区块 内容
总开关 第一行就是开关:关掉当场摘下技能与三个工具(工具从模型可选列表里消失),设置页留着;再打开当场挂回。改的是 profile 配置层,重启后保持
状态 版本、技能是插件注册还是让位给文件系统同名项(连路径一起给出)、资源目录、校验脚本路径、权限自述
配置 技能名 / 同名时谁先说 / 最多列几条 B 级警告;点「保存」写进 profile 配置层,改技能名与让位策略会就地重注册,不必重启(总开关关着时这几项置灰)
试跑 贴一段中文稿,点「跑机检」出分数 + A/B 明细,点「跑结构审计」出节表与待看清单

总开关为什么单独说:关掉不是「把配置改成不注册」,而是当场调 disposer 把技能和工具摘下来——ctx.skills.register() 与 ctx.tools.register() 都返回精确的卸载函数,sync() 统一管挂与摘,所以开关不需要重启就生效,也不会在模型侧留下一个调不通的工具名。

实现上有两条约束,改代码时别踩:

  1. 设置表单靠 schemastery Config + volatile 字段。dsh-settings 只允许 .extra('volatile', true) 的字段经 settings.update() 写入;loader entry 的 id(cordis.patch.yml 里是 baiguangda-style)必须等于命名空间名,模块还要导出 Config。schemastery 拿不到时 Config 是 undefined,插件照常工作,只是设置页降级。
  2. client bundle 不是 ESM,是自注册脚本:window.__ModuleLoader__.load({ id: '<包名>', factory }),页面靠 ctx.get('slots') 往 settings.section 槽位注册。package.json 要有 dsh.client(platform: web)和 exports['./client'],否则 web 端不会加载它。

试跑要把文字落成临时文件才能喂给 style_lint.js——写入范围只限 os.tmpdir() 下带 baiguangda-style- 前缀的临时目录,跑完立即删除。这条边界写在 dsh.permissions.fs.write,test/smoke.mjs 会核对「只有 src/preview.js 动写盘」。

三个工具

style_lint(path, maxLintIssues?)   # 机检:A/B/C 分级 + 得分 + 命中行号
style_audit(path)                  # 结构审计:节表 + 待看清单(≤12 条)
style_rules(topic, limit?)         # 条文检索:关键词 → 段落 + 文件:行号

style_audit 的判定口径全部写在输出里,且分体裁:

  • 论证体:查立论后置(首个判断句落在第 4 段之后)、段末未收束(结尾停在陈述且无数字/年份)、核心对象缺席、序数小标题、大节无判断句。
  • 口述/访谈体(检出 ≥8 处 **说话人:** 标记):立论前置、段末收束、判断句密度三项不适用,自动跳过——访谈稿按论证体挑毛病只会挑出噪音。
  • 年表小节(标题是 1995 这类纯年份):不参与论证判定。

权限声明(dsh.permissions)

DSH 目前不在运行时强制插件权限:插件以宿主用户身份在进程内跑,dsh.permissions 是一份自述——给安装者、审计者、市场审核看的,不是沙箱。 所以少写一条不会让插件跑不动,只会让读的人被骗。本包的做法是把声明钉进测试:node test/smoke.mjs 里有 5 条断言在比对「声明 vs 真实代码」,声明漂移就红。

声明键 值 含义
fs.read skill/**、src/**、index.js、ARG:path 只读包内资源与被检稿件
fs.write $TMP/baiguangda-style-*/** 只写系统临时目录:设置页试跑那一份稿子,跑完即删;包内资源与 profile 一律不写
process.spawn 1 条:node skill/scripts/style_lint.js <ARG:path>,shell: false 唯一子进程是本包自带的 CJS 校验脚本,不经 shell
http.routes /api/baiguangda-style 设置页的 status / config / lint / audit 四条接口:同源、不鉴权,只读写本插件自己的配置
net [] 不联网
env.read DSH_HOME、USERPROFILE、HOME 仅用于定位技能目录做同名探测
secrets [] 不读任何 token / 凭证
registers.tools style_lint、style_audit、style_rules 向 ctx.tools 注册的工具
registers.skills baiguangda-writing-style 向 ctx.skills 注册的技能(auto 模式下可能让位给同名文件系统 skill)
registers.settings baiguangda-style 设置页的命名空间(ctx.settings 里的一条 entry)

ARG:path 指调用方传入的路径,插件不对它做目录限制——要检哪个文件就传哪个,读的只是那一个文件。

目录

index.js                  插件入口(Config 表单 + 技能 + 3 工具 + /api 路由)
client.js                 设置页(自注册脚本,settings.section 槽位)
cordis.patch.yml          bundle 组合层:id baiguangda-style
src/resources.js          资源路径解析、frontmatter 剥离、同名 skill 探测
src/lint.js               调 style_lint.js + 解析文本报告
src/audit.js              结构性/论证性判据(词表 + 位置近似)
src/rules.js              四份文档的关键词检索
src/config.js             配置归一(auto/always/never、B 级条数钳位)
src/preview.js            试跑:文字 → 临时文件 → 机检 / 审计(跑完即删)
skill/                    技能正文 + 工具层 + 负样本库 + 完整版节选 + corpus + style_lint.js
scripts/sync-skill.mjs    从工作区 skill 同步快照(单一真源在 .dsh/skills)
test/smoke.mjs            12 项冒烟断言

skill/scripts/package.json 声明 {"type":"commonjs"}:style_lint.js 是 CJS 脚本,而包本身是 ESM,靠这行就近生效。

已知边界

  • 机检阈值来自 444 篇语料基线,天生偏向书面考据/评测;口播稿请按 SKILL.md 第十一节语域三档放宽。
  • style_audit 是词表 + 段落位置判定,不做语义理解:命中只作「回去看一眼」的提示,不构成结论。
  • 插件不联网、不写外部状态,只读稿件与包内资源。
—/ 5

No ratings yet

Verified DSH bundle

Commit 2dc116d76740

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout