AI 应用人工智能大模型AI AgentRAG后端前端桌面应用【免费下载链接】OpenFic专为小说创作打造的跨平台、用户友好、AI Native 的一站式 Vibe Writing 工具。A cross-platform, user-friendly, AI-native, all-in-one Vibe Writing tool designed specifically for novel writing.项目地址https://gitcode.com/gh_mirrors/op/OpenFic点击查看免费下载OpenFic是一款专为小说创作打造的跨平台、AI Native 的一站式 Vibe Writing 工具。它的章节记忆系统解决长篇写作中的两大痛点章节摘要自动生成把数千字正文压缩为 200 字结构化记忆与Agent 上下文智能压缩在 Token 预算内保住关键信息。本文带你剖析这套系统的设计思路与成本优化之道。一、为什么长篇写作需要记忆系统小说动辄几十万字但大模型上下文窗口有限。如果每次让 Agent 帮忙续写、检查伏笔都携带全部前文Token 成本会爆炸。OpenFic 的思路是分级记忆记忆层级内容默认范围Token 代价当前章章节原文1 章高近场前 9 章原文9 章中中场章节摘要前 10 章低远场远期区间摘要更早期极低目录最新 50 章标题50 章极低这个金字塔结构由 context_builder.py 中的build_context函数实现它以当前章节为锚点、基于全局阅读序位跨卷连续编号见 sequence.py分层取数让 Agent 用可控成本记住全书脉络。二、章节摘要结构化记忆的低成本生成1. 默认轻量模型 字数门槛摘要默认使用轻量模型summary_config.py 中SUMMARY_LIGHT_MODEL_REFERENCE而非主力写作模型同时设置了DEFAULT_SUMMARY_MIN_CHAPTER_WORD_COUNT 500的门槛——不足 500 字的章节直接跳过摘要避免为短章节浪费一次 LLM 调用。这是最朴素也最有效的成本优化。2. 工具调用输出而非自由文本生成摘要时模型被要求必须调用emit_chapter_summary工具输出结构化结果start_time/end_time章节内事件起止时间characters/locations人物与地点列表summary200 字以内默认的摘要这套提示词定义在 chapter-summary.yaml明确要求所有输出都不被用户可见除工具调用外不输出任何内容以节省 token 消耗。生成逻辑在 summary_generator.py 中还会把上一章原文 其摘要一并喂给模型_previous_chapter_message帮助它连贯地理解剧情时间线。3. 过期检测内容没大改就不重算修改一章正文后摘要需要重新生成吗OpenFic 的答案是用 diff 说话。summary_service.py 中的is_chapter_summary_stale会把摘要生成时的正文与当前正文都做归一化剔除空白和标点用SequenceMatcher计算差异字符数差异 ≤ 100 字SUMMARY_STALE_DIFF_THRESHOLD则视为新鲜直接复用旧摘要零成本。远期摘要更进一步它记录来源章节摘要的SHA-256 签名列表chapter_summary_signature任何一个来源摘要变化整个区间摘要才判定过期——批量校验一次查询完成。4. 远期摘要固定窗口聚合而非全文重读每 10 章DEFAULT_SUMMARY_LONG_TERM_INTERVAL为一个固定窗口生成一条 500 字以内的区间摘要summary_service.py 的_fixed_summary_windows。它只读取章节摘要而非原文来聚合Token 消耗再降一个数量级。所有摘要任务都走后台批量作业队列JOB_TYPE_SUMMARY_BATCH进度实时推送给前端不阻塞写作。三、上下文智能压缩Agent 会话的记忆瘦身章节记忆解决书的记忆而 Agent 会话多轮工具调用、读改文件同样会撑爆上下文。OpenFic 在 agent_runtime/context/ 下实现了两级瘦身策略。1. 第一级工具输出剪枝pruningpruning.py 的prune_tool_outputs从最新消息往回扫描历史工具输出最近 100K Token 内的工具输出受保护PRUNE_PROTECTED_TOKENS绝不动刀超出保护区的旧工具输出替换为模型可见的占位符[Old tool result content cleared]——模型仍知道自己调过什么工具但不再携带完整结果技能、子代理派发等受保护工具_PROTECTED_TOOL_NAMES的输出永不清除若预计节省不足 20K TokenPRUNE_MINIMUM_TOKENS则放弃本次剪枝避免无谓扰动。剪枝是纯本地字符串替换零 LLM 成本。2. 第二级窗口压缩compaction当剪枝仍不够或上下文使用率达到阈值AUTO_TRIGGER_RATIO 0.8config.py时触发真正的摘要压缩选窗口window.py 的select_compaction_window将历史按 LLM 轮次分组从尾部保留TAIL_TOKEN_BUDGET 20_000或窗口 50%的尾部预算消息原样保留只压缩其之前的部分门槛待压缩部分不足MIN_COMPACTABLE_TOKENS 2_000则跳过——小窗口不值得花一次 LLM 调用压缩service.py 的compact_window把窗口消息转成user/assistant/tool转录稿交给提示词链session-compactioncompaction.yaml生成简报。提示词强制使用固定小节结构目标 / 决策和理由 / 相关内容 / 错误与修复 / 待办事项并附当前任务计划_current_plan_block确保压缩后 Agent 能无损续接工作持久化 冲突保护摘要连同start_seq/end_seq范围、源 Token 数、摘要 Token 数一起入库compaction_repo同一范围并发压缩会触发compaction_conflict中止保证幂等。3. 压缩本身的成本也是被计量的每次压缩都会解析响应的usage按压缩模型的输入价、输出价、缓存读价计算费用通过usage_sink计入会话账单service.py 的_usage_payload压缩模型也可单独配置为轻量模型LIGHT_MODEL_REFERENCE。Token 统计统一走 tokens.py 的 tiktoken 本地计数不依赖模型侧返回。四、成本优化之道小结策略位置效果分级上下文金字塔context_builder.py远场只用摘要成本降一个数量级轻量模型 字数门槛summary_config.py摘要不用贵模型短章节不生成Diff 过期检测 签名校验summary_service.py正文小改零成本复用旧摘要纯本地工具输出剪枝pruning.py零 LLM 成本回收旧工具结果尾部预算 最小可压缩门槛window.py / config.py避免小窗口无效压缩结构化简报 计划注入compaction.yaml压缩后可续接不推翻既定边界压缩用量独立计价service.py每次压缩的花费透明可查五、结语OpenFic 的记忆系统给 AI 应用开发者的启发在于成本优化不是单一技巧而是一套分级 惰性 计量的组合拳——用金字塔结构减少输入用 diff 与签名避免重复计算用纯本地剪枝兜底用最小门槛抑制无效调用最后让每一次 LLM 花费都被记账。想深入了解推荐阅读源码入口 summary_service.py、context_builder.py 与 agent_runtime/context/ 目录。赞分享AI 应用人工智能大模型AI AgentRAG后端前端桌面应用【免费下载链接】OpenFic专为小说创作打造的跨平台、用户友好、AI Native 的一站式 Vibe Writing 工具。A cross-platform, user-friendly, AI-native, all-in-one Vibe Writing tool designed specifically for novel writing.项目地址https://gitcode.com/gh_mirrors/op/OpenFic点击查看免费下载相关推荐从文档到摘要Kernel Memory智能摘要生成的全流程技术解析从文档到摘要Kernel Memory智能摘要生成的全流程技术解析 你是否还在为处理海量文档而烦恼面对成百上千页的报告、论文和资料如何快速提取核心信息成为ImageScript完全指南零依赖JavaScript图像处理的终极解决方案ImageScript完全指南零依赖JavaScript图像处理的终极解决方案 ImageScript是一款零依赖的JavaScript图像处理工具为开发者Data-Science-EBooks数据科学学习者的终极免费资源宝库Data Science EBooks数据科学学习者的终极免费资源宝库 你是否正在寻找高质量的数据科学学习资源Data Science EBooks项目为你创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考