AI上下文管理实战:从无状态函数到大模型记忆的完整方案
1. Context Mode到底是什么为什么大家都在做这个功能最近手头的几个AI应用项目都不约而同提到了context-mode这个需求。说实话第一次看到这个词的时候我也愣了一下因为它在不同场景里含义差别很大有的产品把它做成交互模式切换有的把它做成长上下文记忆开关有的干脆就是上下文菜单的技术代号。但抛开具体实现大家真正关心的其实是同一件事——怎么让AI从每次都当第一次见面变成记得你上次说过什么。这句话值得多说两句。大语言模型本质上是一个无状态函数你给它一段输入它吐一段输出中间没有任何记忆。同一个用户上一秒问帮我选个礼物下一秒说那个预算再加五百模型如果不知道那个指的是什么答案就会完全跑偏。Context mode要解决的核心问题就是把状态注入到这个无状态函数里让AI具备对话连续性和场景感知能力。这篇东西适合三类人看一类是在做AI应用产品、正在纠结上下文功能怎么做的产品经理一类是刚上手LLM开发、被token限制和上下文丢失折磨的工程师还有一类是纯粹对AI原理好奇想知道为什么有时候AI记得住、有时候记不住的爱好者。我会从设计思路讲到底层实现再到实际踩坑记录尽量把这件事讲透。先说结论context-mode并不是某个官方标准而是一套上下文管理实践的总称。它通常包含会话记忆、窗口管理、持久化存储、相关性筛选这几个模块具体怎么做取决于你的应用场景和成本预算。2. 设计Context Mode之前先想清楚这几个核心问题2.1 上下文到底上到哪里很多人在实现context mode的时候会犯一个低级错误把对话记录一股脑往提示词里塞。看起来没什么问题但用起来你会发现三个连锁反应——token消耗暴涨、模型响应变慢、关键信息被稀释。这里要理解一个基本事实模型的注意力是有限的。以Transformer架构为例所有历史内容都会参与注意力计算但距离越远的碎片信息在生成时占的权重就越低。也就是说你塞进去一万字的历史记录模型真正关注的可能是最后那几百字前面的大部分内容只是白白消耗了计算资源。这就是为什么更长的上下文不等于更好的记忆。正确的做法是把上下文分成几个层次来管理短期上下文当前轮次的对话、正在处理的任务细节保留完整原文中期上下文最近几轮对话的关键信息可以做轻度压缩长期上下文用户偏好、历史结论、重要背景需要单独存储和结构化。三个层次的数据在进入提示词之前要分别处理再按优先级组合。这个分层思想是整个context-mode设计的核心骨架后面所有的方案都是围绕它展开的。2.2 为什么需要显式的模式开关另一个常见问题是既然自动管理上下文这么麻烦为什么不能让系统一直全知答案很简单成本和可控性。上下文越大单次请求的token费用越高响应延迟越长。如果用户的请求只是现在几点钟你偏偏把三天前的聊天记录全塞进去这不仅是浪费还会让模型产生不必要的联想甚至把旧信息错误地套用到当前问题上。显式的模式开关本质上是给用户一个成本控制手柄。用户打开context mode意味着他愿意为更连贯的体验支付更高的算力成本关闭时系统就走轻量路径只保留当前会话最基本的记忆。这种设计在商业化产品中特别重要——你不可能替所有用户默认承担高成本但你可以让需要的人自己开。另外模式开关还能解决隐私预期问题。很多用户对AI记住我说过的所有话是有顾虑的显式开关至少给了用户一个知情的选项这在合规层面也更有交代。2.3 评估你想要的是回忆还是理解这里我想强调一个经常被忽略的区分。Context mode有两种截然不同的目标第一种目标是回忆——用户说我之前提过一个需求系统能准确找出那条历史信息。这个目标考验的是检索能力本质上是一个搜索问题用关键词匹配或向量检索就能解决。第二种目标是理解——用户话说到一半系统能根据上下文推断他没说完的部分。这个目标考验的是模型的推理能力需要把相关历史信息以合适的顺序和粒度放进提示词让模型读得懂。很多团队把这两个目标混在一起做结果功能做得又重又乱。我的建议是先想清楚你的核心场景到底需要哪一种再决定架构。做客服工单系统你更需要回忆做写作助手你更需要理解。两者不是不能共存但主次分明会让实现简单很多。3. 核心实现环节拆解上下文怎么存、怎么取、怎么塞3.1 会话记忆的存储模型聊完设计进入实现层面。第一步是设计存储结构。我建议用事件流来存而不是简单的消息列表。所谓事件流就是把每一次交互记录为一个带类型、带元数据的事件。比如event_type: user_message | assistant_message | tool_result | context_switch | summary_point metadata: timestamp, token_count, topic_id, importance_score content: 具体的文本内容用事件流的好处是你可以在上面做很多消息列表做不到的操作。比如按topic_id过滤出某条业务线的上下文按importance_score做优先级裁剪按timestamp实现时间衰减。这些都是context-mode高阶玩法的基础设施。实际项目中我一般用SQLite起步字段就按事件流设计。等数据量上来再迁移到向量数据库或者更专业的存储。不要一上来就上重型中间件SQLite撑到几十万条会话事件完全没问题。一条会话记录的具体存储策略是这样的每条消息除了存原文还要存message_id和parent_id形成一棵会话树。这在多轮对话分支、用户撤回修改、上下文回溯场景下特别有用。我知道有些团队用纯数组存消息一旦用户说不对换一个方案历史就乱了因为新消息应该继续在某个分支上而不是线性追加。这个细节直接决定了你后面的上下文还原能力。3.2 窗口管理怎么滑动、怎么裁剪有了存储接下来是最核心的窗口管理。各大模型都有自己的上下文窗口上限比如很多主流模型是128K、200K甚至1M token但别天真地以为真能每次都塞满实际可用的大约是上限的一半因为还要留出生成空间、系统提示、函数定义等固定开销。窗口管理的核心算法是一个滑动裁剪的组合。我常用的策略是固定预留系统提示和当前轮次输入优先占用不做压缩重要度分级历史事件按importance_score排序分数高的完整保留距离衰减同等分数下时间上更近的事件优先压缩兜底如果以上都放不下就把最旧的低优先级事件交给模型做摘要只保留摘要文本。这个策略可以用一个简单公式来理解窗口预算是固定的分配顺序是当前任务 高价值历史 压缩摘要 最旧碎片。你不需要给每条消息都算清楚分数一个粗略的三档分级就够了——重要、普通、可丢。很多人会问为什么不用最新最强的摘要模型直接压缩所有历史因为摘要本身有损压缩次数越多信息失真越严重。我的经验是压缩是最后手段不是常态手段。能用原始文本尽量用原始文本只有放不下的时候才动摘要。这个原则能显著减少AI记错关键参数这类事故。3.3 持久化记忆跨会话的长期上下文窗口管理解决的是当前会话内还记得什么但context-mode真正让人惊艳的是跨会话记忆——用户隔天回来系统还记得他昨天说过的关键信息。实现跨会话记忆我建议做两层一层是用户画像层一层是话题档案层。用户画像层存取的是稳定属性用户的称呼、常用语言、偏好风格、默认参数。这些信息几乎不变可以在每次会话开始时注入开销很小。话题档案层存取的是按主题归类的历史结论。比如双11活动方案这个topic下面有哪些关键决策、哪些待办事项、哪些相关文件。这一层的数据要用主题提取来自动归类每条记录打上topic标签和时间戳下次用户提到相关话题时按需取出。跨会话记忆的难点在于按需取出。如果每次都把全部历史注入token消耗会爆炸。我的做法是先用关键词粗筛再用向量相似度精排最后只取Top N条相关记录拼接进提示词。这个过程可以做成异步的用户输入到达后先并行触发检索再和当前轮次输入一起组装。3.4 工具与资料的上下文注入除了对话历史context-mode还有一个容易被忽略的部分外部资料的注入。用户上传了一份PDF、链接了一篇文档、打开了某个代码文件这些内容要不要算进上下文我的答案是要但必须区分即时读取和常驻注入。即时读取的场景下用户明确要求看看这个文件那文件内容就是当前任务的一部分直接放入短期上下文。常驻注入的场景下比如用户设置了一个知识库关联那你应该做的是把资料加工成知识切片提前建好索引在用户提问时检索相关切片注入而不是把整个资料库倒进去。这里有一个很实用的技巧给每条注入的资料打一个上下文标记形如[来源:filename.pdf, 页码:12]。这个标记有两个作用一是让模型知道信息的出处回答时可以引用溯源二是让你在调试时能清楚看到每条信息的来路排查问题会容易很多。4. 实操过程从零搭一个带Context Mode的对话服务4.1 技术选型与整体架构空谈设计没用我直接用一套可以跑起来的方案演示整个实现思路。下面是一个简化但完整的最小实现技术栈选的是Python FastAPI SQLite模型接口以OpenAI风格为例实际上换成任何兼容接口都行。架构就三层API层接收请求管理会话入口服务层组装上下文、调用模型、压缩历史存储层会话事件库、摘要缓存、用户画像。选这么轻的栈是为了让逻辑清晰生产环境规模大了以后你可以把存储换成Postgres加向量库但核心流程是一模一样的。4.2 核心代码实现先定义一个事件记录的数据结构from dataclasses import dataclass, field from datetime import datetime from typing import Optional from uuid import uuid4 dataclass class ContextEvent: event_id: str session_id: str event_type: str # user_message / assistant_message / tool_result / summary content: str metadata: dict field(default_factorydict) importance: int 1 # 0-2, 0可丢, 1普通, 2重要 parent_id: Optional[str] None created_at: datetime field(default_factorydatetime.utcnow) def token_count(self, tokenizer) - int: return len(tokenizer.encode(self.content))然后是一个简单的上下文管理器负责组装提示词和窗口裁剪import json import sqlite3 class ContextManager: def __init__(self, db_path: str, max_window_tokens: int 12000): self.conn sqlite3.connect(db_path, check_same_threadFalse) self.max_window max_window_tokens self._init_schema() def _init_schema(self): self.conn.execute( CREATE TABLE IF NOT EXISTS context_events ( event_id TEXT PRIMARY KEY, session_id TEXT NOT NULL, event_type TEXT NOT NULL, content TEXT NOT NULL, metadata TEXT, importance INTEGER, parent_id TEXT, created_at TIMESTAMP ) ) self.conn.execute( CREATE INDEX IF NOT EXISTS idx_session_time ON context_events(session_id, created_at) ) self.conn.commit() def add_event(self, session_id: str, event_type: str, content: str, importance: int 1, metadata: dict None, parent_id: str None) - ContextEvent: e ContextEvent( event_idstr(uuid4()), session_idsession_id, event_typeevent_type, contentcontent, metadatametadata or {}, importanceimportance, parent_idparent_id ) self.conn.execute( INSERT INTO context_events VALUES (?,?,?,?,?,?,?,?), (e.event_id, e.session_id, e.event_type, e.content, json.dumps(e.metadata), e.importance, e.parent_id, e.created_at) ) self.conn.commit() return e def build_prompt(self, session_id: str, current_input: str, system_prompt: str) - str: events self._load_events(session_id) chosen, used_tokens [], len(system_prompt) for ev in sorted(events, keylambda x: x.created_at, reverseTrue): if ev.importance 2 and used_tokens ev.token_count() self.max_window: chosen.append(ev) used_tokens ev.token_count() for ev in sorted(events, keylambda x: x.created_at, reverseTrue): if ev in chosen: continue if used_tokens ev.token_count() self.max_window: break chosen.append(ev) used_tokens ev.token_count() chosen.sort(keylambda x: x.created_at) context_block \n.join(f[{e.event_type}] {e.content} for e in chosen) return f{system_prompt}\n\n历史上下文\n{context_block}\n\n当前输入{current_input}这个实现不追求最佳效果重点是把分层选取预算控制的骨架立起来。你可以在这个基础上加摘要压缩、向量检索思路都是一样的。4.3 预算与成本的计算方法既然谈到预算我给出一个实际的计算示例。假设你用的是128K上下文窗口的模型单次请求65536 token输入约等于字典厚度的文本量。具体算成本时要分成固定和动态两部分固定部分包括系统提示约500 token、当前用户输入约200 token、工具函数定义约800 token合计约1500 token。动态部分就是历史上下文由ContextManager按预算分配。如果max_window设置成10000 token那么单次请求总输入约11500 token按每千token的价格折算成本完全可控。我见过不少团队因为不设预算把单次请求打到几万token成本直接翻好几倍。这里有一个硬经验token预算一定要设而且要按产品形态区分。对话密集的产品比如客服助手预算可以高一些工具类产品比如表单生成器预算低一点反而更稳因为历史上下文太多会干扰模型理解当前表单结构。4.4 摘要压缩与还原的具体实现压缩是context-mode绕不开的环节。我采用的方案是当旧事件即将被挤出窗口时把它们打包交给模型生成摘要摘要本身作为一个summary类型的事件存下来参与下一轮的上下文组装。def summarize(self, session_id, events_to_compress) - str: raw_text \n.join(e.content for e in events_to_compress) prompt ( 请将下面的对话压缩成一段不超过200字的中文摘要 保留所有关键参数、用户偏好、明确结论不要丢失细节\n raw_text ) summary call_model(prompt, max_tokens300) self.add_event( session_id, summary, summary, importance1, metadata{compressed_ids: [e.event_id for e in events_to_compress]} ) return summary注意两个细节一是压缩事件必须保留被压缩的原始事件ID列表这样出问题时可以回溯展开二是摘要的importance分数千万不能太高因为摘要是有损的权重给太高会导致之后的回答过度依赖一份可能已经失真的大纲。我习惯把摘要事件默认设成importance1并且只允许模型在短上下文场景下参考它。还原场景其实比压缩场景少得多通常只在排查问题时需要。做法也简单沿着parent_id链往回找原始事件或者用压缩事件里的compressed_ids直接加载原文。把摘要和原文之间的映射做对你就能在省token和可追溯之间两头都占住。5. 常见问题与排查技巧实录5.1 模型忘了用户之前说了什么这是context-mode上线后最常见的反馈。先别急着怀疑模型排查顺序应该是先确认历史事件有没有落库再看事件有没有被选中进上下文最后看被选中内容的粒度够不够。我用过一个笨但有效的办法在返回结果前把最终拼好的提示词打出来。如果提示词里根本没有用户说的那句关键信息那就是上下文管理的问题如果有但仍答错再考虑是不是模型推理问题。这个调试手段虽然原始但能帮你快速切断责任链。真正做线上调试时我会在ContextManager里加一个debug参数打印每次build_prompt选中的事件列表问题基本一眼就能定位。5.2 上下文越积越多响应越来越慢这个问题的根源通常不是模型本身而是历史事件的数量。SQLite查询几百条事件没问题几万条就会开始拖慢请求链路。我遇到过最夸张的情况是单个会话积累了上千个事件每次build_prompt光加载和排序就花了300毫秒。解法有三个层面。第一层是前台拦截会话空闲超过一定时间后自动生成摘要然后把原始事件归档到冷存储第二层是查询优化给session_id和created_at建联合索引上面代码里已经写了第三层是改异步加载用户输入到达后先并行跑检索和加载再等模型调用减少链路上的串行等待。5.3 新旧信息冲突AI被带偏当用户今天说预算一万昨天说的是预算两万历史上下文里两条冲突信息同时在提示词中时模型很容易采取最新覆盖旧的策略。大多数时候这是对的但偶尔用户只是想对比两套方案模型却把旧信息当成过时数据直接丢弃了。我的处理办法是在事件里标注明确的时间戳和会话阶段标记并且在组装上下文时保留冲突信息原文而不是擅自取舍。也就是说把判断权交给模型你只提供清晰的时序信息。我还会在提示词生成前加入一条系统指令明确要求历史信息如与当前输入冲突以当前输入为准但需在回答中说明差异。这样既尊重最新意图又保留了对账的余地。5.4 成本失控的预警机制最后分享一个很现实的问题context-mode开起来之后成本曲线会变得很难看。我见过多个项目上线三个月后混用过半API预算的案例原因几乎都是上下文策略太贪心。我自己的做法是给每个会话设置一个token日预算和最大单次请求预算超出后自动降级要么关闭长期记忆只保留当前轮次上下文要么自动把窗口预算砍半。降级行为要打日志方便后续分析。既然做成了显式模式就可以在UI上把这个降级动作也做成显式提示用户看到上下文已自动精简就知道发生了什么。产品上说这叫透明降级工程上说这叫保底机制不管叫什么能阻止预算爆表才是真本事。我在实际项目中还发现很多团队只关注了模型的推理成本却忽略了检索和排序阶段的资源开销。上下文越大意味着你需要加载、过滤、排序的数据越多这部分时间成本和计算成本是隐性的。把整个链路的耗时拆开来看你会发现模型调用往往只占40%左右剩下的全在上下文处理上。这也是为什么我会强烈建议给整个context-mode设计一套独立的监控指标而不是只看模型账单。再说一个更隐蔽的坑摘要的累积失真。如果你反复对摘要再做摘要几轮之后的信息可能已经和原始对话面目全非。我后来规定了一条硬性规则——摘要只能从原始事件生成绝不允许对摘要再压缩。宁可多保留几条原始事件也不把摘要层层嵌套。这条规则一度让token用量上升了10%但回答准确率提高了不止一个档次值。还有调试时的技巧我在ContextManager里加了完整的审计日志每次build_prompt结束都会记录选中事件的ID列表、总token数、耗时三个字段。出现问题后只需要按session_id查日志就能回放每一次请求的上下文构成定位是哪个环节出了问题。这套日志体系看起来不起眼但线上排查问题时有它和没它完全是两种效率。6. 一点个人体会踩过几次坑之后我对context-mode的理解已经从给AI加个记忆升级成给对话建立一套状态管理体系。它不是一个feature而是一组围绕状态存储、信息筛选、成本控制的基础设施。真正的难点不在模型调用那一行代码而在你如何设计分层、如何设定预算、如何在信息完整性和成本之间找到平衡。在所有细节里我最想提醒你的一条是千万不要迷信命中了历史就算赢。context-mode的终极考验不是模型记不记得用户说过的话而是它面对一堆历史信息时是否知道哪些该用、哪些不该用、哪些需要追问。你花一周时间打磨的上下文组装逻辑比花一万块钱买更大的上下文窗口更值得。先把这套内部逻辑理顺再谈参数和配置路子才会走得更稳。

相关新闻

Agent Skills开发实战:从底层机制到测试部署的完整指南

Agent Skills开发实战:从底层机制到测试部署的完整指南

1. 从"skills"这个热词说起:它到底在解决什么问题最近一段时间,不管是在技术社区还是各类开发者群组里,"skills"这个词出现的频率高得离谱。有人把它翻译成"技能包",有人叫它"能力插件"&…

2026/10/7 12:40:40 阅读更多 →
ESP32选型指南:芯片与模组到底怎么选?看完不再纠结

ESP32选型指南:芯片与模组到底怎么选?看完不再纠结

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

2026/10/7 12:40:40 阅读更多 →
孩子不愿意跟你说话?90%的家长都忽略了这件事——用AI记录工具重新连接亲子关系

孩子不愿意跟你说话?90%的家长都忽略了这件事——用AI记录工具重新连接亲子关系

你有没有过这样的瞬间?忙了一天回到家,看到孩子坐在沙发上刷手机,你开口问:“今天学校怎么样?”对方头也不抬回一句“还行”,然后就没有然后了。你试图多问两句,孩子要么敷衍要么直接戴上耳机。…

2026/10/7 12:40:40 阅读更多 →

最新新闻

Agent技能系统实战:从工具堆叠到编排设计的完整指南

Agent技能系统实战:从工具堆叠到编排设计的完整指南

1. 为什么 Agent 需要一套"技能系统"而不是单纯堆 Prompt还记得我第一次给内部知识库助手加工具函数的时候,系统里一共只有 3 个工具:查文档、查联系人、建工单。模型选得又快又准,几乎零失误。我心里想,这不挺简单的嘛…

2026/10/7 13:11:13 阅读更多 →
Java工程师转型AI Agent:能力栈结构性升级指南

Java工程师转型AI Agent:能力栈结构性升级指南

1. 这不是转行,是能力栈的“结构性升级”:一个Java老兵的真实认知切换我干Java开发八年,从写Servlet、配Tomcat、手撸SSH框架,到后来Spring Boot自动装配、MyBatis动态SQL写得飞起,再到K8s上跑微服务、用Arthas在线诊断…

2026/10/7 13:11:13 阅读更多 →
Agent-Reach:智能体触达层的设计与实践,打通工具调用的最后一公里

Agent-Reach:智能体触达层的设计与实践,打通工具调用的最后一公里

做Agent应用这两年多,我最大的感受是:demo里人人都是天才,生产环境里天天都在补锅。模型幻觉、工具参数传错、上下文被撑爆、权限没人管——这些问题几乎都集中在同一个环节:智能体对外部世界的“触达”。Agent-Reach这个名字&…

2026/10/7 13:11:13 阅读更多 →
JFET栅极电场传感:用2N3819捕获50Hz工频信号

JFET栅极电场传感:用2N3819捕获50Hz工频信号

1. 为什么50Hz工频信号总在“偷偷摸摸”干扰你?——从JFET栅极的物理本质说起 你有没有试过,在调试一个高增益音频放大器时,示波器上突然冒出一根稳稳当当、纹丝不动的50Hz正弦波?不是噪声,不是毛刺,就是一…

2026/10/7 13:11:13 阅读更多 →
claude-mem:用Git为Claude Code打造跨会话长期记忆

claude-mem:用Git为Claude Code打造跨会话长期记忆

1. 这个项目到底在解决什么 说实话,我第一次看到 claude-mem 这个名字的时候,脑子里蹦出来的是“又一个数据库驱动的 AI 记忆插件”。但真正跑起来之后才发现,它和我见过的所有记忆方案都不太一样——它把“记忆”这件事做成了一门极其务实的…

2026/10/7 13:11:12 阅读更多 →
新手小白一句话生成漫剧用什么平台?知漫剧一站式攻略

新手小白一句话生成漫剧用什么平台?知漫剧一站式攻略

Meta描述: 新手小白一句话生成漫剧用什么平台?本文从角色库持久化、场景数据复用、配音绑定、批量队列四个条件出发,对比知漫剧、即梦、可灵、小云雀、豆包、LibTV,附两个差异化对比表格与常见问题。 开篇首段 新手小白想用一句…

2026/10/7 13:10:12 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 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/6 8:21:32 阅读更多 →
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/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练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/6 1:18:13 阅读更多 →