画像常驻注入自然遗忘曲线(ADR-0009 ADOPTED方案) #127
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#103 第四批清单:31 条实现类落差 + 9 条待拍板(条目 11)
What to build
画像(Profile)常驻注入至今是无条件全量渲染。ADR-0009 已 ADOPTED 的补法是把既有"自然遗忘曲线"(recency×importance 降权,此前只用于事件记忆三因子召回)扩展到画像"是否留在常驻注入的冻结快照里"这个判断上——明文否决了硬条目数上限这个更直接的替代方案。
不要加硬 top-k/字符预算。 这正是原文点名否决的备选——与画像不同,ADR-0008/0015 对关系注入/触发注入是明文允许上限的,两条规则相反,不要把 issue #114(关系网独立封顶)的做法平移过来。
Acceptance criteria
ProfileFactModel新增可空列importance(本仓不随包分发 alembic 迁移,不需在本仓补迁移文件)_EXTRACT_MEMORIES_TOOL的facts[]加importance属性,_parse_candidate里复用既有_resolve_importance(raw)解析(events/knowledge 已有同名字段用的就是它)ProfileFact加importance字段;ProfileFactModel.updated_at列已存在,只是storage.py::_to_fact没带出来——把它带出来,不需要另加created_at(除非下面的 age 锚点裁决选了"距首次写入"这条)delta.py::run_delta_compression_cycle、reflection.py、__init__.py均经write_tentative_facts;runtime_loop.py::update_profile工具(用户显式纠正路径)没有 LLM 打标可蹭,须显式定一个默认 importance(按"可变尾部=权威覆盖"语义,合理默认是取高值而非中值)render_profile_snapshot新增now入参,接上 recency × importance 降权判断;三个渲染调用点都要跟(runtime_loop.py两处 +__init__.pydrive-tick 近期摘要一处)delta.py里gather_profile_facts后直接拼current_profile喂压缩 prompt 那条路径不经过 render,须显式裁决它要不要同样降权(不降则压缩 prompt 仍无界)原文(docs/adr/0009-memory-engineering.md「更新(2026-07-11 第三方项目对照 grill 第三轮)」节,第 3 条 ADOPTED):
_upsert_fact每次重复提炼同一 key 都会刷新updated_at,"age" 实为"距上次被重新断言多久",被反复提到的事实永远不会老化。若要"距首次写入多久"需要真正新增created_at。片内须显式裁定用哪一种importance=None的缺省:本仓对EventRecord.mood=None的先例是"直接判 0、不做历史回填",但那是加法中性项,判 0 无害;画像importance判 0 会直接把全部存量条目淘汰掉——只能借"不回填"的精神,不能照抄"判 0"的做法,须显式定义存量条目的缺省行为tests/test_profile.py/tests/test_profile_storage.py/tests/test_delta_compressor.py/tests/test_delta_compression_cycle.py均需补断言Blocked by
_EXTRACT_MEMORIES_TOOLschema 与同一段 Delta 压缩 instruction 字符串加字段,并行改会冲突,需串行