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 界面,执行以下命令来添加源:
这行命令会告诉 Claude Code,去/plugin marketplace add danjdewhurst/story-skillsdanjdewhurst/story-skills这个GitHub仓库寻找插件。 - 安装插件:添加市场后,你就能在列表里找到
story-skills插件。执行安装命令:
安装完成后,Claude Code 就具备了全部五个故事技能。/plugin install story-skills@story-skills
注意事项: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 代表的是一种“增强智能”而非“替代智能”的创作范式。它最大的价值不是代替你写作,而是帮你承担了那些繁琐的、结构化的、需要高度一致性的“知识管理”工作,让你——创作者——的大脑能更专注于最核心的创意、情感和审美判断。把它当作一个不知疲倦的世界观管理员、角色档案员和情节质检员,而你,始终是那个执笔的导演。从这个项目身上,我看到的不仅是写作工具的进化,更是一种人机协作新范式的萌芽。