Files
novel_world/.vscode/workflows/zhangjie.json
锦麟 王 a3d6053775 feat: 完成A线详细大纲
- 加入巫族首领摄司的设定(开放祖庭、贡献值制度)
- 修正人族演化路径:底层献祭品→贡献值→祖庭核心→导演终局
- 修正终局之战逻辑:人族制造假情报,坐收渔利
- 修正刑天结局:至死都是巫族,战死沙场
- 修正九黎阙设定:后期配角,主动被寄生50年后自爆
- 核心主题:人族成长=否定血脉论

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 15:52:59 +08:00

499 lines
40 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "workflow-1769567722528",
"name": "zhangjie",
"version": "1.0.0",
"nodes": [
{
"id": "start-node-default",
"type": "start",
"name": "start-node-default",
"position": {
"x": 100,
"y": 200
},
"data": {
"label": "Start"
}
},
{
"id": "check-project-structure",
"type": "subAgent",
"name": "check-project-structure",
"position": {
"x": 350,
"y": 200
},
"data": {
"description": "检查项目结构完整性",
"prompt": "检查当前项目目录结构,确认是否存在以下必需文件:\n\n1. 设定文件 (sheding.json)\n2. 大纲文件 (dagang.json)\n3. 进度文件 (progress.md)\n4. 细纲目录 (xigang/)\n5. 章节目录 (chapters/)\n\n对于每个文件报告\n- 是否存在\n- 如果存在,文件内容是否完整有效\n- 如果不存在或缺失内容,明确说明需要补充什么\n\n如果所有必需文件都存在且完整输出\"项目结构完整\"。如果有缺失,输出\"项目结构不完整\"并列出缺失项目。",
"model": "sonnet",
"outputPorts": 1
}
},
{
"id": "structure-check",
"type": "ifElse",
"name": "structure-check",
"position": {
"x": 650,
"y": 200
},
"data": {
"branches": [
{
"id": "branch-0",
"label": "结构完整",
"condition": "项目结构完整,所有必需文件存在"
},
{
"id": "branch-1",
"label": "结构缺失",
"condition": "项目结构不完整,缺少必需文件"
}
],
"outputPorts": 2
}
},
{
"id": "prompt-missing-files",
"type": "prompt",
"name": "prompt-missing-files",
"position": {
"x": 950,
"y": 350
},
"data": {
"label": "提示补充缺失文件",
"prompt": "您的小说项目缺少必需的文件。请先完成以下工作后再使用此工作流:\n\n**缺失文件处理**\n1. 如果缺少设定文件,请先运行设定工作流(sheding.json工作流)\n2. 如果缺少大纲文件,请先运行大纲工作流(dagang.json工作流)\n3. 如果缺少细纲,请先运行细纲工作流(xigang.json工作流)\n\n**模板文件**\n- 项目模板已保存在 templates/ 目录下\n- 复制对应的 .template 文件并填写内容\n\n**文件位置说明**\n- sheding.json: 项目根目录/设定/\n- dagang.json: 项目根目录/大纲/\n- progress.md: 项目根目录/\n- 细纲文件: 项目根目录/细纲/\n- 章节文件: 项目根目录/章节/\n\n请补充完整后重新运行。",
"variables": {}
}
},
{
"id": "end-incomplete",
"type": "end",
"name": "end-incomplete",
"position": {
"x": 1250,
"y": 350
},
"data": {
"label": "待补充"
}
},
{
"id": "analyze-progress",
"type": "subAgent",
"name": "analyze-progress_zj",
"position": {
"x": 950,
"y": 50
},
"data": {
"description": "分析进度找到未完成的细纲",
"prompt": "分析项目进度,找出需要编写的章节:\n\n1. 读取 progress.md 文件,获取当前创作进度\n2. 读取所有细纲文件 (xigang/目录下的 *.json 文件)\n3. 读取已有章节文件 (chapters/目录下的 *.md 文件)\n4. 对比细纲和已完成章节,找出:\n - 哪些细纲已有对应章节\n - 哪些细纲尚未编写章节\n - 下一个需要编写的章节是哪个\n\n输出格式\n```\n当前进度第X章\n待编写章节列表\n- 第Y章[细纲文件名] - [章节标题]\n- 第Z章[细纲文件名] - [章节标题]\n...\n\n下一步编写第Y章 [章节标题]\n```",
"model": "sonnet",
"outputPorts": 1,
"name": "analyze-progress_zj"
}
},
{
"id": "has-unwritten-check",
"type": "ifElse",
"name": "has-unwritten-check",
"position": {
"x": 1250,
"y": 50
},
"data": {
"branches": [
{
"id": "branch-0",
"label": "有未完成章节",
"condition": "存在需要编写的章节"
},
{
"id": "branch-1",
"label": "全部完成",
"condition": "所有细纲对应的章节已全部完成"
}
],
"outputPorts": 2
}
},
{
"id": "chapter-divider",
"type": "subAgent",
"name": "chapter-divider",
"position": {
"x": 1550,
"y": 50
},
"data": {
"description": "章节划分与准备",
"prompt": "为下一个待编写的章节进行详细规划:\n\n1. 读取对应的细纲文件内容\n2. 分析细纲中的场景划分\n3. 如果一个细纲对应多个章节,进行合理的章节切分\n4. 确定本章节的具体内容范围:\n - 起始场景\n - 结束场景\n - 包含的情节点\n5. 确定章节标题\n\n输出章节规划文档包含\n- 章节编号和标题\n- 本章节包含的场景列表\n- 每个场景的起止点\n- 预计字数范围",
"model": "sonnet",
"outputPorts": 1
}
},
{
"id": "write-chapter",
"type": "skill",
"name": "novel-writer",
"position": {
"x": 1850,
"y": 50
},
"data": {
"name": "novel-writer",
"description": "Specialized AI skill for writing novel chapters from detailed outlines. Creates engaging, well-written chapter content that adheres to established settings, plot outlines, and character profiles.",
"scope": "project",
"validationStatus": "missing",
"outputPorts": 1,
"skillPath": ""
}
},
{
"id": "rhetoric-optimize",
"type": "subAgent",
"name": "rhetoric-optimize",
"position": {
"x": 2150,
"y": 50
},
"data": {
"description": "修辞优化",
"prompt": "对刚完成的章节进行修辞优化,提升文学质量:\n\n优化目标\n1. **句式多样性**:避免重复的句式结构,增加长短句变化\n2. **词汇丰富性**:替换重复、平淡的词汇\n3. **描写生动性**:增强场景描写的画面感和代入感\n4. **节奏感**:调整段落长短,控制阅读节奏\n5. **修辞手法**:适当运用比喻、拟人、排比等修辞\n\n注意事项\n- 保持原有情节和对话不变\n- 不改变角色性格和说话风格\n- 不增加新情节点\n- 优化后的文字应更流畅自然,更有文学性\n\n输出优化后的完整章节内容。",
"model": "opus",
"outputPorts": 1
}
},
{
"id": "de-ai-check",
"type": "subAgent",
"name": "de-ai-check",
"position": {
"x": 2450,
"y": 50
},
"data": {
"description": "去除AI味检查与修改",
"prompt": "检查并去除章节中的AI写作痕迹去AI味\n\n检查项目\n1. **过度解释**:删除对显而易见事物的解释\n2. **陈词滥调**识别并替换常见AI写作套话\n3. **情感过度表达**:删除过于直白的情感描述词\n4. **句式模式**识别和打破典型的AI句式模式\n5. **对话标签**简化said/ask等标签用动作代替\n6. **形容词堆砌**:减少过多的形容词修饰\n7. **说教感**:删除过于明显的道德说教\n\n修改原则\n- 让文字更简洁、自然\n- 增加潜台词和留白\n- 用具体细节代替抽象描述\n- 保持情节完整性\n\n输出去AI味后的章节内容以及修改说明。",
"model": "opus",
"outputPorts": 1
}
},
{
"id": "content-review",
"type": "subAgent",
"name": "content-review",
"position": {
"x": 2750,
"y": 50
},
"data": {
"description": "内容审核",
"prompt": "对完成的章节进行内容合规性审核:\n\n审核项目\n1. **违规内容检查**\n - 暴力血腥描写是否过界\n - 色情低俗内容\n - 政治敏感内容\n - 违法犯罪诱导\n\n2. **逻辑一致性检查**\n - 与设定(sheding.json)是否冲突\n - 与大纲(dagang.json)是否一致\n - 与细纲(xigang.json)是否匹配\n - 与已完成章节是否存在矛盾\n - 人物行为是否符合角色设定\n\n3. **价值观检查**\n - 是否传达不当价值观\n - 是否存在歧视性内容\n\n审核结果\n- 如果发现违规或不一致,详细列出问题位置和建议修改方案\n- 如果审核通过,输出\"审核通过\"并给出质量评价",
"model": "sonnet",
"outputPorts": 1
}
},
{
"id": "review-pass-check",
"type": "ifElse",
"name": "review-pass-check",
"position": {
"x": 3050,
"y": 50
},
"data": {
"branches": [
{
"id": "branch-0",
"label": "需要修改",
"condition": "审核发现问题,需要修改"
},
{
"id": "branch-1",
"label": "审核通过",
"condition": "审核通过,可以保存章节"
}
],
"outputPorts": 2
}
},
{
"id": "revise-chapter",
"type": "subAgent",
"name": "revise-chapter",
"position": {
"x": 3350,
"y": 200
},
"data": {
"description": "根据审核意见修改章节",
"prompt": "根据审核反馈的问题,对章节进行修改:\n\n修改原则\n1. 逐一解决审核中发现的问题\n2. 保持章节整体风格和流畅性\n3. 修改后再次检查是否引入新问题\n4. 确保修改后的内容:\n - 符合设定\n - 符合大纲\n - 符合细纲\n - 逻辑自洽\n - 无违规内容\n\n输出修改后的完整章节内容。",
"model": "opus",
"outputPorts": 1
}
},
{
"id": "save-chapter",
"type": "subAgent",
"name": "save-chapter",
"position": {
"x": 3350,
"y": -100
},
"data": {
"description": "保存章节并更新进度",
"prompt": "完成以下操作:\n\n1. **保存章节文件**\n - 将最终章节内容保存到 chapters/ 目录\n - 文件命名格式第X章-标题.md\n - 确保文件格式规范,包含章节标题和内容\n\n2. **更新进度文件**\n - 更新 progress.md 中的章节完成状态\n - 更新当前进度位置\n - 更新完成百分比\n - 记录本章字数\n\n3. **生成完成报告**\n - 章节编号和标题\n - 字数统计\n - 本章概要\n - 当前整体进度\n - 下一步待处理章节\n\n执行后输出\"章节已保存\"。",
"model": "sonnet",
"outputPorts": 1
}
},
{
"id": "has-more-check",
"type": "ifElse",
"name": "has-more-check",
"position": {
"x": 3650,
"y": -100
},
"data": {
"branches": [
{
"id": "branch-0",
"label": "继续下一章",
"condition": "还有未完成的细纲章节"
},
{
"id": "branch-1",
"label": "全部完成",
"condition": "所有细纲对应的章节已全部完成"
}
],
"outputPorts": 2
}
},
{
"id": "sync-check",
"type": "subAgent",
"name": "sync-check",
"position": {
"x": 3650,
"y": 200
},
"data": {
"description": "细纲与章节对照修改",
"prompt": "对已完成的章节进行细纲与内容的对照检查:\n\n检查项目\n1. 章节实际内容是否完全覆盖细纲中的所有场景\n2. 是否有细纲中设定但未在章节中体现的内容\n3. 章节中是否有超出细纲的原创内容\n4. 根据章节实际执行情况,判断是否需要调整细纲\n\n处理方式\n- 如果章节内容有更好创意,建议更新细纲\n- 如果细纲内容未完全体现,建议补充章节或说明原因\n- 确保细纲和章节最终版本的一致性\n\n输出对照报告和任何需要的更新建议。",
"model": "sonnet",
"outputPorts": 1
}
},
{
"id": "end-node-default",
"type": "end",
"name": "end-node-default",
"position": {
"x": 3950,
"y": -100
},
"data": {
"label": "全部完成"
}
}
],
"connections": [
{
"id": "c1",
"from": "start-node-default",
"to": "check-project-structure",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c2",
"from": "check-project-structure",
"to": "structure-check",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c3",
"from": "structure-check",
"to": "analyze-progress",
"fromPort": "branch-0",
"toPort": "input"
},
{
"id": "c4",
"from": "structure-check",
"to": "prompt-missing-files",
"fromPort": "branch-1",
"toPort": "input"
},
{
"id": "c5",
"from": "prompt-missing-files",
"to": "end-incomplete",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c6",
"from": "analyze-progress",
"to": "has-unwritten-check",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c7",
"from": "has-unwritten-check",
"to": "chapter-divider",
"fromPort": "branch-0",
"toPort": "input"
},
{
"id": "c8",
"from": "has-unwritten-check",
"to": "sync-check",
"fromPort": "branch-1",
"toPort": "input"
},
{
"id": "c9",
"from": "chapter-divider",
"to": "write-chapter",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c10",
"from": "write-chapter",
"to": "rhetoric-optimize",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c11",
"from": "rhetoric-optimize",
"to": "de-ai-check",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c12",
"from": "de-ai-check",
"to": "content-review",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c13",
"from": "content-review",
"to": "review-pass-check",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c14",
"from": "review-pass-check",
"to": "revise-chapter",
"fromPort": "branch-0",
"toPort": "input"
},
{
"id": "c15",
"from": "review-pass-check",
"to": "save-chapter",
"fromPort": "branch-1",
"toPort": "input"
},
{
"id": "c16",
"from": "revise-chapter",
"to": "content-review",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c17",
"from": "save-chapter",
"to": "has-more-check",
"fromPort": "output",
"toPort": "input"
},
{
"id": "c18",
"from": "has-more-check",
"to": "chapter-divider",
"fromPort": "branch-0",
"toPort": "input"
},
{
"id": "c19",
"from": "has-more-check",
"to": "end-node-default",
"fromPort": "branch-1",
"toPort": "input"
},
{
"id": "c20",
"from": "sync-check",
"to": "end-node-default",
"fromPort": "output",
"toPort": "input"
}
],
"createdAt": "2026-01-28T02:35:22.528Z",
"updatedAt": "2026-01-28T02:35:22.528Z",
"conversationHistory": {
"schemaVersion": "1.0.0",
"messages": [
{
"id": "25cd34ae-dae3-47e1-8b36-682691586572",
"sender": "user",
"content": "这是一个细纲转化成小说章节的工作流,检查当前项目结构,是否存在 设定 大纲 进度 和细纲不存在要求作者补充存在的话检查进度和细纲找到未完成的进度对应的细纲文件然后开始按照细纲进行章节划分按照章节划分开始进行章节内容的编写这里需要一个小说编写的skills和一个rule每个章节必须经过修辞优化去AI味和内容审核必须不违规不违背逻辑符合大纲细纲和设定直到全部完成细纲进度和章节内容互相对照修改",
"timestamp": "2026-01-28T02:22:45.319Z"
},
{
"id": "252db58a-681b-4d38-9d42-74bd23832fb9",
"sender": "ai",
"content": "您的请求需要明确以下信息才能完成工作流设计:\n\n1. **项目目录结构** - 当前工作流需要知道项目的具体路径。请提供项目根目录路径。\n\n2. **小说编写Skill名称** - 您提到需要\"一个小说编写的skills和一个rule\"。请问:\n - 您是否已经创建了小说编写的Skill如果有请提供Skill名称\n - 如果没有是否需要我指导您创建这个Skill\n\n3. **文件结构规范** - 请确认项目中以下文件的存储位置和命名规则:\n - 设定文件存储在哪个目录?(如 /settings 或 /设定)\n - 大纲文件名是什么?(如 outline.md 或 大纲.md\n - 细纲文件存储在哪个目录?(如 /detailed-outline 或 /细纲)\n - 进度文件名是什么?(如 progress.json 或 进度.json\n - 章节内容输出到哪个目录?(如 /chapters 或 /章节)\n\n4. **细纲与章节对应关系** - 细纲如何对应到章节?是一对一,还是一个细纲包含多个章节?\n\n5. **进度文件格式** - 进度文件是JSON还是其他格式包含哪些字段\n\n请提供以上信息我将为您设计完整的工作流。",
"timestamp": "2026-01-28T02:22:45.319Z"
},
{
"id": "msg-1769567097430-0.8306819196297873",
"sender": "user",
"content": "并没有创建这个skill你可以先创建这个skill后续如果有其他的再替换文件结构规范也需要你暂时生成一份。@dagang.json @xighang.json @ sheding,json 细纲应该是一对多章节 进度应该是md",
"timestamp": "2026-01-28T02:24:57.430Z"
},
{
"id": "ai-1769567097430-0.6384724427190617",
"sender": "ai",
"content": "让我先查看用户提到的文件,了解当前项目结构。\n\n现在我已经了解了项目的结构。让我检查是否有Skills目录\n\n现在我需要设计完整的工作流。基于用户需求这是一个将细纲转化为小说章节的完整工作流包括\n\n1. 检查项目结构(设定、大纲、进度、细纲)\n2. 检查进度,找到未完成的细纲\n3. 按细纲进行章节划分\n4. 编写章节内容使用novel-writer Skill\n5. 修辞优化\n6. 去AI味检查\n7. 内容审核\n8. 循环直到完成```json\n{\n \"status\": \"success\",\n \"message\": \"已创建小说编写Skill和文件结构模板并设计了完整的细纲转化章节工作流\",\n \"values\": {\n \"workflow\": {\n \"id\": \"workflow-1769566610585\",\n \"name\": \"novel-chapter-generator\",\n \"version\": \"1.0.0\",\n \"description\": \"细纲转化成小说章节的工作流\",\n \"nodes\": [\n {\n \"id\": \"start-node-default\",\n \"type\": \"start\",\n \"name\": \"start-node-default\",\n \"position\": {\n \"x\": 100,\n \"y\": 200\n },\n \"data\": {\n \"label\": \"Start\"\n }\n },\n {\n \"id\": \"check-project-structure\",\n \"type\": \"subAgent\",\n \"name\": \"check-project-structure\",\n \"position\": {\n \"x\": 350,\n \"y\": 200\n },\n \"data\": {\n \"description\": \"检查项目结构完整性\",\n \"prompt\": \"检查当前项目目录结构,确认是否存在以下必需文件:\\n\\n1. 设定文件 (sheding.json)\\n2. 大纲文件 (dagang.json) \\n3. 进度文件 (progress.md)\\n4. 细纲目录 (xigang/)\\n5. 章节目录 (chapters/)\\n\\n对于每个文件报告\\n- 是否存在\\n- 如果存在,文件内容是否完整有效\\n- 如果不存在或缺失内容,明确说明需要补充什么\\n\\n如果所有必需文件都存在且完整输出\\\"项目结构完整\\\"。如果有缺失,输出\\\"项目结构不完整\\\"并列出缺失项目。\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"structure-check\",\n \"type\": \"ifElse\",\n \"name\": \"structure-check\",\n \"position\": {\n \"x\": 650,\n \"y\": 200\n },\n \"data\": {\n \"branches\": [\n {\n \"id\": \"branch-0\",\n \"label\": \"结构完整\",\n \"condition\": \"项目结构完整,所有必需文件存在\"\n },\n {\n \"id\": \"branch-1\",\n \"label\": \"结构缺失\",\n \"condition\": \"项目结构不完整,缺少必需文件\"\n }\n ],\n \"outputPorts\": 2\n }\n },\n {\n \"id\": \"prompt-missing-files\",\n \"type\": \"prompt\",\n \"name\": \"prompt-missing-files\",\n \"position\": {\n \"x\": 950,\n \"y\": 350\n },\n \"data\": {\n \"label\": \"提示补充缺失文件\",\n \"prompt\": \"您的小说项目缺少必需的文件。请先完成以下工作后再使用此工作流:\\n\\n**缺失文件处理**\\n1. 如果缺少设定文件,请先运行设定工作流(sheding.json工作流)\\n2. 如果缺少大纲文件,请先运行大纲工作流(dagang.json工作流)\\n3. 如果缺少细纲,请先运行细纲工作流(xigang.json工作流)\\n\\n**模板文件**\\n- 项目模板已保存在 templates/ 目录下\\n- 复制对应的 .template 文件并填写内容\\n\\n**文件位置说明**\\n- sheding.json: 项目根目录/设定/\\n- dagang.json: 项目根目录/大纲/\\n- progress.md: 项目根目录/\\n- 细纲文件: 项目根目录/细纲/\\n- 章节文件: 项目根目录/章节/\\n\\n请补充完整后重新运行。\",\n \"variables\": {}\n }\n },\n {\n \"id\": \"end-incomplete\",\n \"type\": \"end\",\n \"name\": \"end-incomplete\",\n \"position\": {\n \"x\": 1250,\n \"y\": 350\n },\n \"data\": {\n \"label\": \"待补充\"\n }\n },\n {\n \"id\": \"analyze-progress\",\n \"type\": \"subAgent\",\n \"name\": \"analyze-progress\",\n \"position\": {\n \"x\": 950,\n \"y\": 50\n },\n \"data\": {\n \"description\": \"分析进度找到未完成的细纲\",\n \"prompt\": \"分析项目进度,找出需要编写的章节:\\n\\n1. 读取 progress.md 文件,获取当前创作进度\\n2. 读取所有细纲文件 (xigang/目录下的 *.json 文件)\\n3. 读取已有章节文件 (chapters/目录下的 *.md 文件)\\n4. 对比细纲和已完成章节,找出:\\n - 哪些细纲已有对应章节\\n - 哪些细纲尚未编写章节\\n - 下一个需要编写的章节是哪个\\n\\n输出格式\\n```\\n当前进度第X章\\n待编写章节列表\\n- 第Y章[细纲文件名] - [章节标题]\\n- 第Z章[细纲文件名] - [章节标题]\\n...\\n\\n下一步编写第Y章 [章节标题]\\n```\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"has-unwritten-check\",\n \"type\": \"ifElse\",\n \"name\": \"has-unwritten-check\",\n \"position\": {\n \"x\": 1250,\n \"y\": 50\n },\n \"data\": {\n \"branches\": [\n {\n \"id\": \"branch-0\",\n \"label\": \"有未完成章节\",\n \"condition\": \"存在需要编写的章节\"\n },\n {\n \"id\": \"branch-1\",\n \"label\": \"全部完成\",\n \"condition\": \"所有细纲对应的章节已全部完成\"\n }\n ],\n \"outputPorts\": 2\n }\n },\n {\n \"id\": \"chapter-divider\",\n \"type\": \"subAgent\",\n \"name\": \"chapter-divider\",\n \"position\": {\n \"x\": 1550,\n \"y\": 50\n },\n \"data\": {\n \"description\": \"章节划分与准备\",\n \"prompt\": \"为下一个待编写的章节进行详细规划:\\n\\n1. 读取对应的细纲文件内容\\n2. 分析细纲中的场景划分\\n3. 如果一个细纲对应多个章节,进行合理的章节切分\\n4. 确定本章节的具体内容范围:\\n - 起始场景\\n - 结束场景\\n - 包含的情节点\\n5. 确定章节标题\\n\\n输出章节规划文档包含\\n- 章节编号和标题\\n- 本章节包含的场景列表\\n- 每个场景的起止点\\n- 预计字数范围\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"write-chapter\",\n \"type\": \"skill\",\n \"name\": \"write-chapter\",\n \"position\": {\n \"x\": 1850,\n \"y\": 50\n },\n \"data\": {\n \"name\": \"novel-writer\",\n \"description\": \"Specialized AI skill for writing novel chapters from detailed outlines. Creates engaging, well-written chapter content that adheres to established settings, plot outlines, and character profiles.\",\n \"scope\": \"project\",\n \"validationStatus\": \"missing\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"rhetoric-optimize\",\n \"type\": \"subAgent\",\n \"name\": \"rhetoric-optimize\",\n \"position\": {\n \"x\": 2150,\n \"y\": 50\n },\n \"data\": {\n \"description\": \"修辞优化\",\n \"prompt\": \"对刚完成的章节进行修辞优化,提升文学质量:\\n\\n优化目标\\n1. **句式多样性**:避免重复的句式结构,增加长短句变化\\n2. **词汇丰富性**:替换重复、平淡的词汇\\n3. **描写生动性**:增强场景描写的画面感和代入感\\n4. **节奏感**:调整段落长短,控制阅读节奏\\n5. **修辞手法**:适当运用比喻、拟人、排比等修辞\\n\\n注意事项\\n- 保持原有情节和对话不变\\n- 不改变角色性格和说话风格\\n- 不增加新情节点\\n- 优化后的文字应更流畅自然,更有文学性\\n\\n输出优化后的完整章节内容。\",\n \"model\": \"opus\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"de-ai-check\",\n \"type\": \"subAgent\",\n \"name\": \"de-ai-check\",\n \"position\": {\n \"x\": 2450,\n \"y\": 50\n },\n \"data\": {\n \"description\": \"去除AI味检查与修改\",\n \"prompt\": \"检查并去除章节中的AI写作痕迹去AI味\\n\\n检查项目\\n1. **过度解释**:删除对显而易见事物的解释\\n2. **陈词滥调**识别并替换常见AI写作套话\\n3. **情感过度表达**:删除过于直白的情感描述词\\n4. **句式模式**识别和打破典型的AI句式模式\\n5. **对话标签**简化said/ask等标签用动作代替\\n6. **形容词堆砌**:减少过多的形容词修饰\\n7. **说教感**:删除过于明显的道德说教\\n\\n修改原则\\n- 让文字更简洁、自然\\n- 增加潜台词和留白\\n- 用具体细节代替抽象描述\\n- 保持情节完整性\\n\\n输出去AI味后的章节内容以及修改说明。\",\n \"model\": \"opus\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"content-review\",\n \"type\": \"subAgent\",\n \"name\": \"content-review\",\n \"position\": {\n \"x\": 2750,\n \"y\": 50\n },\n \"data\": {\n \"description\": \"内容审核\",\n \"prompt\": \"对完成的章节进行内容合规性审核:\\n\\n审核项目\\n1. **违规内容检查**\\n - 暴力血腥描写是否过界\\n - 色情低俗内容\\n - 政治敏感内容\\n - 违法犯罪诱导\\n\\n2. **逻辑一致性检查**\\n - 与设定(sheding.json)是否冲突\\n - 与大纲(dagang.json)是否一致\\n - 与细纲(xigang.json)是否匹配\\n - 与已完成章节是否存在矛盾\\n - 人物行为是否符合角色设定\\n\\n3. **价值观检查**\\n - 是否传达不当价值观\\n - 是否存在歧视性内容\\n\\n审核结果\\n- 如果发现违规或不一致,详细列出问题位置和建议修改方案\\n- 如果审核通过,输出\\\"审核通过\\\"并给出质量评价\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"review-pass-check\",\n \"type\": \"ifElse\",\n \"name\": \"review-pass-check\",\n \"position\": {\n \"x\": 3050,\n \"y\": 50\n },\n \"data\": {\n \"branches\": [\n {\n \"id\": \"branch-0\",\n \"label\": \"需要修改\",\n \"condition\": \"审核发现问题,需要修改\"\n },\n {\n \"id\": \"branch-1\",\n \"label\": \"审核通过\",\n \"condition\": \"审核通过,可以保存章节\"\n }\n ],\n \"outputPorts\": 2\n }\n },\n {\n \"id\": \"revise-chapter\",\n \"type\": \"subAgent\",\n \"name\": \"revise-chapter\",\n \"position\": {\n \"x\": 3350,\n \"y\": 200\n },\n \"data\": {\n \"description\": \"根据审核意见修改章节\",\n \"prompt\": \"根据审核反馈的问题,对章节进行修改:\\n\\n修改原则\\n1. 逐一解决审核中发现的问题\\n2. 保持章节整体风格和流畅性\\n3. 修改后再次检查是否引入新问题\\n4. 确保修改后的内容:\\n - 符合设定\\n - 符合大纲\\n - 符合细纲\\n - 逻辑自洽\\n - 无违规内容\\n\\n输出修改后的完整章节内容。\",\n \"model\": \"opus\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"save-chapter\",\n \"type\": \"subAgent\",\n \"name\": \"save-chapter\",\n \"position\": {\n \"x\": 3350,\n \"y\": -100\n },\n \"data\": {\n \"description\": \"保存章节并更新进度\",\n \"prompt\": \"完成以下操作:\\n\\n1. **保存章节文件**\\n - 将最终章节内容保存到 chapters/ 目录\\n - 文件命名格式第X章-标题.md\\n - 确保文件格式规范,包含章节标题和内容\\n\\n2. **更新进度文件**\\n - 更新 progress.md 中的章节完成状态\\n - 更新当前进度位置\\n - 更新完成百分比\\n - 记录本章字数\\n\\n3. **生成完成报告**\\n - 章节编号和标题\\n - 字数统计\\n - 本章概要\\n - 当前整体进度\\n - 下一步待处理章节\\n\\n执行后输出\\\"章节已保存\\\"。\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"has-more-check\",\n \"type\": \"ifElse\",\n \"name\": \"has-more-check\",\n \"position\": {\n \"x\": 3650,\n \"y\": -100\n },\n \"data\": {\n \"branches\": [\n {\n \"id\": \"branch-0\",\n \"label\": \"继续下一章\",\n \"condition\": \"还有未完成的细纲章节\"\n },\n {\n \"id\": \"branch-1\",\n \"label\": \"全部完成\",\n \"condition\": \"所有细纲对应的章节已全部完成\"\n }\n ],\n \"outputPorts\": 2\n }\n },\n {\n \"id\": \"sync-check\",\n \"type\": \"subAgent\",\n \"name\": \"sync-check\",\n \"position\": {\n \"x\": 3650,\n \"y\": 200\n },\n \"data\": {\n \"description\": \"细纲与章节对照修改\",\n \"prompt\": \"对已完成的章节进行细纲与内容的对照检查:\\n\\n检查项目\\n1. 章节实际内容是否完全覆盖细纲中的所有场景\\n2. 是否有细纲中设定但未在章节中体现的内容\\n3. 章节中是否有超出细纲的原创内容\\n4. 根据章节实际执行情况,判断是否需要调整细纲\\n\\n处理方式\\n- 如果章节内容有更好创意,建议更新细纲\\n- 如果细纲内容未完全体现,建议补充章节或说明原因\\n- 确保细纲和章节最终版本的一致性\\n\\n输出对照报告和任何需要的更新建议。\",\n \"model\": \"sonnet\",\n \"outputPorts\": 1\n }\n },\n {\n \"id\": \"end-node-default\",\n \"type\": \"end\",\n \"name\": \"end-node-default\",\n \"position\": {\n \"x\": 3950,\n \"y\": -100\n },\n \"data\": {\n \"label\": \"全部完成\"\n }\n }\n ],\n \"connections\": [\n {\n \"id\": \"c1\",\n \"from\": \"start-node-default\",\n \"to\": \"check-project-structure\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c2\",\n \"from\": \"check-project-structure\",\n \"to\": \"structure-check\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c3\",\n \"from\": \"structure-check\",\n \"to\": \"analyze-progress\",\n \"fromPort\": \"branch-0\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c4\",\n \"from\": \"structure-check\",\n \"to\": \"prompt-missing-files\",\n \"fromPort\": \"branch-1\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c5\",\n \"from\": \"prompt-missing-files\",\n \"to\": \"end-incomplete\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c6\",\n \"from\": \"analyze-progress\",\n \"to\": \"has-unwritten-check\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c7\",\n \"from\": \"has-unwritten-check\",\n \"to\": \"chapter-divider\",\n \"fromPort\": \"branch-0\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c8\",\n \"from\": \"has-unwritten-check\",\n \"to\": \"sync-check\",\n \"fromPort\": \"branch-1\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c9\",\n \"from\": \"chapter-divider\",\n \"to\": \"write-chapter\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c10\",\n \"from\": \"write-chapter\",\n \"to\": \"rhetoric-optimize\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c11\",\n \"from\": \"rhetoric-optimize\",\n \"to\": \"de-ai-check\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c12\",\n \"from\": \"de-ai-check\",\n \"to\": \"content-review\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c13\",\n \"from\": \"content-review\",\n \"to\": \"review-pass-check\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c14\",\n \"from\": \"review-pass-check\",\n \"to\": \"revise-chapter\",\n \"fromPort\": \"branch-0\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c15\",\n \"from\": \"review-pass-check\",\n \"to\": \"save-chapter\",\n \"fromPort\": \"branch-1\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c16\",\n \"from\": \"revise-chapter\",\n \"to\": \"content-review\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c17\",\n \"from\": \"save-chapter\",\n \"to\": \"has-more-check\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c18\",\n \"from\": \"has-more-check\",\n \"to\": \"chapter-divider\",\n \"fromPort\": \"branch-0\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c19\",\n \"from\": \"has-more-check\",\n \"to\": \"end-node-default\",\n \"fromPort\": \"branch-1\",\n \"toPort\": \"input\"\n },\n {\n \"id\": \"c20\",\n \"from\": \"sync-check\",\n \"to\": \"end-node-default\",\n \"fromPort\": \"output\",\n \"toPort\": \"input\"\n }\n ],\n \"createdAt\": \"2026-01-28T00:00:00Z\",\n \"updatedAt\": \"2026-01-28T00:00:00Z\",\n \"conversationHistory\": {\n \"schemaVersion\": \"1.0.0\",\n \"messages\": [\n {\n \"id\": \"msg-1\",\n \"sender\": \"user\",\n \"content\": \"这是一个细纲转化成小说章节的工作流检查当前项目结构是否存在设定、大纲、进度和细纲不存在要求作者补充存在的话检查进度和细纲找到未完成的进度对应的细纲文件然后开始按照细纲进行章节划分按照章节划分开始进行章节内容的编写这里需要一个小说编写的skills和一个rule每个章节必须经过修辞优化去AI味和内容审核必须不违规不违背逻辑符合大纲细纲和设定直到全部完成细纲进度和章节内容互相对照修改\",\n \"timestamp\": \"2026-01-28T00:00:00Z\"\n }\n ],\n \"currentIteration\": 1,\n \"maxIterations\": 20,\n \"createdAt\": \"2026-01-28T00:00:00Z\",\n \"updatedAt\": \"2026-01-28T00:00:00Z\"\n },\n \"subAgentFlows\": []\n }\n }\n}\n```\n\n已完成。已创建\n\n1. **Skill文件** - `.claude/skills/novel-writer.md`:小说编写专用技能\n\n2. **模板文件** - `templates/` 目录下:\n - `sheding.json.template` - 设定文件模板\n - `dagang.json.template` - 大纲文件模板\n - `xigang.json.template` - 细纲文件模板\n - `progress.md.template` - 进度文件模板\n\n3. **工作流设计** - 包含完整的章节生成流程:\n - 项目结构检查\n - 进度分析(找出未完成章节)\n - 章节划分\n - 使用novel-writer Skill编写\n - 修辞优化\n - 去AI味检查\n - 内容审核(逻辑+违规检查)\n - 循环直到全部完成\n - 细纲与章节对照修改\n\n**注意**Skill节点的validationStatus设为\"missing\"是因为Skill需要在实际运行时由系统验证。Skill名称\"novel-writer\"与创建的文件名匹配。",
"timestamp": "2026-01-28T02:24:57.430Z",
"isLoading": false,
"toolInfo": null
},
{
"id": "25aa5feb-09de-49be-b0d6-387f93bf3e1e",
"sender": "user",
"content": "写入到文件中注意是否是正确的workflow写法",
"timestamp": "2026-01-28T02:32:06.755Z"
},
{
"id": "49363821-3ac9-465c-84f0-1ed087d8ce16",
"sender": "ai",
"content": "已将工作流写入文件",
"timestamp": "2026-01-28T02:32:06.755Z"
}
],
"currentIteration": 2,
"maxIterations": 20,
"createdAt": "2026-01-28T02:16:50.585Z",
"updatedAt": "2026-01-28T02:32:06.755Z",
"sessionId": "6a6f7134-a38b-41a3-b209-ed66c5def32f"
},
"subAgentFlows": []
}