@qihuang02/world-book-mcp 0.0.3 → 0.0.4-beta
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/README.md +47 -15
- package/dist/core/capability-matrix.js +11 -11
- package/dist/core/capability-matrix.js.map +1 -1
- package/dist/core/character-card-builder.js +70 -1
- package/dist/core/character-card-builder.js.map +1 -1
- package/dist/core/delivery-checklist.js +2 -2
- package/dist/core/delivery-checklist.js.map +1 -1
- package/dist/core/tool-usage-guide.js +38 -29
- package/dist/core/tool-usage-guide.js.map +1 -1
- package/dist/core/workflow.js +7 -7
- package/dist/core/workflow.js.map +1 -1
- package/dist/core/worldbook-entry-factory.d.ts +28 -0
- package/dist/core/worldbook-entry-factory.js +82 -0
- package/dist/core/worldbook-entry-factory.js.map +1 -0
- package/dist/resources/usage-resources.js +2 -2
- package/dist/resources/usage-resources.js.map +1 -1
- package/dist/schemas/character-card.d.ts +19 -0
- package/dist/schemas/character-card.js +19 -0
- package/dist/schemas/character-card.js.map +1 -1
- package/dist/schemas/project.d.ts +3 -0
- package/dist/schemas/project.js +1 -0
- package/dist/schemas/project.js.map +1 -1
- package/dist/schemas/worldbook-draft.d.ts +170 -0
- package/dist/schemas/worldbook-draft.js +30 -0
- package/dist/schemas/worldbook-draft.js.map +1 -1
- package/dist/schemas/worldbook-patch.d.ts +4 -0
- package/dist/storage/path-policy.d.ts +3 -0
- package/dist/storage/path-policy.js +30 -7
- package/dist/storage/path-policy.js.map +1 -1
- package/dist/storage/project-store.d.ts +4 -1
- package/dist/storage/project-store.js +56 -6
- package/dist/storage/project-store.js.map +1 -1
- package/dist/storage/workspace-store.d.ts +28 -0
- package/dist/storage/workspace-store.js +130 -0
- package/dist/storage/workspace-store.js.map +1 -0
- package/dist/tools/character-card-tools.js +39 -43
- package/dist/tools/character-card-tools.js.map +1 -1
- package/dist/tools/decision-tools.js +17 -12
- package/dist/tools/decision-tools.js.map +1 -1
- package/dist/tools/extraction-tools.js +11 -11
- package/dist/tools/extraction-tools.js.map +1 -1
- package/dist/tools/mvu-html-ejs-tools.js +10 -13
- package/dist/tools/mvu-html-ejs-tools.js.map +1 -1
- package/dist/tools/project-tools.js +23 -5
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/style-chapter-tools.js +6 -8
- package/dist/tools/style-chapter-tools.js.map +1 -1
- package/dist/tools/worldbook-tools.js +66 -50
- package/dist/tools/worldbook-tools.js.map +1 -1
- package/dist/tools/worldbuilding-tools.js +4 -5
- package/dist/tools/worldbuilding-tools.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
- 查询单个 tool 的使用指南。
|
|
23
23
|
- 解释 SillyTavern 世界书配置字段。
|
|
24
24
|
- 扫描禁词与常见写作问题。
|
|
25
|
-
-
|
|
25
|
+
- 显式初始化 project,适合空白目录首次使用。
|
|
26
|
+
- 通过简化输入保存、更新、校验世界书草稿:AI 只需提交 `comment`、`keys`、`content` 等核心字段,MCP 自动补全完整结构。
|
|
26
27
|
- 导出独立 SillyTavern 世界书 JSON。
|
|
27
28
|
- 导入已有世界书 JSON 并进行安全 patch。
|
|
28
|
-
- 基础角色卡 JSON 生成,可嵌入项目世界书 draft
|
|
29
|
+
- 基础角色卡 JSON 生成,可嵌入项目世界书 draft;导出角色卡时同一角色的基础设定和性格设定会聚合为同一个内嵌世界书条目。
|
|
29
30
|
- MVU/ZOD 配置模板、校验、资产构建,并可自动合并进角色卡 JSON。
|
|
30
31
|
- HTML 美化配置模板、校验、资产构建,并可自动合并进角色卡 JSON。
|
|
31
32
|
- EJS 动态内容配置模板、校验、entries 构建,并可自动合并进角色卡内嵌世界书。
|
|
@@ -58,22 +59,53 @@ npm test # 运行单元测试
|
|
|
58
59
|
|
|
59
60
|
### 原始材料、结构化事实、draft JSON、最终 JSON
|
|
60
61
|
|
|
62
|
+
- `init_project`:显式创建当前工作区 MCP project,适合空白目录首次起手;项目元数据写入 `.worldbook/project.json`。
|
|
61
63
|
- `ingest_text_source` / `ingest_web_research`:保存原始文本或网页摘要。
|
|
62
64
|
- `submit_extraction_result`:保存主 AI 从原始材料中提取出的结构化事实。
|
|
63
|
-
- `
|
|
64
|
-
-
|
|
65
|
+
- `upsert_worldbook_entry` / `upsert_worldbook_entries`:推荐的主编辑入口。AI 只提交 `comment`、`keys`、`content` 等简化字段,MCP 自动补全完整 draft entry。
|
|
66
|
+
- 底层全量 draft/config 提交逻辑已降级为内部/兼容层,不作为默认公开接口推荐。
|
|
65
67
|
- `generate_worldbook_json` / `generate_character_card_json`:导出最终可导入 SillyTavern 的 JSON 文件。
|
|
66
68
|
|
|
67
69
|
### MCP 不做什么
|
|
68
70
|
|
|
69
71
|
MCP 不直接理解长文本、不替主 AI 搜索网页、不自动脑补设定。它负责让主 AI 的输出符合稳定 schema,并在导出前执行校验。
|
|
70
72
|
|
|
73
|
+
### 简化输入与并发保护
|
|
74
|
+
|
|
75
|
+
推荐 agent 使用 `upsert_worldbook_entry` / `upsert_worldbook_entries`,只提交少量核心字段:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"project_id": "project_xxx",
|
|
80
|
+
"comment": "原初异质",
|
|
81
|
+
"keys": ["原初异质", "异质", "根源力量"],
|
|
82
|
+
"content": "原初异质,没有人知道它从何而来……"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
MCP 会自动补全完整条目结构、默认位置、递归保护、启用状态等字段,并将 draft 拆分保存到 `.worldbook/draft/*.json`。默认按 `comment` 更新,避免不同条目因共享关键词而误合并;确需按关键词匹配旧条目时可设置 `match_by_keys: true`。Project 带有 `revision`,写入会在同一 MCP 进程内按 project 串行化;高并发 agent 可传 `expected_revision` 做冲突检测。
|
|
87
|
+
|
|
88
|
+
角色卡同样推荐用简化字段:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"project_id": "project_xxx",
|
|
93
|
+
"name": "孢子",
|
|
94
|
+
"first_mes": "……",
|
|
95
|
+
"alternate_greetings": ["……"],
|
|
96
|
+
"include_worldbook": true
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
导出角色卡时,同一角色的 `character_basic` 与 `character_personality` 会自动聚合为同一个内嵌世界书条目。
|
|
101
|
+
|
|
71
102
|
## Tools 一览
|
|
72
103
|
|
|
73
104
|
### 工作流、项目与规范
|
|
74
105
|
|
|
75
106
|
- `get_worldbook_workflow`:根据任务类型返回推荐 tool 流程。`wants_character_card=true` 时会自动追加角色卡流程。
|
|
76
107
|
- `get_tool_usage_guide`:查询某个 tool 的用途、调用时机、必填字段、示例输入、常见错误和下一步。
|
|
108
|
+
- `init_project`:显式初始化当前工作区项目,返回 `project_id`、`revision` 与 `.worldbook` 路径;已有项目可用 `if_exists` 控制复用或覆盖。
|
|
77
109
|
- `list_projects`:列出本地保存的 MCP 项目。
|
|
78
110
|
- `get_project`:查看项目详情或摘要。
|
|
79
111
|
- `get_entry_template`:返回世界书条目模板。
|
|
@@ -93,18 +125,17 @@ MCP 不直接理解长文本、不替主 AI 搜索网页、不自动脑补设定
|
|
|
93
125
|
### 世界书构建
|
|
94
126
|
|
|
95
127
|
- `plan_worldbook_entries`:根据提取结果规划条目表。
|
|
96
|
-
- `
|
|
97
|
-
- `
|
|
128
|
+
- `upsert_worldbook_entry`:用简化输入新增/更新单个条目,MCP 自动补全完整配置。
|
|
129
|
+
- `upsert_worldbook_entries`:用简化输入批量新增/更新多个条目。
|
|
98
130
|
- `update_worldbook_draft_entries`:按 index 或 comment 局部更新草稿条目。
|
|
99
131
|
- `validate_worldbook_draft`:校验草稿配置和内容问题。
|
|
100
132
|
- `generate_worldbook_json`:导出 SillyTavern 世界书 JSON。
|
|
101
133
|
|
|
102
134
|
### 角色卡
|
|
103
135
|
|
|
104
|
-
- `
|
|
105
|
-
- `submit_character_card_config`:保存角色卡配置。
|
|
136
|
+
- `upsert_character_profile`:用简化字段创建/更新角色卡人设配置,MCP 自动补齐 `chara_card_v3` 默认字段。
|
|
106
137
|
- `validate_character_card_config`:校验角色卡配置和嵌入世界书。
|
|
107
|
-
- `generate_character_card_json`:导出 `chara_card_v3` 角色卡 JSON
|
|
138
|
+
- `generate_character_card_json`:导出 `chara_card_v3` 角色卡 JSON;同一角色的 `character_basic` 与 `character_personality` 会合并为同一个内嵌世界书条目。
|
|
108
139
|
- `query_character_card`:查询角色卡概要、开场白或内嵌世界书条目。
|
|
109
140
|
|
|
110
141
|
### MVU / ZOD
|
|
@@ -131,17 +162,18 @@ MCP 不直接理解长文本、不替主 AI 搜索网页、不自动脑补设定
|
|
|
131
162
|
### 查询与 Patch
|
|
132
163
|
|
|
133
164
|
- `query_worldbook`:查询已有世界书 JSON,支持 `brief`、`uid`、`search`、`stats`。
|
|
134
|
-
- `import_worldbook_json
|
|
165
|
+
- `import_worldbook_json`:把当前工作目录内已有世界书 JSON 导入为 MCP project draft。
|
|
135
166
|
- `create_worldbook_patch`:创建修改计划,不直接写文件。
|
|
136
167
|
- `preview_worldbook_patch`:预览 patch diff 和校验结果。
|
|
137
168
|
- `apply_worldbook_patch`:应用 patch,自动校验,可备份并导出新 JSON。
|
|
138
169
|
|
|
139
|
-
##
|
|
170
|
+
## 工作区与输出目录
|
|
140
171
|
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
- `
|
|
172
|
+
- `.worldbook/project.json`:保存当前工作区 MCP 项目元数据。
|
|
173
|
+
- `.worldbook/draft/*.json`:按条目拆分保存世界书 draft,便于 AI/人工逐条编辑和审阅。
|
|
174
|
+
- `.worldbook/backups/`:保存 patch 覆盖前的备份。
|
|
175
|
+
- 默认导出路径:`generate_worldbook_json` / `generate_character_card_json` 未传 `output_path` 时,直接在当前工作目录生成 `<名称>.json`。
|
|
176
|
+
- 自定义读写路径必须位于当前工作目录内,防止越界读取或覆盖任意文件。
|
|
145
177
|
|
|
146
178
|
这些运行时文件默认被 `.gitignore` 忽略。
|
|
147
179
|
|
|
@@ -3,44 +3,44 @@ const MATRIX = {
|
|
|
3
3
|
task_type: "original_character_card",
|
|
4
4
|
purpose: "原创角色卡:世界观/人设条目/开场白/可选 MVU-EJS-HTML/最终角色卡 JSON。",
|
|
5
5
|
status: "partial",
|
|
6
|
-
primary_tools: ["create_worldbuilding_outline", "submit_worldbuilding_summary", "plan_worldbook_entries", "
|
|
6
|
+
primary_tools: ["create_worldbuilding_outline", "submit_worldbuilding_summary", "plan_worldbook_entries", "upsert_worldbook_entries", "validate_worldbook_draft", "upsert_character_profile", "upsert_character_profile", "validate_greetings", "validate_character_card_config", "generate_character_card_json"],
|
|
7
7
|
optional_tools: ["create_mvu_schema_template", "create_ejs_template", "create_html_beautify_template", "lint_project_content", "create_final_review_report"],
|
|
8
8
|
missing_or_planned: ["create_character_basic_entry_template", "create_character_personality_entry_template", "validate_character_entry_structure", "create_worldbook_entry_plan"],
|
|
9
|
-
recommended_workflow: ["classify_worldbook_task", "create_worldbuilding_outline", "submit_worldbuilding_summary", "create_worldbook_entry_plan", "
|
|
9
|
+
recommended_workflow: ["classify_worldbook_task", "create_worldbuilding_outline", "submit_worldbuilding_summary", "create_worldbook_entry_plan", "upsert_worldbook_entries", "validate_worldbook_draft", "upsert_character_profile", "upsert_character_profile", "validate_greetings", "create_final_review_report", "generate_character_card_json"],
|
|
10
10
|
},
|
|
11
11
|
derivative_extraction: {
|
|
12
12
|
task_type: "derivative_extraction",
|
|
13
13
|
purpose: "二创提取:接收 AI 整理后的原始素材/搜索摘要,形成结构化提取结果并转世界书/角色卡。",
|
|
14
14
|
status: "partial",
|
|
15
|
-
primary_tools: ["ingest_text_source", "ingest_web_research", "create_extraction_outline", "submit_extraction_result", "plan_worldbook_entries", "
|
|
16
|
-
optional_tools: ["generate_worldbook_json", "
|
|
15
|
+
primary_tools: ["ingest_text_source", "ingest_web_research", "create_extraction_outline", "submit_extraction_result", "plan_worldbook_entries", "upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
16
|
+
optional_tools: ["generate_worldbook_json", "upsert_character_profile", "generate_character_card_json"],
|
|
17
17
|
missing_or_planned: ["create_derivative_extraction_template", "submit_derivative_extraction_outline", "validate_derivative_extraction_outline"],
|
|
18
|
-
recommended_workflow: ["ingest_text_source", "create_derivative_extraction_template", "submit_derivative_extraction_outline", "validate_derivative_extraction_outline", "submit_extraction_result", "create_worldbook_entry_plan", "
|
|
18
|
+
recommended_workflow: ["ingest_text_source", "create_derivative_extraction_template", "submit_derivative_extraction_outline", "validate_derivative_extraction_outline", "submit_extraction_result", "create_worldbook_entry_plan", "upsert_worldbook_entries", "create_final_review_report"],
|
|
19
19
|
},
|
|
20
20
|
worldbuilding_only: {
|
|
21
21
|
task_type: "worldbuilding_only",
|
|
22
22
|
purpose: "纯世界观设计与世界书:从概念设计到条目化导出。",
|
|
23
23
|
status: "partial",
|
|
24
|
-
primary_tools: ["create_worldbuilding_outline", "submit_worldbuilding_summary", "validate_worldbuilding_summary", "submit_extraction_result", "plan_worldbook_entries", "
|
|
24
|
+
primary_tools: ["create_worldbuilding_outline", "submit_worldbuilding_summary", "validate_worldbuilding_summary", "submit_extraction_result", "plan_worldbook_entries", "upsert_worldbook_entries", "validate_worldbook_draft", "generate_worldbook_json"],
|
|
25
25
|
optional_tools: ["lint_project_content", "create_final_review_report"],
|
|
26
26
|
missing_or_planned: ["classify_worldbuilding_type", "create_worldbuilding_design_template", "validate_worldbuilding_design", "create_worldbook_entry_plan"],
|
|
27
|
-
recommended_workflow: ["create_worldbuilding_design_template", "validate_worldbuilding_design", "classify_worldbook_card_type", "create_worldbook_entry_plan", "
|
|
27
|
+
recommended_workflow: ["create_worldbuilding_design_template", "validate_worldbuilding_design", "classify_worldbook_card_type", "create_worldbook_entry_plan", "upsert_worldbook_entries", "validate_worldbook_draft", "generate_worldbook_json"],
|
|
28
28
|
},
|
|
29
29
|
item_ability_equipment: {
|
|
30
30
|
task_type: "item_ability_equipment",
|
|
31
31
|
purpose: "物品/能力/装备条目:按类型生成与校验世界书条目。",
|
|
32
32
|
status: "partial",
|
|
33
|
-
primary_tools: ["get_entry_template", "
|
|
33
|
+
primary_tools: ["get_entry_template", "upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
34
34
|
optional_tools: ["update_worldbook_draft_entries", "generate_worldbook_json"],
|
|
35
35
|
missing_or_planned: ["validate_item_entry"],
|
|
36
|
-
recommended_workflow: ["get_entry_template", "validate_item_entry", "
|
|
36
|
+
recommended_workflow: ["get_entry_template", "validate_item_entry", "upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
37
37
|
},
|
|
38
38
|
style_extraction: {
|
|
39
39
|
task_type: "style_extraction",
|
|
40
40
|
purpose: "文风提取/设定:把 AI 整理出的文风特征转为可触发或常驻世界书规则。",
|
|
41
41
|
status: "planned",
|
|
42
42
|
primary_tools: ["ingest_text_source", "lint_worldbook_content"],
|
|
43
|
-
optional_tools: ["
|
|
43
|
+
optional_tools: ["upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
44
44
|
missing_or_planned: ["create_style_extraction_template", "submit_style_profile", "build_style_worldbook_entries"],
|
|
45
45
|
recommended_workflow: ["ingest_text_source", "create_style_extraction_template", "submit_style_profile", "build_style_worldbook_entries", "validate_worldbook_draft"],
|
|
46
46
|
},
|
|
@@ -49,7 +49,7 @@ const MATRIX = {
|
|
|
49
49
|
purpose: "故事/章节提取:按章节行号和事件变化构建绿灯章节条目。",
|
|
50
50
|
status: "planned",
|
|
51
51
|
primary_tools: ["ingest_text_source", "submit_extraction_result", "plan_worldbook_entries"],
|
|
52
|
-
optional_tools: ["
|
|
52
|
+
optional_tools: ["upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
53
53
|
missing_or_planned: ["create_chapter_extraction_template", "build_chapter_worldbook_entries"],
|
|
54
54
|
recommended_workflow: ["ingest_text_source", "create_chapter_extraction_template", "build_chapter_worldbook_entries", "validate_worldbook_draft"],
|
|
55
55
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-matrix.js","sourceRoot":"","sources":["../../src/core/capability-matrix.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,GAA6E;IACvF,uBAAuB,EAAE;QACvB,SAAS,EAAE,yBAAyB;QACpC,OAAO,EAAE,gDAAgD;QACzD,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,CAAC,8BAA8B,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"capability-matrix.js","sourceRoot":"","sources":["../../src/core/capability-matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,8 +61,77 @@ function withId(value) {
|
|
|
61
61
|
const maybeId = value.id;
|
|
62
62
|
return { ...value, id: typeof maybeId === "string" ? maybeId : randomUUID() };
|
|
63
63
|
}
|
|
64
|
+
function mergeCharacterProfileEntries(entries) {
|
|
65
|
+
const merged = [];
|
|
66
|
+
const characterIndexes = new Map();
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (entry.entryType !== "character_basic" && entry.entryType !== "character_personality") {
|
|
69
|
+
merged.push(entry);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const characterName = inferCharacterName(entry);
|
|
73
|
+
const key = characterName.toLocaleLowerCase();
|
|
74
|
+
const existingIndex = characterIndexes.get(key);
|
|
75
|
+
if (existingIndex === undefined) {
|
|
76
|
+
characterIndexes.set(key, merged.length);
|
|
77
|
+
merged.push({ ...entry, comment: characterName, keys: uniqueStrings([characterName, ...entry.keys]) });
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const existing = merged[existingIndex];
|
|
81
|
+
merged[existingIndex] = {
|
|
82
|
+
...existing,
|
|
83
|
+
comment: characterName,
|
|
84
|
+
entryType: "character_basic",
|
|
85
|
+
keys: uniqueStrings([...existing.keys, ...entry.keys, characterName]),
|
|
86
|
+
secondaryKeys: uniqueStrings([...(existing.secondaryKeys ?? []), ...(entry.secondaryKeys ?? [])]),
|
|
87
|
+
content: mergeCharacterContent(existing.content, entry.content),
|
|
88
|
+
constant: existing.constant || entry.constant,
|
|
89
|
+
enabled: existing.enabled && entry.enabled,
|
|
90
|
+
order: Math.min(existing.order, entry.order),
|
|
91
|
+
position: existing.entryType === "character_basic" ? existing.position : entry.position,
|
|
92
|
+
depth: existing.depth ?? entry.depth,
|
|
93
|
+
scanDepth: existing.scanDepth ?? entry.scanDepth,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return merged;
|
|
97
|
+
}
|
|
98
|
+
function inferCharacterName(entry) {
|
|
99
|
+
if (entry.characterName?.trim())
|
|
100
|
+
return entry.characterName.trim();
|
|
101
|
+
const nameMatch = entry.content.match(/^\s*name\s*[::]\s*([^\n\r]+)/m);
|
|
102
|
+
if (nameMatch?.[1])
|
|
103
|
+
return nameMatch[1].trim();
|
|
104
|
+
return entry.comment.replace(/[__-]?(基础设定|基本设定|性格设定|性格|basic|personality)$/i, "").trim() || entry.comment;
|
|
105
|
+
}
|
|
106
|
+
function mergeCharacterContent(first, second) {
|
|
107
|
+
const firstBlock = labelCharacterContent(first, "基础设定");
|
|
108
|
+
const secondBlock = labelCharacterContent(second, "性格设定");
|
|
109
|
+
if (!firstBlock.trim())
|
|
110
|
+
return secondBlock;
|
|
111
|
+
if (!secondBlock.trim())
|
|
112
|
+
return firstBlock;
|
|
113
|
+
if (firstBlock.includes(secondBlock))
|
|
114
|
+
return firstBlock;
|
|
115
|
+
if (secondBlock.includes(firstBlock))
|
|
116
|
+
return secondBlock;
|
|
117
|
+
return `${firstBlock.trim()}\n\n${secondBlock.trim()}`;
|
|
118
|
+
}
|
|
119
|
+
function labelCharacterContent(content, label) {
|
|
120
|
+
const trimmed = content.trim();
|
|
121
|
+
if (!trimmed)
|
|
122
|
+
return content;
|
|
123
|
+
if (hasSingleXmlWrapper(trimmed) || /^【[^】]+】/.test(trimmed))
|
|
124
|
+
return trimmed;
|
|
125
|
+
return `【${label}】\n${trimmed}`;
|
|
126
|
+
}
|
|
127
|
+
function hasSingleXmlWrapper(content) {
|
|
128
|
+
return /^<([a-zA-Z_][\w-]*)>[\s\S]*<\/\1>$/.test(content.trim());
|
|
129
|
+
}
|
|
130
|
+
function uniqueStrings(values) {
|
|
131
|
+
return Array.from(new Set(values.map((value) => value.trim()).filter(Boolean)));
|
|
132
|
+
}
|
|
64
133
|
export function draftEntriesToCharacterBookEntries(entries) {
|
|
65
|
-
return entries.map((entry, index) => ({
|
|
134
|
+
return mergeCharacterProfileEntries(entries).map((entry, index) => ({
|
|
66
135
|
id: index,
|
|
67
136
|
keys: entry.keys,
|
|
68
137
|
secondary_keys: entry.secondaryKeys ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-card-builder.js","sourceRoot":"","sources":["../../src/core/character-card-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"character-card-builder.js","sourceRoot":"","sources":["../../src/core/character-card-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export function createDeliveryChecklist(input) {
|
|
|
11
11
|
}
|
|
12
12
|
// 世界书 draft
|
|
13
13
|
if (!input.project.draft || input.project.draft.length === 0) {
|
|
14
|
-
items.push({ section: "worldbook_draft", status: input.export_target === "worldbook" ? "blocking" : "warning", message: "项目尚未保存世界书 draft", related_tools: ["
|
|
14
|
+
items.push({ section: "worldbook_draft", status: input.export_target === "worldbook" ? "blocking" : "warning", message: "项目尚未保存世界书 draft", related_tools: ["upsert_worldbook_entry", "upsert_worldbook_entries"] });
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
items.push({ section: "worldbook_draft", status: review.sections.worldbook?.ok ? "ok" : "blocking", message: review.sections.worldbook?.ok ? "世界书 draft 校验通过" : "世界书 draft 存在阻塞性错误", related_tools: ["validate_worldbook_draft", "update_worldbook_draft_entries"] });
|
|
@@ -19,7 +19,7 @@ export function createDeliveryChecklist(input) {
|
|
|
19
19
|
// 角色卡
|
|
20
20
|
if (input.export_target === "character_card") {
|
|
21
21
|
if (!input.project.characterCardConfig) {
|
|
22
|
-
items.push({ section: "character_card", status: "blocking", message: "项目尚未保存角色卡配置", related_tools: ["
|
|
22
|
+
items.push({ section: "character_card", status: "blocking", message: "项目尚未保存角色卡配置", related_tools: ["upsert_character_profile"] });
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
25
|
items.push({ section: "character_card", status: review.sections.character_card?.ok ? "ok" : "blocking", message: review.sections.character_card?.ok ? "角色卡配置通过校验" : "角色卡配置存在错误", related_tools: ["validate_character_card_config", "validate_greetings"] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-checklist.js","sourceRoot":"","sources":["../../src/core/delivery-checklist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,mBAAmB,CAAC;AAoBpF,MAAM,UAAU,uBAAuB,CAAC,KAA0E;IAChH,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAE1C,MAAM;IACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,8BAA8B,EAAE,aAAa,EAAE,CAAC,8BAA8B,EAAE,sCAAsC,CAAC,EAAE,CAAC,CAAC;IAChM,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,gCAAgC,EAAE,+BAA+B,CAAC,EAAE,CAAC,CAAC;IACnQ,CAAC;IAED,YAAY;IACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"delivery-checklist.js","sourceRoot":"","sources":["../../src/core/delivery-checklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
const GUIDES = {
|
|
2
|
+
init_project: {
|
|
3
|
+
tool: "init_project",
|
|
4
|
+
purpose: "显式初始化 MCP project,适合空白目录首次使用。",
|
|
5
|
+
when_to_call: "用户刚开始一个新世界书或角色卡项目,且还没有 project_id 时。",
|
|
6
|
+
required_fields: ["name"],
|
|
7
|
+
example_input: { name: "孢子v0.0.1", kind: "character_card" },
|
|
8
|
+
common_mistakes: ["已有 project_id 时重复初始化导致项目分叉"],
|
|
9
|
+
next_tools: ["upsert_worldbook_entry", "upsert_character_profile", "ingest_text_source"],
|
|
10
|
+
},
|
|
11
|
+
upsert_worldbook_entry: {
|
|
12
|
+
tool: "upsert_worldbook_entry",
|
|
13
|
+
purpose: "用简化输入新增或更新单个世界书条目,MCP 自动补全完整 entry 结构。",
|
|
14
|
+
when_to_call: "AI 已写好某个条目的 comment、keys 和 content 时。",
|
|
15
|
+
required_fields: ["project_id", "comment", "content"],
|
|
16
|
+
example_input: { project_id: "project_xxx", comment: "原初异质", keys: ["原初异质", "异质", "根源力量"], content: "原初异质,没有人知道它从何而来。" },
|
|
17
|
+
common_mistakes: ["仍然手写完整 SillyTavern entry JSON", "同一条目反复换 comment 导致无法 upsert"],
|
|
18
|
+
next_tools: ["validate_worldbook_draft", "generate_worldbook_json"],
|
|
19
|
+
},
|
|
20
|
+
upsert_worldbook_entries: {
|
|
21
|
+
tool: "upsert_worldbook_entries",
|
|
22
|
+
purpose: "用简化输入批量新增或更新多个世界书条目。",
|
|
23
|
+
when_to_call: "AI 一次完成多个条目内容时。",
|
|
24
|
+
required_fields: ["project_id", "entries"],
|
|
25
|
+
example_input: { project_id: "project_xxx", entries: [{ comment: "原初异质", keys: ["异质"], content: "..." }] },
|
|
26
|
+
common_mistakes: ["传入完整导出 JSON 而不是简化条目数组"],
|
|
27
|
+
next_tools: ["validate_worldbook_draft", "generate_worldbook_json"],
|
|
28
|
+
},
|
|
29
|
+
upsert_character_profile: {
|
|
30
|
+
tool: "upsert_character_profile",
|
|
31
|
+
purpose: "用简化字段创建或更新角色卡人设配置,MCP 自动补齐角色卡默认字段。",
|
|
32
|
+
when_to_call: "用户需要导出角色卡,AI 已写好角色名、开场白或人设字段时。",
|
|
33
|
+
required_fields: ["project_id", "name"],
|
|
34
|
+
example_input: { project_id: "project_xxx", name: "孢子", first_mes: "...", alternate_greetings: ["..."] },
|
|
35
|
+
common_mistakes: ["手写完整 characterCardConfig", "未传 first_mes 就直接导出"],
|
|
36
|
+
next_tools: ["validate_character_card_config", "generate_character_card_json"],
|
|
37
|
+
},
|
|
2
38
|
get_worldbook_workflow: {
|
|
3
39
|
tool: "get_worldbook_workflow",
|
|
4
40
|
purpose: "根据用户任务类型返回推荐 MCP tool 调用流程。",
|
|
@@ -60,16 +96,7 @@ const GUIDES = {
|
|
|
60
96
|
required_fields: ["project_id"],
|
|
61
97
|
example_input: { project_id: "project_xxx", save: true },
|
|
62
98
|
common_mistakes: ["直接导出模板而不填写 content", "误以为这是 SillyTavern 最终 JSON"],
|
|
63
|
-
next_tools: ["
|
|
64
|
-
},
|
|
65
|
-
draft_worldbook_entries: {
|
|
66
|
-
tool: "draft_worldbook_entries",
|
|
67
|
-
purpose: "保存主 AI 填好的世界书 draft entries,并立即校验。",
|
|
68
|
-
when_to_call: "主 AI 已填写 draft.content 后。",
|
|
69
|
-
required_fields: ["project_id", "entries"],
|
|
70
|
-
example_input: { project_id: "project_xxx", entries: [] },
|
|
71
|
-
common_mistakes: ["content 仍是空模板", "绿灯条目没有 keys"],
|
|
72
|
-
next_tools: ["validate_worldbook_draft", "generate_worldbook_json"],
|
|
99
|
+
next_tools: ["upsert_worldbook_entry", "upsert_worldbook_entries", "update_worldbook_draft_entries"],
|
|
73
100
|
},
|
|
74
101
|
generate_worldbook_json: {
|
|
75
102
|
tool: "generate_worldbook_json",
|
|
@@ -78,25 +105,7 @@ const GUIDES = {
|
|
|
78
105
|
required_fields: ["project_id", "worldbook_name"],
|
|
79
106
|
example_input: { project_id: "project_xxx", worldbook_name: "世界书", overwrite: false },
|
|
80
107
|
common_mistakes: ["校验未通过就导出", "output_path 越界"],
|
|
81
|
-
next_tools: ["query_worldbook", "
|
|
82
|
-
},
|
|
83
|
-
create_character_card_template: {
|
|
84
|
-
tool: "create_character_card_template",
|
|
85
|
-
purpose: "创建基础 chara_card_v3 角色卡配置模板。",
|
|
86
|
-
when_to_call: "世界书 draft 完成并通过校验后,且用户需要角色卡。",
|
|
87
|
-
required_fields: ["name"],
|
|
88
|
-
example_input: { project_id: "project_xxx", name: "角色名", include_worldbook: true, greeting_count: 3 },
|
|
89
|
-
common_mistakes: ["未先完成世界书 draft", "把角色详细信息写进 description"],
|
|
90
|
-
next_tools: ["submit_character_card_config"],
|
|
91
|
-
},
|
|
92
|
-
submit_character_card_config: {
|
|
93
|
-
tool: "submit_character_card_config",
|
|
94
|
-
purpose: "保存主 AI 填好的角色卡配置。",
|
|
95
|
-
when_to_call: "主 AI 已填写 first_mes 和 alternate_greetings 后。",
|
|
96
|
-
required_fields: ["project_id", "config"],
|
|
97
|
-
example_input: { project_id: "project_xxx", config: { card: { name: "角色名", first_mes: "..." }, worldbook: { source: "project_draft" } } },
|
|
98
|
-
common_mistakes: ["first_mes 为空", "description 非空"],
|
|
99
|
-
next_tools: ["validate_character_card_config", "generate_character_card_json"],
|
|
108
|
+
next_tools: ["query_worldbook", "upsert_character_profile"],
|
|
100
109
|
},
|
|
101
110
|
generate_character_card_json: {
|
|
102
111
|
tool: "generate_character_card_json",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-usage-guide.js","sourceRoot":"","sources":["../../src/core/tool-usage-guide.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,GAAmC;IAC7C,
|
|
1
|
+
{"version":3,"file":"tool-usage-guide.js","sourceRoot":"","sources":["../../src/core/tool-usage-guide.ts"],"names":[],"mappings":"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"}
|
package/dist/core/workflow.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export function getWorkflow(input) {
|
|
2
2
|
const commonNotes = [
|
|
3
3
|
"生成 JSON 前必须调用 validate_worldbook_draft",
|
|
4
|
+
"推荐用 upsert_worldbook_entry / upsert_worldbook_entries 写条目,避免手写完整 JSON",
|
|
4
5
|
"网页搜索由宿主 AI 完成,MCP 只接收搜索摘要",
|
|
5
6
|
];
|
|
6
7
|
if (input.wants_html && !input.wants_character_card) {
|
|
@@ -38,7 +39,7 @@ export function getWorkflow(input) {
|
|
|
38
39
|
"plan_worldbook_entries",
|
|
39
40
|
"create_worldbook_draft_template",
|
|
40
41
|
"get_entry_template",
|
|
41
|
-
"
|
|
42
|
+
"upsert_worldbook_entries",
|
|
42
43
|
"validate_worldbook_draft",
|
|
43
44
|
"lint_project_content",
|
|
44
45
|
"create_final_review_report",
|
|
@@ -56,7 +57,7 @@ export function getWorkflow(input) {
|
|
|
56
57
|
"plan_worldbook_entries",
|
|
57
58
|
"create_worldbook_draft_template",
|
|
58
59
|
"get_entry_template",
|
|
59
|
-
"
|
|
60
|
+
"upsert_worldbook_entries",
|
|
60
61
|
"validate_worldbook_draft",
|
|
61
62
|
"lint_project_content",
|
|
62
63
|
"create_final_review_report",
|
|
@@ -65,7 +66,7 @@ export function getWorkflow(input) {
|
|
|
65
66
|
};
|
|
66
67
|
case "item_ability_equipment":
|
|
67
68
|
return {
|
|
68
|
-
workflow: withCharacterCard(input, ["get_entry_template", "
|
|
69
|
+
workflow: withCharacterCard(input, ["get_entry_template", "upsert_worldbook_entries", "validate_worldbook_draft", "lint_project_content", "create_final_review_report", "generate_worldbook_json"]),
|
|
69
70
|
notes: ["物品/能力/装备条目应保持 XML 包裹 YAML,并按触发策略设置 keys", ...commonNotes],
|
|
70
71
|
};
|
|
71
72
|
case "style_extraction":
|
|
@@ -75,7 +76,7 @@ export function getWorkflow(input) {
|
|
|
75
76
|
};
|
|
76
77
|
case "chapter_extraction":
|
|
77
78
|
return {
|
|
78
|
-
workflow: ["ingest_text_source", "create_chapter_extraction_outline", "submit_extraction_result", "plan_worldbook_entries", "
|
|
79
|
+
workflow: ["ingest_text_source", "create_chapter_extraction_outline", "submit_extraction_result", "plan_worldbook_entries", "upsert_worldbook_entries", "validate_worldbook_draft"],
|
|
79
80
|
notes: ["章节提取应保留事件因果和角色状态变化,避免流水账", ...commonNotes],
|
|
80
81
|
};
|
|
81
82
|
case "modify_existing":
|
|
@@ -103,7 +104,7 @@ function extractionWorkflow(sourceTool) {
|
|
|
103
104
|
"plan_worldbook_entries",
|
|
104
105
|
"create_worldbook_draft_template",
|
|
105
106
|
"get_entry_template",
|
|
106
|
-
"
|
|
107
|
+
"upsert_worldbook_entries",
|
|
107
108
|
"validate_worldbook_draft",
|
|
108
109
|
"lint_project_content",
|
|
109
110
|
"create_final_review_report",
|
|
@@ -116,11 +117,10 @@ function withCharacterCard(input, workflow) {
|
|
|
116
117
|
return workflow;
|
|
117
118
|
return [
|
|
118
119
|
...workflow,
|
|
119
|
-
"
|
|
120
|
+
"upsert_character_profile",
|
|
120
121
|
...(input.wants_mvu ? ["create_mvu_schema_template", "submit_mvu_config", "validate_mvu_config", "build_mvu_assets"] : []),
|
|
121
122
|
...(input.wants_html ? ["create_html_beautify_template", "submit_html_beautify_config", "validate_html_beautify_config", "build_html_beautify_assets"] : []),
|
|
122
123
|
...(input.wants_ejs ? ["create_ejs_template", "submit_ejs_config", "validate_ejs_config", "build_ejs_entries"] : []),
|
|
123
|
-
"submit_character_card_config",
|
|
124
124
|
"validate_character_card_config",
|
|
125
125
|
"generate_character_card_json",
|
|
126
126
|
"query_character_card",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/core/workflow.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,MAAM,WAAW,GAAG;QAClB,wCAAwC;QACxC,2BAA2B;KAC5B,CAAC;IACF,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACpD,WAAW,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,WAAW,CAAC;QACjB,KAAK,uBAAuB;YAC1B,OAAO;gBACL,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;gBAC5E,KAAK,EAAE,WAAW;aACnB,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;gBAC7E,KAAK,EAAE,WAAW;aACnB,CAAC;QACJ,KAAK,gBAAgB,CAAC;QACtB,KAAK,oBAAoB;YACvB,OAAO;gBACL,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE;oBACjC,8BAA8B;oBAC9B,8BAA8B;oBAC9B,gCAAgC;oBAChC,0BAA0B;oBAC1B,wBAAwB;oBACxB,iCAAiC;oBACjC,oBAAoB;oBACpB,
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/core/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EntryType, PositionName, WorldbookDraftEntry } from "../schemas/worldbook-draft.js";
|
|
2
|
+
export interface SimplifiedWorldbookEntryInput {
|
|
3
|
+
comment: string;
|
|
4
|
+
content: string;
|
|
5
|
+
keys?: string[];
|
|
6
|
+
secondary_keys?: string[];
|
|
7
|
+
secondaryKeys?: string[];
|
|
8
|
+
entry_type?: EntryType;
|
|
9
|
+
entryType?: EntryType;
|
|
10
|
+
position?: PositionName;
|
|
11
|
+
order?: number;
|
|
12
|
+
constant?: boolean;
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
depth?: number;
|
|
15
|
+
scan_depth?: number | null;
|
|
16
|
+
scanDepth?: number | null;
|
|
17
|
+
character_name?: string;
|
|
18
|
+
characterName?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function normalizeWorldbookEntry(input: SimplifiedWorldbookEntryInput, existing?: WorldbookDraftEntry): WorldbookDraftEntry;
|
|
21
|
+
export declare function upsertWorldbookDraftEntry(entries: WorldbookDraftEntry[] | undefined, input: SimplifiedWorldbookEntryInput, options?: {
|
|
22
|
+
matchByKeys?: boolean;
|
|
23
|
+
}): {
|
|
24
|
+
entries: WorldbookDraftEntry[];
|
|
25
|
+
created: boolean;
|
|
26
|
+
index: number;
|
|
27
|
+
entry: WorldbookDraftEntry;
|
|
28
|
+
};
|