[{"data":1,"prerenderedAt":999},["ShallowReactive",2],{"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmem_feedback":3,"surround-\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmem_feedback":983},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":976,"description":322,"extension":977,"links":6,"meta":978,"navigation":6,"path":979,"seo":980,"stem":981,"__hash__":982},"docs\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmem_feedback.md","MemFeedback",null,{"type":8,"value":9,"toc":956},"minimark",[10,15,22,25,28,31,35,38,43,50,54,57,61,64,68,71,73,77,85,128,130,134,141,145,225,229,232,254,256,260,263,296,298,302,305,309,316,505,509,512,901,903,907,914,950,952],[11,12,14],"h2",{"id":13},"_1-简介","1. 简介",[16,17,18,21],"p",{},[19,20,5],"strong",{}," 是 MemOS 的“后悔药”。",[16,23,24],{},"在长时记忆系统中，最头疼的往往不是“记不住”，而是“记错了改不掉”。当用户说“不，我的生日是明天”或者“把这个项目的代号改成 X”时，简单的 RAG 系统通常无能为力。",[16,26,27],{},"MemFeedback 能够听懂这些自然语言指令，自动去数据库里精准定位冲突的记忆，并执行原子级的修正操作（比如把旧记忆归档、写入新记忆）。通过它，你的 Agent 能够像人一样在交流中不断纠错和学习。",[29,30],"hr",{},[11,32,34],{"id":33},"_2-核心能力","2. 核心能力",[16,36,37],{},"它能处理四种常见的反馈场景：",[39,40,42],"h3",{"id":41},"纠错-correction","纠错 (Correction)",[16,44,45,46,49],{},"用户指出事实错误。系统不会粗暴地删除旧数据，而是将其",[19,47,48],{},"归档 (Archive)","，并写入新数据。这样既修正了错误，又保留了版本历史（Traceability）。如果是正在进行的对话（WorkingMemory），则直接原地更新，保证上下文连贯。",[39,51,53],{"id":52},"补充-addition","补充 (Addition)",[16,55,56],{},"如果用户只是补充了新信息，且与旧记忆不冲突，那就很简单——直接作为新节点存入记忆库。",[39,58,60],{"id":59},"全局替换-keyword-replacement","全局替换 (Keyword Replacement)",[16,62,63],{},"类似于 IDE 里的“全局重构”。比如用户说“把所有文档里的‘张三’都改成‘李四’”，系统会结合 Reranker 自动圈定受影响的文档范围，批量更新所有相关记忆。",[39,65,67],{"id":66},"偏好进化-preference-evolution","偏好进化 (Preference Evolution)",[16,69,70],{},"专门处理“我不吃香菜”、“我喜欢 Python”这类偏好。系统会记录下这个偏好产生的场景，不断丰富用户画像，让 Agent 越用越顺手。",[29,72],{},[11,74,76],{"id":75},"_3-代码结构","3. 代码结构",[16,78,79,80,84],{},"核心逻辑都在 ",[81,82,83],"code",{},"memos\u002Fsrc\u002Fmemos\u002Fmem_feedback\u002F"," 下。",[86,87,88,101,112,120],"ul",{},[89,90,91,96,97,100],"li",{},[19,92,93],{},[81,94,95],{},"simple_feedback.py",": ",[19,98,99],{},"推荐直接看这个","。它是官方封装好的版本，把 LLM、向量数据库、检索器都组装好了，开箱即用。",[89,102,103,108,109,111],{},[19,104,105],{},[81,106,107],{},"feedback.py",": 核心实现类 ",[81,110,5],{},"。脏活累活都在这儿：意图识别、冲突比对、安全风控。",[89,113,114,119],{},[19,115,116],{},[81,117,118],{},"base.py",": 接口定义。",[89,121,122,127],{},[19,123,124],{},[81,125,126],{},"utils.py",": 工具箱。",[29,129],{},[11,131,133],{"id":132},"_4-关键接口","4. 关键接口",[16,135,136,137,140],{},"主入口就一个：",[81,138,139],{},"process_feedback()","。通常在 RAG 流程结束、用户给出反馈后异步调用。",[39,142,144],{"id":143},"_41-输入参数","4.1 输入参数",[146,147,148,162],"table",{},[149,150,151],"thead",{},[152,153,154,159],"tr",{},[155,156,158],"th",{"align":157},"left","参数",[155,160,161],{"align":157},"说明",[163,164,165,180,190,200,215],"tbody",{},[152,166,167,177],{},[168,169,170,173,174],"td",{"align":157},[81,171,172],{},"user_id"," \u002F ",[81,175,176],{},"user_name",[168,178,179],{"align":157},"用户标识与 Cube ID。",[152,181,182,187],{},[168,183,184],{"align":157},[81,185,186],{},"chat_history",[168,188,189],{"align":157},"对话历史，让 LLM 知道你们刚才聊了啥。",[152,191,192,197],{},[168,193,194],{"align":157},[81,195,196],{},"feedback_content",[168,198,199],{"align":157},"用户说的那句反馈（比如“不对，是五点”）。",[152,201,202,209],{},[168,203,204],{"align":157},[19,205,206],{},[81,207,208],{},"retrieved_memory_ids",[168,210,211,214],{"align":157},[19,212,213],{},"必填项（强烈建议）","。把上一轮 RAG 检索到的记忆 ID 传进来，相当于给了系统一个“靶子”，告诉它要修正哪条记忆。如果不传，系统得自己去海量记忆里重新搜，不仅慢，还容易改错。",[152,216,217,222],{},[168,218,219],{"align":157},[81,220,221],{},"corrected_answer",[168,223,224],{"align":157},"是否顺便生成一句修正后的回复。",[39,226,228],{"id":227},"_42-输出结果","4.2 输出结果",[16,230,231],{},"返回一个字典，告诉你这次操作改了什么：",[86,233,234,246],{},[89,235,236,241,242,245],{},[19,237,238],{},[81,239,240],{},"record",": 数据库变更明细（比如 ",[81,243,244],{},"{ \"add\": [...], \"update\": [...] }","）。",[89,247,248,253],{},[19,249,250],{},[81,251,252],{},"answer",": 给用户的自然语言回复。",[29,255],{},[11,257,259],{"id":258},"_5-工作流程","5. 工作流程",[16,261,262],{},"MemFeedback 的工作流程像是一个严谨的编辑部：",[264,265,266,272,278,284,290],"ol",{},[89,267,268,271],{},[19,269,270],{},"审稿 (意图识别)",": 先看用户是在纠错、补充信息，还是在改名。",[89,273,274,277],{},[19,275,276],{},"定位 (召回)",": 找到要修改的那条记忆（如果你传了 ID，这步就省了）。",[89,279,280,283],{},[19,281,282],{},"校对 (比对)",": 让 LLM 仔细比对新旧信息，确定是完全新增 (ADD) 还是需要更新 (UPDATE)。",[89,285,286,289],{},[19,287,288],{},"风控 (安全检查)",": 防止 LLM 瞎改。比如 ID 对不对？是不是要把一篇长文档全删了？（会有阈值拦截）。",[89,291,292,295],{},[19,293,294],{},"出版 (写入)",": 最后执行图数据库操作，归档旧的，写入新的。",[29,297],{},[11,299,301],{"id":300},"_6-开发示例","6. 开发示例",[16,303,304],{},"这里有一份可运行的代码清单，展示了如何初始化服务、预置一个“错误记忆”，然后通过用户反馈将其修正。",[39,306,308],{"id":307},"_61-准备工作","6.1 准备工作",[16,310,311,312,315],{},"首先，我们需要初始化 ",[81,313,314],{},"SimpleMemFeedback"," 服务。",[317,318,323],"pre",{"className":319,"code":320,"language":321,"meta":322,"style":322},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 假设 llm, embedder, graph_db 等组件已通过 Factory 初始化完成\n# 完整初始化代码请参考 examples\u002Fmem_feedback\u002Fexample_feedback.py\n\nfrom memos.mem_feedback.simple_feedback import SimpleMemFeedback\n\nfeedback_server = SimpleMemFeedback(\n    llm=llm,\n    embedder=embedder,\n    graph_store=graph_db,\n    memory_manager=memory_manager,\n    mem_reader=mem_reader,\n    searcher=searcher,\n    reranker=mem_reranker,\n    pref_mem=None,\n)\n","python","",[81,324,325,334,340,347,376,381,397,412,425,438,451,464,477,490,499],{"__ignoreMap":322},[326,327,330],"span",{"class":328,"line":329},"line",1,[326,331,333],{"class":332},"sHwdD","# 假设 llm, embedder, graph_db 等组件已通过 Factory 初始化完成\n",[326,335,337],{"class":328,"line":336},2,[326,338,339],{"class":332},"# 完整初始化代码请参考 examples\u002Fmem_feedback\u002Fexample_feedback.py\n",[326,341,343],{"class":328,"line":342},3,[326,344,346],{"emptyLinePlaceholder":345},true,"\n",[326,348,350,354,358,362,365,367,370,373],{"class":328,"line":349},4,[326,351,353],{"class":352},"s7zQu","from",[326,355,357],{"class":356},"sTEyZ"," memos",[326,359,361],{"class":360},"sMK4o",".",[326,363,364],{"class":356},"mem_feedback",[326,366,361],{"class":360},[326,368,369],{"class":356},"simple_feedback ",[326,371,372],{"class":352},"import",[326,374,375],{"class":356}," SimpleMemFeedback\n",[326,377,379],{"class":328,"line":378},5,[326,380,346],{"emptyLinePlaceholder":345},[326,382,384,387,390,394],{"class":328,"line":383},6,[326,385,386],{"class":356},"feedback_server ",[326,388,389],{"class":360},"=",[326,391,393],{"class":392},"s2Zo4"," SimpleMemFeedback",[326,395,396],{"class":360},"(\n",[326,398,400,404,406,409],{"class":328,"line":399},7,[326,401,403],{"class":402},"sHdIc","    llm",[326,405,389],{"class":360},[326,407,408],{"class":392},"llm",[326,410,411],{"class":360},",\n",[326,413,415,418,420,423],{"class":328,"line":414},8,[326,416,417],{"class":402},"    embedder",[326,419,389],{"class":360},[326,421,422],{"class":392},"embedder",[326,424,411],{"class":360},[326,426,428,431,433,436],{"class":328,"line":427},9,[326,429,430],{"class":402},"    graph_store",[326,432,389],{"class":360},[326,434,435],{"class":392},"graph_db",[326,437,411],{"class":360},[326,439,441,444,446,449],{"class":328,"line":440},10,[326,442,443],{"class":402},"    memory_manager",[326,445,389],{"class":360},[326,447,448],{"class":392},"memory_manager",[326,450,411],{"class":360},[326,452,454,457,459,462],{"class":328,"line":453},11,[326,455,456],{"class":402},"    mem_reader",[326,458,389],{"class":360},[326,460,461],{"class":392},"mem_reader",[326,463,411],{"class":360},[326,465,467,470,472,475],{"class":328,"line":466},12,[326,468,469],{"class":402},"    searcher",[326,471,389],{"class":360},[326,473,474],{"class":392},"searcher",[326,476,411],{"class":360},[326,478,480,483,485,488],{"class":328,"line":479},13,[326,481,482],{"class":402},"    reranker",[326,484,389],{"class":360},[326,486,487],{"class":392},"mem_reranker",[326,489,411],{"class":360},[326,491,493,496],{"class":328,"line":492},14,[326,494,495],{"class":402},"    pref_mem",[326,497,498],{"class":360},"=None,\n",[326,500,502],{"class":328,"line":501},15,[326,503,504],{"class":360},")\n",[39,506,508],{"id":507},"_62-模拟场景与执行反馈","6.2 模拟场景与执行反馈",[16,510,511],{},"场景：系统错误地记住了“你喜欢苹果，不喜欢香蕉”，现在我们要纠正它。",[317,513,515],{"className":319,"code":514,"language":321,"meta":322,"style":322},"import json\nfrom memos.mem_feedback.utils import make_mem_item\n\n# 1. 模拟对话历史\n# 用户问偏好，助手答错了\nhistory = [\n    {\"role\": \"user\", \"content\": \"我喜欢什么水果,不喜欢什么水果\"},\n    {\"role\": \"assistant\", \"content\": \"你喜欢苹果,不喜欢香蕉\"},\n]\n\n# 2. 预置“错误记忆”\n# 我们手动往库里塞一条错误的事实\nmem_text = \"你喜欢苹果,不喜欢香蕉\"\n# ... (省略 make_mem_item 的详细参数，见源码) ...\nmemory_manager.add([make_mem_item(mem_text, ...)], ...)\n\n# 3. 用户反馈\nfeedback_content = \"错了,实际上我喜欢的是山竹\"\nprint(f\"Feedback Input: {feedback_content}\")\n\n# 4. 执行修正\n# MemFeedback 会发现冲突，把旧记忆归档，写入新记忆“喜欢山竹”\nres = feedback_server.process_feedback(\n    ...,\n    chat_history=history,\n    feedback_content=feedback_content,\n    ...\n)\n\n# 5. 查看结果\nprint(json.dumps(res, indent=4))\n",[81,516,517,524,544,548,553,558,568,615,653,658,662,667,672,686,691,724,729,735,750,778,783,789,795,813,821,834,846,852,857,862,868],{"__ignoreMap":322},[326,518,519,521],{"class":328,"line":329},[326,520,372],{"class":352},[326,522,523],{"class":356}," json\n",[326,525,526,528,530,532,534,536,539,541],{"class":328,"line":336},[326,527,353],{"class":352},[326,529,357],{"class":356},[326,531,361],{"class":360},[326,533,364],{"class":356},[326,535,361],{"class":360},[326,537,538],{"class":356},"utils ",[326,540,372],{"class":352},[326,542,543],{"class":356}," make_mem_item\n",[326,545,546],{"class":328,"line":342},[326,547,346],{"emptyLinePlaceholder":345},[326,549,550],{"class":328,"line":349},[326,551,552],{"class":332},"# 1. 模拟对话历史\n",[326,554,555],{"class":328,"line":378},[326,556,557],{"class":332},"# 用户问偏好，助手答错了\n",[326,559,560,563,565],{"class":328,"line":383},[326,561,562],{"class":356},"history ",[326,564,389],{"class":360},[326,566,567],{"class":360}," [\n",[326,569,570,573,576,580,582,585,588,591,593,596,598,601,603,605,607,610,612],{"class":328,"line":399},[326,571,572],{"class":360},"    {",[326,574,575],{"class":360},"\"",[326,577,579],{"class":578},"sfazB","role",[326,581,575],{"class":360},[326,583,584],{"class":360},":",[326,586,587],{"class":360}," \"",[326,589,590],{"class":578},"user",[326,592,575],{"class":360},[326,594,595],{"class":360},",",[326,597,587],{"class":360},[326,599,600],{"class":578},"content",[326,602,575],{"class":360},[326,604,584],{"class":360},[326,606,587],{"class":360},[326,608,609],{"class":578},"我喜欢什么水果,不喜欢什么水果",[326,611,575],{"class":360},[326,613,614],{"class":360},"},\n",[326,616,617,619,621,623,625,627,629,632,634,636,638,640,642,644,646,649,651],{"class":328,"line":414},[326,618,572],{"class":360},[326,620,575],{"class":360},[326,622,579],{"class":578},[326,624,575],{"class":360},[326,626,584],{"class":360},[326,628,587],{"class":360},[326,630,631],{"class":578},"assistant",[326,633,575],{"class":360},[326,635,595],{"class":360},[326,637,587],{"class":360},[326,639,600],{"class":578},[326,641,575],{"class":360},[326,643,584],{"class":360},[326,645,587],{"class":360},[326,647,648],{"class":578},"你喜欢苹果,不喜欢香蕉",[326,650,575],{"class":360},[326,652,614],{"class":360},[326,654,655],{"class":328,"line":427},[326,656,657],{"class":360},"]\n",[326,659,660],{"class":328,"line":440},[326,661,346],{"emptyLinePlaceholder":345},[326,663,664],{"class":328,"line":453},[326,665,666],{"class":332},"# 2. 预置“错误记忆”\n",[326,668,669],{"class":328,"line":466},[326,670,671],{"class":332},"# 我们手动往库里塞一条错误的事实\n",[326,673,674,677,679,681,683],{"class":328,"line":479},[326,675,676],{"class":356},"mem_text ",[326,678,389],{"class":360},[326,680,587],{"class":360},[326,682,648],{"class":578},[326,684,685],{"class":360},"\"\n",[326,687,688],{"class":328,"line":492},[326,689,690],{"class":332},"# ... (省略 make_mem_item 的详细参数，见源码) ...\n",[326,692,693,695,697,700,703,706,709,712,714,717,720,722],{"class":328,"line":501},[326,694,448],{"class":356},[326,696,361],{"class":360},[326,698,699],{"class":392},"add",[326,701,702],{"class":360},"([",[326,704,705],{"class":392},"make_mem_item",[326,707,708],{"class":360},"(",[326,710,711],{"class":392},"mem_text",[326,713,595],{"class":360},[326,715,716],{"class":392}," ...",[326,718,719],{"class":360},")],",[326,721,716],{"class":392},[326,723,504],{"class":360},[326,725,727],{"class":328,"line":726},16,[326,728,346],{"emptyLinePlaceholder":345},[326,730,732],{"class":328,"line":731},17,[326,733,734],{"class":332},"# 3. 用户反馈\n",[326,736,738,741,743,745,748],{"class":328,"line":737},18,[326,739,740],{"class":356},"feedback_content ",[326,742,389],{"class":360},[326,744,587],{"class":360},[326,746,747],{"class":578},"错了,实际上我喜欢的是山竹",[326,749,685],{"class":360},[326,751,753,756,758,762,765,769,771,774,776],{"class":328,"line":752},19,[326,754,755],{"class":392},"print",[326,757,708],{"class":360},[326,759,761],{"class":760},"spNyl","f",[326,763,764],{"class":578},"\"Feedback Input: ",[326,766,768],{"class":767},"sbssI","{",[326,770,196],{"class":392},[326,772,773],{"class":767},"}",[326,775,575],{"class":578},[326,777,504],{"class":360},[326,779,781],{"class":328,"line":780},20,[326,782,346],{"emptyLinePlaceholder":345},[326,784,786],{"class":328,"line":785},21,[326,787,788],{"class":332},"# 4. 执行修正\n",[326,790,792],{"class":328,"line":791},22,[326,793,794],{"class":332},"# MemFeedback 会发现冲突，把旧记忆归档，写入新记忆“喜欢山竹”\n",[326,796,798,801,803,806,808,811],{"class":328,"line":797},23,[326,799,800],{"class":356},"res ",[326,802,389],{"class":360},[326,804,805],{"class":356}," feedback_server",[326,807,361],{"class":360},[326,809,810],{"class":392},"process_feedback",[326,812,396],{"class":360},[326,814,816,819],{"class":328,"line":815},24,[326,817,818],{"class":392},"    ...",[326,820,411],{"class":360},[326,822,824,827,829,832],{"class":328,"line":823},25,[326,825,826],{"class":402},"    chat_history",[326,828,389],{"class":360},[326,830,831],{"class":392},"history",[326,833,411],{"class":360},[326,835,837,840,842,844],{"class":328,"line":836},26,[326,838,839],{"class":402},"    feedback_content",[326,841,389],{"class":360},[326,843,196],{"class":392},[326,845,411],{"class":360},[326,847,849],{"class":328,"line":848},27,[326,850,851],{"class":392},"    ...\n",[326,853,855],{"class":328,"line":854},28,[326,856,504],{"class":360},[326,858,860],{"class":328,"line":859},29,[326,861,346],{"emptyLinePlaceholder":345},[326,863,865],{"class":328,"line":864},30,[326,866,867],{"class":332},"# 5. 查看结果\n",[326,869,871,873,875,878,880,883,885,888,890,893,895,898],{"class":328,"line":870},31,[326,872,755],{"class":392},[326,874,708],{"class":360},[326,876,877],{"class":392},"json",[326,879,361],{"class":360},[326,881,882],{"class":392},"dumps",[326,884,708],{"class":360},[326,886,887],{"class":392},"res",[326,889,595],{"class":360},[326,891,892],{"class":402}," indent",[326,894,389],{"class":360},[326,896,897],{"class":767},"4",[326,899,900],{"class":360},"))\n",[29,902],{},[11,904,906],{"id":905},"_7-配置说明","7. 配置说明",[16,908,909,910,913],{},"要让 MemFeedback 转起来，你需要准备好以下组件的配置（通常在 ",[81,911,912],{},".env"," 或 YAML 里）：",[86,915,916,926,934,942],{},[89,917,918,925],{},[19,919,920,921,924],{},"LLM (",[81,922,923],{},"extractor_llm",")",": 脑子要好使，建议用 GPT-4o 级别的模型。Temperature 设低点（比如 0），因为它要干的是逻辑分析，不需要太发散。",[89,927,928,933],{},[19,929,930,931,924],{},"Embedder (",[81,932,422],{},": 用于把新记忆变成向量。",[89,935,936,941],{},[19,937,938,939,924],{},"GraphDB (",[81,940,435],{},": 记忆存在哪、怎么存，这两兄弟负责。",[89,943,944,949],{},[19,945,946,947,924],{},"MemReader (",[81,948,461],{},": 如果是纯新增的记忆，用它来解析。",[29,951],{},[953,954,955],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":322,"searchDepth":336,"depth":336,"links":957},[958,959,965,966,970,971,975],{"id":13,"depth":336,"text":14},{"id":33,"depth":336,"text":34,"children":960},[961,962,963,964],{"id":41,"depth":342,"text":42},{"id":52,"depth":342,"text":53},{"id":59,"depth":342,"text":60},{"id":66,"depth":342,"text":67},{"id":75,"depth":336,"text":76},{"id":132,"depth":336,"text":133,"children":967},[968,969],{"id":143,"depth":342,"text":144},{"id":227,"depth":342,"text":228},{"id":258,"depth":336,"text":259},{"id":300,"depth":336,"text":301,"children":972},[973,974],{"id":307,"depth":342,"text":308},{"id":507,"depth":342,"text":508},{"id":905,"depth":336,"text":906},"MemFeedback 是你的“记忆错题本”，让你的 Agent 能够听懂“你记错了”，并自动修正记忆库。它是实现记忆自进化的关键组件。","md",{},"\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmem_feedback",{"title":5,"description":322},"cn\u002Fopen_source\u002Fmodules\u002Fmem_feedback","ujsqKE3XTu4f8466LYnSg6tz2wYIZw6UTjmesLKMyUc",[984,992],{"title":985,"path":986,"stem":987,"icon":988,"framework":6,"module":6,"class":989,"target":-1,"active":990,"defaultOpen":990,"children":-1,"description":991},"MemChat 使用记忆进行聊天","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmem_chat","open_source\u002Fmodules\u002Fmem_chat","i-ri-calendar-line",[],false,"MemChat 是你的“记忆外交官”，它协调用户输入、记忆检索与 LLM 生成，打造连贯且具备长期记忆的对话体验。",{"title":993,"path":994,"stem":995,"icon":996,"framework":6,"module":6,"class":997,"target":-1,"active":990,"defaultOpen":990,"children":-1,"description":998},"记忆模块总览","\u002Fcn\u002Fopen_source\u002Fmodules\u002Fmemories\u002Foverview","open_source\u002Fmodules\u002Fmemories\u002Foverview","i-ri-database-2-line",[],"MemOS 记忆系统完整指南 - MemOS 提供了丰富的记忆模块，满足从轻量级文本记忆到高级图结构的各种需求。本指南帮助你快速找到最适合的记忆解决方案。",1774339751112]