跳到主要内容

可执行代码记忆

User as Code 要解决什么问题?​

  • 前提: 用户记忆的四种文本存储格式(Simple Notes、Enhanced Notes、JSON Cards、Advanced JSON Cards)本质上都是文本,擅长召回单条事实;
  • 缺陷: 聚合、冲突检测与约束执行都要交给 LLM“心算”;
  • 方案: 把用户状态改成带类型的可执行对象,把规则写成普通函数;
  • 收益: 让“表示”和“推理”使用同一种可验证介质;
  • 出处: Li, Bojie. User as Code: Executable Memory for Personalized Agents. arXiv:2606.16707;

它借鉴了什么机制?​

  • 预写日志 + 检查点: 会话结束后先把事实追加到只增日志;
  • 重建: 再定期从完整日志重建带类型的状态;
  • 收益: 既保留原始证据,也得到可查询、可执行的派生状态;

类型化状态长什么样?​

state = {
passport: PassportInfo(
number = "AB1234567",
country = "US",
expiry_date = date(2025, 2, 18),
),
trips: [
Trip(destination = "Tokyo", departure_date = date(2025, 1, 15),
is_international = true),
],
}
  • 意义: 带类型的状态把原本需要 LLM“读一遍再心算”的操作交给确定性函数;

确定性函数能承担哪些推理?​

  • 聚合统计: 直接对类型化字段计数,例如统计 2025 年的国际行程;
count(
trip for trip in state.trips
if trip.is_international and year(trip.departure_date) == 2025
)
# => 2
  • 冲突发现: 把当前用药与过敏史交叉比对,命中同一药物类别时发出冲突;
def check_drug_allergy(profile):
for medication in profile.current_medications:
for allergy in profile.allergies:
if medication.drug_class == allergy.drug_class:
emit_conflict(medication, allergy)
  • 约束执行: 状态更新后自动检查国际行程与护照到期日的间隔,不必等用户再次检索;
def check():
for trip in state.trips:
if trip.is_international:
days = date_difference(state.passport.expiry_date,
trip.departure_date)
if days < 180:
alert("passport expires too soon", trip, days)