拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

gsd-2 长时任务内存保真度:多层记忆、周期对账与“永不总结摘要“的工程实践

gsd-2 长时任务内存保真度:多层记忆、周期对账与“永不总结摘要“的工程实践 人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载本指南源自 docs/dev/building-coding-agents/13-long-running-memory-fidelity.md并结合 gsd-2 开源仓库中记忆系统的真实实现展开。你将掌握为什么压缩即信息损失是长时自主 Agent 的第一死因如何用多层记忆 不同衰减率对冲损失如何通过周期对账与阶段边界刷新把漂移控制在阈值内以及 gsd-2 仓库中decisions表、memories表、/gsd memory命令与capture_thought工具是如何把这些原则落地的。一、核心问题压缩即信息损失文档开篇就点破了长时运行系统的元凶每个压缩层都会丢失信息。经过足够多次压缩后摘要对现实的偏离程度就如同复印件的复印件。而系统几乎无法察觉这一点因为它只看到当前的摘要看不到曾经丢失了什么。这条判断在 gsd-2 中同样成立上下文窗口是有限的记忆必须被压缩、截断、按预算裁剪才能塞进每一轮 prompt。仓库在 src/resources/extensions/gsd/context-budget.ts 中实现了比例预算引擎proportional allocation, section-boundary truncation依据 D001/D002/D003 决策按上下文窗口大小把 token 预算分配给各记忆类别依赖/前置任务摘要、内联上下文、验证章节等在章节边界而非任意位置截断内容尽量保住语义完整块提供按提供商缓存的 tokens-per-char 经验换算系数如 [tiktoken probe] 相关实现。与此同时src/resources/extensions/gsd/memory-store.ts 的formatMemoriesForPrompt会把记忆按 token 预算默认 2000 token、按 ~4 字符/token 估算渲染进系统提示词超预算的条目直接丢弃。可见压缩与截断并非理论问题而是每轮都会真实发生的机制——这也正是下文的记忆分层与对账机制存在的理由。二、多层记忆架构不同衰减率对冲不同风险原文档给出的核心表是整套方案的骨架必须完整保留层级衰减率内容更新策略Manifest状态清单快每个任务都会更新仅当前状态1000 tokens连续覆盖——不留历史Decision Log决策日志永不衰减只追加每个重要架构决策及其理由永不被总结线性增长Task Archive任务归档中压缩后的任务完成记录可检索但非常规加载三层对应三种不同的记忆生命周期现状要新决策要永存历史要可查但不可喧宾夺主。下面逐层对应到 gsd-2 仓库的实现。2.1 Manifest连续覆盖、无历史的当前态Manifest 的定位是只看现在、快速刷新、绝不携带历史包袱。在 gsd-2 中与之对应的是项目主文档与记忆表中的活动行项目主清单以PROJECT.md路径存储在artifacts表中见 src/resources/extensions/gsd/db-base-schema.ts由 src/resources/extensions/gsd/context-store.ts 的queryProject()读取并注入上下文memories表按superseded_by区分活动/已取代行并建有active_memories视图src/resources/extensions/gsd/db-base-schema.ts查询层默认只看活动行——这正是只保留当前状态、不保留被覆盖的历史Manifest 的 1000 tokens 上限对应formatMemoriesForPrompt的预算截断src/resources/extensions/gsd/memory-store.ts与context-budget.ts的比例分配。2.2 Decision Log永不衰减、只追加、永不被总结这是整套方案里最反直觉的一层别的层都在压缩唯独它被明文禁止总结因为它承载的是最高价值的信息——为什么。仓库用独立的decisions表落地src/resources/extensions/gsd/db-base-schema.ts其字段恰好覆盖了文档要求的决策 理由完整结构when_context决策发生时的上下文里程碑/切片范围scope、decision、choice决策主题与所选方案rationale理由——即文档所说三个月前关于为何选 JWT 而不是 session 的那场讨论revisable、made_by是否可修订、由谁做出superseded_by只标记取代关系不删除行。关键点在于永不总结、线性增长由两条机制保证只追加 取代链旧决策不删不压新决策以superseded_by指向旧行形成 supersedes-chain。在 ADR-013 阶段决策被镜像进memories表的structured_fields后取代链仍被保留读取层必须显式区分仅活动与含已取代两种查询queryDecisionsFromMemories与getAllDecisionsFromMemories见 src/resources/extensions/gsd/context-store.ts按标准格式渲染进上下文formatDecisionsForPrompt把决策渲染为与DECISIONS.md一致的表头| # | When | Scope | Decision | Choice | Rationale | Revisable? | Made By |src/resources/extensions/gsd/context-store.ts让每一行理由在每轮提示中保持可见。从源码结构可以推断正是追加式 理由字段 不总结这三者的组合使 Decision Log 成为 Manifest 不断刷新时唯一不随压缩衰减的信息源。2.3 Task Archive中等衰减、按需检索任务归档保存的是压缩后的完成记录价值次之、量最大因此策略是可检索但非常规加载。gsd-2 的对应实现是记忆溯源source体系memory_sources表保存任务/文件/URL 原文及其content_hashsrc/resources/extensions/gsd/db-base-schema.ts配合memory_processed_units记录哪些单元已被提取过避免重复蒸馏检索路径为 FTS5 关键词 可选语义向量memory_embeddings余弦相似度再经倒数排名融合RRF排序src/resources/extensions/gsd/memory-store.ts排名公式confidence * (1 hit_count * 0.1)与时间衰减因子90 天线性衰减、下限 0.7见 src/resources/extensions/gsd/memory-store.ts共同实现了中等衰减旧记录分数自动走低但不会归零。三、关键机制周期性对账Periodic Reconciliation只分层还不够必须有人周期性把内存里的世界与磁盘上的现实对齐。文档归纳了四种主流模型的审计做法原文表格在此完整保留Claude每个里程碑或每 N 个任务Agent 将 manifest 与实际代码库比对Gemini每 N 次提交派生一个 History Auditor 子 Agent专职做 manifest-vs-code 对比GPT带校验和checksum的自愈摘要——当源文件变更时使摘要失效并重新生成Grok每 5 个检查点运行确定性的 Memory Fidelity Audit 节点——采样关键不变量、给漂移打 0-100 分、漂移超过 15% 自动重建。无论哪种做法所有模型都收敛到某种自动化审计这一点在 gsd-2 仓库里也有同构的实现证据漂移驱动的状态对账ADR-017src/resources/extensions/gsd/state-reconciliation/drift/merge-state.ts 专门处理未合并 merge 状态这类漂移reconcileMergeStateCore检测遗留的 MERGE_HEAD/SQUASH 状态能自动解决的先自动解决代码冲突无法自动解决时安全暂停并把现场完整保留给人工决策镜像的自愈 passcontext-store.ts注释明确提到 memory-backfill 的 drift auto-heal pass 会持续同步决策镜像与其取代链循环自愈与卡死检测src/resources/extensions/gsd/auto-recovery.ts 维护自愈运行时记录与循环修复步骤检测到卡死后写入占位 artifact 以推进流水线Write a placeholder artifact so the pipeline can advance past a stuck unit并在必要时re-derive state而非沿袭可疑旧状态里程碑/切片/任务级验证证据verification_evidence表为每个任务记录命令、退出码、判定与耗时src/resources/extensions/gsd/db-base-schema.ts给对账提供可采样的不变量证据。四、黄金法则永不总结摘要永远不要总结总结。每一层压缩都必须从它下面的那一层重新生成。代码库永远是无损的事实来源。这是全文最重要的一条工程纪律原因在于对摘要的摘要做摘要正是复印机效应累积失真的来源。gsd-2 的实践中可见两条与之对应的约束捕获必须贴近源头capture_thought工具的提示词要求 Agent 直接从当前上下文记录持久洞察而非从记忆里搬运旧话Do NOT capture one-off bug fixes... Keep content to 1–3 sentences见 src/resources/extensions/gsd/bootstrap/memory-tools.ts提取必须回到原始 source/gsd memory extract SRC-xxx会把原始 source 内容整体塞给一次 Agent turn指令为读下面这份内容逐条调用capture_thought记录耐用洞察而不是概括你现有的记忆src/resources/extensions/gsd/commands-memory.ts。两条都指向同一件事重新生成regenerate永远优于增量叠加incrementally summarize。当 Manifest 需要更新时回代码库、回 source、回决策日志而不是在旧摘要上打补丁。五、最危险的漂移丢失为什么文档明确指出漂移最致命的形式并非事实性错误而是为什么的丢失manifest 写着auth 使用 JWT。三个月前关于为什么选 JWT 而不是 session有充分讨论这段上下文恰恰是最先被压缩掉的。追加式决策日志通过让why无限期存活、同时让what持续压缩解决这个问题。gsd-2 的实现把这条原则做到了字段级decisions表把decision是什么与rationale为什么拆成两个独立列即使decision被取代rationale与when_context依然原样保留在取代链里ADR-013 将决策镜像到memories.structured_fields时同样保留scope/decision/choice/rationale/revisable/made_by全套字段见 src/resources/extensions/gsd/bootstrap/memory-tools.ts 中 structuredFields 的说明且决策镜像故意不设置顶层superseded_by改由结构化字段内部的取代链管理防止与普通记忆的取代语义混在一起src/resources/extensions/gsd/context-store.tsgsd_graph工具暴露了supersedes等关系边src/resources/extensions/gsd/bootstrap/memory-tools.ts可以沿取代链回溯这段决策的前世今生让被覆盖的旧理由仍然可达。六、阶段边界刷新给记忆做碎片整理对于长达数周/数月的大型项目仅靠增量更新会让 Manifest 携带太多过时前提。文档给出的对策是在阶段边界让 Agent读取真实代码库 决策日志从零重建 manifest而不是带着旧 manifest 做增量修补。这相当于给硬盘做碎片整理。gsd-2 的自动流水线为此提供了天然的阶段边界挂载点src/resources/extensions/gsd/auto/phases.ts 定义了 auto-loop 的流水线阶段、合并收尾与 finalize 处理并在阶段切换时写入/清除全局阶段状态setCurrentPhase/clearCurrentPhase里程碑收尾存在明确的 milestone-merge-closeout 路径如milestone-merge-skip等分支见 src/resources/extensions/gsd/auto/phases.ts正是从旧状态切到新阶段的最佳刷新点状态无法修复时auto-recovery.ts会回退到 Re-deriving state从代码库与磁盘状态重新推导其语义与文档的从零重建完全一致分支/工作树层面的自治也依赖这类刷新auto-worktree 相关模块如 src/resources/extensions/gsd/auto-worktree-repair.ts在检测到工作树状态异常时触发修复避免陈旧状态跨阶段传染。实操建议在 gsd-2 的里程碑 closeout 阶段不要只对 PROJECT.md 打补丁而应触发一次 manifest 全量重建——重新读取DECISIONS.md/decisions表、ROADMAP 与关键源码用 src/resources/extensions/gsd/context-store.ts 的查询与格式化函数生成新的上下文快照再以supersede取代旧记忆行。七、落地操作/gsd memory命令与记忆工具速查理论落地为可操作的命令。仓库在 src/resources/extensions/gsd/commands-memory.ts 中实现了完整的/gsd memory子命令集子命令作用list列出最近的活动记忆按排名取前 50show MEM###打印单条记忆的完整内容与元数据forget MEM###以CAP_EXCEEDED哨兵取代一条记忆stats按类别/作用域/来源/关系/向量覆盖度统计sources列出最近的 memory_sources 行note text把内联笔记作为 source 摄入ingest path\|url摄入本地文件或 URL支持--tag a,b、--scopeextract SRC-xxx派发一次 Agent turn把 source 蒸馏成记忆export path.json把记忆关系来源导出为 JSONimport path.json幂等导入之前的导出decay立即执行过期记忆衰减默认阈值 20 个处理单元cap [N]强制执行记忆上限默认 50超出时取代最低排名记忆并级联清理向量与关系运行示例# 查看当前记忆健康度 /gsd memory stats # 记录一条架构决策的理由why 字段是关键 /gsd memory note 选择 JWT 而非 session 的完整理由…… --tag auth # 摄入一份设计文档并蒸馏成记忆 /gsd memory ingest docs/design/auth.md --extract # 主动衰减过期记忆、收紧记忆上限 /gsd memory decay /gsd memory cap 50对应地Agent 在运行时通过三个 MCP 工具读写记忆层注册于 src/resources/extensions/gsd/bootstrap/memory-tools.tscapture_thought持久化一条耐用项目知识六类categoryarchitecture / convention / gotcha / preference / environment / pattern内容限 1–3 句confidence建议 0.6试探/ 0.8稳固/ 0.95充分确认memory_query按关键词FTS5无 FTS 时退化为 LIKE检索记忆支持category、scope、tag、include_superseded过滤可开启reinforce_hits强化命中gsd_graph以modequery沿supersedes等关系边查看记忆图谱。这三件套的分工与文档完全咬合capture_thought负责在源头无损捕获为什么memory_query负责按需检索归档层gsd_graph负责审计取代链——当发现 Manifest 与代码库不一致时沿链回溯即可定位是哪一层压缩丢掉了关键上下文。结语长时自主运行的记忆保真度归根到底是三条纪律分层不同衰减率、对账周期审计、重建永不总结摘要、阶段边界从零刷新。gsd-2 仓库把这三条落实到了表结构decisions只追加、memories分活动/取代、verification_evidence留证据、工具capture_thought/memory_query/gsd_graph与命令/gsd memory全家桶三个层面。理解这套对抗信息衰减的架构是让 Agent 连续工作数周而不丢失大局观的前提——也是对 docs/dev/building-coding-agents/13-long-running-memory-fidelity.md 在工程层面的完整注脚。赞分享人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载相关推荐gin-vue-admin 的 AI 记忆层设计aiDoc/memory/ 长期记忆与业务记忆的分层管理实践gin vue admin 的 AI 记忆层设计 aiDoc/memory/ 长期记忆与业务记忆的分层管理实践 导读 aiDoc/memory/ 是 gin后端前端认证鉴权低代码企业应用FastChat对话上下文管理长对话记忆与摘要FastChat对话上下文管理长对话记忆与摘要 引言长对话的挑战与机遇 在大语言模型LLM应用中长对话上下文管理是一个核心挑战。随着对话轮次的增加模人工智能大模型模型推理服务模型评测微调本地部署AI Agent内存管理终极指南长期记忆与短期记忆的完美结合AI Agent内存管理终极指南长期记忆与短期记忆的完美结合 想要打造真正智能的AI Agent关键在于理解内存管理机制 在开源框架Agents中长AI AgentAgent 框架多智能体人工智能上一篇OpenRAG企业单点登录配置OIDC/OAuth接入完整教程下一篇RVC-WebUI语音克隆完整指南5分钟掌握高质量音色转换技术创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表