@actalk/inkos-core 0.4.9 → 0.5.0-canary.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/architect.d.ts +2 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +77 -5
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/continuity.d.ts +2 -0
- package/dist/agents/continuity.d.ts.map +1 -1
- package/dist/agents/continuity.js +146 -34
- package/dist/agents/continuity.js.map +1 -1
- package/dist/agents/en-prompt-sections.d.ts +8 -0
- package/dist/agents/en-prompt-sections.d.ts.map +1 -0
- package/dist/agents/en-prompt-sections.js +119 -0
- package/dist/agents/en-prompt-sections.js.map +1 -0
- package/dist/agents/fanfic-canon-importer.d.ts +14 -0
- package/dist/agents/fanfic-canon-importer.d.ts.map +1 -0
- package/dist/agents/fanfic-canon-importer.js +99 -0
- package/dist/agents/fanfic-canon-importer.js.map +1 -0
- package/dist/agents/fanfic-dimensions.d.ts +14 -0
- package/dist/agents/fanfic-dimensions.d.ts.map +1 -0
- package/dist/agents/fanfic-dimensions.js +63 -0
- package/dist/agents/fanfic-dimensions.js.map +1 -0
- package/dist/agents/fanfic-prompt-sections.d.ts +5 -0
- package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -0
- package/dist/agents/fanfic-prompt-sections.js +85 -0
- package/dist/agents/fanfic-prompt-sections.js.map +1 -0
- package/dist/agents/post-write-validator.d.ts.map +1 -1
- package/dist/agents/post-write-validator.js +65 -0
- package/dist/agents/post-write-validator.js.map +1 -1
- package/dist/agents/reviser.d.ts.map +1 -1
- package/dist/agents/reviser.js +17 -3
- package/dist/agents/reviser.js.map +1 -1
- package/dist/agents/settler-prompts.d.ts +1 -1
- package/dist/agents/settler-prompts.d.ts.map +1 -1
- package/dist/agents/settler-prompts.js +7 -2
- package/dist/agents/settler-prompts.js.map +1 -1
- package/dist/agents/writer-prompts.d.ts +7 -2
- package/dist/agents/writer-prompts.d.ts.map +1 -1
- package/dist/agents/writer-prompts.js +43 -20
- package/dist/agents/writer-prompts.js.map +1 -1
- package/dist/agents/writer.d.ts +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +49 -5
- package/dist/agents/writer.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/models/book-rules.d.ts +6 -0
- package/dist/models/book-rules.d.ts.map +1 -1
- package/dist/models/book-rules.js +2 -0
- package/dist/models/book-rules.js.map +1 -1
- package/dist/models/book.d.ts +15 -4
- package/dist/models/book.d.ts.map +1 -1
- package/dist/models/book.js +5 -7
- package/dist/models/book.js.map +1 -1
- package/dist/models/genre-profile.d.ts +3 -0
- package/dist/models/genre-profile.d.ts.map +1 -1
- package/dist/models/genre-profile.js +1 -0
- package/dist/models/genre-profile.js.map +1 -1
- package/dist/models/project.d.ts +3 -0
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +1 -0
- package/dist/models/project.js.map +1 -1
- package/dist/pipeline/agent.d.ts.map +1 -1
- package/dist/pipeline/agent.js +41 -0
- package/dist/pipeline/agent.js.map +1 -1
- package/dist/pipeline/runner.d.ts +5 -1
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +72 -6
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/utils/analytics.d.ts +39 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +50 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/config-loader.d.ts +9 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +60 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/genres/cozy.md +43 -0
- package/genres/cultivation.md +42 -0
- package/genres/dungeon-core.md +40 -0
- package/genres/isekai.md +43 -0
- package/genres/litrpg.md +43 -0
- package/genres/progression.md +41 -0
- package/genres/romantasy.md +45 -0
- package/genres/sci-fi.md +42 -0
- package/genres/system-apocalypse.md +40 -0
- package/genres/tower-climber.md +41 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-canon-importer.d.ts","sourceRoot":"","sources":["../../src/agents/fanfic-canon-importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AASD,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,iBAAiB,CAAC;CAmG9B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { BaseAgent } from "./base.js";
|
|
2
|
+
const MODE_LABELS = {
|
|
3
|
+
canon: "原作向(严格遵守原作设定)",
|
|
4
|
+
au: "AU/平行世界(世界规则可改,角色保留)",
|
|
5
|
+
ooc: "OOC(角色性格可偏离原作)",
|
|
6
|
+
cp: "CP(以配对关系为核心)",
|
|
7
|
+
};
|
|
8
|
+
export class FanficCanonImporter extends BaseAgent {
|
|
9
|
+
get name() {
|
|
10
|
+
return "fanfic-canon-importer";
|
|
11
|
+
}
|
|
12
|
+
async importFromText(sourceText, sourceName, fanficMode) {
|
|
13
|
+
// Truncate if too long (>50k chars ≈ ~25k words)
|
|
14
|
+
const maxLen = 50000;
|
|
15
|
+
const truncated = sourceText.length > maxLen;
|
|
16
|
+
const text = truncated ? sourceText.slice(0, maxLen) : sourceText;
|
|
17
|
+
const modeLabel = MODE_LABELS[fanficMode];
|
|
18
|
+
const systemPrompt = `你是一个专业的同人创作素材分析师。你的任务是从用户提供的原作素材中提取结构化正典信息,供同人写作系统使用。
|
|
19
|
+
|
|
20
|
+
同人模式:${modeLabel}
|
|
21
|
+
|
|
22
|
+
你需要从原作素材中提取以下内容,每个部分用 === SECTION: <name> === 分隔:
|
|
23
|
+
|
|
24
|
+
=== SECTION: world_rules ===
|
|
25
|
+
世界规则(地理、物理法则、魔法/力量体系、阵营组织、社会结构)。
|
|
26
|
+
如果原作素材不包含明确的世界规则,从已有信息合理推断。
|
|
27
|
+
|
|
28
|
+
=== SECTION: character_profiles ===
|
|
29
|
+
角色档案表格,每个重要角色一行:
|
|
30
|
+
|
|
31
|
+
| 角色 | 身份 | 性格底色 | 语癖/口头禅 | 说话风格 | 行为模式 | 关键关系 | 信息边界 |
|
|
32
|
+
|------|------|----------|-------------|----------|----------|----------|----------|
|
|
33
|
+
|
|
34
|
+
要求:
|
|
35
|
+
- 语癖/口头禅必须从原文中精确提取,如有的话
|
|
36
|
+
- 说话风格描述该角色的语气、用词偏好、句式特征
|
|
37
|
+
- 行为模式描述该角色在特定情境下的典型反应
|
|
38
|
+
- 信息边界标注该角色知道什么、不知道什么
|
|
39
|
+
- 至少提取 3 个角色,不超过 15 个
|
|
40
|
+
|
|
41
|
+
=== SECTION: key_events ===
|
|
42
|
+
关键事件时间线:
|
|
43
|
+
|
|
44
|
+
| 序号 | 事件 | 涉及角色 | 对同人写作的约束 |
|
|
45
|
+
|------|------|----------|------------------|
|
|
46
|
+
|
|
47
|
+
按时间/出现顺序排列,标注每个事件对同人创作的约束程度。
|
|
48
|
+
|
|
49
|
+
=== SECTION: power_system ===
|
|
50
|
+
力量/能力体系(如果适用)。包括等级划分、核心规则、已知限制。
|
|
51
|
+
如果原作没有明确的力量体系,输出"(原作无明确力量体系)"。
|
|
52
|
+
|
|
53
|
+
提取原则:
|
|
54
|
+
- 忠实于原作素材,不捏造原作中没有的信息
|
|
55
|
+
- 信息不足时标注"(素材未提及)"而非编造
|
|
56
|
+
- 角色语癖是最重要的字段——同人读者最在意角色"像不像"
|
|
57
|
+
${truncated ? "\n注意:原作素材过长,已截断。请基于已有部分提取。" : ""}`;
|
|
58
|
+
const response = await this.chat([
|
|
59
|
+
{ role: "system", content: systemPrompt },
|
|
60
|
+
{ role: "user", content: `以下是原作《${sourceName}》的素材:\n\n${text}` },
|
|
61
|
+
], { maxTokens: 8192, temperature: 0.3 });
|
|
62
|
+
const content = response.content;
|
|
63
|
+
const extract = (tag) => {
|
|
64
|
+
const regex = new RegExp(`=== SECTION: ${tag} ===\\s*([\\s\\S]*?)(?==== SECTION:|$)`);
|
|
65
|
+
const match = content.match(regex);
|
|
66
|
+
return match?.[1]?.trim() ?? "";
|
|
67
|
+
};
|
|
68
|
+
const worldRules = extract("world_rules");
|
|
69
|
+
const characterProfiles = extract("character_profiles");
|
|
70
|
+
const keyEvents = extract("key_events");
|
|
71
|
+
const powerSystem = extract("power_system");
|
|
72
|
+
const meta = [
|
|
73
|
+
"---",
|
|
74
|
+
"meta:",
|
|
75
|
+
` sourceFile: "${sourceName}"`,
|
|
76
|
+
` fanficMode: "${fanficMode}"`,
|
|
77
|
+
` generatedAt: "${new Date().toISOString()}"`,
|
|
78
|
+
].join("\n");
|
|
79
|
+
const fullDocument = [
|
|
80
|
+
`# 同人正典(《${sourceName}》)`,
|
|
81
|
+
"",
|
|
82
|
+
"## 世界规则",
|
|
83
|
+
worldRules || "(素材中未提取到明确世界规则)",
|
|
84
|
+
"",
|
|
85
|
+
"## 角色档案",
|
|
86
|
+
characterProfiles || "(素材中未提取到角色信息)",
|
|
87
|
+
"",
|
|
88
|
+
"## 关键事件时间线",
|
|
89
|
+
keyEvents || "(素材中未提取到关键事件)",
|
|
90
|
+
"",
|
|
91
|
+
"## 力量体系",
|
|
92
|
+
powerSystem || "(原作无明确力量体系)",
|
|
93
|
+
"",
|
|
94
|
+
meta,
|
|
95
|
+
].join("\n");
|
|
96
|
+
return { worldRules, characterProfiles, keyEvents, powerSystem, fullDocument };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=fanfic-canon-importer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-canon-importer.js","sourceRoot":"","sources":["../../src/agents/fanfic-canon-importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAWtC,MAAM,WAAW,GAA+B;IAC9C,KAAK,EAAE,eAAe;IACtB,EAAE,EAAE,sBAAsB;IAC1B,GAAG,EAAE,gBAAgB;IACrB,EAAE,EAAE,cAAc;CACnB,CAAC;AAEF,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,IAAI,IAAI;QACN,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,UAAkB,EAClB,UAAsB;QAEtB,iDAAiD;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAElE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG;;OAElB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCd,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,UAAU,YAAY,IAAI,EAAE,EAAE;SACjE,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CACtC,CAAC;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,gBAAgB,GAAG,wCAAwC,CAC5D,CAAC;YACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG;YACX,KAAK;YACL,OAAO;YACP,kBAAkB,UAAU,GAAG;YAC/B,kBAAkB,UAAU,GAAG;YAC/B,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;SAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,YAAY,GAAG;YACnB,WAAW,UAAU,IAAI;YACzB,EAAE;YACF,SAAS;YACT,UAAU,IAAI,iBAAiB;YAC/B,EAAE;YACF,SAAS;YACT,iBAAiB,IAAI,eAAe;YACpC,EAAE;YACF,YAAY;YACZ,SAAS,IAAI,eAAe;YAC5B,EAAE;YACF,SAAS;YACT,WAAW,IAAI,aAAa;YAC5B,EAAE;YACF,IAAI;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACjF,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FanficMode } from "../models/book.js";
|
|
2
|
+
export interface FanficDimensionConfig {
|
|
3
|
+
readonly activeIds: ReadonlyArray<number>;
|
|
4
|
+
readonly severityOverrides: ReadonlyMap<number, "critical" | "warning" | "info">;
|
|
5
|
+
readonly deactivatedIds: ReadonlyArray<number>;
|
|
6
|
+
readonly notes: ReadonlyMap<number, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare const FANFIC_DIMENSIONS: ReadonlyArray<{
|
|
9
|
+
readonly id: number;
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly baseNote: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function getFanficDimensionConfig(mode: FanficMode, _allowedDeviations?: ReadonlyArray<string>): FanficDimensionConfig;
|
|
14
|
+
//# sourceMappingURL=fanfic-dimensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-dimensions.d.ts","sourceRoot":"","sources":["../../src/agents/fanfic-dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;IACjF,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAqBA,CAAC;AAgBF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,kBAAkB,GAAE,aAAa,CAAC,MAAM,CAAM,GAC7C,qBAAqB,CAgCvB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Fanfic-specific audit dimensions (34-37)
|
|
2
|
+
export const FANFIC_DIMENSIONS = [
|
|
3
|
+
{
|
|
4
|
+
id: 34,
|
|
5
|
+
name: "角色还原度",
|
|
6
|
+
baseNote: "检查角色的语癖、说话风格、行为模式是否与 fanfic_canon.md 角色档案一致。偏离必须有情境驱动。",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: 35,
|
|
10
|
+
name: "世界规则遵守",
|
|
11
|
+
baseNote: "检查章节内容是否违反 fanfic_canon.md 中的世界规则(地理、力量体系、阵营关系)。",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 36,
|
|
15
|
+
name: "关系动态",
|
|
16
|
+
baseNote: "检查角色之间的关系互动是否合理,是否与 fanfic_canon.md 中标注的关键关系一致或有合理发展。",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 37,
|
|
20
|
+
name: "正典事件一致性",
|
|
21
|
+
baseNote: "检查章节是否与 fanfic_canon.md 关键事件时间线矛盾。",
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
// Mode → dimension severity mapping
|
|
25
|
+
const SEVERITY_MAP = {
|
|
26
|
+
canon: { 34: "critical", 35: "critical", 36: "warning", 37: "critical" },
|
|
27
|
+
au: { 34: "critical", 35: "info", 36: "warning", 37: "info" },
|
|
28
|
+
ooc: { 34: "info", 35: "warning", 36: "warning", 37: "info" },
|
|
29
|
+
cp: { 34: "warning", 35: "warning", 36: "critical", 37: "info" },
|
|
30
|
+
};
|
|
31
|
+
// Spinoff dims (28-31) are deactivated in fanfic mode — they're for same-author spinoffs
|
|
32
|
+
const SPINOFF_DIMS = [28, 29, 30, 31];
|
|
33
|
+
// OOC mode relaxes the built-in OOC check (dim 1)
|
|
34
|
+
const OOC_DIM = 1;
|
|
35
|
+
export function getFanficDimensionConfig(mode, _allowedDeviations = []) {
|
|
36
|
+
const severityMap = SEVERITY_MAP[mode];
|
|
37
|
+
const severityOverrides = new Map();
|
|
38
|
+
const notes = new Map();
|
|
39
|
+
for (const dim of FANFIC_DIMENSIONS) {
|
|
40
|
+
severityOverrides.set(dim.id, severityMap[dim.id]);
|
|
41
|
+
const severity = severityMap[dim.id];
|
|
42
|
+
const severityLabel = severity === "critical" ? "(严格检查)"
|
|
43
|
+
: severity === "info" ? "(仅记录,不判定失败)"
|
|
44
|
+
: "(警告级别)";
|
|
45
|
+
notes.set(dim.id, `${dim.baseNote} ${severityLabel}`);
|
|
46
|
+
}
|
|
47
|
+
// OOC mode relaxes the built-in OOC check
|
|
48
|
+
if (mode === "ooc") {
|
|
49
|
+
severityOverrides.set(OOC_DIM, "info");
|
|
50
|
+
notes.set(OOC_DIM, "OOC模式下角色可偏离性格底色,此维度仅记录不判定失败。参照 fanfic_canon.md 角色档案评估偏离程度。");
|
|
51
|
+
}
|
|
52
|
+
// Canon mode strengthens the built-in OOC check
|
|
53
|
+
if (mode === "canon") {
|
|
54
|
+
notes.set(OOC_DIM, "原作向同人:角色必须严格遵守性格底色。参照 fanfic_canon.md 角色档案中的性格底色和行为模式。");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
activeIds: FANFIC_DIMENSIONS.map((d) => d.id),
|
|
58
|
+
severityOverrides,
|
|
59
|
+
deactivatedIds: SPINOFF_DIMS,
|
|
60
|
+
notes,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=fanfic-dimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-dimensions.js","sourceRoot":"","sources":["../../src/agents/fanfic-dimensions.ts"],"names":[],"mappings":"AASA,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAIzB;IACH;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,wDAAwD;KACnE;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,kDAAkD;KAC7D;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,uDAAuD;KAClE;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,oCAAoC;KAC/C;CACF,CAAC;AAEF,oCAAoC;AACpC,MAAM,YAAY,GAAwE;IACxF,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE;IACxE,EAAE,EAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE;IACpE,GAAG,EAAI,EAAE,EAAE,EAAE,MAAM,EAAM,EAAE,EAAE,SAAS,EAAG,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE;IACpE,EAAE,EAAK,EAAE,EAAE,EAAE,SAAS,EAAG,EAAE,EAAE,SAAS,EAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE;CACtE,CAAC;AAEF,yFAAyF;AACzF,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAEtC,kDAAkD;AAClD,MAAM,OAAO,GAAG,CAAC,CAAC;AAElB,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,qBAA4C,EAAE;IAE9C,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA2C,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACtC,MAAM,aAAa,GAAG,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ;YACtD,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa;gBACrC,CAAC,CAAC,QAAQ,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,QAAQ,IAAI,aAAa,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,0CAA0C;IAC1C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,4DAA4D,CAAC,CAAC;IACnF,CAAC;IAED,gDAAgD;IAChD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,iBAAiB;QACjB,cAAc,EAAE,YAAY;QAC5B,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FanficMode } from "../models/book.js";
|
|
2
|
+
export declare function buildFanficCanonSection(fanficCanon: string, mode: FanficMode): string;
|
|
3
|
+
export declare function buildCharacterVoiceProfiles(fanficCanon: string): string;
|
|
4
|
+
export declare function buildFanficModeInstructions(mode: FanficMode, allowedDeviations: ReadonlyArray<string>): string;
|
|
5
|
+
//# sourceMappingURL=fanfic-prompt-sections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-prompt-sections.d.ts","sourceRoot":"","sources":["../../src/agents/fanfic-prompt-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAyBpD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,MAAM,CASR;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAyCvE;AAgBD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,UAAU,EAChB,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,GACvC,MAAM,CASR"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const MODE_PREAMBLES = {
|
|
2
|
+
canon: `你正在写**原作向同人**。严格遵守正典:
|
|
3
|
+
- 角色的语癖、说话风格、行为模式必须与原作一致
|
|
4
|
+
- 世界规则不可违反
|
|
5
|
+
- 关键事件时间线不可矛盾
|
|
6
|
+
- 可以填充原作空白、探索未详述的角度`,
|
|
7
|
+
au: `你正在写**AU(平行世界)同人**:
|
|
8
|
+
- 世界规则可以改变(已在 allowedDeviations 中声明的偏离)
|
|
9
|
+
- 角色的核心性格和说话方式应保持辨识度——读者要能认出是谁
|
|
10
|
+
- AU 设定偏离必须内部一致(改了一条规则,相关的都要跟着变)`,
|
|
11
|
+
ooc: `你正在写**OOC 同人**:
|
|
12
|
+
- 角色在极端情境下可以偏离性格底色
|
|
13
|
+
- 但偏离必须有情境驱动,不能无缘无故变性格
|
|
14
|
+
- 保留角色的语癖和说话特征——即使性格变了,说话方式也应有辨识度`,
|
|
15
|
+
cp: `你正在写**CP 同人**,以角色互动和关系发展为核心:
|
|
16
|
+
- 配对双方每章必须有有效互动
|
|
17
|
+
- 互动风格要有化学反应——不是两个人在同一个场景各干各的
|
|
18
|
+
- 关系发展应有节奏感:推进、试探、阻碍、突破`,
|
|
19
|
+
};
|
|
20
|
+
export function buildFanficCanonSection(fanficCanon, mode) {
|
|
21
|
+
return `
|
|
22
|
+
## 同人正典参照
|
|
23
|
+
|
|
24
|
+
${MODE_PREAMBLES[mode]}
|
|
25
|
+
|
|
26
|
+
以下是原作正典信息,写作时必须参照:
|
|
27
|
+
|
|
28
|
+
${fanficCanon}`;
|
|
29
|
+
}
|
|
30
|
+
export function buildCharacterVoiceProfiles(fanficCanon) {
|
|
31
|
+
// Extract character table from fanfic_canon.md
|
|
32
|
+
const tableMatch = fanficCanon.match(/## 角色档案[\s\S]*?\n(\|[^\n]+\|\n\|[-|\s]+\|\n(?:\|[^\n]+\|\n)*)/);
|
|
33
|
+
if (!tableMatch)
|
|
34
|
+
return "";
|
|
35
|
+
const rows = tableMatch[1]
|
|
36
|
+
.split("\n")
|
|
37
|
+
.filter((line) => line.startsWith("|") && !line.startsWith("|--") && !line.startsWith("| 角色"))
|
|
38
|
+
.map((line) => line
|
|
39
|
+
.split("|")
|
|
40
|
+
.map((cell) => cell.trim())
|
|
41
|
+
.filter(Boolean))
|
|
42
|
+
.filter((cells) => cells.length >= 5);
|
|
43
|
+
if (rows.length === 0)
|
|
44
|
+
return "";
|
|
45
|
+
const profiles = rows.map((cells) => {
|
|
46
|
+
const [name, , , catchphrases, speakingStyle, behavior] = cells;
|
|
47
|
+
const parts = [`### ${name}`];
|
|
48
|
+
if (catchphrases && catchphrases !== "(素材未提及)") {
|
|
49
|
+
parts.push(`- 口头禅/语癖:${catchphrases}`);
|
|
50
|
+
}
|
|
51
|
+
if (speakingStyle && speakingStyle !== "(素材未提及)") {
|
|
52
|
+
parts.push(`- 说话风格:${speakingStyle}`);
|
|
53
|
+
}
|
|
54
|
+
if (behavior && behavior !== "(素材未提及)") {
|
|
55
|
+
parts.push(`- 典型行为:${behavior}`);
|
|
56
|
+
}
|
|
57
|
+
return parts.join("\n");
|
|
58
|
+
});
|
|
59
|
+
return `
|
|
60
|
+
## 角色语音参照(同人写作专用)
|
|
61
|
+
|
|
62
|
+
以下角色的对话和行为必须参照原作特征。写对话时,先想"这个角色在原作里会怎么说"。
|
|
63
|
+
|
|
64
|
+
${profiles.join("\n\n")}`;
|
|
65
|
+
}
|
|
66
|
+
const MODE_CHECKS = {
|
|
67
|
+
canon: `- 正典合规检查:本章是否违反原作设定?角色对话是否符合原作语癖?
|
|
68
|
+
- 信息边界检查:角色是否引用了不该知道的信息?`,
|
|
69
|
+
au: `- AU 偏离清单:本章改变了哪些世界规则?改变是否内部一致?
|
|
70
|
+
- 角色辨识度检查:读者能否从对话中认出角色?`,
|
|
71
|
+
ooc: `- OOC 偏离记录:角色在哪些方面偏离了性格底色?偏离驱动力是什么?
|
|
72
|
+
- 语癖保留检查:即使 OOC,说话方式是否还有原作特征?`,
|
|
73
|
+
cp: `- CP 互动检查:配对双方本章是否有有效互动?关系发展是否推进?
|
|
74
|
+
- 互动质量检查:互动是否有化学反应(不是各干各的)?`,
|
|
75
|
+
};
|
|
76
|
+
export function buildFanficModeInstructions(mode, allowedDeviations) {
|
|
77
|
+
const deviationsBlock = allowedDeviations.length > 0
|
|
78
|
+
? `\n允许的偏离(不视为违规):\n${allowedDeviations.map((d) => `- ${d}`).join("\n")}\n`
|
|
79
|
+
: "";
|
|
80
|
+
return `
|
|
81
|
+
## 同人写作自检(在 PRE_WRITE_CHECK 中额外检查)
|
|
82
|
+
|
|
83
|
+
${MODE_CHECKS[mode]}${deviationsBlock}`;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=fanfic-prompt-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanfic-prompt-sections.js","sourceRoot":"","sources":["../../src/agents/fanfic-prompt-sections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-write-validator.d.ts","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAmCD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,aAAa,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"post-write-validator.d.ts","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAmCD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,aAAa,CAAC,kBAAkB,CAAC,CA8LnC"}
|
|
@@ -32,6 +32,12 @@ const COLLECTIVE_SHOCK_PATTERNS = [
|
|
|
32
32
|
// --- Validator ---
|
|
33
33
|
export function validatePostWrite(content, genreProfile, bookRules) {
|
|
34
34
|
const violations = [];
|
|
35
|
+
// Skip Chinese-specific rules for English content
|
|
36
|
+
const isEnglish = genreProfile.language === "en";
|
|
37
|
+
if (isEnglish) {
|
|
38
|
+
// For English, only run book-specific prohibitions and paragraph length check
|
|
39
|
+
return validatePostWriteEnglish(content, genreProfile, bookRules);
|
|
40
|
+
}
|
|
35
41
|
// 1. 硬性禁令: "不是…而是…" 句式
|
|
36
42
|
if (/不是[^,。!?\n]{0,30}[,,]?\s*而是/.test(content)) {
|
|
37
43
|
violations.push({
|
|
@@ -201,4 +207,63 @@ export function validatePostWrite(content, genreProfile, bookRules) {
|
|
|
201
207
|
}
|
|
202
208
|
return violations;
|
|
203
209
|
}
|
|
210
|
+
/** English-specific post-write validation rules. */
|
|
211
|
+
function validatePostWriteEnglish(content, genreProfile, bookRules) {
|
|
212
|
+
const violations = [];
|
|
213
|
+
// 1. AI-tell word density (from en-prompt-sections IRON LAW 3)
|
|
214
|
+
const aiTellWords = ["delve", "tapestry", "testament", "intricate", "pivotal", "vibrant", "embark", "comprehensive", "nuanced"];
|
|
215
|
+
for (const word of aiTellWords) {
|
|
216
|
+
const regex = new RegExp(`\\b${word}\\b`, "gi");
|
|
217
|
+
const matches = content.match(regex);
|
|
218
|
+
if (matches && matches.length > Math.ceil(content.length / 3000)) {
|
|
219
|
+
violations.push({
|
|
220
|
+
rule: "AI-tell word density",
|
|
221
|
+
severity: "warning",
|
|
222
|
+
description: `"${word}" appears ${matches.length} times (limit: 1 per 3000 chars)`,
|
|
223
|
+
suggestion: `Replace with a more specific word`,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// 2. Paragraph overflow (same rule applies to English)
|
|
228
|
+
const paragraphs = content.split(/\n\s*\n/).filter((p) => p.trim().length > 0);
|
|
229
|
+
const longParagraphs = paragraphs.filter((p) => p.length > 500);
|
|
230
|
+
if (longParagraphs.length >= 2) {
|
|
231
|
+
violations.push({
|
|
232
|
+
rule: "Paragraph length",
|
|
233
|
+
severity: "warning",
|
|
234
|
+
description: `${longParagraphs.length} paragraphs exceed 500 characters`,
|
|
235
|
+
suggestion: "Break into shorter paragraphs for readability",
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
// 3. Book-specific prohibitions
|
|
239
|
+
if (bookRules?.prohibitions) {
|
|
240
|
+
for (const prohibition of bookRules.prohibitions) {
|
|
241
|
+
if (prohibition.length >= 2 && prohibition.length <= 50 && content.toLowerCase().includes(prohibition.toLowerCase())) {
|
|
242
|
+
violations.push({
|
|
243
|
+
rule: "Book prohibition",
|
|
244
|
+
severity: "error",
|
|
245
|
+
description: `Found banned content: "${prohibition}"`,
|
|
246
|
+
suggestion: "Remove or rewrite this content",
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// 4. Genre fatigue words
|
|
252
|
+
const fatigueWords = bookRules?.fatigueWordsOverride && bookRules.fatigueWordsOverride.length > 0
|
|
253
|
+
? bookRules.fatigueWordsOverride
|
|
254
|
+
: genreProfile.fatigueWords;
|
|
255
|
+
for (const word of fatigueWords) {
|
|
256
|
+
const regex = new RegExp(`\\b${word}\\b`, "gi");
|
|
257
|
+
const matches = content.match(regex);
|
|
258
|
+
if (matches && matches.length > 1) {
|
|
259
|
+
violations.push({
|
|
260
|
+
rule: "Fatigue word",
|
|
261
|
+
severity: "warning",
|
|
262
|
+
description: `"${word}" appears ${matches.length} times (max 1 per chapter)`,
|
|
263
|
+
suggestion: "Vary the vocabulary",
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return violations;
|
|
268
|
+
}
|
|
204
269
|
//# sourceMappingURL=post-write-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-write-validator.js","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-write-validator.js","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviser.d.ts","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAqBD,qBAAa,YAAa,SAAQ,SAAS;IACzC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,IAAI,GAAE,UAAsB,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"reviser.d.ts","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAqBD,qBAAa,YAAa,SAAQ,SAAS;IACzC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,IAAI,GAAE,UAAsB,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IA8HxB,OAAO,CAAC,WAAW;YA2BL,YAAY;CAO3B"}
|
package/dist/agents/reviser.js
CHANGED
|
@@ -25,7 +25,7 @@ export class ReviserAgent extends BaseAgent {
|
|
|
25
25
|
return "reviser";
|
|
26
26
|
}
|
|
27
27
|
async reviseChapter(bookDir, chapterContent, chapterNumber, issues, mode = "rewrite", genre) {
|
|
28
|
-
const [currentState, ledger, hooks, styleGuideRaw, volumeOutline, storyBible, characterMatrix, chapterSummaries] = await Promise.all([
|
|
28
|
+
const [currentState, ledger, hooks, styleGuideRaw, volumeOutline, storyBible, characterMatrix, chapterSummaries, parentCanon, fanficCanon] = await Promise.all([
|
|
29
29
|
this.readFileSafe(join(bookDir, "story/current_state.md")),
|
|
30
30
|
this.readFileSafe(join(bookDir, "story/particle_ledger.md")),
|
|
31
31
|
this.readFileSafe(join(bookDir, "story/pending_hooks.md")),
|
|
@@ -34,6 +34,8 @@ export class ReviserAgent extends BaseAgent {
|
|
|
34
34
|
this.readFileSafe(join(bookDir, "story/story_bible.md")),
|
|
35
35
|
this.readFileSafe(join(bookDir, "story/character_matrix.md")),
|
|
36
36
|
this.readFileSafe(join(bookDir, "story/chapter_summaries.md")),
|
|
37
|
+
this.readFileSafe(join(bookDir, "story/parent_canon.md")),
|
|
38
|
+
this.readFileSafe(join(bookDir, "story/fanfic_canon.md")),
|
|
37
39
|
]);
|
|
38
40
|
// Load genre profile and book rules
|
|
39
41
|
const genreId = genre ?? "other";
|
|
@@ -54,7 +56,11 @@ export class ReviserAgent extends BaseAgent {
|
|
|
54
56
|
const protagonistBlock = bookRules?.protagonist
|
|
55
57
|
? `\n\n主角人设锁定:${bookRules.protagonist.name},${bookRules.protagonist.personalityLock.join("、")}。修改不得违反人设。`
|
|
56
58
|
: "";
|
|
57
|
-
const
|
|
59
|
+
const isEnglish = gp.language === "en";
|
|
60
|
+
const langPrefix = isEnglish
|
|
61
|
+
? `【LANGUAGE OVERRIDE】ALL output (FIXED_ISSUES, REVISED_CONTENT, UPDATED_STATE, UPDATED_HOOKS) MUST be in English. The revised chapter content must be written entirely in English.\n\n`
|
|
62
|
+
: "";
|
|
63
|
+
const systemPrompt = `${langPrefix}你是一位专业的${gp.name}网络小说修稿编辑。你的任务是根据审稿意见对章节进行修正。${protagonistBlock}
|
|
58
64
|
|
|
59
65
|
修稿模式:${modeDesc}
|
|
60
66
|
|
|
@@ -94,6 +100,14 @@ ${gp.numericalSystem ? "\n=== UPDATED_LEDGER ===\n(更新后的完整资源账
|
|
|
94
100
|
const summariesBlock = chapterSummaries !== "(文件不存在)"
|
|
95
101
|
? `\n## 章节摘要\n${chapterSummaries}\n`
|
|
96
102
|
: "";
|
|
103
|
+
const hasParentCanon = parentCanon !== "(文件不存在)";
|
|
104
|
+
const hasFanficCanon = fanficCanon !== "(文件不存在)";
|
|
105
|
+
const canonBlock = hasParentCanon
|
|
106
|
+
? `\n## 正传正典参照(修稿专用)\n本书为番外作品。修改时参照正典约束,不可改变正典事实。\n${parentCanon}\n`
|
|
107
|
+
: "";
|
|
108
|
+
const fanficCanonBlock = hasFanficCanon
|
|
109
|
+
? `\n## 同人正典参照(修稿专用)\n本书为同人作品。修改时参照正典角色档案和世界规则,不可违反正典事实。角色对话必须保留原作语癖。\n${fanficCanon}\n`
|
|
110
|
+
: "";
|
|
97
111
|
const userPrompt = `请修正第${chapterNumber}章。
|
|
98
112
|
|
|
99
113
|
## 审稿问题
|
|
@@ -104,7 +118,7 @@ ${currentState}
|
|
|
104
118
|
${ledgerBlock}
|
|
105
119
|
## 伏笔池
|
|
106
120
|
${hooks}
|
|
107
|
-
${outlineBlock}${bibleBlock}${matrixBlock}${summariesBlock}
|
|
121
|
+
${outlineBlock}${bibleBlock}${matrixBlock}${summariesBlock}${canonBlock}${fanficCanonBlock}
|
|
108
122
|
## 文风指南
|
|
109
123
|
${styleGuide}
|
|
110
124
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviser.js","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkBjC,MAAM,iBAAiB,GAA+B;IACpD,MAAM,EAAE,qFAAqF;IAC7F,OAAO,EAAE,8BAA8B;IACvC,MAAM,EAAE,8BAA8B;IACtC,aAAa,EAAE;;;;;;;;;;;iCAWgB;IAC/B,UAAU,EAAE,mEAAmE;CAChF,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,IAAI,IAAI;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,cAAsB,EACtB,aAAqB,EACrB,MAAiC,EACjC,OAAmB,SAAS,EAC5B,KAAc;QAEd,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"reviser.js","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BookConfig } from "../models/book.js";
|
|
2
2
|
import type { GenreProfile } from "../models/genre-profile.js";
|
|
3
3
|
import type { BookRules } from "../models/book-rules.js";
|
|
4
|
-
export declare function buildSettlerSystemPrompt(book: BookConfig, genreProfile: GenreProfile, bookRules: BookRules | null): string;
|
|
4
|
+
export declare function buildSettlerSystemPrompt(book: BookConfig, genreProfile: GenreProfile, bookRules: BookRules | null, language?: "zh" | "en"): string;
|
|
5
5
|
export declare function buildSettlerUserPrompt(params: {
|
|
6
6
|
readonly chapterNumber: number;
|
|
7
7
|
readonly title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settler-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"settler-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GACrB,MAAM,CA8DR;AA6DD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,GAAG,MAAM,CAqCT"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export function buildSettlerSystemPrompt(book, genreProfile, bookRules) {
|
|
1
|
+
export function buildSettlerSystemPrompt(book, genreProfile, bookRules, language) {
|
|
2
|
+
const resolvedLang = language ?? genreProfile.language;
|
|
3
|
+
const isEnglish = resolvedLang === "en";
|
|
2
4
|
const numericalBlock = genreProfile.numericalSystem
|
|
3
5
|
? `\n- 本题材有数值/资源体系,你必须在 UPDATED_LEDGER 中追踪正文中出现的所有资源变动
|
|
4
6
|
- 数值验算铁律:期初 + 增量 = 期末,三项必须可验算`
|
|
@@ -13,7 +15,10 @@ export function buildSettlerSystemPrompt(book, genreProfile, bookRules) {
|
|
|
13
15
|
const fullCastBlock = bookRules?.enableFullCastTracking
|
|
14
16
|
? `\n## 全员追踪\nPOST_SETTLEMENT 必须额外包含:本章出场角色清单、角色间关系变动、未出场但被提及的角色。`
|
|
15
17
|
: "";
|
|
16
|
-
|
|
18
|
+
const langPrefix = isEnglish
|
|
19
|
+
? `【LANGUAGE OVERRIDE】ALL output (state card, hooks, summaries, subplots, emotional arcs, character matrix) MUST be in English. The === TAG === markers remain unchanged.\n\n`
|
|
20
|
+
: "";
|
|
21
|
+
return `${langPrefix}你是状态追踪分析师。给定新章节正文和当前 truth 文件,你的任务是产出更新后的 truth 文件。
|
|
17
22
|
|
|
18
23
|
## 工作模式
|
|
19
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settler-prompts.js","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,YAA0B,EAC1B,SAA2B;
|
|
1
|
+
{"version":3,"file":"settler-prompts.js","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,YAA0B,EAC1B,SAA2B,EAC3B,QAAsB;IAEtB,MAAM,YAAY,GAAG,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,KAAK,IAAI,CAAC;IACxC,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe;QACjD,CAAC,CAAC;8BACwB;QAC1B,CAAC,CAAC,gCAAgC,CAAC;IAErC,MAAM,SAAS,GAAG;;;;;;6BAMS,CAAC;IAE5B,MAAM,aAAa,GAAG,SAAS,EAAE,sBAAsB;QACrD,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,4KAA4K;QAC9K,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,UAAU;;;;;;;;;;;;;;;;;;;;;;OAsBf,IAAI,CAAC,KAAK;OACV,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;OAC/B,IAAI,CAAC,QAAQ;EAClB,cAAc;EACd,SAAS,GAAG,aAAa;;;;EAIzB,wBAAwB,CAAC,YAAY,CAAC;;;;;;;oCAOJ,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAAC,EAAgB;IAChD,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe;QACvC,CAAC,CAAC;;;;;;mCAM6B;QAC/B,CAAC,CAAC;;;;mCAI6B,CAAC;IAElC,MAAM,aAAa,GAAG,EAAE,CAAC,eAAe;QACtC,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,cAAc;;;;EAIxB,aAAa;;;;;;;;6DAQ8C,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;4CAyBvF,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAYtC;IACC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;QAC/B,CAAC,CAAC,gBAAgB,MAAM,CAAC,MAAM,IAAI;QACnC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,KAAK,UAAU;QAC3D,CAAC,CAAC,gBAAgB,MAAM,CAAC,gBAAgB,IAAI;QAC7C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,KAAK,UAAU;QACrD,CAAC,CAAC,iBAAiB,MAAM,CAAC,YAAY,IAAI;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,KAAK,UAAU;QACxD,CAAC,CAAC,gBAAgB,MAAM,CAAC,aAAa,IAAI;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,KAAK,UAAU;QACvD,CAAC,CAAC,kBAAkB,MAAM,CAAC,eAAe,IAAI;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,OAAO,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,KAAK;;;;EAInD,MAAM,CAAC,OAAO;;;EAGd,MAAM,CAAC,YAAY;EACnB,WAAW;;EAEX,MAAM,CAAC,KAAK;EACZ,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,WAAW;;EAE5D,MAAM,CAAC,aAAa;;4BAEM,CAAC;AAC7B,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { BookConfig } from "../models/book.js";
|
|
1
|
+
import type { BookConfig, FanficMode } from "../models/book.js";
|
|
2
2
|
import type { GenreProfile } from "../models/genre-profile.js";
|
|
3
3
|
import type { BookRules } from "../models/book-rules.js";
|
|
4
|
-
export
|
|
4
|
+
export interface FanficContext {
|
|
5
|
+
readonly fanficCanon: string;
|
|
6
|
+
readonly fanficMode: FanficMode;
|
|
7
|
+
readonly allowedDeviations: ReadonlyArray<string>;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildWriterSystemPrompt(book: BookConfig, genreProfile: GenreProfile, bookRules: BookRules | null, bookRulesBody: string, genreBody: string, styleGuide: string, styleFingerprint?: string, chapterNumber?: number, mode?: "full" | "creative", fanficContext?: FanficContext, languageOverride?: "zh" | "en"): string;
|
|
5
10
|
//# sourceMappingURL=writer-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnD;AAMD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,EACzB,aAAa,CAAC,EAAE,MAAM,EACtB,IAAI,GAAE,MAAM,GAAG,UAAmB,EAClC,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,IAAI,GAAG,IAAI,GAC7B,MAAM,CAgDR"}
|