节点赞助商

MaskerPRC

做了大半年对话 Agent,我现在的结论是:人味不是调提示词调出来的

  •  
  •   MaskerPRC · 2h 1m ago · 73 views

    去年起步的时候我也迷信提示词。给 Agent 写了两千字的人设,说话风格、口头禅、情绪反应全规定好了,效果是挺像那么回事——聊前三轮。到第十轮它就开始说一些「人不会说但 prompt 里暗含了」的话,为什么?因为 prompt 是个静态快照,人不是。

    这半年推翻重来了两次,说几个实际的体会,不一定对,欢迎拍。

    1. 人味来自经历,不来自人设 我们那个做门店客服的 Agent (线下 KTV 场景用的),早期版本每周都要重新润一遍人设词。后来我把方向反过来:不动人设,把每天的对话记录、处理过的事、犯过的错全部结构化存下来。三个月之后明显不一样了——它开始会「记得」某个老顾客上次抱怨过包厢隔音,说话也带上了自己踩过坑的分寸感。这不是提示词能编的,是历史堆出来的。

    2. 所以先造时空,再造人 要仿人,得先给它一个会流动的环境:事件有时间戳、有因果、有后续变化,全部落成结构化数据。这一步没有捷径,纯脏活。但这是地基——没有这套东西,后面所有「记忆」「遗忘」都是空谈。

    3. 认知是历史的一个投影 每次调模型,喂进去的上下文其实是全部历史在当前情境下的一次投影。同一个 Agent ,早高峰处理客诉和深夜闲聊,取的历史切片完全不同。想通这点之后我不再追求「上下文里塞得越全越好」,而是想清楚这次调用该投影哪一段。

    4. 遗忘可能只是没被投影到 这个认知对我冲击挺大:历史数据明明还在库里,Agent 此刻「不记得」,往往不是删了,是这次投影没把它选进来。换句话说,遗忘可以是检索问题,不一定是存储问题。

    5. 记忆降级不等于遗忘 我们的做法:把大块原始记录从上下文里挪到次级存储,原地留一个引用。需要的时候顺着引用捞。上下文瘦身了,但可及性没丢。很多人说 Agent 「失忆」,其实卡在这一层——数据降级了,引用链没建好。

    6. 自进化就是在织一张查询图 迭代多了之后,常驻提示词里会慢慢长出一套覆盖所有历史数据的查询结构。不同 Agent 关心的东西不一样,一级记忆里留的东西也不同,但殊途同归:都得靠多级记忆加逐级引用,保证任何一条历史都够得着。

    现在我们的版本我基本不碰人设词了,改历史数据反而是日常。如果你也在做类似的东西,建议别在 prompt 上雕花,先把历史数据的 schema 定好——这块前期偷的懒,后面全是还的。

    有在做记忆系统的欢迎交流,几个坑(时间戳粒度、引用失效、投影时的相关性打分)我都可以展开讲。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3176 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:44 · PVG 20:44 · LAX 05:44 · JFK 08:44
    ♥ Do have faith in what you're doing.