AI Agent与Markdown结合:结构化叙事创作新范式
1. 项目概述用AI Agent和Markdown构建你的故事世界如果你是一位小说创作者、游戏编剧或者任何需要构建复杂叙事内容的人那么你肯定体会过那种“信息过载”的痛。人物设定散落在笔记软件里世界观设定在思维导图中情节大纲在文档里写着写着就忘了某个配角的名字或者前后设定矛盾。传统的写作工具无论是Word、Scrivener还是Notion都难以解决一个核心问题如何让故事的所有元素人物、世界、情节真正地、动态地关联起来形成一个有机的整体最近我在一个名为Story Skills的开源项目中找到了一个令人眼前一亮的答案。它不是一个全新的写作软件而是一套基于Markdown和AI Agent的“技能”集合。简单来说它把写故事这件事拆解成了一套结构化的、可被AI理解和操作的“积木”。你不再是与一个模糊的AI对话而是通过一系列定义清晰的“技能”指挥AI帮你完成从故事立项、人物创建、世界构建到章节撰写的全流程并且所有产出都是结构化的Markdown文件。这意味着你的整个故事宇宙最终是一个清晰、可版本控制用Git管理、可被任何文本编辑器打开的文件夹。这个项目的核心魅力在于它的“结构化”和“互操作性”。它遵循一个开放的Agent Skills (SKILL.md)标准这使得这套技能可以无缝运行在 Claude Code、GitHub Copilot、Cursor、Windsurf、Gemini CLI 等几乎所有主流的AI编程助手或代码生成工具上。无论你习惯用哪个工具都能获得一致的、高质量的叙事辅助体验。接下来我将带你深入拆解这个项目分享如何将它融入你的创作流程并补充一些官方文档之外的实际操作心得和避坑指南。2. 核心设计思路为什么是Markdown AI Agent在深入实操之前理解 Story Skills 背后的设计哲学至关重要。这能帮你更好地利用它而不是被它预设的流程束缚。2.1 将叙事元素数据化传统写作中人物、地点、情节都是“文本描述”。而在 Story Skills 的体系里它们首先是一份“数据档案”。每个角色、每个地点、每个情节弧线都是一个独立的 Markdown 文件并且文件顶部有一块YAML Frontmatter。YAML Frontmatter 是一种用键值对存储元数据的格式在 Markdown 文件中用---包裹。例如一个角色文件可能长这样--- name: “塞拉·沃斯” role: “主角” species: “人类” occupation: “寻火者” motivation: “找回失落的永恒之火拯救濒临冻结的故乡” fears: “黑暗、被遗忘” key_relationships: - “阿托斯·雷恩: 导师” - “莉瑞尔: 妹妹失踪” story_arc: “从怀疑论者到信仰守护者” --- # 塞拉·沃斯 **外貌描述** 塞拉有一头被北风染成浅金色的长发通常用一根皮绳草草束起。她的眼睛是冻土般的灰蓝色眼角已有细纹那是常年眯眼眺望雪原留下的痕迹。身高中等但肩膀宽阔手掌因常年握持工具而布满老茧... **性格分析** 表面坚韧务实甚至有些愤世嫉俗内心深处却埋藏着对“意义”的深切渴望。她不信任宏大的叙事只相信亲手触摸到的东西...这样做的好处是显而易见的机器可读AI Agent 可以精准地解析出name、motivation、key_relationships等字段并在后续创作如写章节时准确地引用这些属性确保角色言行一致。关系可追溯key_relationships字段建立了角色间的链接。当 AI 为“阿托斯·雷恩”生成章节时它可以反向查询到自己是塞拉的“导师”从而塑造符合身份的对话和互动。结构统一所有角色、地点都遵循相似的模板极大降低了管理和检索成本。2.2 技能化的工作流Story Skills 没有做一个“大而全”的AI写作平台而是将创作流程分解为五个独立的Skill技能story-init项目脚手架。一键创建标准化的文件夹结构和核心文件。character-management角色管理。创建、更新、关联角色档案。worldbuilding世界构建。设计地点、物理/魔法法则、政治体系等。plot-structure情节结构。运用三幕剧、英雄之旅等经典模型规划故事线。chapter-writing章节写作。基于已有设定连贯地撰写具体章节。每个技能都是一个自包含的模块有明确的输入、输出和触发指令。这种设计模仿了人类创作者的工作模式我们很少同时处理所有事情而是分阶段、分模块地进行。当你对AI说“创建一个角色”character-management技能被激活它会引导你一步步输入信息并生成一个格式完美的角色文件。当你说“写下一章”chapter-writing技能会启动它自动扫描项目中的所有文件故事圣经、角色、世界、情节提取相关上下文确保新写的章节与所有既定设定保持一致。实操心得不要试图一次性让AI生成完美设定。技能化工作流的优势在于“迭代”。你可以先让story-init搭好架子然后用character-management快速生成几个核心角色的雏形接着用worldbuilding勾勒世界背景。之后在写章节的过程中如果发现某个角色动机不够清晰可以随时回头调用character-management技能进行补充和修改。所有技能产出的文件都是联动的后续的修改会自动被其他技能感知。2.3 基于开放标准的互操作性这是 Story Skills 最具前瞻性的一点。它没有绑定任何一家特定的AI厂商或封闭格式而是采用了SKILL.md这一开放标准由 agentskills.io 推动。一个 SKILL.md 文件本质上是一个“AI可执行的说明书”里面用自然语言和结构化指令定义了该技能的功能、输入参数、输出格式和调用方式。正因为遵循了这个标准同一套 Story Skills 才能同时在 Claude Code、Cursor、Windsurf 等不同环境中运行。这解决了AI工具生态碎片化的问题。作为创作者你的核心资产——那些结构化的Markdown故事文件——是独立于任何平台的。今天你用 Claude Code明天换到 Cursor你的项目和创作流程可以无缝迁移。3. 环境准备与技能安装详解理论讲完我们进入实战。首先你需要选择一个AI Agent环境。我将以目前体验最流畅的Claude Code和开发者中非常流行的Cursor为例详细说明安装和配置过程并对比其他平台。3.1 在 Claude Code 中安装最推荐Claude Code 是 Anthropic 推出的代码编辑器原生支持插件市场对 Story Skills 的集成最为友好。打开 Claude Code确保你已安装并登录。打开插件市场在编辑器底部的命令面板中输入/plugin marketplace并回车。添加 Story Skills 市场在 marketplace 界面执行以下命令来添加源/plugin marketplace add danjdewhurst/story-skills这行命令会告诉 Claude Code去danjdewhurst/story-skills这个GitHub仓库寻找插件。安装插件添加市场后你就能在列表里找到story-skills插件。执行安装命令/plugin install story-skillsstory-skills安装完成后Claude Code 就具备了全部五个故事技能。注意事项Claude Code 的插件是全局安装的。安装一次后在任何项目中你都可以直接使用“Start a new story”等指令无需重复安装。这非常方便。3.2 在 Cursor 中安装灵活轻量Cursor 是另一款强大的AI驱动编辑器它通过读取本地目录下的.agents/skills/文件夹来发现技能。克隆仓库在你的工作区或任意目录打开终端执行git clone https://github.com/danjdewhurst/story-skills.git复制技能文件进入你的故事项目根目录或者你希望技能生效的目录执行cp -r /path/to/story-skills/skills/* .agents/skills/重要/path/to/story-skills要替换为你实际克隆的路径。这条命令会在你的项目下创建一个.agents/skills/文件夹并将所有技能复制进去。验证安装在 Cursor 中打开该项目当你输入类似“create a character”的指令时Cursor 的 AI 应该能识别并调用对应的技能。实操心得在 Cursor 中我更推荐按项目安装而非全局安装。因为不同故事项目的设定可能差异巨大将技能放在项目目录下可以方便地用 Git 管理整个项目包括技能本身也避免了不同项目间技能版本的冲突。你可以为每个新故事项目都执行一次上述克隆和复制操作。3.3 在其他平台安装要点GitHub Copilot (VS Code)与 Cursor 类似它从.github/skills/或.agents/skills/目录读取技能。复制技能文件到相应目录即可。Copilot 的技能激活是隐式的当你的自然语言描述匹配技能定义时它会自动建议使用该技能。Windsurf复制到.windsurf/skills/项目级或~/.codeium/windsurf/skills/全局。Windsurf 的 Cascade 模式会自动匹配技能你也可以用skill-name语法手动调用。Gemini CLI使用其专用的gemini skills install命令进行安装支持从GitHub直接安装或本地链接管理起来最规范。通用方法对于任何宣称支持SKILL.md标准的工具万变不离其宗找到该工具约定的技能存放目录通常是~/.agents/skills/或项目内的.xxx/skills/把story-skills/skills/下的五个技能文件夹复制过去即可。4. 核心技能实操与创作流程安装完毕让我们从一个空白文件夹开始体验一次完整的微型故事创作流程。我会穿插讲解每个技能的关键操作和背后的逻辑。4.1 第一步故事初始化 (story-init)在任何空白目录中打开你的AI Agent以Claude Code为例直接输入Start a new story.story-init技能会被触发。AI会与你进行一系列对话通常包括故事标题The Last Ember示例体裁Fantasy奇幻核心主题Hope, Sacrifice, Memory希望、牺牲、记忆视角Third-person limited第三人称有限视角时态Past tense过去时完成对话后技能会自动生成如下项目结构the-last-ember/ ├── story.md ├── characters/ │ └── _index.md ├── worldbuilding/ │ ├── _index.md │ ├── locations/ │ └── systems/ ├── plot/ │ ├── _index.md │ ├── arcs/ │ └── timeline.md └── chapters/ └── _index.md关键文件解析story.md这是你的“故事圣经”。它包含了项目初始化时设定的所有元信息是其他所有技能的最高参考依据。务必保持此文件简洁、核心。各目录下的_index.md这是“注册表”或“目录”。例如characters/_index.md会以表格形式列出所有已创建的角色及其关键属性ID、名字、角色。当chapter-writing技能需要知道故事中有哪些角色时它会首先读取这个文件。避坑指南在初始化阶段不必追求完美答案。标题、主题等都可以后期在story.md中直接修改。重点是快速把架子搭起来。如果AI生成的文件夹名称不是你想要的例如它生成了my-story你可以直接在文件管理器里重命名只要保持内部文件相对路径不变即可。4.2 第二步创建角色 (character-management)现在我们来创建第一个角色。输入Create a character.AI会引导你完成角色塑造。这个过程非常细致远不止问个名字。典型流程如下基本信息姓名、年龄、种族、职业。外貌与气质物理特征、给人的第一印象。内在核心核心动机、最深层的恐惧、信仰或哲学观。背景故事关键经历、未愈合的创伤。人物弧光故事开始时的心态 vs 结束时的成长或转变方向。关系网络与其他角色即使尚未创建的关系。这里你可以引用一个“未来”的角色名AI会记录下这种单向关系待另一个角色创建后技能会自动尝试补全双向关系。完成后会在characters/目录下生成一个类似sera-voss.md的文件名字会转换为 kebab-case。同时characters/_index.md会自动更新加入新角色的条目。YAML Frontmatter 的妙用生成的角色文件中所有结构化信息都在YAML块里。例如key_relationships: - “arthos-raine: mentor” unresolved_questions: - “What truly happened to her sister Lirel?”这为后续的自动化提供了无限可能。你可以写一个简单的脚本扫描所有角色文件生成一张关系图或者让AI基于unresolved_questions来构思后续情节。4.3 第三步构建世界 (worldbuilding)有了角色我们需要一个舞台。输入Design a magic system.或者更具体点Create a location called “Frostfall Citadel”.worldbuilding技能同样会通过对话引导。对于魔法系统它会询问规则、代价、来源、社会影响等。对于地点则会涉及地理、气候、政治、重要地点、居民等。生成的文件会存放在worldbuilding/systems/或worldbuilding/locations/下。同样worldbuilding/_index.md会更新。经验技巧世界构建很容易陷入“过度设计”。对于中短篇故事建议遵循“冰山原则”。只详细设计与当前情节直接相关的部分比如主角所在的城镇、故事涉及的魔法规则。其他部分在worldbuilding/_index.md中留下一个标题和一两句描述即可等故事需要扩展时再调用技能细化。这能有效防止前期世界构建消耗掉所有创作热情。4.4 第四步规划情节 (plot-structure)这是连接角色与世界、驱动故事前进的骨架。输入Create a plot arc using the three-act structure.AI会引导你选择或自定义一个结构模板如三幕剧、英雄之旅、拯救猫咪、起承转合等然后为每一幕、每一个情节点填充具体内容。例如在三幕剧结构下第一幕建制需要确定“诱发事件”、“关键抉择”。第二幕对抗规划“中间点”、“一无所有时刻”。第三幕结局设计“高潮”、“尾声”。生成的plot/arcs/main-arc.md文件会清晰地用标题和列表展示这个结构。更重要的是plot/timeline.md文件会被更新尝试将情节节点与已有的角色、地点事件进行关联形成一个初步的时间线。核心价值这个技能强迫你思考故事的节奏和转折点而不是想到哪写到哪。生成的情节文件是一个活的提纲你可以随时修改、调整顺序、增加“伏笔”或“反转”节点。4.5 第五步撰写章节 (chapter-writing)这是最激动人心的部分。输入Write the next chapter.chapter-writing技能会执行以下智能操作上下文收集自动读取story.md体裁、主题、plot/arcs/中的当前情节节点、characters/_index.md和具体角色文件、相关的worldbuilding文件。一致性检查确保角色的对话符合其性格档案地点的描述符合世界设定情节推进符合大纲。生成初稿基于以上所有上下文生成一个章节的Markdown初稿通常包括章节标题、场景摘要和完整的叙事散文。生成的章节文件会放在chapters/目录下命名为类似chapter-01.md的形式并且chapters/_index.md会更新目录。避坑指南AI生成的初稿是“素材”而非“成品”。它可能节奏平淡、对话冗长、缺乏独特的文学质感。你的工作从这时才真正开始编辑和重写。利用AI提供的一致性强、细节丰富的底稿专注于提升文笔、调整节奏、注入独特的“作者之声”。不要期待AI一键生成完美章节而应将其视为一个永不疲倦、知识渊博的写作助理。5. 高级技巧与项目管理实战掌握了基本流程后一些高级用法和项目管理技巧能让你如虎添翼。5.1 技能的组合与链式调用真正的威力在于技能的串联。你可以给AI一个复杂的指令它会自动分解并调用多个技能。示例指令“Introduce a mysterious new character who is the lost heir to the Frostfall Citadel, and write a scene where they meet Sera Voss.”引入一个神秘的新角色他是Frostfall Citadel的失落继承人并写一个他与塞拉·沃斯会面的场景。AI的潜在操作调用character-management技能创建这个新角色并自动在背景故事中关联“Frostfall Citadel”和“继承人”身份。调用worldbuilding技能如果需要细化“Frostfall Citadel”的继承权设定。调用chapter-writing技能以这两个角色为核心生成一个会面场景。5.2 手动编辑与技能再同步所有文件都是纯文本Markdown你随时可以用任何编辑器手动修改。但修改后如何让AI知晓这些变化更新注册表如果你手动创建了一个characters/blacksmith.md文件你需要手动在characters/_index.md里添加一行这个角色的引用。否则chapter-writing技能可能无法发现这个角色。维护关系如果你在角色A的YAML中手动添加了key_relationships: - “character-b: rival”最好也打开角色B的文件在它的关系里补充上对A的引用。虽然部分技能会尝试双向同步但手动维护是最可靠的。触发技能更新你可以直接对AI说“I‘ve updated Sera’s motivation in her file. Please review all existing chapters and suggest where her dialogue might need adjustment to reflect this change.”我更新了塞拉的动机设定请检查所有现有章节指出哪些对话可能需要调整以反映这一变化。AI可以读取更新后的文件并给出分析建议。5.3 版本控制与协作由于整个项目是纯文本文件使用Git进行版本控制是绝配。每次重大变更后提交完成一个角色设定、一个世界构建模块、一个情节弧线或一个章节后进行一次Git提交。信息可以写为“feat: add character Sera Voss”或“docs: refine magic system rules”。分支用于实验你可以创建一个feature/alternate-ending分支大胆尝试不同的情节走向而不用担心破坏主线。协作团队成员可以克隆同一个仓库分别负责不同角色的章节或不同地区的世界构建。通过Pull Request和Code Review来合并内容Git能很好地处理文本冲突。5.4 自定义与扩展技能SKILL.md 标准是开放的。如果你觉得现有的character-management模板缺少“角色口头禅”或“标志性物品”字段你可以直接修改对应的SKILL.md文件。找到skills/character-management/SKILL.md。在YAML部分的parameters或示例中添加你想要的字段。在技能描述中说明这个新字段的用途。保存后AI在下次创建角色时就会引导你填写这个新信息。这是一种强大的“教AI如何更好地帮助你”的方式。6. 常见问题与排查技巧实录在实际使用中你可能会遇到一些问题。以下是我遇到的一些典型情况及其解决方法。问题现象可能原因解决方案AI不响应“Start a new story”等指令1. 技能未正确安装。2. 当前工作目录不对。3. AI Agent未正确加载技能。1.检查安装确认技能文件已复制到正确的目录如.agents/skills/。2.确认路径在正确的项目根目录下操作。3.重启/重载尝试重启AI Agent编辑器或重新打开项目。在Cursor中有时需要关闭再打开技能所在文件夹。生成的章节里角色性格或设定有误1. 角色Markdown文件中的YAML信息不准确或矛盾。2. AI在生成时未能充分读取相关上下文。1.检查源文件仔细核对出错角色的.md文件确保动机、恐惧等关键字段填写准确无误。2.提供更明确的指令在chapter-writing指令中增加限定如“Write the next chapter,paying special attention to Sera‘s distrust of authority and her practical, no-nonsense attitude.”写下一章特别注意塞拉对权威的不信任以及她务实、不苟言笑的态度。技能创建的文件夹结构不符合预期story-init技能可能基于不同版本的模板。手动调整这是纯文本项目你可以自由移动、重命名文件夹和文件。只要保持_index.md注册表文件中的引用路径正确即可。参考官方examples/目录的结构进行调整。在不同AI工具间迁移项目后技能不工作各工具的技能目录约定可能不同。统一技能存放位置尝试将技能文件同时复制到项目内的多个约定目录下如.agents/skills/、.github/skills/、.cursor/skills/如果存在。总有一个会被识别。最根本的办法是查阅你所用工具关于Agent Skills的官方文档。AI在生成内容时“胡编乱造”脱离已有设定这是大语言模型的固有局限性在上下文窗口较长时可能会“遗忘”或“混淆”早期信息。1.分而治之不要一次性要求AI生成过于复杂或冗长的内容。先写场景大纲再分段生成细节。2.即时纠偏一旦发现偏离立即中断并给出明确纠正指令如“No, according to the worldbuilding document, magic cannot create life. Rewrite this paragraph.”不根据世界构建文档魔法不能创造生命。重写这一段。3.利用注册表确保_index.md文件简洁明了只包含最关键的信息索引方便AI快速抓取。最后一点个人体会Story Skills 代表的是一种“增强智能”而非“替代智能”的创作范式。它最大的价值不是代替你写作而是帮你承担了那些繁琐的、结构化的、需要高度一致性的“知识管理”工作让你——创作者——的大脑能更专注于最核心的创意、情感和审美判断。把它当作一个不知疲倦的世界观管理员、角色档案员和情节质检员而你始终是那个执笔的导演。从这个项目身上我看到的不仅是写作工具的进化更是一种人机协作新范式的萌芽。