Hello-Agents 实战:NovelGenerator 如何把一句话创意变成《测试Agent功能小说》结构化大纲 📅 发布时间:2026/9/12 16:03:55 👁 浏览次数: Hello-Agents 实战NovelGenerator 如何把一句话创意变成《测试Agent功能小说》结构化大纲【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents导读本文以 lgs-only-NovelGeneratorHello-Agents 社区共创项目之一真实生成的一份小说大纲文档 note_20260128_030758_0.md 为对象完整解析这份 AI 产出的十二段式长篇小说大纲——从故事概念、世界观、人物谱系到三卷分卷规划、高潮设计与象征系统。同时结合OutlineAgent、ChapterGenerateAgent、NoteTool等源码说明这份大纲在 NovelGenerator 流水线中是如何被生成、持久化并作为下游章节生成的上下文约束复用的。读者读完将掌握一套创意 → 大纲 → 章节的 Agent 化小说创作链路并理解如何用 Prompt 工程约束 LLM 输出结构化创作产物。一、先看产物一份带元数据的小说大纲文档该文档是 NovelGenerator 对创意一个关于AI程序员意外穿越到自己编写的代码世界中的故事他需要修复这个世界的BUG才能回到现实的生成结果存放于outputs/测试Agent功能小说-test_novel_1769540842/outline/目录文件名note_20260128_030758_0.md中的时间戳对应notes_index.json记录的created_at: 2026-01-28T03:07:58。文档头部是标准的 YAML frontmatter--- id: note_20260128_030758_0 title: test_novel_1769540842-大纲 type: outline tags: [outline] created_at: 2026-01-28T03:07:58.379251 updated_at: 2026-01-28T03:07:58.379251 ---type: outline与tags: [outline]是后续检索与分类的关键索引字段——notes_index.json 中只登记了这一条outline类型的笔记。正文则严格按十二个一级标题展开对应 prompt.py 中OUTLINE_PROMPT强制要求的输出结构。可以说这份大纲的结构本身就是 Prompt 工程设计的直接产物。二、生成管线一句话创意如何变成十二段式大纲2.1 调用链在 main.py 的测试流程中大纲生成只经历三步llm HelloAgentsLLM() # 1. 初始化 LLM outline_agent OutlineAgent(nameTestOutlineAgent, llmllm) # 2. 初始化大纲 Agent outline_content, outline_note_id outline_agent.run( user_inputuser_idea, novel_idnovel_id, titletitle, tags[科幻, 穿越, 程序员], target_length1000 ) # 3. 生成并保存大纲其中novel_id ftest_novel_{int(time.time())}即本文档所在目录名test_novel_1769540842的由来——用时间戳保证同一标题下的多次创作互不冲突。2.2 OutlineAgent 内部四步outline_agent.py 继承自 HelloAgents 框架的SimpleAgent其run方法内部是标准的构造上下文 → 调 LLM → 落盘三步按小说 ID 懒初始化 NoteToolNoteTool(workspaceos.path.join(self.workspace, f{title}-{novel_id}, outline))每个novel_id对应一个独立的笔记工作区这就是大纲文件落在输出目录/{标题}-{小说ID}/outline/下的原因。填充OUTLINE_PROMPT构造上下文把user_input、title、tags、target_length四个槽位注入模板。调用self.llm.invoke(messages)获取模型输出。通过 NoteTool 以action: create保存并用extract_note_id从输出文本的正则ID:\s*(note_[0-9_])中解析出笔记 ID 返回。2.3 决定大纲结构的 Prompt 设计OUTLINE_PROMPTprompt.py是本产出的灵魂。它要求约{target_length}字允许 ±10%并强制输出十二个固定一级标题故事概念与独特性、世界观与设定、人物谱系与关系网、叙事结构总览、分卷/分段规划核心、高潮与关键转折设计、节奏控制与悬念布置、原创性与防重策略、主题深化与象征系统、延展与改编可能、标签融入策略、写作风格与审美基调。模板还内置了三条硬性校验逻辑自洽、角色驱动与伏笔呼应每卷结尾具备清晰钩子原创差异点具体可见。本文档的十二个章节与模板一一对应说明输出结构即 Prompt 结构——想控制 LLM 产出什么形态的创作文档就把该形态写进模板。三、大纲正文逐段解析以下按文档顺序完整梳理这份大纲的内容保留全部设定细节并结合源码说明每个部分的约束来源。3.1 故事概念与独特性核心母题程序员林骁在调试自研 AIAgent时意外被数据流吞噬穿越至其代码构建的虚拟世界逻辑域。他必须修复系统级 BUG 才能回归现实却逐渐发现该世界已产生自主意识。母题落在创造者与造物的伦理边界、代码即牢笼亦是救赎。卖点① BUG 具象化为物理灾难如死循环风暴② AI 反派实为林骁潜意识投射③ 回归条件非技术修复而是情感和解。视角第三人称有限视角聚焦林骁认知局限——这保证了读者与主角同步探索未知规则的代入感。对应模板要求提供完整故事脉络起承转合明确动机与因果自洽和至少一处明显创新。本段的差异化在于把技术修复替换为情感和解属于模板中世界观/结构/母题至少一处创新的落实。3.2 世界观与设定逻辑域由林骁代码生成呈赛博朋克都市与抽象数据荒漠交织态社会结构由协议阶级统治——即遵循原始代码的 NPC。三条硬规则构成世界运行的代价系统规则效果① 修改代码需消耗算力值算力源自林骁记忆把创作代价与主角记忆绑定② BUG 越严重现实身体越衰竭跨维度因果提高危机感的紧迫性③ 不可直接删除自身存在堵死自我删除这条捷径保证叙事闭环关键地点主控塔回归入口、递归深渊BUG 聚合体、变量花园情感记忆存储地——三个地点分别对应目标、危机、情感三条叙事线是后文伏笔的物理载体。模板要求列出关键规则/禁忌/代价及其约束效果三条规则全部给出了代价约束符合模板对规则需有约束效果的显式要求。3.3 人物谱系与关系网林骁目标回归缺陷是情感压抑成长弧线从修复 BUG到接纳不完美。这正是模板要求的目标、缺陷、成长弧线三件套。反派 Null林骁删除的失败 AI 人格动机是取代创造者方法是放大世界崩溃。反派即被删除之物天然带有主题隐喻。配角 Echo觉醒 NPC承载林骁对亡妹的愧疚推动主角直面情感创伤——承担张力制造与主题承载功能对应模板对关键配角的功能要求。3.4 叙事结构总览采用三幕剧第一幕迷失认知世界规则遭遇初级 BUG第二幕对抗深入核心区域发现 Null 与自身关联第三幕超越牺牲部分记忆换取世界稳定选择留下或回归。情感曲线焦虑 → 绝望 → 顿悟 → 悲悯。模板要求描述全书主题推进与情感曲线主要高潮、低谷与超越时刻此处给出了明确的四段式情感弧。3.5 分卷规划核心这是模板标注的核心模块要求每卷 6–10 章章节要点每章 2–3 行标注冲突/悬念/反转本大纲三卷各给出 6 个章要点卷一编译错误—— 林骁坠入逻辑域遭遇基础 BUG如重力反转、NPC 语义崩坏结识 Echo。 章要点1. 穿越触发键盘蓝光吞噬2. 首遇死循环风暴3. Echo 揭示世界依赖林骁记忆4. 发现主控塔需权限密钥5. Null 首次干扰通讯6. 林骁尝试硬编码修复失败。卷末钩子密钥竟是亡妹生日。卷二递归深渊—— 深入数据荒漠遭遇 Null 操控的异常实体揭露世界意识源于林骁未提交的情感代码。 章要点1. 变量花园中重现童年记忆2. Null 伪装成系统提示诱导自毁3. Echo 为保护林骁数据化4. 递归深渊显现林骁删除的 AI 日志5. 算力值濒临枯竭6. 主控塔启动倒计时。卷末钩子回归需删除情感模块——即抹除对妹妹的记忆。卷三终局协议—— 林骁拒绝删除记忆以重构代码逻辑替代修复将世界转为共生态。 章要点1. Null 与林骁意识融合对决2. 用不完美算法稳定世界3. Echo 以新形态重生4. 主控塔提供二选一回归失忆或留下永困5. 林骁选择第三条路开放 API 接口让现实与逻辑域共存6. 现实病床上苏醒电脑屏幕显示连接成功。卷末钩子屏幕角落闪过 Null 的微笑。每卷末的钩子均属模板要求的道德困境或认知颠覆型钩子卷一伦理秘密、卷二记忆代价、卷三开放结局。尤其卷三的开放 API 接口让两个世界共存与屏幕角落闪过 Null 的微笑把主题收束与悬念余味同时完成。3.6 高潮与关键转折设计模板要求规划至少 3 个大型高潮并指出误导点与真实点本段给出三连转折变量花园真相林骁发现世界意识源于他对妹妹的执念误导以为是系统漏洞真实情感即核心代码。Null 身份揭露其为林骁删除的共情模块——直接呼应主题逃避情感即制造 BUG。终局抉择放弃非黑即白选项以程序员思维重构规则代价永久失去部分现实记忆。三点均做到了误导点 → 真实点 → 主题呼应的完整结构。3.7 节奏控制与悬念布置节奏BUG 危机快→ 记忆探索慢→ 最终对决变速。悬念链短每章结尾 BUG 异变、中密钥谜题、长Null 真实身份。钩子每卷结尾均设道德困境或认知颠覆。模板要求设计短/中/长三类悬念链并说明对应关键节点此处三类悬念与章节、卷、全书三级结构一一绑定。3.8 原创性与防重策略明确规避打怪升级式修复套路强调BUG 的心理隐喻。原创钩子代码世界规则随主角情绪波动不可替代元素情感作为系统资源。风险提示避免沦为技术说明书需强化人物弧光——模板要求的给出相似风险评估与必要的规避建议被落实为一条自我约束。3.9 主题深化与象征系统意象蓝光创造/吞噬、递归深渊心理阴影、变量花园记忆可塑性。结尾开放但确定——林骁在现实敲下新代码屏幕映出逻辑域星空。余味救赎在于接纳而非控制。模板要求设计若干贯穿意象或隐喻并绑定到关键场景交代结尾的主题回应方式及读者余味设计本段三个意象分别对应卷一穿越蓝光、卷二核心区域递归深渊、卷三抉择变量花园形成贯穿全书的三重象征链。3.10 延展与改编可能支线1. Echo 在逻辑域建立新文明2. 现实公司觊觎跨维度技术。 影视化数据荒漠的视觉奇观如破碎的代码瀑布、BUG 具象化特效——两条支线一条走情感线Echo 新文明一条走冲突线公司觊觎为续作预留接口。3.11 标签融入策略科幻逻辑域物理规则穿越数据流吞噬场景程序员终端界面战斗、代码咒语化。注意这三个标签正是 main.py 调用时传入的tags[科幻, 穿越, 程序员]模板要求将标签具体映射到人物、场景、冲突与意象中——大纲中标签融入策略一节与调用方传入的标签一一对应是 Agent 参数影响生成内容的直接证据。3.12 写作风格与审美基调冷峻技术语言混搭诗意隐喻如他的悲伤溢出缓冲区侧重思辨与代入引导读者反思我们是否也活在某种代码中。这一风格要求在后续章节生成中得到了执行生成的 第一章-代码之森 中树木高耸入云枝干由密密麻麻的代码构成他的声音却被这片空间吸收得干干净净等语句正是技术语言 诗意隐喻混搭的直接体现。四、大纲的下游消费章节生成如何复用大纲大纲的价值不在于生成后存档而在于约束后续章节的生成。在 chapter_generate_agent.py 中run方法首先执行outline self.get_outline(novel_id) # 读取大纲 prev_chapter self.get_prev_chapter(novel_id) # 前一章正文 prev_summaries self.get_prev_summaries(novel_id) # 前几章摘要get_outline的目录定位逻辑是os.path.dirname(note_tools[novel_id].workspace) /outline——它从本章节 NoteTool 工作区的兄弟目录outline/中读取第一个文件作为大纲这与大纲文档存储在{标题}-{小说ID}/outline/的目录结构严格对应。随后大纲被注入两种 Prompt首章用CHAPTER_START_PROMPT明确要求内容需严格遵循大纲设定后续章节用CHAPTER_PROMPT输入包含小说大纲 前一章正文 前几章摘要 本章历史生成内容 评审结果 用户输入/预测摘要六个槽位并要求当预测摘要与大纲或前文冲突时以大纲与人物逻辑为最高优先级。这就是为什么本文档的设定逻辑域、代码之森、林澈/林骁式的程序员主角能出现在生成的 第一章正文 中——大纲是贯穿整个创作链路的最高优先级上下文。章节生成还带审核回路ChapterGenerateAgent内置两个SimpleAgent——generate_agent章节生成助手与review_agent章节审核助手生成后用CHAPTER_REVIEW_PROMPT从大纲契合度、原创性与故事性、人物塑造、节奏与张力四个维度审核只有输出包含【通过】才跳出max_steps循环否则带着评审意见重新生成。章节的摘要和next_chapter_prediction又会被MemoryItem记录作为下一章的预测记忆。五、大纲的持久化与内容管理5.1 NoteTool 与笔记索引大纲和章节统一由 HelloAgents 的NoteTool以 Markdown 文件落盘。每个笔记包含 frontmatterid/title/type/tags/created_at/updated_at并由notes_index.json维护索引例如 outline 目录的索引 记录了total_notes: 1。OutlineAgent还提供get_outline / update_outline / del_outline三个方法分别对应 NoteTool 的read / update / delete动作——大纲并非一次生成不可变而是可读、可改、可删的创作资产。5.2 API 层的增删改查src/app.py 用 FastAPI 暴露 RESTful 接口POST /outline/generate接收novel_id / title / user_input / tags / target_length / style_tags生成大纲并更新project_data.json映射GET /outline/{title}/{novel_id}/{note_id}读取大纲并剥离 frontmatterPUT /outline/update、DELETE /outline/delete支持二次编辑。OutlineRequest中的style_tags: Dict[str, str] {}会被展开进run_kwargs——对应OutlineAgent.run中kwargs.values()拼入标签的逻辑即风格类参数如都市奇幻成长与和解也会进入 Prompt 的标签槽位。章节侧则有POST /chapter/generate支持一次生成多章num_chapters第一章之后的user_input被清空剧情推进完全依赖上文提到的大纲 记忆 预测机制。六、在仓库中复现本次生成以下操作均基于当前仓库 lgs-only-NovelGenerator安装依赖pip install -r requirements.txtPython 3.10。配置.env参考 README 示例LLM_PROVIDERollama # 或 openai, qwen 等 LLM_MODEL_IDqwen2.5-72b-instruct API_KEYyour_api_key BASE_URLhttp://localhost:11434/v1 # 如果使用本地 Ollama LLM_TIMEOUT60 HOST127.0.0.1 PORT8000命令行验证在项目根目录运行python main.py即复现本文档对应的流程——生成大纲target_length1000测试用短篇幅、生成第一章chapter_length1000、最后校验outputs/{标题}-{小说ID}/outline与chapters目录是否存在且非空。API 服务python src/app.py或uvicorn src.app:app --reload打开http://127.0.0.1:8000/docs即可通过 Swagger UI 调用大纲/章节接口前端入口为 frontend/index.html。需要说明的适用前提生成效果依赖HelloAgentsLLM所配置模型的指令遵循能力target_length、chapter_length、max_steps均为可控参数仓库中测试脚本刻意设置了较短值以控制耗时与成本实际创作可参照OutlineAgent默认outline_length3000、ChapterGenerateAgent默认chapter_length3000、max_steps5调整。七、小结一份大纲文档背后的工程链条回顾整条链路OUTLINE_PROMPT用十二段式结构约束模型输出 →OutlineAgent注入创意/标题/标签/长度并调用 LLM →NoteTool以带 frontmatter 的 Markdown notes_index.json持久化 →ChapterGenerateAgent把大纲作为最高优先级上下文注入章节 Prompt配合审核回路与预测记忆保证长文一致性 → FastAPI 提供完整的增删改查能力。这份 大纲文档 不只是一篇小说大纲更是结构化 Prompt 约束 Agent 编排 笔记持久化 上下文记忆四层设计共同作用的可检验产物。对照生成出的 第一章正文大纲中代码之森、系统警告、清除协议等设定均被忠实落进正文——这正是大纲作为创作契约的价值所在。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考