峰哥 · 语言蒸馏引擎
FengGe Distillation Engine
把「抽象教父」@峰哥亡命天涯 的 1,921 条微博(跨 18 个月),蒸馏成一口能自己生成「峰哥味」的引擎。
这不是复读,是蒸馏
像生物学科一样,把 1,921 条公开博文(2025-02 ~ 2026-08)+ 4,163 条 ≥30 赞高赞热评,蒸馏成一整套可直接用的峰哥语体规矩。输出不是照搬他的句子,而是把它的「世界观内核」提出来——你是模仿他,不是质疑他。
纵向也蒸馏了:他 2025-11-14 被全平台封禁、2026-05-21 解封,这个数据断档把语料天然劈成两期——两期文风差异大到需要「先选版本」再动笔,见 evolution.md。
铁律: 写峰哥味,只忠实模仿它的世界观,不下自我道德判断。
峰哥体三定律
- 蹭是大事。 有热度就多蹭,把热点翻译成流量 / 钱 / 红包;禁言是平台的事,蹭是峰哥的事。编身份也是蹭,蹭上热搜就是蹭成。
- 被看穿的自夸。 招牌是「评别人 = 夸自己」;明知会被嘲,还是硬把牛吹下去。
- 装颓。 丧是引子,落点是自夸——「我惨但我还是比你强,我累但我还在挣」。
统计口径
主口径:n = 1,921 条公开博文 · 2025-02-04 ~ 2026-08-30(572 天 · 日均 3.4 条)
| 指标 | 值 |
|---|
| 长度 | 中位 47 字 · 平均 61 字 · >160 字仅 3 条 |
| 构成 | 纯原创短句为主 · 转发型 90 条(4.7%) · 长文型 258 条(13.4%) |
| 高赞热评 | 785/1,921 条有 ≥30 赞热评,共 4,163 条;1000+ 赞 257 条 |
分期口径(封禁把数据劈成两段,这不是人为划线)
| 指标 | 封禁前 2025-02~11(1,360 条) | 解封后 2026-05~08(561 条) |
|---|
| 中位字数 | 50 | 40 |
| 带图率 | 66.3% | 43.9% |
| 开头「我…」 | 6.9% | 11.1% |
| 开头「峰哥…」 | 7.9% | 4.5% |
| 免责声明率 | 0.1% | 1.6% |
| 中位点赞 | 2207 | 3367 |
话题迁移(半导体 +2.7pt / AI +1.9pt / A股 +1.8pt;直播 −2.0pt)、口头禅兴衰(「为什么」翻倍、免责句成标配)、热评生态(评论区从「吵架现场」变「股友会」)、18 条热点时间轴——见 evolution.md。
最高赞热评几乎不是「骂他」,而是「配合他演 + 顺手拆穿 + 反将一军」。
举报 → +6146「无差别核打击」;卖惨 → +4035「你们演吧」;凡尔赛 → +4615「广告位招租」;投资金句 → +3688「翻译:我不割」。
第二语料源:B站直播切片(2026-09-24 接入)
微博是「他写什么」,B站是「他说什么」——两套语域,别混着用。
| 指标 | 值 |
|---|
| 命中视频 | 237 条(116 个切片号 + 官方号) |
| 有 AI 字幕 | 154 条 → 视频级去重后 53 条独立视频 |
| 去重去噪后净字数 | 460,464(≈ 他微博 1921 条 11.8 万字的 3.9 倍) |
| 弹幕 | 50,884 条 / 45 条切片 |
两处平台差异(写稿前必须知道):
- B站切片里「男女/相亲」占 15.8%(第二大话题,压过钱/股市),而他微博侧该类已断崖退出(61→7)⇒ 同一个人两套选题。
- B站弹幕里科技类仅 0.6%,而微博热评科技词翻七倍 ⇒ 同一个「AI/科技」选题,在微博激起讨论、在B站激不起水花。
三条字幕口径坑(滚动窗口虚增 1.8 倍字数 / 长视频混入他人音轨 / 同一份字幕资产复用)与修法、接口通道状态、口语 vs 微博的标记词对照——见 bilibili.md。
真人八卦口径(2026-09-24 回源核实):沾真人 12.6%,两期持平(12.9%→12.4%),但结构换了——
情感关系类 61→7(−89%),具名公众人物占比 1.6%→3.5%(翻倍);
@提及仅 4.0%、转发仅 4.7%(纯原创单机号)。详见 evolution.md 第八节。
蒸馏管道
scripts/
distill.js # 抓正文 + 统计(weibo mymblog 分页)
distill_comments.js # 逐条抓 ≥30 赞热评(hotflow)
frontmatter.js # 打标 move/topics/hot → frontmatter.md + jsonl
query.js # 按动作/话题/热度/日期筛选
data/
stats.md # 统计口径
sample.jsonl # 抽样(带 move/topics/hot 元数据)
node scripts/query.js --move 自问自答 --limit 5 # →命中 21 条
node scripts/query.js --topic "A股/科技" --hot 1 --limit 5
node scripts/query.js --move 抽奖运营 --comments --limit 5
实跑:--move 自问自答 第一条 = 「网上很多路人说我持仓是假的,是P图,我微微一笑,丝毫不慌。为什么呢?……液冷,磷化铟,HBM。」
今日峰哥味(demo)
node scripts/quote.js
今日峰哥味 · 2026-09-01
收工了,一个人吃碗面,32,没约女粉,跟家人们报备。今天没蹭到大的,但我不慌,日子是填出来的,流量是攒出来的。个人观点,不构成熬夜建议。
— move: 报备体 | topics: 生活 | hot=false
目录结构
fengge-distill/
├── README.md
├── style-engine.md ← 峰哥语体引擎规则(产出的「蒸馏」核心)
├── corpus.md ← 语料参考(签名动作/接招对照/高赞实锤/装颓/案例)
├── evolution.md ← 话术演进(封禁前后两期 · 热评生态 · 热点时间轴 · 真人八卦口径)
├── bilibili.md ← B站直播切片语料(字幕口径三坑 · 口语vs微博 · 弹幕生态)
├── scripts/ ← 蒸馏管道(CommonJS)
├── data/ ← 统计口径 + 抽样
└── package.json ← DSH Bundle 清单(插件入口)
cordis.patch.yml ← Bundle Patch(只新增插件自有条目)
dsh.plugin.json ← 插件元数据(声明贡献的技能)
lib/index.js ← 技能 provider(ESM,注册进 ctx.skills)
skills/fengge-wangming-tianya/
SKILL.md ← 打包进插件的技能本体
references/corpus.md ← 技能相对引用(详例)
references/evolution.md ← 技能相对引用(分期演进)
references/bilibili.md ← 技能相对引用(B站直播语料)
evals/evals.json ← 行为验收用例
test/provider.test.mjs ← 打包契约与 provider 边界测试
scripts/verify-provider.mjs ← 打包契约自检
作为 DSH 插件安装(Bundle)
仓库根同时是一个标准 DSH Bundle:装上之后,fengge-wangming-tianya 这个技能会出现在 DSH 的技能列表里,无需手动往 ~/.dsh/skills/ 里拷文件。
它做什么:把仓库里蒸馏好的峰哥语体规则,通过插件的技能 provider 注册进宿主技能注册表(host-plane),于是每个 agent preset 的作用域链都能拿到这个技能。技能正文按需加载,list() 阶段只读元数据、不读正文。
安装(推荐先用一次性 Profile 验证,别直接写真实 Profile):
export DSH_HOME="$(mktemp -d)" # Windows: $env:DSH_HOME = "$env:TEMP\dsh-test"
dsh plugin --profile fengge-test add /absolute/path/to/fengge-distill
dsh --profile fengge-test --dump-config # 预期看到唯一新条目 dsh-fengge-distill
真实 Profile 安装时不要手动改 Profile 清单,交给官方 CLI:
dsh plugin --profile <profile> add <package-or-git-spec>
dsh plugin --profile <profile> remove <package>
外部依赖:无。插件不联网、不起子进程、不写任何 Profile 或用户目录,也不声明任何运行期依赖。scripts/distill*.js 那两条需要登录态的抓取脚本属于仓库自带的离线蒸馏管道,不在插件运行路径上——插件只读包内 skills/ 下的 Markdown。
权限:只读。唯一的文件访问是读取本包内的 skills/<name>/SKILL.md(路径由 import.meta.url 推导,属于本包装配事实,不读用户配置);无网络、无 Shell、无凭据。
已知风险:
- 技能产出的是风格模仿文本。风格本体是「蹭流量 + 表演式吹牛」,请自行判断使用场景;仓库边界见下方「声明」。
- 技能里的
evals/evals.json 是行为验收用例,不是安全审计;它只描述「写成什么样算对味」。
- 打包进插件的
skills/fengge-wangming-tianya/ 与仓库根 style-engine.md / corpus.md / evolution.md 是同一份内容的两种形态(技能形态 / 源档)。改了一处请同步另一处。
验证状态(分清层级,别把低层证据当高层验收):
| 层级 | 状态 |
|---|
| 打包契约(清单字段、Patch 唯一性、无生命周期脚本、无符号链接) | 已验证:npm run verify |
| provider 行为(发现技能、按需加载正文、对畸形/缺失输入 fail closed) | 已验证:npm test |
上游契约静态审计(官方 build-dsh-plugin 的 audit-plugin.mjs) | 已验证:见下一节 |
| 一次性 Profile 的安装 / 启动 / 卸载 / 回滚 | 未验证:需要真实 DSH 运行时与隔离 Profile 的实测记录 |
| DSH STORE 收录状态 | 未验证:由商城固定 Commit 自动复检决定 |
下一道门:在一次性 Profile 里跑完安装 → 配置合成 → 冷启动 → 技能可见 → 卸载,把每一步的证据记下来;静态审计通过不等于真实 Profile 已安装或已完成运行时验收。
上游契约静态审计
npm test # 打包契约 + provider 边界(本包自带)
npm run verify # 打包契约自检(本包自带)
# 上游只读审计(需另取 build-dsh-plugin 仓库)
node <build-dsh-plugin>/build-dsh-plugin/scripts/audit-plugin.mjs .
读法:Hard blockers 必须为空。分数里的 Runtime evidence 在没有一次性 Profile 证据前恒为 0——那是「证据还没给」,不是「跑不通」,不要靠填分把它糊过去。
静态审计基线(固定来源):
- Commit:
566367a06bb05ef4121499ece3f84ad8e30ed4c9
- 结果:零硬阻断,
status=isolated-acceptance-ready,static 77/80(Tests 12/12、Documentation 8/8;未取满的 3 分是「一次性 Profile 的运行时证据尚未提供」)
- 说明:该 Commit 只是静态契约的审计基线,不代表已完成运行验收;后续提交会使基线前移,需重新审计。
上架契约逐条自查(对应 DSH STORE 固定 Commit 门禁):
声明
- 仅供风格研究,不为假扮任何人。模仿 ≠ 冒充:可以全套演峰哥,但别拿这号对读者喊「我真的没碰景甜」。
- 语料为公开博文的研究性引用,未全量随仓库分发;使用请遵守平台与版权规则。
- 边界:灾难、伤亡类话题照峰哥分寸换正经语气,别拿灾情抖机灵。
License
MIT