feat: ClassIsland / ClassHelper 灵动岛提示词套件

- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构)
- ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本)
- 投喂指南、分卷、逐节文件
- 调研记录、一致性基线、生成与质检脚本
This commit is contained in:
ClassIsland Prompt Kit committed 2026-11-12 21:59:58 +08:00
commit 22c1784bab
117 files changed
+47759

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env node
/** 对 parts/*.md 做机械质检:长度、标题、证据密度、占位符、编号一致性、关键数值出现情况 */
import { readdirSync, readFileSync } from 'node:fs';
import { join, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
const root = join(dirname(fileURLToPath(import.meta.url)), '..');
const dir = join(root, 'parts');
const files = readdirSync(dir).filter((f) => /^\d{2}-.+\.md$/.test(f)).sort();
const placeholders = [/TODO/i, /待补充/, /待完善/, /占位/, /省略/, /\.\.\.\.\.\./, /示例文本/];
const rows = [];
for (const f of files) {
const text = readFileSync(join(dir, f), 'utf8');
const noWs = text.replace(/\s/g, '');
const num = f.slice(0, 2);
const h2 = [...text.matchAll(/^## (.+)$/gm)].map((m) => m[1]);
const evidence = (text.match(/repos\/(ClassIsland|ClassHelper-master)\/[^\s`::,,))]+/g) || []).length;
const inferred = (text.match(/【推断】/g) || []).length;
const ph = placeholders.filter((r) => r.test(text)).map((r) => r.source);
const firstHeadingOk = h2.length > 0 && new RegExp(`^${Number(num)}\\.`).test(h2[0]);
rows.push({ f, chars: [...noWs].length, lines: text.split('\n').length, h2: h2.length, evidence, inferred, ph, firstHeadingOk, firstH2: h2[0] || '' });
}
console.log('file'.padEnd(26), 'chars'.padStart(7), 'lines'.padStart(6), 'h2'.padStart(3), 'evid'.padStart(5), 'infer'.padStart(5), 'numOK', 'placeholders');
for (const r of rows) {
console.log(
r.f.padEnd(26),
String(r.chars).padStart(7),
String(r.lines).padStart(6),
String(r.h2).padStart(3),
String(r.evidence).padStart(5),
String(r.inferred).padStart(5),
String(r.firstHeadingOk).padStart(5),
r.ph.join('|') || '-',
);
}
const total = rows.reduce((a, r) => a + r.chars, 0);
console.log(`\n合计 ${rows.length} 个 part,去空白字符 ${total}`);
const missing = [];
for (let i = 0; i <= 19; i++) {
const n = String(i).padStart(2, '0');
if (!files.some((f) => f.startsWith(n + '-'))) missing.push(n);
}
console.log('缺失 part:', missing.join(',') || '无');