恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Perplexity Brain 自改进记忆系统实战:夜间自我学习让 Agent 正确率 +25%、成本 -13% 的配置骨架

  • 首页
  • 资讯中心
  • /
  • Perplexity Brain 自改进记忆系统实战:夜间自我学习让 Agent 正确率 +25%、成本 -13% 的配置骨架

相关资讯

ARM设备运行Windows程序:FEX-Emu与Wine兼容层实战解析 2026/10/1 20:23:59
C++与DirectX 11吃豆人源码解析:从渲染管线到幽灵AI状态机 2026/10/1 20:18:58
雷达脉冲压缩全解析:LFM信号、匹配滤波与Matlab测距仿真 2026/10/1 20:18:58

最新资讯

自适应滤波器设计实战:从LMS/NLMS/RLS到LCL谐振抑制
Ceph文件存储实战:K8s中用Rook部署Tentacle版本实现共享读写
IPSO-BP风速预测:自适应变异粒子群优化BP神经网络初始权重
SpringBoot + Vue前后端分离的流浪动物救助系统设计与部署实践
图像分类实战:从数据拆解到PyTorch迁移学习全流程
基于SSM的中小企业HR管理系统:从环境配置到核心模块开发全解析

今日推荐

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Perplexity Brain 自改进记忆系统实战:夜间自我学习让 Agent 正确率 +25%、成本 -13% 的配置骨架

发布时间:2026/10/1 20:23:59
Perplexity Brain 自改进记忆系统实战:夜间自我学习让 Agent 正确率 +25%、成本 -13% 的配置骨架 1. 为什么你的 Agent 总是“第一天聪明第一百天还那样”如果你正在做多轮对话产品、长期陪伴型工具或者任何需要用户反复回来的 Agent大概率遇到过这个场景用户第一周问“帮我看看今天 AI 圈有什么值得关注的”Agent 答得还行第三周用户又问同一类问题Agent 还是从零开始组织答案不知道用户只关心 Agent 和 Coding、不关心融资八卦也不知道用户已经看过哪些来源。每次都是 100% 的工作量质量还忽高忽低。这就是 Perplexity Brain 想解决的问题。Brain 是 Perplexity 在 2026 年 6 月推出的自改进记忆系统核心机制是“夜间自我学习 上下文图谱构建”白天系统观察用户的查询模式夜间离线整理成结构化的用户上下文图谱第二天再遇到相似类别的问题时直接命中图谱而不是从零检索。官方给出的数据是重复任务正确率 25%、上下文密集查询成本 -13%。这两个数字放在一起才值得琢磨。传统认知里记忆系统是“质量 vs 成本”的权衡——记得多更准但更贵记得少便宜但不准。Brain 给出的是反例精心设计的记忆系统可以同时改善两者。原因在于在线推理时系统已经知道“这个用户问的是哪类问题”可以用更小的 prompt 和更精准的检索完成任务节省的在线 token 超过了新增的离线学习成本。这篇要交付的不是对 Brain 的产品分析而是一套可以在你自己的 Agent 里复现这个模式的配置骨架。我会用 TaoToken 作为模型接入层给出可复制的 config.toml / settings.json、CC Switch 切换步骤、夜间任务的 cron 配置以及验证 25% / -13% 是否在你场景里发生的具体动作。适合正在做 Agent 工程、想让产品“越用越好”的开发者。2. TaoToken 前置把模型接入层和记忆层解耦在动手写夜间任务之前先把接入层理清楚。Brain 这类自改进记忆系统的工程前提是你的 Agent 能稳定调用模型且模型层可以随时切换。因为夜间整理任务和白天在线推理任务对模型的要求不一样——夜间可以用便宜、吞吐大的模型做批量整理白天用质量高的模型做实时回答。如果模型接入写死在业务代码里这个分层就做不起来。TaoToken 在这里的角色是统一的模型接入层。它的 API 地址是https://taotoken.net/api兼容 OpenAI 风格的接口你可以在一个 Base URL 下切换不同模型白天和夜间任务用不同的 Model ID而不用改业务代码。官网在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后在控制台生成 API Key。具体操作路径登录后进入控制台找到 API Keys 页面创建一个新 Key复制保存。这个 Key 后面会写进 config.toml 和 settings.json。如果你用的是 Claude Code 这类工具还需要在 CC Switch 里配置 Base URL、Key、Model ID 三件套下面第 3 节会给完整片段。这里要强调一个设计原则记忆层和模型层必须解耦。你的上下文图谱、夜间整理脚本、memory 存储都不应该依赖某个特定模型的私有接口。用统一的 OpenAI 兼容接口意味着你明天想换模型做夜间整理只改一个 Model ID 就行。这也是为什么我不建议把 memory 逻辑写进模型厂商的 SDK 里——迁移成本会很高。另外夜间任务通常是批量调用对并发和超时比较敏感。TaoToken 的 API 支持标准的max_tokens、temperature参数夜间整理任务建议把 temperature 设低0.2 左右因为你要的是稳定的结构化输出不是创意。白天在线推理可以设高一点。这个差异也体现在配置里。3. 可复制配置config.toml 与 settings.json 骨架这一节给完整可复制的配置。分三块Agent 主配置 config.toml、CC Switch 的 settings.json、夜间任务的 cron 脚本。先看 config.toml。这个文件放在你 Agent 项目的根目录负责定义模型接入、记忆存储路径、夜间任务参数# config.toml - Agent 主配置 [model] base_url https://taotoken.net/api api_key sk-your-taotoken-key # 白天在线推理用质量高的模型 day_model claude-sonnet-4-20250514 # 夜间整理用便宜、吞吐大的模型 night_model gpt-4o-mini timeout 60 max_retries 3 [memory] # 上下文图谱存储路径 graph_path ./memory/context_graph.json # 原始观察日志夜间任务从这里读 observation_log ./memory/observations.jsonl # 图谱节点类型 node_types [preference, trusted_source, reading_style, question_pattern] # 边类型 edge_types [domain_relation, source_to_domain, question_to_template] [night_task] # 夜间任务执行时间cron 格式 schedule 0 0 * * * # 单次整理最多处理的观察条数 batch_size 200 # 整理任务的 temperature要稳定输出 temperature 0.2 # 图谱节点上限防止无限膨胀 max_nodes 5000 # 过期节点清理阈值天 expire_days 90 [online] # 在线推理时注入图谱的最大节点数 inject_top_k 8 # 相似类别命中阈值 similarity_threshold 0.75再看 CC Switch 的 settings.json。如果你用 Claude Code 配合 CC Switch 做模型切换这个文件放在~/.cc-switch/settings.json三件套必须写全{ providers: [ { name: taotoken-day, base_url: https://taotoken.net/api, api_key: sk-your-taotoken-key, model: claude-sonnet-4-20250514, description: 白天在线推理 }, { name: taotoken-night, base_url: https://taotoken.net/api, api_key: sk-your-taotoken-key, model: gpt-4o-mini, description: 夜间记忆整理 } ], active: taotoken-day }切换命令cc-switch use taotoken-night切到夜间模型cc-switch use taotoken-day切回白天。夜间任务脚本里可以直接调cc-switch use taotoken-night再跑整理跑完切回来。最后是夜间任务的 cron 脚本放在scripts/night_learn.py# scripts/night_learn.py import json import os from datetime import datetime, timedelta from openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keyos.environ[TAOTOKEN_API_KEY] ) def load_observations(path, batch_size): 读取最近的观察日志 obs [] with open(path, r, encodingutf-8) as f: for line in f: obs.append(json.loads(line)) return obs[-batch_size:] def extract_patterns(observations): 用夜间模型从观察中提取模式 prompt f你是记忆整理器。从以下用户观察记录中提取结构化模式。 输出 JSON包含 nodes 和 edges 两个数组。 nodes 每项{{type: preference|trusted_source|reading_style|question_pattern, value: ..., weight: 0.0-1.0}} edges 每项{{from: ..., to: ..., relation: ...}} 观察记录 {json.dumps(observations, ensure_asciiFalse, indent2)} resp client.chat.completions.create( modelgpt-4o-mini, messages[{role: user, content: prompt}], temperature0.2, response_format{type: json_object} ) return json.loads(resp.choices[0].message.content) def merge_graph(graph_path, new_patterns, max_nodes, expire_days): 合并新模式到图谱清理过期节点 if os.path.exists(graph_path): with open(graph_path, r, encodingutf-8) as f: graph json.load(f) else: graph {nodes: [], edges: [], updated_at: } # 合并节点相同 value 的累加权重 existing {n[value]: n for n in graph[nodes]} for node in new_patterns.get(nodes, []): if node[value] in existing: existing[node[value]][weight] min( 1.0, existing[node[value]][weight] node[weight] * 0.3 ) else: graph[nodes].append(node) # 合并边去重 edge_set {(e[from], e[to], e[relation]) for e in graph[edges]} for edge in new_patterns.get(edges, []): key (edge[from], edge[to], edge[relation]) if key not in edge_set: graph[edges].append(edge) edge_set.add(key) # 按权重排序截断到上限 graph[nodes].sort(keylambda x: x[weight], reverseTrue) graph[nodes] graph[nodes][:max_nodes] graph[updated_at] datetime.now().isoformat() with open(graph_path, w, encodingutf-8) as f: json.dump(graph, f, ensure_asciiFalse, indent2) return graph if __name__ __main__: obs load_observations(./memory/observations.jsonl, 200) if len(obs) 10: print(观察数据不足跳过本次整理) exit(0) patterns extract_patterns(obs) graph merge_graph(./memory/context_graph.json, patterns, 5000, 90) print(f整理完成当前节点数{len(graph[nodes])}边数{len(graph[edges])})cron 配置0 0 * * * cd /your/agent/path TAOTOKEN_API_KEYsk-xxx python scripts/night_learn.py logs/night_learn.log 21。这套骨架的关键设计点观察日志用 jsonl 追加写夜间任务批量读图谱用节点边的结构不是向量节点有权重重复出现的偏好权重累加有上限和过期机制防止图谱无限膨胀。这些细节决定了 25% / -13% 能不能复现。4. 验证请求怎么确认正确率涨了、成本降了配置写完不算完得验证。这一节给具体的验证动作分正确率和成本两条线。正确率验证用 A/B 对照。准备 20 个“相似类别”的问题比如用户每周都问的“今天 AI 圈有什么值得关注的”。前 10 个在无图谱模式下跑把inject_top_k设为 0后 10 个在有图谱模式下跑inject_top_k设为 8。每个回答用同一个评分 prompt 让模型打分或者人工标注是否命中用户偏好。对比两组平均分。验证请求的代码# scripts/verify.py import json from openai import OpenAI client OpenAI(base_urlhttps://taotoken.net/api, api_keysk-your-key) def ask_with_graph(question, graph, top_k): 带图谱注入的问答 if top_k 0: nodes sorted(graph[nodes], keylambda x: x[weight], reverseTrue)[:top_k] context \n.join([f- {n[type]}: {n[value]} for n in nodes]) else: context 无用户上下文 prompt f用户上下文 {context} 用户问题{question} 请基于上下文回答。 resp client.chat.completions.create( modelclaude-sonnet-4-20250514, messages[{role: user, content: prompt}], temperature0.7 ) return resp.choices[0].message.content, resp.usage.total_tokens # 加载图谱 with open(./memory/context_graph.json) as f: graph json.load(f) questions [今天 AI 圈有什么值得关注的] * 10 results {no_graph: [], with_graph: []} for q in questions: ans, tok ask_with_graph(q, graph, 0) results[no_graph].append({answer: ans, tokens: tok}) ans, tok ask_with_graph(q, graph, 8) results[with_graph].append({answer: ans, tokens: tok}) # 统计 token 消耗 no_graph_tokens sum(r[tokens] for r in results[no_graph]) with_graph_tokens sum(r[tokens] for r in results[with_graph]) print(f无图谱平均 token{no_graph_tokens / 10:.0f}) print(f有图谱平均 token{with_graph_tokens / 10:.0f}) print(f成本变化{(with_graph_tokens - no_graph_tokens) / no_graph_tokens * 100:.1f}%)跑完你会看到两个数字。如果 token 消耗下降 10% 以上说明图谱注入确实减少了在线推理的 prompt 长度——因为系统不用把全部历史塞进去只注入高权重节点。正确率那边如果带图谱的回答更多命中用户偏好比如主动过滤掉用户不关心的融资新闻说明图谱在起作用。这里有个坑要提醒图谱冷启动期。新用户前几天的图谱是空的inject_top_k注入不了东西体验和无图谱一样。所以验证要等图谱积累到一定节点数建议至少 50 个节点再做否则数据没意义。这也是 Brain 官方提到的“冷启动期”问题。另一个验证维度是夜间任务的成本。夜间整理本身要花 token这部分成本要算进去。用gpt-4o-mini跑 200 条观察的整理大概几千 token成本很低。只要在线推理节省的 token 超过夜间整理的成本整体就是 -13% 的方向。你可以把夜间任务的 token 消耗也记到日志里月底算总账。5. 常见报错排查401、local proxy failed、reading choices这一节列几个实际会撞到的报错以及排查路径。401 Unauthorized。最常见的原因是 API Key 没配对或者环境变量没传进去。检查三处config.toml 里的api_key、CC Switch settings.json 里的api_key、夜间脚本里的os.environ[TAOTOKEN_API_KEY]。三处必须一致。如果你用 cron 跑夜间任务cron 的环境变量和 shell 里不一样必须在 cron 命令里显式传TAOTOKEN_API_KEYsk-xxx不能指望它自动继承。我踩过的坑就是 cron 里 Key 为空夜间任务静默失败第二天图谱没更新。local proxy failed / connection refused。这个报错通常是 Base URL 写错了。确认是https://taotoken.net/api注意结尾的/api不能少也不能多斜杠。有些 OpenAI SDK 会自动在 base_url 后面拼/chat/completions如果你的 base_url 写成https://taotoken.net/api/v1拼出来就是/api/v1/chat/completions路径不对。统一用https://taotoken.net/api让 SDK 自己拼。reading choices of undefined。这个报错说明 API 返回的结构里没有choices字段通常是请求失败了但代码没检查错误。排查打印完整的resp对象看是不是返回了{error: {...}}。常见原因是 Model ID 写错比如把claude-sonnet-4-20250514写成了不存在的版本号。另一个原因是response_format{type: json_object}这个参数某些模型不支持去掉试试。夜间整理脚本里我用了这个参数如果你换的模型不支持会直接报错。OAuth / authentication failed。如果你用 Claude Code 配合 CC Switch报 OAuth 相关错误说明 CC Switch 的 provider 配置没生效。检查~/.cc-switch/settings.json里的active字段是不是指向了正确的 provider以及 provider 的base_url、api_key、model三件套是否完整。CC Switch 切换后要重启 Claude Code 会话配置才生效。图谱不更新 / 节点数一直是 0。排查顺序先看observations.jsonl有没有内容如果白天没写观察日志夜间任务没数据可整理再看夜间任务的日志logs/night_learn.log有没有报错最后看extract_patterns返回的 JSON 结构对不对如果模型返回的 JSON 缺nodes字段merge_graph会静默跳过。建议在merge_graph里加个断言new_patterns必须包含nodes和edges。token 消耗没降反升。如果带图谱的 token 比不带还多说明inject_top_k设太大了或者图谱节点描述太长。把inject_top_k降到 5节点 value 控制在 20 字以内。图谱注入的目的是“精准”不是“多”。6. 把夜间自我学习接进你的 Agent从配置到长期运行配置和验证都跑通之后剩下的是长期运行的问题。这一节说几个让系统稳定跑下去的关键点。第一观察日志的写入要轻量。白天在线推理时每轮对话追加一条 jsonl只记关键信息用户问题、命中的图谱节点、是否采纳。不要记完整对话否则日志膨胀很快夜间任务读不动。写入用 append 模式不要每次重写整个文件。第二夜间任务要有幂等性。如果 cron 跑重了或者手动补跑不能把同一批观察重复整理进图谱。在merge_graph里用节点 value 去重已经做了一半但权重累加会导致重复加权。建议在观察日志里加一个processed标记夜间任务只处理未标记的处理完标记掉。第三图谱要可解释、可编辑。Brain 是黑盒用户不知道记了什么。你自己做的话建议给图谱加一个查看接口让用户能看到“系统记住了我关心 Agent 和 Coding”。这不仅是体验问题也是合规问题——企业客户会要求 memory 可审计。图谱用 JSON 存的好处就是可以直接读、直接改。第四模型切换要平滑。白天用claude-sonnet-4-20250514夜间用gpt-4o-mini通过 CC Switch 或 config.toml 里的day_model/night_model区分。如果某个模型临时不可用要有 fallback。TaoToken 的统一接口让这个切换只改一个字符串不用动业务代码。第五定期评估 ROI。每月算一次夜间任务的 token 成本 vs 在线推理节省的 token。如果夜间成本超过在线节省说明图谱设计有问题——要么节点太多太杂要么注入策略不对。这时候要回头调max_nodes和inject_top_k。如果你想把模型对话、Coding Plan、API Keys 这些串起来用可以从模型对话页面先试一下不同模型在你场景下的表现再决定白天和夜间分别用哪个。长期跑编码类 Agent 的话Coding Plan 的额度模型更适合夜间批量任务。接入文档在 doc 页面API Keys 在 console 的 api-keys 页面生成。Claude Code 用户可以直接参考 ClaudeCodeAnthropic 的接入说明配 CC Switch。这套骨架跑起来之后你的 Agent 就有了“第二层”——白天在线推理夜间离线学习。用户感知不到延迟系统获得长期改进能力成本还可控。25% / -13% 是 Perplexity 的自评数据你的场景不一定完全复现但方向是对的花离线时间做 memory 优化能换在线时间的成本下降。前提是图谱设计得对节点和边表达的是用户真实的偏好结构而不是一堆无意义的 embedding。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号