从零开始:如何让AI Agent记住你的喜好?MemMachine长期记忆系统搭建指南(建议收藏)
1. 为什么你的 AI Agent 总是“金鱼记忆”长期记忆系统到底缺了什么先说一个我踩过的坑。去年我给自己写了个代码助手 Agent专门用来记录项目里的技术选型和命名规范。第一次对话我告诉它“这个项目统一用 pydantic v2别给我生成 v1 的写法”它答应得好好的。第二天我重新打开问它“帮我写个配置类”它反手就给我来了一段class Config:的老式写法。那一刻我意识到LLM 本身没有记忆它的“记性”完全依赖当前上下文窗口窗口一关前因后果全部蒸发。这不是模型能力问题而是架构问题。大语言模型的推理是无状态的每次请求都是一次全新的前向计算。你看到的“它记得”其实是把历史对话拼进了 prompt 里。一旦对话轮次变多、token 超限或者你换了会话、重启了进程这些临时拼进去的内容就没了。对于陪伴类助手、客服机器人、长期编码 Agent 来说这种“金鱼记忆”直接让体验断裂。传统做法是用 RAG检索增强生成来补。RAG 的思路是把历史内容切块、向量化、存进向量库需要时按语义相似度召回几段塞进 prompt。它像给 AI 配了一本字典能查资料但它不懂前因后果。你问“我上次说了啥”它只是去书堆里把包含“上次”两个字的纸条翻出来并不理解时间线和人物关系。更麻烦的是RAG 召回的是静态片段用户改口了、偏好变了旧片段还在库里容易和新信息打架。MemMachine 走的是另一条路。它把自己定位成“AI Agent 的持久化记忆层”核心是双层记忆结构一层叫情景记忆Episodic Memory记的是“故事线”比如你昨天感冒了所以今天想喝热水它记的是事件的前后顺序和因果另一层叫档案记忆Profile Memory记的是“人设卡”比如你不吃香菜、你是程序员、你在控制碳水这些一旦写入就长期生效不需要反复强调。检索时它会把这两层记忆融合后注入到当前对话里让模型“想起来”。这套机制适合谁如果你在做多轮对话的个人助手、需要跨会话记住用户偏好的客服系统、或者长期跑任务的编码 Agent那长期记忆系统就是刚需。这篇我会带你从零把 MemMachine 搭起来走通记忆写入、检索、注入的完整链路并且用 TaoToken 统一 Key 和 API 通道来接入模型调用保证整条链路可跑通、可复现。你不需要懂太多底层原理跟着命令走就行。2. 搭建前的环境准备Docker 部署 MemMachine 与 TaoToken 统一接入配置动手之前先把地基打好。MemMachine 官方推荐用 Docker 部署所以你的机器上得有 Docker 和 Docker Compose。Windows 用户装 Docker Desktop 就行Mac 和 Linux 用户装对应版本。装完在终端里验证一下docker --version docker compose version两条命令都能打印出版本号说明环境没问题。接下来是模型 API 通道。MemMachine 默认走 OpenAI 的接口格式但实际调用哪个模型供应商是可以换的。这里我用 TaoToken 来做统一接入原因是它兼容 OpenAI 的接口协议Base URL 和 Key 配一次后面换模型只改 Model ID 就行不用动代码结构。TaoToken 的 API 地址是https://taotoken.net/api注意这个地址不带任何查询参数。你需要先去控制台创建一个 API Key入口在https://taotoken.net/console/api-keys。创建完把 Key 复制下来形如sk-开头的一串字符后面配置里要用。如果你还没决定用哪个模型可以先在模型对话页面试试手感地址是https://taotoken.net/model-chat确认通道通了再往下走。现在拉取 MemMachine 的代码。官方仓库在 GitHub 上我用的是 release 包的方式这样版本可控。在 PowerShell 里执行下面这段它会自动下载最新 release 并解压到MemMachine目录$latestRelease Invoke-RestMethod -Uri https://api.github.com/repos/MemMachine/MemMachine/releases/latest $tarballUrl $latestRelease.tarball_url $destination MemMachine if (Test-Path $destination) { Remove-Item $destination -Recurse -Force } New-Item -ItemType Directory -Force -Path $destination Invoke-WebRequest -Uri $tarballUrl -OutFile MemMachine-latest.tar.gz tar -xzf MemMachine-latest.tar.gz -C $destination --strip-components1 Set-Location $destination如果你用的是 Git Bash 或者 Linux也可以直接git clone仓库效果一样。解压完进入目录你会看到memmachine-compose.sh这个脚本它是官方给的交互式部署入口。运行它./memmachine-compose.sh脚本会依次问你几个问题用 CPU 还是 GPU 配置、用哪个模型供应商、用哪个对话模型、用哪个 embedding 模型、以及 API Key。这里有个关键点如果你打算用 TaoToken 统一接入模型供应商那一步选 OpenAI 兼容模式然后把 Base URL 指向 TaoToken。不过脚本的交互流程里 Base URL 不一定能直接改所以更稳妥的做法是先用默认流程跑通再手动改配置文件。我实测下来先让它用默认的 OpenAI 配置把容器拉起来然后改configuration.yml和.env两个文件重启容器这样最省事。等脚本跑完容器启动需要一两分钟。验证服务是否健康curl -v http://localhost:8080/health返回{status: healthy}就说明 MemMachine 服务起来了。这一步如果卡住多半是端口占用或者镜像没拉下来先docker ps看看容器状态再docker logs看具体报错。环境准备好之后下一节我们进入真正的配置环节把 TaoToken 的 Key 和 Base URL 写进去让记忆系统用上统一的模型通道。3. 可复制配置configuration.yml 与 .env 接入 TaoToken 的完整片段这一节是整篇的核心配置写对了后面就顺了。MemMachine 的模型调用配置分散在两个文件里configuration.yml管记忆系统的模型绑定.env管环境变量和 API Key。我们要做的是把这两处的模型供应商都指向 TaoToken这样对话模型和 embedding 模型走同一条通道。先看configuration.yml。这个文件在 MemMachine 根目录下用文本编辑器打开。找到model和embedder两段改成下面这样。注意base_url填 TaoToken 的 API 地址api_key填你在控制台创建的那把 Keymodel填你要用的 Model ID。Model ID 的具体取值可以在接入文档里查地址是https://taotoken.net/doc。logging: path: /tmp/memory_log level: info long_term_memory: derivative_deriver: sentence metadata_prefix: embedder: my_embedder reranker: my_reranker vector_graph_store: my_storage SessionDB: uri: sqlite:///test.db Model: taotoken_model: model_vendor: openai-compatible model: gpt-4o-mini api_key: sk-你的TaoToken密钥 base_url: https://taotoken.net/api storage: profile_storage: vendor_name: postgres host: postgres port: 5432 user: memmachine db_name: memmachine password: memmachine_password profile_memory: llm_model: taotoken_model embedding_model: my_embedder database: profile_storage prompt: profile_prompt sessionMemory: model_name: taotoken_model message_capacity: 500 max_message_length: 16000 max_token_num: 8000 embedder: my_embedder: provider: openai config: model_vendor: openai model_name: text-embedding-3-small model: text-embedding-3-small api_key: sk-你的TaoToken密钥 base_url: https://taotoken.net/api dimensions: 1536 reranker: my_reranker: provider: rrf-hybrid config: reranker_ids: - id_ranker_id - bm_ranker_id id_ranker_id: provider: identity bm_ranker_id: provider: bm25 prompt: profile: profile_prompt vector_graph_store: my_storage: provider: neo4j config: uri: bolt://neo4j:7687 username: neo4j password: neo4j_password这里有三处要替换成你自己的值api_key两处、model和model_name按你实际想用的模型填。如果你用的是别的 embedding 模型把text-embedding-3-small换成对应的 Model IDdimensions也要跟着改否则向量维度对不上会报错。再看.env文件。这个文件管容器启动时的环境变量重点是DASHSCOPE_API_KEY这类变量名可能因版本而异但核心是让容器内的服务能读到 Key。改成下面这样# PostgreSQL / pgvector POSTGRES_HOSTpostgres POSTGRES_PORT5432 POSTGRES_USERmemmachine POSTGRES_PASSWORDmemmachine_password POSTGRES_DBmemmachine # Neo4j NEO4J_HOSTneo4j NEO4J_PORT7687 NEO4J_USERneo4j NEO4J_PASSWORDneo4j_password NEO4J_HTTP_PORT7474 NEO4J_HTTPS_PORT7473 # MemMachine MEMORY_CONFIGconfiguration.yml MCP_BASE_URLhttp://memmachine:8080 GATEWAY_URLhttp://localhost:8080 FAST_MCP_LOG_LEVELINFO # TaoToken 统一通道 TAOTOKEN_API_KEYsk-你的TaoToken密钥 TAOTOKEN_BASE_URLhttps://taotoken.net/api # 可选 LOG_LEVELINFO MEMORY_SERVER_PORT8080 DB_POOL_SIZE10 DB_MAX_OVERFLOW20 MEMMACHINE_IMAGEmemmachine/memmachine:latest-cpu改完两个文件必须重启容器让配置生效。在 MemMachine 目录下执行docker compose down docker compose up -d --build--build会重新构建镜像确保配置被读进去。等容器起来后再跑一次健康检查确认服务正常。这一步如果报401或者invalid api key八成是 Key 没填对或者 Base URL 多了斜杠。TaoToken 的地址是https://taotoken.net/api结尾不要加/v1也不要加多余路径否则会拼出错误的请求地址。配置这块搞定下一节我们做记忆写入和检索的验证。4. 验证记忆链路写入偏好、重启服务、检查召回是否成功配置写完不代表链路通了得用真实数据验证一遍。这一节我们做三件事把一段用户偏好写进记忆、重启服务模拟“关掉对话再打开”、然后提问看它能不能召回。整个过程可复现你跟着做就能确认自己的系统是否正常。先确认 Claude Code 已经装好因为 MemMachine 是通过 MCP 协议接入 Claude Code 的。检查命令claude --version有版本号输出就行。然后在 MemMachine 根目录下创建.mcp.json文件内容如下。这个文件告诉 Claude Code 去哪里找 MemMachine 的 MCP 服务端{ mcpServers: { memmachine: { command: docker, args: [ exec, -i, memmachine-app, /app/.venv/bin/memmachine-mcp-stdio ], env: { MEMORY_CONFIG: /app/configuration.yml, MM_USER_ID: your-username, PYTHONUNBUFFERED: 1 } } } }MM_USER_ID填一个你自己的标识比如test-user它用来区分不同用户的记忆空间。保存后启动 Claude Codeclaude进入交互界面后输入/mcp如果看到memmachine出现在已连接的服务列表里说明 MCP 通道打通了。接下来做记忆写入。在 Claude 对话框里输入下面这段文本让它记住你的饮食习惯请记住我的饮食习惯我喜欢吃辣的尤其是川菜和湘菜。我不吃香菜也不喜欢海鲜特别是贝类。我更喜欢家常炒菜不喜欢油炸食品。我通常早上7点吃早餐中午12点半午餐晚上7点晚餐。我习惯先喝汤再吃饭。我在控制碳水摄入尽量不吃白米饭和面条。我的目标是增肌每天至少摄入120克蛋白质。我想减到65公斤所以晚餐吃得比较少。发送后MemMachine 会把这段内容拆解成情景记忆和档案记忆分别存储。情景记忆记录“用户在某时刻说了这些”档案记忆提取出“不吃香菜”“喜欢川菜”“目标增肌”这些长期偏好。写入过程可能需要几秒取决于模型响应速度。关键验证步骤来了完全退出 Claude Code然后重新启动。这一步模拟“关掉对话再打开”的场景如果记忆只存在上下文里重启后就没了如果 MemMachine 正常工作重启后偏好应该还在。重新进入后直接提问我一天的用餐时间是怎么安排的如果系统返回类似“你早上7点吃早餐中午12点半午餐晚上7点晚餐”的内容说明记忆召回成功。再问一个偏好类问题我不吃什么预期它能答出“不吃香菜不喜欢海鲜特别是贝类”。这两个问题一个考情景记忆的时间线一个考档案记忆的偏好提取都答对才算链路完整。如果你想更直观地看记忆存储情况可以调 MemMachine 的检索接口。不过对大多数场景来说通过 Claude Code 的对话验证已经够了。实测下来第一次写入后召回可能需要一两秒因为要做向量检索和重排后续命中缓存会快一些。如果召回失败先检查MM_USER_ID是否和写入时一致不同用户 ID 的记忆空间是隔离的写进 A 用户的内容 B 用户查不到。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 问题链路跑通之前报错是常态。这一节我把几个高频错误和对应的排查路径列出来你遇到时可以直接对照。这些报错我在搭建过程中基本都踩过一遍原因和解法都比较明确。401 Unauthorized / invalid api key这是最常见的。表现是容器日志里出现401或者 Claude 对话时提示模型调用失败。根因通常是 Key 没填对、Key 过期、或者 Base URL 拼错。排查顺序先确认.env和configuration.yml里的api_key是同一把 Key且没有多余空格再确认base_url是https://taotoken.net/api结尾没有/v1或斜杠最后去控制台确认这把 Key 还有效、额度没耗尽。如果三处都对还是 401把容器日志打出来看具体请求地址docker logs memmachine-app --tail 100日志里会打印实际请求的 URL如果 URL 里出现了双斜杠或者路径拼接错误就是 Base URL 配置问题。local proxy failed / connection refused这个报错通常出现在容器内服务访问外部 API 时。表现是记忆写入卡住日志提示连接失败。根因可能是容器网络配置问题或者 Base URL 指向了容器内访问不到的地址。检查两点一是base_url必须是公网可访问的地址不能写localhost因为容器内的localhost指向容器自己二是确认宿主机网络正常容器能出网。可以用下面命令进容器测试连通性docker exec -it memmachine-app curl -v https://taotoken.net/api如果这条命令在容器内能通说明网络没问题问题在配置如果不通检查 Docker 的网络模式。reading choices / 响应解析失败这个报错说明请求发出去了但返回的内容格式不符合预期。常见原因是 Model ID 填错了比如填了一个不存在的模型名接口返回了错误结构而客户端按正常响应去解析choices字段就报reading choices。排查方法是把 Model ID 和接入文档里的可用列表对一遍确认拼写完全一致。另外 embedding 模型的dimensions如果和实际模型输出维度不一致也会在写入阶段报解析错误这时候要改dimensions值。OAuth / 认证流程异常如果你在 Claude Code 侧看到 OAuth 相关报错通常是 MCP 配置里的环境变量没传对。检查.mcp.json里的env段MEMORY_CONFIG路径要指向容器内的实际路径/app/configuration.ymlMM_USER_ID不能为空。另外 Claude Code 本身的登录态如果失效也会报认证错误重新登录一次即可。记忆写入成功但召回为空这个不是报错但很常见。表现是写入时没报错提问时却答“不知道”。排查方向确认写入和查询用的是同一个MM_USER_ID确认两次操作之间没有清空数据库确认 embedding 模型在写入和查询时是同一个换了 embedding 模型会导致向量空间不一致检索不到。如果都正常把message_capacity调大一点默认 500 条消息的容量在测试时够用但如果你写入了大量内容可能被截断。排查完这些链路基本就稳了。下一节说下长期用起来的一些实际建议和通道选择。6. 长期编码与 Agent 场景的通道选择把记忆系统跑成日常基础设施记忆系统搭好只是第一步真正让它产生价值的是长期跑起来。我自己的用法是把它挂在日常编码 Agent 上每次开新会话Agent 会自动召回项目规范、命名习惯、技术栈偏好不用我重复交代。这种场景对模型通道的稳定性要求比较高因为记忆检索本身要调 embedding 模型对话又要调对话模型两条链路都得通。如果你的使用频率不高只是偶尔试试那用 API Keys 的方式按量调用就够了去https://taotoken.net/console/api-keys创建 Key配到 MemMachine 里就能跑。但如果你打算把带记忆的 Agent 当成日常工具每天都要跑很多轮对话和检索那 Coding Plan 会更合适它在长期编码和 Agent 场景下有更稳定的通道保障入口在https://taotoken.net/coding-plan。我实测下来高频调用时用 Plan 的通道响应抖动会小一些记忆召回的成功率也更稳。还有一个实际经验记忆系统刚搭好的时候别急着灌大量数据。先写几条关键偏好验证召回正常再逐步增加。因为记忆检索是按相关性排序的如果早期写入了太多噪音反而会干扰召回质量。等链路稳定了再让它自然积累。另外定期检查一下 Neo4j 和 Postgres 的存储占用长期跑下来数据量会增长虽然不大但心里有数比较好。如果你在配置过程中卡在某个报错或者想确认某个 Model ID 是否可用接入文档里有完整的参数说明地址是https://taotoken.net/doc。模型对话页面也可以用来快速验证通道是否正常地址是https://taotoken.net/model-chat。把记忆系统跑成日常基础设施之后你会发现 Agent 的体验完全不一样了它不再是每次从零开始的工具而是一个真正记得你的助手。

相关新闻

终端的瑞士军刀:tmux——断线不丢会话,一屏多用窗格

终端的瑞士军刀:tmux——断线不丢会话,一屏多用窗格

tmux 是一个终端复用器,它让你在一个终端窗口里管理多个独立的会话、窗口和窗格,并且这些会话在 SSH 断连或主动分离后依然在后台运行,随时可以重新连接回来。一、tmux 是什么?tmux(Terminal Multiplexer)是…

2026/10/13 0:15:45 阅读更多 →
安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

安全通道上的搬运工:SSH、SCP、SFTP、WinSCP 到底是什么关系?

SSH 是底层“安全通道协议”,SCP 和 SFTP 是跑在这条通道上的“文件搬运工”,WinSCP 则是 Windows 下把这些搬运工包装成图形界面的“客户端软件”。OpenSSH 是 SSH 协议最主流的实现,提供了 ssh、scp、sftp 等命令行工具。一、先理清层次&am…

2026/10/13 0:15:45 阅读更多 →
Python天气预测项目实战:从数据抓取到模型部署全流程解析

Python天气预测项目实战:从数据抓取到模型部署全流程解析

简介:这是一套面向Python初学者与数据分析爱好者的天气预测与可视化完整项目源码,适合用作课程设计、毕业设计或数据挖掘练手案例。项目以Python为核心,串联数据采集、清洗、建模预测到前端展示的完整链路,帮助读者理解天气数据从…

2026/10/13 0:15:45 阅读更多 →

最新新闻

AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT

AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT

AI做PPT终于不丑了!开源gpt-image2-ppt-skills让你自动生成PPT 大家好,我是星哥。 最近后台有不少朋友跟我吐槽:“星哥,现在市面上的 AI 做 PPT 工具,怎么做出来的东西都那么‘AI味’啊?” 说实话&#…

2026/10/13 7:05:56 阅读更多 →
毛坯房装修的正确流程是什么?

毛坯房装修的正确流程是什么?

现在温度越来越低,虽然不适合动工,可以趁着淡季活动多、优惠大、工程少,尽快定下装修公司、设计方案和需要定制的装修材料,不仅省钱,还不耽误工期。1)装修的准备工作,2)毛坯房装修的…

2026/10/13 7:05:56 阅读更多 →
宝塔面板管理

宝塔面板管理

在阿里云平台扩展程序中找到宝塔面板登录入口,在数据库/Mysql添加数据库,在数据库项上点导入进行导入数据结构备份文件,在导入的本地文件备份上再点导入,则把数据从文件导入到数据库中。

2026/10/13 7:05:56 阅读更多 →
【Bug已解决】PyTorch - RuntimeError: [enforce fail at inline_container.cc:209] . file not found: arc 解决方案

【Bug已解决】PyTorch - RuntimeError: [enforce fail at inline_container.cc:209] . file not found: arc 解决方案

【Bug已解决】PyTorch - RuntimeError: [enforce fail at inline_container.cc:209] . file not found: archive/data.pkl 解决方案 问题描述 在 PyTorch 中使用 torch.jit.save() 和 torch.jit.load() 保存和加载 TorchScript 模型时,开发者可能会遇到以下错误&…

2026/10/13 7:05:56 阅读更多 →
【Bug已解决】How to move PyTorch model to GPU on Apple M1 chips? 解决方案

【Bug已解决】How to move PyTorch model to GPU on Apple M1 chips? 解决方案

【Bug已解决】How to move PyTorch model to GPU on Apple M1 chips? 解决方案 问题描述 Apple Silicon(M1/M2/M3/M4)芯片的推出为机器学习开发带来了新的硬件选择。这些芯片内置了强大的 GPU(通过统一内存架构),但它…

2026/10/13 7:05:56 阅读更多 →
Java 项目部署之 Docker工具快速入门: 自定义镜像的分层结构与写时复制

Java 项目部署之 Docker工具快速入门: 自定义镜像的分层结构与写时复制

概述 自己写的 Spring Boot 服务,DockerHub 上不会有人替你构建镜像,必须自己来。而要自己构建,先得搞清楚一个镜像内部到底是怎么堆起来的——这一篇只讲结构,不讲语法。 纲要 从"镜像是什么"这句话里拆出组成与顺序…

2026/10/13 7:04:56 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →