Hindsight记忆架构实战:MCP与Docker部署Agent长期记忆
1. 从“hindsight”这个词说起为什么它值得单独拿出来聊“hindsight”直译过来是“后见之明”但在技术语境里它指向一个非常具体的东西让智能体在任务执行完之后回头审视自己走过的路把当时的判断、踩过的坑、有效的路径沉淀成可复用的记忆。这个词之所以在 agent memory 圈子里被反复提起是因为它精准地戳中了一个长期痛点——大多数 agent 在完成一次任务后记忆就归零了下一次遇到类似场景它还是会用同样的方式犯错。我最早接触这个概念是在做一套基于 LLM 的自动化流程编排时。当时团队里有个共识模型能力本身在快速拉平真正拉开差距的是记忆的组织方式。你可以用同样的模型、同样的工具链但一个会“事后复盘”的 agent 和一个只会“当下反应”的 agent在连续任务中的表现差距会随着轮次增加而指数级放大。hindsight 要解决的就是把这个“复盘”动作工程化、结构化而不是靠人手动往 prompt 里塞历史记录。这篇文章适合三类人看第一类是在做 agent 应用、被上下文窗口和记忆管理折磨过的开发者第二类是对 MCP 协议、Docker 部署这套组合拳感兴趣、想找一个完整案例练手的工程师第三类是对 LLM 记忆机制好奇、想理解“working memory”和“long-term memory”在工程上到底怎么落地的人。我会围绕 hindsight 这个核心把它的设计逻辑、部署方式、和 MCP 的配合、以及实际跑起来之后会遇到的问题一层层拆开讲。需要先说明一点hindsight 本身是一个偏概念性的项目名它不是一个开箱即用的商业产品更像是一套记忆架构的设计范式。所以下面的内容里我会把“hindsight 思路”和“具体实现手段”分开讲前者是方法论后者是你可以直接抄的工程方案。2. hindsight 要解决的核心问题agent 的“记忆断层”2.1 为什么普通上下文拼接撑不住长任务大多数人做 agent 记忆的第一反应是把历史对话全部塞进 context window。这个做法在短任务里没问题但一旦任务轮次超过十几轮就会遇到三个硬墙。第一是token 成本。假设每轮对话平均 800 token20 轮就是 16000 token每次请求都要重新传一遍成本是线性甚至超线性增长的。第二是注意力稀释。模型对长上下文的中间部分注意力会明显下降你塞进去的关键信息很可能被淹没。第三是噪声累积。历史里包含大量无效的试错、重复的工具调用结果这些噪声会干扰模型对当前状态的判断。hindsight 的思路是不要把所有历史都当成同等重要的记忆而是在任务结束后做一次结构化的提炼把“发生了什么、为什么这么做、结果如何、下次该怎么做”压缩成几条高密度的记忆条目。这样下一次任务开始时注入的不是原始流水账而是经过加工的“经验”。2.2 working memory 和 hindsight memory 的分工这里要引入一个关键区分。working memory是任务执行期间的临时状态比如当前步骤、已调用的工具、中间结果它需要高频读写、生命周期短。hindsight memory是任务结束后的沉淀它低频写入、长期保存、跨任务复用。我自己的做法是用两层存储working memory 放在内存或 Redis 里任务结束就丢弃hindsight memory 落到持久化存储比如 SQLite 或 Postgres带向量索引。两者的数据结构也不一样working memory 是线性的步骤列表hindsight memory 是带标签的条目每条包含场景描述、采取的动作、结果评价、可复用建议。这个分工的好处是你不需要在任务执行时频繁写数据库也不会让长期记忆被临时状态污染。等任务真正结束、结果确认之后再触发一次 hindsight 提炼把这次任务里真正有价值的部分抽出来。2.3 一个具体的失败案例我之前做过一个自动整理文件的 agent任务是“把下载目录里超过 30 天的安装包删掉其余按类型归档”。第一次跑它把几个正在用的项目依赖包也删了因为那些包的文件名里带日期被误判为“旧安装包”。如果没有 hindsight第二次跑同样的任务它大概率还会犯同样的错。但加了 hindsight 之后任务结束时我让它复盘哪些文件被删了、删除依据是什么、有没有误删。它自己总结出一条“文件名含日期不等于安装包需要检查文件扩展名和所在目录”。这条记忆被存下来下次任务开始前注入它就会先做扩展名过滤。这就是 hindsight 的价值——把一次性的错误转化成跨任务的约束。3. 把 hindsight 落地存储层怎么选、数据怎么组织3.1 存储选型从 SQLite 到向量库的渐进路线hindsight memory 的存储方案我建议按规模分阶段选不要一上来就上重型向量数据库。阶段数据量推荐方案理由原型验证 1000 条SQLite FTS5零依赖全文检索够用部署成本极低小规模生产1000 ~ 10万Postgres pgvector事务可靠向量和结构化字段统一管理大规模 10万专用向量库 关系库分离检索性能和写入吞吐需要独立优化我早期用 SQLite 跑了大概两个月存了不到两千条记忆检索用 FTS5 的关键词匹配效果已经能覆盖大部分场景。后来条目多了、需要语义检索才迁到 Postgres pgvector。这个迁移过程本身不复杂因为记忆条目的结构是固定的换个存储后端改一下 DAO 层就行。提示不要为了“看起来专业”一上来就上向量库。hindsight memory 的条目数量增长是慢的因为它是任务级沉淀不是对话级。一个每天跑 50 个任务的系统一年也就一万多条SQLite 完全扛得住。3.2 记忆条目的字段设计一条 hindsight memory 应该包含哪些字段直接决定了它后续能不能被有效检索和复用。我踩过的坑是一开始只存了一段自然语言描述结果检索时只能靠模糊匹配命中率很低。后来改成结构化字段 自然语言描述的组合。我目前用的字段结构是这样的scene场景标签比如“文件清理”“代码审查”“数据抓取”用于粗筛trigger触发条件描述什么情况下这条记忆适用action当时采取的动作可以是工具调用序列的摘要outcome结果评价成功/失败/部分成功以及关键指标lesson可复用的经验这是最核心的字段用自然语言写embeddinglesson 字段的向量表示用于语义检索created_at / last_used_at时间戳用于衰减和淘汰其中lesson 字段的写法很讲究。不要写“删除了文件”要写“删除文件前必须确认扩展名仅凭文件名日期判断会误删依赖包”。前者是流水账后者是可执行的约束。我一般要求 lesson 控制在 50 字以内一句话说清一个点多条记忆比一条长记忆更好用。3.3 记忆的写入时机与去重hindsight 的写入不是每轮都做而是任务边界触发。什么叫任务边界我的定义是用户明确表示任务完成、或者 agent 连续 N 轮没有新的工具调用、或者达到了预设的终止条件。这时候触发一次复盘生成记忆条目。写入时一定要做去重。我遇到过同一个错误被反复记录的情况因为 agent 在多个任务里犯了同样的错每次都生成一条几乎一样的记忆。去重的做法是新记忆写入前先用 embedding 检索最相似的已有记忆如果相似度超过阈值我用的 0.92就不新增而是更新已有记忆的 last_used_at 和出现次数。出现次数高的记忆在检索时权重更高。这个机制让记忆库保持精简同时让高频问题浮到前面。实测下来一个跑了三个月的系统记忆条目稳定在几百条而不是无限膨胀。4. MCP 在 hindsight 架构里的位置别把它当成万能胶4.1 MCP 到底解决的是哪一层问题MCPModel Context Protocol这两年被讨论得很多但很多人对它的定位有误解。它不是记忆存储协议也不是 agent 框架它解决的是“模型如何标准化地调用外部能力”这个问题。你可以把它理解成一套约定工具提供方按这个约定暴露接口模型侧按这个约定发起调用双方不用为每个工具写定制适配。在 hindsight 架构里MCP 的位置是记忆的读写通道。也就是说hindsight memory 的存储和检索逻辑可以封装成一个 MCP serveragent 通过 MCP 协议来查询记忆、写入记忆。这样做的好处是记忆能力变成了一个可插拔的组件换 agent 框架、换模型只要支持 MCP记忆层不用重写。但要注意MCP 本身不负责记忆的组织逻辑。它只管“你给我一个查询我返回匹配的记忆”至于记忆怎么提炼、怎么去重、怎么衰减那是 hindsight 层的事。把这两层混在一起是很多项目做复杂的原因。4.2 把 hindsight 封装成 MCP server 的实操我实际做的时候MCP server 暴露了三个工具search_memory输入场景标签和查询文本返回 top-k 相关记忆write_memory输入结构化记忆条目写入存储update_memory_usage更新某条记忆的使用时间和次数用 Python 实现的话核心就是包一层 MCP 的 SDK把上面的存储逻辑挂上去。启动方式可以是 stdio也可以是 SSE看你的 agent 运行环境。如果是本地开发stdio 最简单如果是多 agent 共享记忆用 SSE 起一个常驻服务更合适。# 伪代码示意展示 MCP tool 的注册结构 from mcp.server import Server from mcp.types import Tool server Server(hindsight-memory) server.tool() async def search_memory(scene: str, query: str, top_k: int 5): # 1. 按 scene 粗筛 # 2. 对 query 做 embedding # 3. 向量检索 关键词检索混合排序 # 4. 返回记忆条目列表 ... server.tool() async def write_memory(scene: str, trigger: str, action: str, outcome: str, lesson: str): # 1. 生成 lesson 的 embedding # 2. 检索相似记忆判断是否去重 # 3. 写入或更新 ...这里有个细节search_memory 的返回格式要控制好。不要返回整条记忆的所有字段而是返回 lesson 和 trigger 为主附带一个 id 供后续更新使用。返回太多字段会占用 context反而稀释了有效信息。4.3 MCP 接入时的常见坑第一个坑是工具描述写得太模糊。MCP 的工具描述是给模型看的如果 search_memory 的描述只写“搜索记忆”模型不知道什么时候该调用它。要写清楚“当需要回忆过去类似任务的处理经验时调用输入场景标签和当前问题描述”。第二个坑是超时和重试。MCP 调用是跨进程的如果记忆检索涉及向量计算可能耗时几百毫秒。agent 侧要设置合理的超时并且对检索失败做降级——检索不到记忆时任务应该继续而不是卡住。第三个坑是权限和隔离。如果多个 agent 共享一个记忆库要按 agent 或用户做隔离否则 A 任务的记忆会污染 B 任务。我的做法是在记忆条目里加一个 namespace 字段检索时强制带上。5. Docker 部署 hindsight 服务从 compose 到网络排查5.1 为什么用 Docker 而不是直接跑hindsight 服务涉及几个组件MCP server、向量存储、可能还有一个定时复盘的任务队列。直接跑在宿主机上依赖管理会很乱尤其是向量库对系统库有要求。用 Docker 的好处是环境隔离每个组件一个容器compose 一把起。我的 compose 结构大概是三个服务hindsight-mcpMCP server、hindsight-dbPostgres pgvector、hindsight-worker定时复盘和记忆衰减。三者通过内部网络通信只有 MCP server 对外暴露端口。services: hindsight-db: image: pgvector/pgvector:pg16 environment: POSTGRES_DB: hindsight POSTGRES_USER: hindsight POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - hindsight_data:/var/lib/postgresql/data healthcheck: test: [CMD-SHELL, pg_isready -U hindsight] interval: 10s retries: 5 hindsight-mcp: build: ./mcp depends_on: hindsight-db: condition: service_healthy environment: DB_URL: postgresql://hindsight:${DB_PASSWORD}hindsight-db:5432/hindsight ports: - 8765:8765 hindsight-worker: build: ./worker depends_on: - hindsight-db environment: DB_URL: postgresql://hindsight:${DB_PASSWORD}hindsight-db:5432/hindsight volumes: hindsight_data:5.2 Windows 上装 Docker Desktop 的几个真实坑如果你在 Windows 上开发Docker Desktop 的安装有几个高频问题。第一个是WSL2 没装或版本太旧Docker Desktop 启动会直接报 virtualization support not detected。解决办法是先跑wsl --update然后在 BIOS 里确认虚拟化开启。第二个是端口冲突。Docker Desktop 默认会占用一些端口如果你本机已经跑了别的服务compose 起来时会报端口绑定失败。我一般把 MCP server 的端口设成不常用的比如 8765避开 3000、8080 这些。第三个是文件挂载的性能。Windows 下把宿主机目录挂进容器IO 性能会比 Linux 差很多。如果记忆数据量大建议用 named volume 而不是 bind mount让数据待在 Docker 的虚拟磁盘里。5.3 容器间网络不通的排查链路compose 起来之后最常见的问题是 MCP server 连不上数据库。排查顺序我一般是这样的先看docker compose ps确认所有容器都是 healthy 或 running进 MCP 容器docker exec -it hindsight-mcp sh用nc -zv hindsight-db 5432测端口如果端口不通检查 compose 里两个服务是否在同一个 network默认在同一个 compose 项目下是通的如果端口通但连不上检查数据库的pg_hba.conf是否允许来自容器网段的连接最后看环境变量里的 DB_URL 有没有写错尤其是密码里的特殊字符需要转义这个链路我走过好几次大部分问题出在第 4 步Postgres 默认只允许本地连接容器网段需要额外配置。6. 记忆检索的质量调优从“能查到”到“查得准”6.1 混合检索比纯向量检索更稳一开始我只用向量检索后来发现有些查询的语义相似度很高但实际场景不匹配。比如“删除文件”和“删除数据库记录”向量距离很近但一个是文件操作一个是数据库操作混在一起会误导 agent。后来改成混合检索先用 scene 标签做硬过滤再在过滤后的集合里做向量检索同时叠加关键词匹配的分数。最终排序分数是向量相似度和关键词命中率的加权和。这个改动之后检索准确率明显提升尤其是场景边界清晰的记忆。权重的设置我调过几轮目前用的是向量 0.7、关键词 0.3。如果你的记忆条目里专业术语多关键词权重可以再高一点。6.2 记忆衰减与淘汰策略记忆不是越多越好。过期的、不再适用的记忆会干扰检索。我设计了一个简单的衰减机制每条记忆有一个score初始为 1.0每次被检索到并实际使用后加 0.1每 30 天没有被使用则乘以 0.9。当 score 低于 0.3 时进入待淘汰队列由 worker 定期清理。这个机制的效果是高频有效的记忆会浮上来一次性的、不再适用的记忆会慢慢沉下去。实测三个月后活跃记忆条目只占总数的 40% 左右检索信噪比明显改善。注意衰减周期不要设太短。有些记忆是低频但关键的比如“每年报税时的特殊处理”可能一年才用一次如果衰减太快会被误删。我一般对标记为“关键”的记忆关闭衰减。6.3 用 LLM 做记忆提炼的 prompt 设计hindsight 的核心动作是任务结束后的复盘提炼这一步我用 LLM 来做。prompt 的设计直接决定记忆质量。我现在的 prompt 结构是输入本次任务的完整步骤记录、工具调用结果、最终状态要求输出 1 到 3 条记忆条目每条包含 trigger、action、outcome、lesson约束lesson 必须是一句可执行的建议不超过 50 字如果本次任务没有新经验返回空关键约束是“没有新经验就返回空”。早期没有这条约束时LLM 会强行编出一些泛泛而谈的“经验”比如“要注意细节”这种记忆毫无价值。加上这条之后记忆库干净了很多。另外我让 LLM 在输出时附带一个置信度低于 0.6 的记忆不写入。这个置信度是模型对自己提炼质量的评估实测能过滤掉一部分低质量条目。7. 跑通之后的一些真实体会这套 hindsight 架构我断断续续迭代了大半年从最早的 SQLite 单文件到现在的 Docker compose 三服务中间踩的坑比预想的多。有几个体会是文档里不会写的。第一记忆的价值不在于多而在于准。我一度追求记忆条目的数量觉得存得越多越智能结果检索时噪声太大agent 反而被误导。后来把写入门槛提高宁缺毋滥效果反而更好。第二MCP 是通道不是大脑。不要把记忆的组织逻辑塞进 MCP server它只负责读写。提炼、去重、衰减这些逻辑放在独立的 worker 里职责清晰调试也方便。第三Docker 部署的稳定性取决于健康检查。我一开始没写 healthcheck导致 MCP server 在数据库还没就绪时就启动连接失败后不会自动重试。加上condition: service_healthy之后启动顺序问题就解决了。第四记忆检索要能降级。检索服务挂了或者超时agent 不能卡死。我的做法是检索失败时返回空列表agent 按无记忆状态继续执行同时记录一次失败日志后续排查。最后分享一个小技巧如果你刚开始做不要急着上向量库。先用 SQLite 加关键词检索跑通整个流程把记忆的写入、检索、衰减逻辑验证清楚再换存储后端。存储是最容易替换的一层逻辑才是核心。我见过不少人卡在选型上结果核心逻辑一直没跑起来本末倒置了。

相关新闻

FOC电流采样方案对比与NXP实战:单/双/三电阻选型指南

FOC电流采样方案对比与NXP实战:单/双/三电阻选型指南

做FOC(磁场定向控制)这几年,我最深的体会是:算法再花哨,电流采样如果拉胯,整个系统性能就全废了。很多刚入门的同学调PMSM无感FOC,启动抖动、高速发飘、带载跑不动,折腾半天发现不是…

2026/10/3 14:30:53 阅读更多 →
AI Infra零基础学习路线:从分布式训练到推理优化

AI Infra零基础学习路线:从分布式训练到推理优化

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

2026/10/3 14:30:53 阅读更多 →
智能体长期记忆实战:从hindsight事后复盘到MCP与Docker落地

智能体长期记忆实战:从hindsight事后复盘到MCP与Docker落地

1. 从"hindsight"这个词说起:为什么它值得单独拿出来聊 第一次看到"hindsight"作为项目名,我脑子里蹦出来的不是技术,而是一句老话——事后诸葛亮。但恰恰是这个"事后"的视角,在当下的智能体&#…

2026/10/3 14:29:53 阅读更多 →

最新新闻

Spring @Async异步线程池实战:接口性能优化与踩坑复盘

Spring @Async异步线程池实战:接口性能优化与踩坑复盘

做后端接口性能优化的这些年,我有个很深的体会:很多接口慢,真不是因为主流程复杂,而是因为把一堆没必要同步执行的事塞进了请求线程。举个例子,用户下单后要发短信、送积分、写统计日志,这三件事每件都要几…

2026/10/3 15:01:19 阅读更多 →
网易云音乐推荐算法深度拆解:从召回、排序到冷启动的完整实践

网易云音乐推荐算法深度拆解:从召回、排序到冷启动的完整实践

1. 从一次点击开始:音乐推荐系统到底在解决什么问题每天有大量用户打开网易云音乐,点进“每日推荐”或者“私人FM”,然后随意按下一首歌的播放键。这个动作看起来稀松平常,背后却是一整套推荐算法在极短时间内完成的排序决策。作为…

2026/10/3 15:01:19 阅读更多 →
跨芯片算子优化实战:用Triton GEMM反超厂商原生算力的完整方法论

跨芯片算子优化实战:用Triton GEMM反超厂商原生算力的完整方法论

各位做算子开发、跑AI芯片适配的朋友,应该都经历过这种场景:一份写好的Triton GEMM内核,在NVIDIA的GPU上跑得好好的,切到国产芯片或者别的加速卡上,性能直接腰斩,甚至不如人家原生的算子库。最近我在做跨芯…

2026/10/3 15:01:19 阅读更多 →
FSR 1.0核心解析:EASU边缘自适应上采样原理与源码实现

FSR 1.0核心解析:EASU边缘自适应上采样原理与源码实现

几个月前为了给自己的渲染器加一套低分辨率渲染方案,我把AMD开源的FSR 1.0完整读了一遍。坦白说,第一眼看到ffx_fsr1.h里那堆AH4、AF3、AMul宏的时候,我是想直接关掉页面的。后来耐着性子把EASU这条推理链理顺,才意识到它没有想象…

2026/10/3 15:01:19 阅读更多 →
SpringBoot+Vue就业管理系统毕设全解析:从数据库到权限控制

SpringBoot+Vue就业管理系统毕设全解析:从数据库到权限控制

这个项目我在带学生做毕设的时候见过太多次了——每年就业季前后,都会有人拿着"SpringBootVue就业管理系统"这种标题的源码来问我要不要选它、能不能跑通、答辩该怎么讲。说实话,这类项目之所以烂大街,恰恰是因为它选题讨巧、技术栈…

2026/10/3 15:01:19 阅读更多 →
微信小程序考试信息报名系统毕设全流程实战:从需求到答辩

微信小程序考试信息报名系统毕设全流程实战:从需求到答辩

每年毕业季我都会收到一批私信,问的最多的就是“毕设选题选什么”。如果你正盯着“基于微信小程序的考试信息报名系统”这个题目犹豫,我直接说结论:这题能做,而且非常适合作为毕业设计。它既有完整的业务闭环——考生查考试、在线…

2026/10/3 15:00:18 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →