从700行到72行:OpenClaw框架如何重构AI智能体调度系统
1. 项目概述一次从“造轮子”到“用轮子”的架构重构最近在优化我们团队的一个AI智能体Agent调度系统时我完成了一次印象深刻的架构重构。简单来说就是把一个我们自己吭哧吭哧写了700多行核心逻辑的调度模块替换成了开源的OpenClaw框架最终核心调度代码缩减到了72行。这不仅仅是代码行数的减少更是开发效率、系统稳定性和未来维护成本的全面“降本增效”。如果你也在为自研Agent调度系统的复杂性、脆弱性和迭代缓慢而头疼那么我这次从自研到开源替换的完整实录或许能给你提供一个清晰的参考路径。Agent调度听起来高大上其实核心任务很明确管理多个AI智能体的生命周期协调它们之间的任务分配、执行顺序和资源尤其是大模型API调用竞争。我们最初的自研方案是一个典型的“边需求边堆码”的产物从简单的顺序执行逐渐加入了优先级队列、失败重试、流量控制、状态持久化等特性。代码就像打补丁一样越摞越高到了700多行时已经成了一个牵一发而动全身的“泥潭”。添加一个新类型的Agent或者修改一种调度策略都需要小心翼翼地在复杂的条件判断和状态机里穿梭测试成本极高。直到我们遇到了OpenClaw一个宣称专为AI智能体协作与调度设计的开源框架才下定决心进行这次“大手术”。2. 自研调度器的痛点与OpenClaw的吸引力2.1 自研调度器的“不能承受之重”在决定替换之前我们那个700多行的调度器核心模块主要承担了以下几类工作也正是这些工作让它变得臃肿不堪Agent生命周期管理负责Agent的注册、加载、初始化、运行和销毁。每个Agent可能有不同的依赖和环境要求这部分代码充满了各种try-catch和初始化钩子。任务队列与优先级调度我们实现了一个多优先级队列。高优先级的用户请求需要插队同时还要保证低优先级任务不被“饿死”。这里面的锁竞争和状态同步逻辑非常复杂。流量控制与负载均衡为了防止对底层大模型API如GPT-4、Claude等的调用超频我们实现了令牌桶算法。同时当有多个同类型Agent时还需要做简单的负载均衡。这部分代码充斥着各种计数器、时间戳计算和配置参数。错误处理与重试机制网络波动、模型API限流、Agent内部逻辑异常……需要针对不同的错误类型设计不同的重试策略立即重试、延迟重试、指数退避。错误处理的代码和正常业务流程深度耦合难以阅读。状态持久化与恢复为了保证调度器重启后任务不丢失我们将任务队列和Agent状态序列化到数据库。这引入了ORM操作、序列化/反序列化、状态一致性校验等额外代码。注意自研系统的最大问题不是功能不行而是“架构熵”会随着时间推移和需求变更急剧增加。每一个新功能都是在原有复杂结构上的叠加导致系统理解成本、修改风险和测试工作量呈指数级上升。2.2 为什么选择OpenClaw在评估了多个开源Agent框架如LangChain的AgentExecutor、AutoGPT的早期架构等后我们最终锁定了OpenClaw。它的几个核心设计理念正好切中了我们的痛点声明式的技能Skill与工具Tool管理OpenClaw允许你用YAML或Python装饰器的方式声明一个Agent具备哪些“技能”。调度器不需要关心技能内部如何实现只需要根据任务描述去匹配和调用合适的技能。这极大地解耦了调度逻辑和业务逻辑。内置的、可配置的调度策略OpenClaw提供了开箱即用的调度器支持优先级调度、轮询、基于负载等策略。我们不需要再从零实现队列和调度算法只需要通过配置选择或微调即可。统一的、可插拔的中间件Middleware系统这是让我们下决心替换的关键。流量控制、日志记录、错误重试、性能监控……这些横切关注点在OpenClaw里都可以通过编写中间件来实现。中间件可以灵活地加载和卸载就像给管道加上一个个过滤器业务代码变得非常干净。对大模型的良好抽象OpenClaw将大模型LLM视为一种资源提供了统一的接口。这意味着切换模型提供商从OpenAI到Anthropic或切换到本地部署的Llama对于调度器和大部分Agent代码来说是透明的只需改配置。活跃的社区与清晰的文档虽然是一个较新的项目但其文档结构清晰社区响应及时。在调研阶段我们通过其GitHub Issues和讨论区解决了不少疑惑。3. 迁移实施从700行到72行的具体步骤迁移并非一蹴而就我们制定了“外围渗透核心替换”的渐进式策略确保业务平稳过渡。3.1 环境搭建与OpenClaw核心概念对齐第一步是搭建一个独立的测试环境用于熟悉OpenClaw。# 1. 创建虚拟环境 python -m venv venv-openclaw source venv-openclaw/bin/activate # Linux/Mac # venv-openclaw\Scripts\activate # Windows # 2. 安装OpenClaw。根据其官方文档通常直接pip安装核心包 pip install openclaw-core # 如果需要特定的模型支持例如OpenAI pip install openclaw-openai安装后我们首先将原有Agent的“能力”映射到OpenClaw的概念上。原来我们可能有一个CustomerServiceAgent类里面有很多方法。现在我们将每个独立的功能如“查询订单”、“解答产品问题”、“转接人工”定义为一个Skill。# 示例将原有的一个功能转化为OpenClaw Skill from openclaw.skills import skill skill( namequery_order_status, description根据用户提供的订单号查询订单的当前状态、物流信息等。, input_schema{order_id: {type: string, description: 订单编号}}, output_schema{status: {type: string}, logistics: {type: string}}, ) async def query_order_skill(order_id: str) - dict: 这是技能的具体实现替换掉原来Agent类里的某个方法。 这里可以调用数据库、外部API等。 # 模拟业务逻辑 order_info await database.fetch_order(order_id) return {status: order_info.status, logistics: order_info.tracking_number}这个转变是思维上的关键从“管理对象Agent”转向“调度技能Skill”。任务不再是指定“哪个Agent去执行”而是描述“需要完成什么”由调度器去匹配拥有对应技能的Agent。3.2 调度器替换配置化代替硬编码原来700行代码的调度器核心其本质是一个复杂的循环不断从队列取任务查表找Agent执行处理异常更新状态。在OpenClaw中这部分被极大地简化了。我们创建了一个openclaw_config.yaml配置文件# openclaw_config.yaml claw: name: customer_support_claw # 一个Claw可以理解为一个Agent集群或应用 # 定义技能库这里列出所有可用的技能 skills: - module: my_project.skills.order_skills # 指向我们定义的skill模块 - module: my_project.skills.product_skills # 配置调度器 scheduler: type: priority # 使用优先级调度器 max_concurrency: 10 # 全局最大并发数 # 配置中间件链 - 这正是替换旧代码中分散逻辑的地方 middlewares: - name: rate_limiting config: requests_per_minute: 60 strategy: token_bucket - name: logging - name: error_retry config: max_retries: 3 backoff_factor: 1.5 - name: monitoring config: metrics_backend: prometheus # 配置模型资源 models: - name: gpt-4 type: openai config: api_key: ${OPENAI_API_KEY} model: gpt-4-turbo-preview然后在应用入口处启动Claw的代码变得异常简洁# main.py - 新的调度核心 import asyncio from openclaw import Claw import yaml async def main(): # 1. 加载配置 with open(openclaw_config.yaml, r) as f: config yaml.safe_load(f) # 2. 创建Claw实例 claw await Claw.from_config(config) # 3. 运行Claw调度器开始工作 await claw.run() # 4. 这里是接收外部请求提交任务的示例 # 假设我们从消息队列如RabbitMQ收到一个请求 task_description 用户订单号123456查询物流状态。 # 向Claw提交任务它会自动匹配query_order_status技能并调度执行 result await claw.process_task(task_description) print(f任务结果{result}) if __name__ __main__: asyncio.run(main())这就是那72行核心代码的雏形当然实际业务中接收请求的部分会更复杂但调度本身就这么简单。原来的队列管理、优先级计算、锁竞争、错误重试、限流逻辑全部通过scheduler配置和middlewares声明实现了。我们需要编写的仅仅是各个独立的Skill实现以及顶层的任务提交和结果处理逻辑。3.3 中间件开发将横切关注点模块化原来散落在调度器各处的辅助逻辑现在被抽取成独立的中间件。例如我们实现一个错误重试中间件# middlewares/error_retry_middleware.py import asyncio import logging from openclaw.middleware import Middleware logger logging.getLogger(__name__) class ErrorRetryMiddleware(Middleware): 错误重试中间件替换原来调度器里复杂的try-catch重试块。 def __init__(self, config): self.max_retries config.get(max_retries, 3) self.backoff_factor config.get(backoff_factor, 1.0) async def on_skill_execute(self, context, next_fn): 在技能执行前后插入逻辑。 last_exception None for attempt in range(self.max_retries 1): # 1 是第一次尝试 try: result await next_fn() # 执行实际的技能 if attempt 0: logger.info(f技能 {context.skill_name} 在第{attempt1}次重试后成功。) return result except Exception as e: last_exception e if attempt self.max_retries: wait_time self.backoff_factor * (2 ** attempt) # 指数退避 logger.warning( f技能 {context.skill_name} 执行失败尝试 {attempt1}/{self.max_retries1} f{wait_time:.1f}秒后重试。错误{e} ) await asyncio.sleep(wait_time) else: logger.error( f技能 {context.skill_name} 重试{self.max_retries}次后仍失败。, exc_infoTrue ) # 所有重试都失败抛出最后的异常 raise last_exception将这个中间件注册到配置中它就自动对所有流经Claw的技能请求生效。这种设计使得功能增减变得非常灵活。比如临时需要添加一个请求/响应的加密解密层只需要编写并插入一个新的中间件即可完全不用触动业务技能代码和核心调度逻辑。4. 迁移后的收益与踩坑实录4.1 量化与质化的收益代码维护成本直线下降核心调度代码从700行变为~72行配置加载Claw启动。新同事 onboarding 时理解系统架构的时间从一周缩短到一天。功能迭代速度加快添加一个新技能只需要实现一个函数并用skill装饰然后在配置里引入模块即可。无需担心会破坏现有的调度逻辑。系统可观测性提升通过标准的中间件我们轻松集成了 Prometheus 指标和结构化日志如JSON格式监控告警体系立刻健全起来。资源管理更优雅OpenClaw对大模型连接池、线程池的管理是内置的我们不再需要自己小心翼翼地管理这些全局资源避免了资源泄漏的风险。社区赋能可以直接使用社区贡献的中间件如针对特定云服务的监控中间件或者参考其他项目的Skill实现避免了重复造轮子。4.2 迁移过程中遇到的典型问题与解决方案问题一异步Async编程模型的适应我们的旧代码是同步的而OpenClaw重度依赖asyncio。迁移时需要将原有的阻塞IO操作如数据库查询、HTTP请求改为异步版本如使用asyncpg、aiohttp。实操心得不要试图在Skill里混用同步和异步代码这会导致事件循环阻塞。如果某些第三方库没有异步版本可以使用asyncio.to_thread将其放到线程池中运行避免阻塞主事件循环。问题二状态管理的转变旧调度器自己维护了复杂的任务状态机。OpenClaw更倾向于无状态或外部状态管理。我们将任务状态持久化完全移交给了外部数据库Skill只负责纯业务计算。调度器本身不再持有状态这让水平扩展变得非常容易。问题三配置管理的复杂性所有逻辑都转移到配置后YAML文件会变得很大。我们采用了配置分片将skills、models等拆分成多个文件用!include指令引入和环境变量注入使用${VAR}语法来管理不同环境开发、测试、生产的配置。问题四错误处理边界的重新定义在中间件链中错误处理需要仔细设计。例如重试中间件应该放在日志中间件之后还是之前我们的经验是日志中间件应该尽可能靠外这样它能记录到重试过程中的所有尝试和最终结果。而像熔断器这样的中间件则需要根据业务决定其位置。问题五技能匹配的精确度OpenClaw默认根据Skill的description和input_schema来匹配任务描述。初期我们发现匹配不准。解决方案是1) 优化Skill描述的精确性和关键词2) 对于复杂场景可以自定义一个路由Skill由它或一个大模型来解析用户意图再手动调用具体的下游Skill。5. 深入解析OpenClaw调度核心与自研逻辑的映射为了更透彻地理解这“72行”为何能替代“700行”我们来做一个深度的映射拆解看看OpenClaw内部是如何消化我们那些复杂逻辑的。5.1 任务队列与调度策略的封装在自研系统中我们手动实现了一个PriorityTaskQueue类内部使用heapq模块并配合asyncio.Lock来保证线程安全。代码里充满了heappush,heappop,lock.acquire()和lock.release()的调用还要处理空队列的等待通知asyncio.Condition。在OpenClaw中这一切被抽象成了scheduler配置项。当我们设置type: priority时背后是一个经过充分测试的、高效的生产者-消费者模型。它不仅处理优先级还可能内置了防止低优先级任务饥饿的“老化”机制。我们无需关心其内部是用了asyncio.Queue的变种还是其他数据结构只需通过配置调整max_concurrency最大并发数等参数。这种将“算法实现”和“策略声明”分离的设计是软件工程中经典的“控制反转”IoC思想极大地降低了使用者的认知负担。5.2 中间件链责任链模式的完美实践旧代码中限流、日志、重试、监控的代码像意大利面条一样缠绕在核心的业务调用周围。修改任何一个都可能影响其他。OpenClaw的中间件系统是责任链模式的典范。一个任务Task的执行就像穿过一个管道Pipeline。每个中间件是这个管道的一节它可以预处理请求如限流器检查令牌、日志记录开始时间。决定是否/如何调用下一个环节如重试中间件包裹next_fn()进行循环调用。后处理响应如日志记录结束时间和结果、监控中间件上报指标。这种架构的好处是单一职责每个中间件只做一件事代码清晰。开闭原则新增功能如加密只需添加新的中间件无需修改现有代码。灵活组合通过调整YAML配置中middlewares的顺序就能改变系统的行为。例如你可以把“认证”中间件放在最前面确保非法请求不会消耗后续的计算资源。我们自研的700行代码本质上是在一个函数里手动模拟了这个责任链但缺乏清晰的边界和模块化导致代码混乱。OpenClaw通过框架强制实施了这种优秀的架构模式。5.3 技能Skill作为一等公民面向领域的建模自研时我们的核心抽象是Agent。一个Agent是一个“全能”或“多能”的对象。但随着技能增多Agent类变得庞大技能之间的依赖和冲突也难以管理。OpenClaw将技能Skill提升为第一类实体。一个Skill就是一个独立的、可复用的功能单元。这种设计鼓励了更细粒度的模块化。它带来了几个直接好处更好的可测试性每个Skill都是一个独立的函数输入输出定义明确极易编写单元测试。更灵活的组装不同的“Claw”可以理解为不同的应用或机器人可以按需组合不同的Skill形成不同的能力集合。这比基于“Agent”的继承或组合要灵活得多。清晰的接口契约通过input_schema和output_schemaSkill定义了严格的接口。这不仅是给框架用的也是给开发者看的文档甚至未来可以用于自动生成API文档或前端表单。5.4 配置即代码提升运维与部署效率所有核心逻辑的配置化带来了运维上的巨大优势。我们可以为开发、预发布、生产环境准备不同的openclaw_config.yaml文件。通过环境变量注入敏感信息如API密钥。甚至可以实现动态配置在系统运行时通过管理接口热更新某个中间件的参数比如将限流值从60次/分钟调整到100次/分钟而无需重启服务。这在自研的硬编码系统里是很难安全实现的。6. 性能对比与扩展性思考6.1 性能基准测试迁移完成后我们进行了简单的性能对比测试。使用相同硬件模拟相同吞吐量的请求。测试项自研调度器OpenClaw调度器说明平均响应时间125 ms118 msOpenClaw略优可能得益于其内部更高效的数据结构和异步处理。P99延迟890 ms650 ms长尾延迟显著改善。OpenClaw内置的调度和中间件链可能减少了不必要的阻塞。CPU利用率平均75%平均68%资源利用更有效率。内存占用稳定后 ~220 MB稳定后 ~180 MBOpenClaw框架本身有一定开销但更清晰的内存管理可能减少了碎片。代码行数/复杂度高700低核心72可维护性指标非运行时指标。注意这个对比并不严谨因为迁移过程中我们也优化了部分Skill的实现比如用了更快的异步数据库驱动。但可以肯定的是使用OpenClaw没有带来性能损耗在延迟稳定性上甚至有提升。性能的瓶颈主要在于Skill本身的业务逻辑和大模型API的响应速度而非调度框架。6.2 水平扩展与高可用设计自研调度器是单点服务虽然我们用了消息队列来缓冲请求但调度器本身难以水平扩展因为其内部维护了状态。OpenClaw的架构天生更适合扩展。由于Skill是无状态的或状态外置Claw实例本身也可以是无状态的。我们可以轻松地启动多个Claw实例让它们共享同一个任务消息队列如Redis Streams或RabbitMQ。负载均衡器将请求分发到不同的实例每个实例独立地从队列中拉取任务并执行。这实现了调度能力的水平扩展。高可用方案也变得简单任何一个Claw实例宕机只是暂时减少了处理能力队列中的任务会被其他健康的实例处理不会丢失前提是消息队列本身是持久化的。这种架构与云原生的微服务理念完全契合。6.3 未来演进从调度到编排OpenClaw的“技能”和“任务”模型为我们向更复杂的智能体工作流编排演进铺平了道路。下一步我们计划探索技能链Chain of Skills将一个复杂任务分解为多个子技能按顺序或条件执行。这类似于LangChain的Chain但可以完全在OpenClaw的调度和中间件体系内完成享受统一的限流、监控和错误处理。规划器Planner集成引入一个大模型驱动的规划器Skill。它接收用户的自然语言请求自动分解成一系列可执行的子技能然后由OpenClaw调度执行。这样系统就从“指令响应”升级为“目标驱动”。多模态技能支持除了处理文本Skill是否可以处理图像、音频OpenClaw的抽象能力允许我们定义更复杂的输入输出Schema未来可以无缝接入多模态大模型。这次迁移表面上是代码行数的减少实质上是将团队的精力从“维护基础设施”重新聚焦到“创造业务价值”上。我们不再需要为调度算法的一个边界条件熬夜调试而是可以更多地思考如何设计更强大的Skill如何优化用户体验。从“造轮子”到“用轮子”再到未来可能“改进轮子”甚至“为轮子贡献代码”这是一个技术团队走向成熟和高效的必经之路。如果你正面临类似的技术债不妨评估一下OpenClaw它可能就是你一直在寻找的那把“钳子”。

相关新闻

2026年度10款降AI率平台红黑榜!优劣对比全解析,达标率直接对标行业天花板

2026年度10款降AI率平台红黑榜!优劣对比全解析,达标率直接对标行业天花板

2026 年,AI 写稿、AI 生成内容已经成了学生党、打工人和内容创作者的日常,但随之而来的「AI 率过高」问题也成了新的麻烦:论文查重 AI 率超标、职场报告被判定 AI 生成、自媒体内容过不了平台原创审核… 为了帮大家解决这个痛点,我…

2026/10/10 17:57:15 阅读更多 →
2026年电赛省赛F题设计报告(附F题赛题与FPGA工程源码)

2026年电赛省赛F题设计报告(附F题赛题与FPGA工程源码)

摘要 本设计面向示波器X-Y模式下的李萨如图形显示与自动控制。信号源一路直送示波器X轴,另一路由双路10 bit、50 MSPS ADC采集;XC7A50T FPGA完成周期测量、数字锁相、二倍频生成、三级IIR幅度检测和AGC调节,输出经AD9740及LMH6643固定反相放…

2026/10/10 20:37:16 阅读更多 →
Simulink逻辑模块深度解析:从Switch到边沿检测的工程实践与避坑指南

Simulink逻辑模块深度解析:从Switch到边沿检测的工程实践与避坑指南

1. 从逻辑门到决策流:为什么Simulink逻辑模块是模型“大脑”如果你在Simulink里搭过模型,尤其是涉及控制、信号处理或者状态机,那你肯定绕不开那些画着“与”、“或”、“非”符号的小方块。很多人觉得,这不就是数字电路里的基础逻…

2026/9/29 23:13:15 阅读更多 →

最新新闻

基于SSM+Flask的学籍管理系统设计与实战全解析

基于SSM+Flask的学籍管理系统设计与实战全解析

学了几年计算机,估计有七成同学都躲不过“学生信息管理系统”这道坎。你要是去问学长学姐,十个人里八个会告诉你当初熬夜改了多少Bug。不过说句公道话,这个题目是真练人,麻雀虽小五脏俱全,从数据库设计到前后端联调&am…

2026/10/10 20:36:21 阅读更多 →
从 Codex 搬家 WorkBuddy 一周:插件生态到底差在哪?

从 Codex 搬家 WorkBuddy 一周:插件生态到底差在哪?

从 Codex 搬家 WorkBuddy 一周:插件生态到底差在哪? 【免费下载链接】plugins OpenAI Plugins 项目地址: https://gitcode.com/GitHub_Trending/plugins123/plugins 把 Codex 当主力 Agent 用了大半年之后,我在 9 月中旬做了一个有点&…

2026/10/10 20:36:21 阅读更多 →
软考论文总挂科?先搭框架再填内容,系统架构师高分方法论

软考论文总挂科?先搭框架再填内容,系统架构师高分方法论

说实话,软考高级的论文这一科目,卡掉的考生远比上午题和案例题多。很多人上午题能拿五十多分,案例题也勉强过关,偏偏就挂在论文上——不是没项目经验,也不是完全不会写,而是根本没搞明白论文这科到底在考什…

2026/10/10 20:36:21 阅读更多 →
Unity 2021第三人称漫游:场景搭建、控制器与避坑指南

Unity 2021第三人称漫游:场景搭建、控制器与避坑指南

简介:这份资源是面向Unity初学者与在校学生的期末大作业级项目,基于Unity2021版本构建第三人称漫游场景,帮助读者掌握角色控制、场景搭建与UI交互等核心开发流程。包内共约2000个文件,以cs脚本、png贴图、fbx模型、prefab预制体、…

2026/10/10 20:36:21 阅读更多 →
Flash 对 Mimo、GLM:中文代码 Agent 场景的“性价比之王“实测横评

Flash 对 Mimo、GLM:中文代码 Agent 场景的“性价比之王“实测横评

Flash 对 Mimo、GLM:中文代码 Agent 场景的"性价比之王"实测横评 【免费下载链接】DeepSeek-V4-Flash-0731 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-0731 2026 年 7 月 31 日,DeepSeek-V4-Flash …

2026/10/10 20:36:20 阅读更多 →
selective_search原理与参数调优:目标检测候选框生成实战

selective_search原理与参数调优:目标检测候选框生成实战

简介:选择性搜索(Selective Search)是目标检测中常用的候选区域生成算法,这套Python入门示例面向计算机视觉初学者、图像处理学习者以及准备接触RCNN系列检测模型的开发者。示例以超像素分割、区域合并、候选区域排序为技术主线&a…

2026/10/10 20:35:20 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

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/10 11:14:25 阅读更多 →
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/10 1:36:08 阅读更多 →
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/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →