{ "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": [] }