OpenClaw智能体实战:从零搭建可运行的多步任务智能体
简介这份PDF资料源自厦门大学大数据教学团队的大模型科普讲座面向希望系统理解人工智能与智能体应用的高校师生、科研人员及技术爱好者。内容从1950年图灵测试与1956年达特茅斯会议讲起梳理人工智能六大发展阶段与未来五个阶段预测并深入剖析大模型在文本生成、逻辑推理、知识广度、情感理解、价值判断与执行能力等维度的边界及应对策略。核心部分详解OpenClaw小龙虾智能体的云端部署与科研辅助实践展示其在感知层、认知层、决策层与行动层的具体操作如调用工具、运行代码、发送通讯等并展望AI代理进入主流商业场景、多代理协作与个人AI助手普及等趋势。资源为1个PDF文件共94页压缩包约21.81MB已有114人学习。读者可借此建立从理论到实践、再到未来发展的完整认知框架适合作为讲座配套阅读或自学参考。1. 智能体 OpenClaw 应用实践94 页文档背后真正能跑起来的那条路第一次看到「智能体 OpenClaw小龙虾应用实践_94页.pdf」这个标题多数人的第一反应是去找这份文档第二反应是——找到了也未必跑得起来。原因很简单智能体这类东西文档写得再厚真正卡住你的从来不是概念而是「模型接哪个、工具怎么注册、任务循环在哪一步断掉」。OpenClaw 这个被圈内戏称为「小龙虾」的智能体框架核心价值就在于它把「感知—规划—调用工具—回写结果」这条链路做成了可插拔的工程结构而不是又一个只会聊天的壳子。这篇笔记不假装我读过那份 94 页的原文而是按一线落地的顺序把 OpenClaw 这类智能体框架从环境准备、模型接入、Skill 编写、任务编排到排错完整走一遍。适合两类人一类是想把智能体从 Demo 推进到能干活的新手照着步骤能跑通最小闭环另一类是已经用过其他框架、想看清 OpenClaw 边界和参数的老手重点看选型理由和踩坑章节。全程围绕一个目标——让你手上真的有一个能自主完成多步任务的智能体而不是一份读完就忘的 PDF。2. 先把 OpenClaw 的运行时骨架拆开它到底比普通脚本多了什么很多人上手智能体框架时习惯性地把它当成「带函数调用的 ChatGPT 封装」结果一遇到多步任务就翻车。OpenClaw 的运行时骨架和这种理解有本质区别先把这层想清楚后面写 Skill 和调参数才不会靠玄学。2.1 智能体循环感知、规划、执行、回写四段到底谁在驱动普通脚本是「输入→处理→输出」一条直线而 OpenClaw 这类智能体的核心是一个循环每一轮它先感知当前上下文用户输入、历史消息、工具返回结果再让 LLM 做一次规划决定下一步调哪个工具、传什么参数然后执行工具最后把结果回写到上下文进入下一轮直到模型判断任务完成或触发终止条件。这个循环里最关键的一点是驱动权在模型不在你的代码。你的代码只负责提供工具和约束边界具体走几步、走哪条路是模型每轮现算的。这就是为什么同一个智能体换个模型表现可能天差地别——规划能力弱的模型会在循环里反复调同一个工具或者提前宣布任务完成。理解这一点后你调优的着力点就清楚了要么换规划能力更强的模型要么把工具的 description 写得更明确减少模型「猜」的空间。我一般会在工具描述里把「什么时候该用」和「什么时候不该用」都写清楚这一条比调 temperature 有用得多。2.2 工具注册与 Skill 机制为什么 description 写不好任务必崩OpenClaw 的工具Skill注册本质上是给模型一份「能力清单」模型根据每个工具的 name、description、参数 schema 来决定调用。这里最常见的翻车是两个工具功能重叠description 又都写得含糊模型就会随机挑一个任务自然不稳定。一个可靠的 Skill 定义应该包含三部分这个工具做什么、什么场景下用、参数每个字段的含义和取值范围。下面是一个最小可用的 Skill 注册示例Python 风格具体 API 名以你本地版本为准# 注册一个查询订单状态的 Skill # 关键点description 里明确写清「何时用」和「何时不用」 order_skill { name: query_order_status, description: ( 查询指定订单的当前状态。 当用户询问订单进度、是否发货、物流信息时使用。 当用户只是询问退款政策、不涉及具体订单号时不要调用本工具。 ), parameters: { type: object, properties: { order_id: { type: string, description: 订单号通常为 16 位数字字符串 } }, required: [order_id] } } def query_order_status(order_id: str) - dict: # 实际业务逻辑这里用占位返回 return {order_id: order_id, status: 已发货, carrier: 某快递}逻辑说明description 里那句「不要调用本工具」是刻意加的它能在模型面对模糊提问时减少误触发。参数 schema 用标准 JSON Schemarequired字段一定要标否则模型可能传空参数进来你的函数直接抛异常。参数说明里给出格式提示16 位数字能显著降低模型传错格式的概率。2.3 上下文管理与记忆长任务为什么会「失忆」智能体跑多步任务时上下文会不断累积工具返回结果很快撑爆模型的上下文窗口。OpenClaw 这类框架通常提供两种处理方式截断保留最近 N 轮和摘要把早期内容压缩成一段摘要。默认配置往往是截断这在短任务里没问题但长任务里会导致智能体「忘记」前面已经查过的信息重复调用工具。我的做法是对结果体积大的工具比如返回整页 HTML 的抓取工具在工具函数内部就先做一次精简只把关键字段回写给模型而不是把原始数据全塞进上下文。这一步能省掉后面一半的上下文管理麻烦。另外如果框架支持外部记忆存储把「已完成的子任务」写进一个持久化的 key-value比指望模型自己记住更靠谱。3. 从零跑通第一个 OpenClaw 智能体环境、模型接入与最小任务概念讲完直接上手。这一章的目标是让你在本地跑通一个能完成「查订单→判断是否超时→生成回复」三步任务的智能体。整个过程分环境准备、模型接入、任务编排三段每段都有可抄的配置。3.1 环境准备与依赖安装避开版本冲突的三个检查点OpenClaw 的运行依赖通常包括 Python 运行时、若干 HTTP 与序列化库以及模型 SDK。安装本身不复杂坑主要在版本冲突。我一般按下面顺序检查# 1. 确认 Python 版本建议 3.10 及以上 python --version # 2. 建独立虚拟环境别装到全局 python -m venv openclaw_env source openclaw_env/bin/activate # Windows 用 openclaw_env\Scripts\activate # 3. 安装框架本体与模型 SDK包名以你本地实际为准 pip install openclaw pip install openai # 若接 OpenAI 兼容接口 # 4. 装完立刻验证导入别等到跑任务才发现缺依赖 python -c import openclaw; print(openclaw.__version__)三个检查点一是 Python 版本低于 3.10 有些类型语法会报错二是虚拟环境全局装容易和系统里其他框架的依赖打架三是装完立刻 import 验证比跑完整任务再排错省时间。如果 import 报缺某个库多半是框架的依赖没自动装全手动补上即可。3.2 接入模型本地模型与 API 两种方式的取舍OpenClaw 支持接入 API 算力也支持切到本地模型比如通过 Ollama 这类本地推理服务。这两条路怎么选取决于你的任务对规划能力的要求和隐私约束。维度API 接入本地模型接入规划能力强适合多步复杂任务取决于本地模型规模小模型易在循环里打转延迟受网络影响本地推理稳定但受硬件限制隐私数据出本地数据不出本地成本按调用量计费一次性硬件投入适用场景任务复杂、对隐私不敏感数据敏感、任务相对固定接入 API 的配置大致如下# 配置模型客户端指向 OpenAI 兼容接口 from openai import OpenAI client OpenAI( api_key你的密钥, # 从环境变量读取更安全 base_urlhttps://你的接口地址/v1 # 兼容接口的 base_url ) def call_model(messages, toolsNone): resp client.chat.completions.create( model你的模型名, messagesmessages, toolstools, # 传入 Skill 定义让模型知道有哪些工具 temperature0.2 # 智能体任务建议低温减少随机性 ) return resp.choices[0].message参数说明temperature设 0.2 左右智能体任务要的是稳定决策而不是创意tools参数把前面注册的 Skill 传进去模型才能发起工具调用。如果切本地模型把base_url指向本地推理服务的地址即可模型名换成你本地拉取的模型。注意本地小模型在工具调用格式上经常不严格可能需要框架层做一次格式纠正。3.3 编排最小任务让智能体自己决定调哪个工具环境好了、模型通了接下来把工具和循环串起来。下面是一个最小任务编排让智能体处理「用户问某订单是否超时」# 把 Skill 定义和实际函数绑定 tools [order_skill] # order_skill 来自 2.2 节 tool_map {query_order_status: query_order_status} def run_agent(user_input, max_steps5): messages [{role: user, content: user_input}] for step in range(max_steps): msg call_model(messages, toolstools) messages.append(msg) # 模型没有发起工具调用说明它认为可以给最终答案了 if not msg.tool_calls: return msg.content # 执行模型要求的每个工具调用 for call in msg.tool_calls: fn tool_map.get(call.function.name) args json.loads(call.function.arguments) result fn(**args) messages.append({ role: tool, tool_call_id: call.id, content: json.dumps(result, ensure_asciiFalse) }) return 任务步数超限请检查工具描述或换更强模型 print(run_agent(帮我看看订单 1234567890123456 发货了没是不是超时了))逻辑说明max_steps是安全阀防止模型陷入死循环无限调用工具一般设 5 到 10。循环里判断msg.tool_calls是否为空是区分「模型要调工具」还是「模型给最终答案」的关键。工具返回结果用 JSON 字符串回写ensure_asciiFalse保证中文不被转义成乱码。跑通这一步你就有了一个能自主决策的最小智能体后面所有复杂任务都是在这个骨架上加工具、加约束。4. 把智能体推进到能干活多工具协作、容错与本地知识库最小闭环跑通只是起点真正让智能体在生产里可用要解决三件事多个工具怎么协作不打架、工具失败时怎么容错、私有知识怎么接进来。这一章逐个拆。4.1 多工具协作任务拆解与工具选择顺序当智能体手里有五个以上工具时模型选错工具的概率会明显上升。解决办法不是减少工具而是给工具分组并在系统提示里给出「任务类型→工具组」的映射。比如把工具分成「查询类」「写入类」「计算类」系统提示里写明「涉及数据修改的任务必须先调用查询类工具确认现状再调用写入类工具」。另一个实用技巧是给工具加前置条件描述。比如「退款工具」的 description 里写明「调用前必须已通过 query_order_status 确认订单存在且未退款」模型在规划时就会倾向于先查后写。这不是硬约束但能显著降低乱序调用的概率。如果框架支持更稳的做法是在工具函数内部做校验参数不满足前置条件直接返回错误信息让模型自己纠正。4.2 容错设计工具报错后智能体该怎么接工具调用失败是常态——网络超时、参数格式错、下游服务挂了。如果框架直接把异常抛给模型模型往往会重试同一个错误调用直到步数耗尽。正确的做法是在工具层做一次包装把异常转成结构化的错误信息回写给模型def safe_call(fn, **kwargs): try: return {ok: True, data: fn(**kwargs)} except Exception as e: # 把错误类型和可能的原因回写给模型引导它换策略 return { ok: False, error: str(e), hint: 参数可能格式错误请检查后重试或换用其他工具 }逻辑说明返回结构里带ok字段模型能明确知道这次调用失败了hint字段是给模型的纠错提示引导它不要盲目重试。参数上hint要写得具体比如「订单号应为 16 位数字」比笼统的「出错了」有用得多。这一层包装看起来简单但它是智能体从「一碰就崩」到「能自己绕路」的分水岭。4.3 接入本地知识库检索增强在 OpenClaw 里怎么落很多任务需要智能体基于私有文档回答这就涉及检索增强。常见做法是把文档切块、向量化、存进向量库然后注册一个「知识检索」工具让智能体在需要时调用。# 注册知识检索工具内部走向量库查询 def search_knowledge(query: str, top_k: int 3) - dict: # query 向量化后检索返回最相关的若干片段 hits vector_store.search(query, top_ktop_k) return {snippets: [h.text for h in hits]} knowledge_skill { name: search_knowledge, description: 检索内部知识库。当用户问题涉及产品政策、内部流程时使用。, parameters: { type: object, properties: { query: {type: string, description: 检索关键词或问题}, top_k: {type: integer, description: 返回片段数默认 3} }, required: [query] } }参数说明top_k默认 3 是经验值太多会撑上下文太少可能漏关键信息。检索工具返回的是片段文本不是整篇文档这样能控制上下文体积。注意检索质量和切块策略强相关切块太大检索不准太小丢上下文一般按语义段落切每块 200 到 500 字比较稳。5. 避坑与排查智能体跑不起来时先看这几处智能体出问题现象往往很模糊——「它就是不动」「它一直转圈」「它答非所问」。这一章按现象归类给出原因和解决路径都是实际踩过的。5.1 现象模型从不调用工具只回文字原因通常是工具定义没正确传给模型或者 description 写得太抽象模型没意识到该用工具。解决先打印发给模型的完整请求确认tools字段真的带上了再把 description 改成「当用户……时使用」这种触发条件明确的写法。如果用的是本地小模型还要确认它是否支持工具调用格式不支持的话框架层需要做适配。5.2 现象智能体反复调用同一个工具步数耗尽原因是模型没从工具返回结果里得到「任务已完成」的信号或者返回结果格式它读不懂。解决在工具返回里加一个明确的完成标志字段比如{status: done, data: ...}同时检查返回内容是不是被截断或转义成了模型难解析的格式。另一个可能是max_steps设太大掩盖了本该暴露的规划问题建议先调小到 3 观察。5.3 现象中文返回乱码或问号原因是序列化时没指定编码或者终端编码不匹配。解决所有json.dumps加ensure_asciiFalseWindows 终端跑脚本前先chcp 65001切 UTF-8。这个坑看着低级但在智能体场景里特别隐蔽因为乱码出现在工具返回里模型会基于乱码继续推理最后答案莫名其妙。5.4 现象本地模型接入后延迟极高或直接超时原因是本地模型推理本身慢加上智能体多轮循环总耗时被放大。解决优先给本地模型配更强的硬件或者把任务拆成「本地模型处理固定流程 API 模型处理复杂规划」的混合模式。另外检查是不是每轮都把完整历史传进去了上下文越长推理越慢该截断就截断。5.5 现象切换模型后行为完全变了原因是不同模型对工具调用格式、系统提示的遵循程度不同。解决换模型后不要只测一个用例把核心任务各跑一遍重点看工具选择顺序和终止判断。系统提示里如果有依赖特定模型习惯的写法换模型后要重写。这一步没有捷径只能靠回归测试。6. 进阶技巧用 Skill 组合与验证闭环把智能体做稳走到这里你已经有一个能跑、能容错、能接知识库的智能体了。最后这一步讲两个让它在长期使用中保持稳定的技巧都是我踩过坑之后固定下来的习惯。第一个技巧是 Skill 组合复用。不要把每个任务都写成一个巨型工具而是拆成原子 Skill再用一个「编排 Skill」把它们串起来。比如「处理退款」这个任务拆成「查订单」「判断是否符合退款条件」「发起退款」「通知用户」四个原子 Skill编排层只负责按顺序调用。这样做的好处是单个 Skill 容易测试出问题能定位到具体环节原子 Skill 还能被其他任务复用不用重复写。编排层可以用代码写死顺序也可以交给模型规划前者稳、后者灵活按任务复杂度选。第二个技巧是给智能体加验证闭环。智能体自己说「任务完成」不算数要有一个独立的验证步骤。常见做法是任务结束后用一个单独的模型调用或者规则校验检查结果是否满足预期条件。比如退款任务完成后验证「订单状态确实变成了已退款」。这个验证步骤可以是一个专门的 Skill也可以在主循环结束后跑一段校验代码。下面是一个简单的验证封装def verify_task(task_type: str, context: dict) - dict: # 按任务类型走不同校验规则 rules { refund: lambda c: c.get(order_status) 已退款, query: lambda c: bool(c.get(order_id)), } rule rules.get(task_type) if not rule: return {verified: False, reason: 无对应校验规则} ok rule(context) return {verified: ok, reason: if ok else 结果不符合预期需人工复核}参数说明task_type决定用哪条校验规则context是任务执行过程中收集的关键状态。校验不通过时不要直接重试而是标记为「需人工复核」避免智能体在错误方向上反复尝试。这个闭环看起来多了一步但它能把「智能体说完成了但其实没完成」这类最危险的问题挡在交付之前。我自己的习惯是任何要交给别人用的智能体上线前必须跑一遍「故意让工具失败」的测试看它能不能正确报错而不是假装成功。这个习惯帮我省掉了好几次线上事故。智能体这东西能跑通不代表能信能信的前提是它在出错时也表现得可预期。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Flink性能调优:从并行度到状态管理的实战经验

Flink性能调优:从并行度到状态管理的实战经验

在大数据这个圈子里,“数据处理效率”是最常被挂在嘴边的一句话,但真正能在高吞吐、低延迟、可恢复性这三个方向同时站住的引擎,Flink绕不开。我第一次系统性使用Flink是在一个实时数仓项目里,数据源是几千万级的订单行为流&#…

2026/10/10 3:47:26 阅读更多 →
面向对象基础详解:类与对象、三大特性及常见面试坑

面向对象基础详解:类与对象、三大特性及常见面试坑

我最早接触面向对象,是在某家IT培训机构的基础班上。当时老师放了一张PPT,上面写着“面向对象三大特性:封装、继承、多态”,下面坐着的同学一半在记笔记,一半在发呆。我也是发呆的那一半——封装是啥?继承谁…

2026/10/10 3:47:26 阅读更多 →
从“无标题”到成品:内容项目定位与执行全流程

从“无标题”到成品:内容项目定位与执行全流程

“无标题”这三个字,可能是很多内容项目最真实的起点。文档是新建的,文件夹是空的,脑子里堆着七八个点子,但项目名称、内容方向、目标用户全都没有定下来。我经手过不少这样的盘子,最容易翻车的地方不在后面执行&#…

2026/10/10 3:46:25 阅读更多 →

最新新闻

AnyPS5项目解析:跨平台PS5兼容层技术原理与应用

AnyPS5项目解析:跨平台PS5兼容层技术原理与应用

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"AnyPS5",但未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所谓“相关热搜词”和“最新网络热词”字段为空,无实际内容可供分析&a…

2026/10/10 5:19:31 阅读更多 →
机器学习预测股票:目标设计、特征工程与时间序列验证指南

机器学习预测股票:目标设计、特征工程与时间序列验证指南

简介:这份论文以股票预测为研究对象,系统梳理了仅使用历史数据与结合金融新闻文本的两类预测方法,涵盖分段线性表示、高斯过程分类、随机森林、深度递归神经网络、CNN、LSTM以及双重注意力机制等核心技术,并进一步介绍新闻事件结构…

2026/10/10 5:19:31 阅读更多 →
Python+Netmiko网络设备自动化配置实战:从批量备份到VLAN下发

Python+Netmiko网络设备自动化配置实战:从批量备份到VLAN下发

一直手动敲命令做网络配置的朋友,应该都体会过那种感觉:几十台交换机,一台台登录、一条条敲VLAN、改接口、配路由,碰上割接窗口更是连水都顾不上喝。我真正下决心用Python做网络设备自动配置,是在一次凌晨两点的批量变…

2026/10/10 5:19:31 阅读更多 →
个人置顶帖与投稿汇总:把内容资产变成可复利的方法论

个人置顶帖与投稿汇总:把内容资产变成可复利的方法论

这篇置顶帖和投稿汇总的做法,算是我折腾了大半年内容运营之后,最想分享给同行的一批实操沉淀。起因其实特别普通:有段时间我同时维护着两三个内容账号,又在不同平台投过几篇稿子,时间一长,我连自己写过哪些…

2026/10/10 5:19:31 阅读更多 →
在 React NodeGui 中使用原生 Node 模块:Qode 重编译与 node-pre-gyp 兼容性实战

在 React NodeGui 中使用原生 Node 模块:Qode 重编译与 node-pre-gyp 兼容性实战

桌面应用跨平台 【免费下载链接】react-nodegui Build performant, native and cross-platform desktop applications with native React powerful CSS like styling.🚀 项目地址: https://gitcode.com/gh_mirrors/re/react-nodegui 点击查看 免费下载 …

2026/10/10 5:19:31 阅读更多 →
Leaflet Map Panes 完全指南:用自定义图层层级(Custom Pane)控制图层叠加顺序

Leaflet Map Panes 完全指南:用自定义图层层级(Custom Pane)控制图层叠加顺序

前端数据可视化GIS 【免费下载链接】Leaflet 🍃 JavaScript library for mobile-friendly interactive maps 🇺🇦 项目地址: https://gitcode.com/gh_mirrors/le/Leaflet 点击查看 免费下载 导读 Map Panes(地图窗格…

2026/10/10 5:18:31 阅读更多 →

日新闻

卫星轨道分类全解析:从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/8 15:26:32 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/9 6:17:20 阅读更多 →