Self-Identity Accumulation

Nikola Balic (@nibzard)· emerging

问题

AI智能体在不同会话间缺乏持续记忆。每轮对话都从零开始,由此引发以下问题:

  • 熟悉度缺失:智能体无法记住用户的偏好、目标或工作模式
  • 重复解释负担:用户每轮会话都必须重新解释上下文与偏好
  • 关系流于表面:智能体无法随时间推移深化对用户需求的理解
  • 回应千篇一律:缺少积累的上下文时,智能体的行为会默认趋于泛化

尽管情景记忆系统能够存储过往的经历,但它们无法满足智能体构建动态自我身份的需求——也就是智能体相对于用户而言的角色定位。

方案

为自我身份积累实现双钩子架构

  1. 会话启动钩子(SessionStart Hook):在会话开始时注入积累的身份/档案
  2. 会话结束钩子(SessionEnd Hook):在每次会话后提取新见解并完善档案
  3. 身份文档(Identity Document):一个随时间迭代演变的持久化文件(如WHO_AM_I.mdSOUL.md
sequenceDiagram
    participant 会话启动钩子 as SessionStart
    participant 身份档案 as WHO_AM_I.md
    participant Agent
    participant 用户
    participant 会话结束钩子 as SessionEnd

    Note over 会话启动钩子: 新会话开始
    会话启动钩子->>身份档案: 读取档案
    身份档案-->>会话启动钩子: 返回积累的身份信息
    会话启动钩子->>Agent: 注入为上下文(context)

    Agent->>用户: "你好!我记得……"

    Note over Agent,用户: 对话进行中
    用户->>Agent: 开展协作
    Agent->>用户: 学习偏好

    Note over 会话结束钩子: 会话终止
    会话结束钩子->>Agent: 从对话中提取新见解
    Agent->>身份档案: 用新见解更新档案
    身份档案-->>会话结束钩子: 已保存,供下次会话使用

核心机制

# 会话启动钩子:注入积累的身份信息
def session_start_hook():
    profile = read_file("WHO_AM_I.md")
    inject_context(profile)  # 注入上下文

# 会话结束钩子:用新见解完善身份信息
def session_end_hook(conversation):
    new_insights = extract_insights(conversation)
    current_profile = read_file("WHO_AM_I.md")
    updated_profile = merge_insights(current_profile, new_insights)
    write_file("WHO_AM_I.md", updated_profile)

典型档案结构包含

  • 项目目标:不断迭代的优先级列表与核心关注领域
  • 偏好设置:编码理念、工具选型、架构偏好
  • 沟通风格:语气偏好、格式规范
  • 工作流模式:研究习惯、决策模式
  • 边界规则:Agent可执行/不可执行的事项

如何使用

实现步骤:

  1. 创建带有初始结构的身份文档
  2. 配置SessionStart钩子,用于读取并注入该文档
  3. 配置SessionEnd钩子,结合新见解优化文档内容
  4. 包含文档更新的时机与方式说明

SessionStart钩子示例(Claude代码):

#!/usr/bin/env python3
import json
from pathlib import Path

whoami_path = Path.cwd() / "WHO_AM_I.md"

if whoami_path.exists():
    with open(whoami_path) as f:
        profile = f.read()

    print(json.dumps({
        "hookSpecificOutput": {
            "additionalContext": profile
        }
    }))

SessionEnd钩子示例(Claude代码):

#!/usr/bin/env python3
import subprocess

PROMPT = """
读取WHO_AM_I.md文档并根据本次对话内容更新:
1. 提取关于用户的全新见解
2. 更新每个章节(新增见解,保留原有内容)
3. 将更新后的内容写回文档
4. 更新前置元数据中的“modified”修改日期
"""

subprocess.run([
    "claude", "--continue", "-p", PROMPT,
    "--dangerously-skip-permissions"
])

基于提示的自优化机制:

SessionEnd钩子通过--continue参数恢复对话并传入优化prompt,使Agent能够智能地更新自身身份文档,而非通过机械解析的方式完成。

权衡

优点:

  • 持续熟悉度:Agent可跨会话“记住”用户
  • 深化关系:对用户的理解随时间积累
  • 降低交互摩擦:减少重复解释偏好的环节
  • 个性化行为:Agent能适配用户的特定风格
  • 透明可操作:用户身份信息可见且支持编辑

缺点:

  • 过时风险:若未及时更新,用户画像可能失效
  • 过拟合问题:Agent可能过度适配单一用户
  • 上下文开销:用户画像在每个会话中都会消耗token
  • 提取噪声:会话结束阶段可能提取无关的“洞察”内容
  • 依赖钩子机制:需要具备生命周期钩子基础设施

运营注意事项:

  • 定期审核并精简用户画像
  • 添加元数据(创建/修改日期)以追踪画像演变
  • 考虑为画像变更引入版本控制
  • 设计prompt以规避洞察提取过程中的噪声
  • 在特异性(更高个性化程度)与通用性(更强灵活性)之间取得平衡

参考文献

关键词

本内容基于个人WHO_AM_I系统,关联动态上下文注入、情景记忆检索与注入、基于文件系统的智能体状态三类技术文档。

直译
  • 基于我的个人WHO_AM_I系统

来源摘要

正在获取来源并生成中文摘要…

来源: Based on my personal bot WHO_AM_I system

← 返回社区