AI Agent 设计模式实战:用 TaoToken 统一 Key 跑通提示链与多智能体协作
1. 从提示链到多智能体为什么你的 Agent 原型总在第二步崩掉AI Agent 设计模式里最容易被低估的一环不是模型选型而是提示链Prompt Chaining和多智能体协作的工程化落地。很多人第一次搭 Agent 原型时单步调用跑得挺顺一旦把「拆解任务 → 分派子任务 → 汇总结果」串起来就开始出现上下文丢失、角色串味、Key 到处散落的问题。我自己最早做多智能体 demo 时三个 Agent 分别用了三套 API Key 和三套 Base URL结果调试一个链路要改四个文件的环境变量改到最后自己都记不清哪个 Key 对应哪个角色。这篇文章要解决的就是这件事用一套统一的 Key 和 API 通道驱动整条提示链和多个 Agent 工具链。核心检索词是 AI Agent 设计模式、提示链、多智能体协作适合已经会调用大模型 API、但还没把 Agent 工程化跑通的后端开发者和 AI 应用工程师。读完你能拿到可直接复制的环境变量配置、Base URL 片段以及提示链串联和多智能体分工的验证步骤与预期输出。先说清楚设计模式层面的定位。提示链属于基础模式本质是把一个复杂任务拆成有序的多个步骤每一步的输出作为下一步的输入每一步都可以单独校验。多智能体协作属于协作模式本质是让多个带不同系统提示词角色的 Agent 各司其职由一个协调者分派任务、收集结果。这两者组合起来就是大多数 Agent 原型的骨架。问题在于骨架搭好之后凭据管理和通道统一往往被当成小事最后变成压垮原型的稻草。我试过的做法是把所有 Agent 的模型调用收敛到同一个 API 通道用同一套凭据通过不同的 Model ID 和系统提示词来区分角色。这样提示链的每一步、多智能体的每一个角色都共享同一个 Base URL 和同一个 Key调试时只需要改一处。下面从环境准备开始一步步把这条链路跑通。2. TaoToken 前置准备统一 Key 与 Base URL 的获取和配置在动手写提示链之前先把凭据和通道准备好。TaoToken 在这里扮演的角色是统一的模型调用入口你只需要一个 API Key 和一个 Base URL就能在提示链的每一步、多智能体的每个角色里调用模型不用为每个 Agent 单独申请凭据。第一步打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并登录。登录后进入控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。在控制台里找到 API Keys 页面路径是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 创建一个新的 Key。创建时给它起个能记住的名字比如agent-chain-dev方便后面区分开发和生产。拿到 Key 之后记住两个关键信息Base URL 是https://taotoken.net/api注意这个地址不带任何查询参数Key 就是刚才创建的那串字符。这两个信息后面会写进环境变量被提示链和多智能体共享。这里有个容易踩的坑很多人习惯把 Base URL 写成带/v1后缀的形式或者把 Key 硬编码在代码里。前者会导致部分 SDK 拼接路径时出现双斜杠后者会让多智能体项目在协作时凭据泄露。正确做法是 Base URL 只写到/apiKey 走环境变量。如果你用的是 Claude Code 这类命令行工具或者想先验证模型是否可用可以打开模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 直接测试。在对话页面里选一个模型发一句「你好请回复你的模型名称」能正常返回就说明 Key 和通道都没问题。这一步看似简单但能帮你排除掉后面 80% 的 401 报错。对于长期做编码和 Agent 开发的场景可以考虑 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它的定位是给持续性的编码任务和 Agent 工作流提供稳定的调用额度适合提示链步骤多、多智能体并发高的项目。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各语言 SDK 的接入示例遇到路径拼接问题可以对照查。准备阶段的核心产出就是三样东西一个 Key、一个 Base URL、一个可用的 Model ID。把它们记下来下一节写进配置。3. 可复制配置环境变量、settings 与多智能体角色定义这一节给出可以直接复制的配置片段。先看环境变量这是所有 Agent 共享凭据的基础。在项目根目录创建.env文件写入以下内容# TaoToken 统一凭据配置 TAOTOKEN_API_KEYsk-你的实际Key替换这里 TAOTOKEN_BASE_URLhttps://taotoken.net/api # 提示链与多智能体使用的模型 AGENT_MODEL_PLANNERclaude-sonnet-4-20250514 AGENT_MODEL_WORKERclaude-sonnet-4-20250514 AGENT_MODEL_REVIEWERclaude-sonnet-4-20250514注意 Base URL 写的是https://taotoken.net/api不带/v1也不带任何查询参数。Model ID 按你实际可用的模型填写三个角色可以相同也可以不同取决于你的分工设计。如果你用的是 Claude Code配置文件通常放在~/.claude/settings.json可以这样写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的实际Key替换这里, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }这里的三件套是Base URL 填https://taotoken.net/apiKey 填你的实际 KeyModel ID 填可用模型。三者缺一不可尤其是 Base URL 的路径要和文档一致否则会出现local proxy failed或路径 404。如果你用 Cline 或带 MCP 的工具链配置里同样需要这三件套。以 Cline 的 MCP 配置为例在cline_mcp_settings.json中{ mcpServers: { taotoken-agent: { command: npx, args: [-y, your/mcp-server], env: { BASE_URL: https://taotoken.net/api, API_KEY: sk-你的实际Key替换这里, MODEL_ID: claude-sonnet-4-20250514 } } } }Codex 用户如果走auth.json结构类似把 Base URL、Key、Model ID 三项填全即可。这里不展开每个工具的完整字段核心是记住任何 Agent 工具链接入都要写全 Base URL Key Model ID 三件套少一个都会在运行时报错。配置写完后用一段 Python 代码验证环境变量能否被正确读取同时作为提示链的调用基座import os from openai import OpenAI client OpenAI( api_keyos.environ[TAOTOKEN_API_KEY], base_urlos.environ[TAOTOKEN_BASE_URL], ) def call_agent(system_prompt: str, user_input: str, model: str) - str: resp client.chat.completions.create( modelmodel, messages[ {role: system, content: system_prompt}, {role: user, content: user_input}, ], temperature0.3, ) return resp.choices[0].message.content这段代码里base_url直接读环境变量api_key同理模型通过参数传入。这样提示链的每一步、多智能体的每个角色都复用同一个client凭据只配置一次。接下来定义多智能体的角色。用三个系统提示词区分规划者、执行者、审查者PLANNER_PROMPT 你是一个任务规划者。把用户需求拆解为3到5个有序子任务每个子任务用一句话描述输出为编号列表。 WORKER_PROMPT 你是一个任务执行者。根据给定的单个子任务给出具体可执行的步骤和结果不要展开其他子任务。 REVIEWER_PROMPT 你是一个结果审查者。检查执行结果是否完整覆盖子任务指出遗漏或错误输出通过或不通过及理由。这三个角色共享同一个client只是系统提示词不同。这就是统一 Key 驱动多智能体的核心凭据统一角色靠提示词区分。4. 验证请求提示链串联与多智能体分工的预期输出配置就绪后先跑提示链。提示链的关键是每一步的输出作为下一步的输入并且每一步都能单独打印校验。下面这段代码把「规划 → 执行 → 审查」串成一条链def run_prompt_chain(user_request: str): # 第一步规划 plan call_agent(PLANNER_PROMPT, user_request, os.environ[AGENT_MODEL_PLANNER]) print( 规划结果 ) print(plan) # 解析子任务 subtasks [line.strip() for line in plan.split(\n) if line.strip() and line.strip()[0].isdigit()] print(f\n解析出 {len(subtasks)} 个子任务) # 第二步逐个执行 results [] for i, task in enumerate(subtasks, 1): result call_agent(WORKER_PROMPT, task, os.environ[AGENT_MODEL_WORKER]) results.append(result) print(f\n 子任务 {i} 执行结果 ) print(result) # 第三步审查 combined \n\n.join(results) review call_agent(REVIEWER_PROMPT, combined, os.environ[AGENT_MODEL_REVIEWER]) print(\n 审查结果 ) print(review) return {plan: plan, results: results, review: review} if __name__ __main__: run_prompt_chain(设计一个用户注册接口包含参数校验和错误处理)预期输出结构是这样的规划结果会是一个 3 到 5 项的编号列表比如「1. 定义注册接口的请求参数」「2. 实现参数校验逻辑」「3. 设计错误码和返回结构」。解析出的子任务数量应该和列表项数一致。每个子任务的执行结果会聚焦在该子任务上不会串到其他子任务。审查结果会给出「通过」或「不通过」以及理由。如果规划结果没有按编号列表输出说明系统提示词需要加强格式约束可以在PLANNER_PROMPT末尾加一句「必须使用 1. 2. 3. 的编号格式不要使用其他符号」。如果执行结果里出现了其他子任务的内容说明WORKER_PROMPT的边界约束不够加上「只处理当前子任务不要涉及其他任务」。提示链跑通后再验证多智能体分工。多智能体和提示链的区别在于提示链是串行的多智能体可以是并行的且角色之间可以互相传递结果。下面这段代码让规划者先拆解然后两个执行者并行处理不同子任务最后审查者汇总import concurrent.futures def run_multi_agent(user_request: str): plan call_agent(PLANNER_PROMPT, user_request, os.environ[AGENT_MODEL_PLANNER]) subtasks [line.strip() for line in plan.split(\n) if line.strip() and line.strip()[0].isdigit()] # 两个执行者并行 with concurrent.futures.ThreadPoolExecutor(max_workers2) as executor: futures [executor.submit(call_agent, WORKER_PROMPT, task, os.environ[AGENT_MODEL_WORKER]) for task in subtasks] results [f.result() for f in concurrent.futures.as_completed(futures)] combined \n\n.join(results) review call_agent(REVIEWER_PROMPT, combined, os.environ[AGENT_MODEL_REVIEWER]) print( 多智能体审查结果 ) print(review) return review预期输出是审查者对所有执行者结果的统一评估。这里的关键验证点是并行执行时所有请求都走同一个 Base URL 和同一个 Key没有出现凭据冲突或限流导致的失败。如果出现部分请求失败先检查 Key 的额度是否足够再检查 Base URL 是否被某个 Agent 单独改写过。实测下来统一 Key 之后多智能体并行的调试成本明显下降因为所有请求的日志都指向同一个通道排查时只需要看一处。5. 本篇常见错排查401、local proxy failed 与 reading choices这一节对照真实报错给出排查路径。这些错误在提示链和多智能体场景里出现频率最高。401 Unauthorized。最常见的原因是 Key 没有正确写入环境变量或者代码里读的变量名和.env里写的不一致。排查步骤先在终端执行echo $TAOTOKEN_API_KEY确认能打印出 Key如果为空说明.env没有被加载Python 项目需要from dotenv import load_dotenv; load_dotenv()。如果 Key 能打印但仍然是 401检查 Key 是否被复制时带了空格或换行重新从 API Keys 页面复制一次。还有一种情况是 Key 被删除或过期去控制台确认 Key 状态。local proxy failed。这个报错通常和 Base URL 的路径有关。检查你的 Base URL 是不是写成了https://taotoken.net/api/v1或者带了多余的斜杠。正确写法是https://taotoken.net/api不带/v1。如果你用的是某个 SDK它内部会自动拼接/v1/chat/completions你再手动加/v1就会变成/api/v1/v1/...导致路径错误。另外检查环境变量里有没有残留的HTTP_PROXY或HTTPS_PROXY设置这些会干扰请求走向。reading choices 相关报错。典型表现是KeyError: choices或AttributeError: NoneType object has no attribute choices。这说明请求返回的结构里没有choices字段通常是返回了错误信息但代码没有先判断。排查方法在call_agent里加一层打印把原始响应打出来resp client.chat.completions.create(...) print(resp.model_dump_json(indent2))如果打印出来是错误对象里面会有error字段说明原因。常见原因是 Model ID 写错了比如把claude-sonnet-4-20250514写成了不存在的版本号。去接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 核对可用 Model ID 列表。OAuth 相关报错。如果你用的是 Claude Code 或类似工具出现 OAuth 报错通常是因为工具尝试走 OAuth 流程而不是 API Key。检查settings.json里是否同时配置了ANTHROPIC_API_KEY和 OAuth 相关字段两者冲突时优先走 OAuth。解决方法是移除 OAuth 配置只保留 Base URL、Key、Model ID 三件套。如果工具强制要求 OAuth参考接入文档里的 Claude Code 专用配置说明。多智能体场景下的角色串味。这不是报错但比报错更难排查。表现是执行者返回了规划者该做的事或者审查者开始重新执行任务。根因是系统提示词的边界不够清晰。解决方法是在每个角色的提示词里明确「你只负责 X不要做 Y」并且在调用时不要把其他角色的输出作为上下文传进去除非是审查者需要汇总。提示链中途断掉。表现是第一步成功第二步开始报错。先检查是不是第二步的 Model ID 和环境变量名不一致比如第一步用AGENT_MODEL_PLANNER第二步误写成AGENT_MODEL_WORKER但没定义。再检查是不是 Key 的额度在第一步之后耗尽去控制台看用量。排查的核心原则是先确认凭据三件套Base URL Key Model ID在每一步都一致再确认提示词边界清晰。大部分问题都出在这两点上。6. 把统一 Key 沉淀成 Agent 工程习惯跑通提示链和多智能体之后真正值得沉淀的是凭据管理习惯。统一 Key 不只是省事它让 Agent 项目的调试路径从「改四个文件」变成「改一个环境变量」这在多智能体协作场景里是质的变化。如果你打算继续深入 Agent 设计模式建议从提示链开始把每一步的输出格式固定下来再引入多智能体。角色数量不要一上来就堆很多两到三个足够验证分工逻辑。等分工稳定了再考虑并行化和记忆管理。需要长期跑编码类 Agent 的可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 接入细节对照文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。想先验证模型对话效果的直接去 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试一句。Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。最后留一个实用技巧在.env里给每个角色单独定义 Model ID 变量但 Base URL 和 Key 只定义一份。这样你既能灵活切换角色模型又不会让凭据散落。提示链的每一步调用都从同一个client出发多智能体的每个角色都复用这个client。这套结构跑顺之后再加新的 Agent 角色只需要加一个系统提示词和一个 Model ID 变量凭据部分完全不用动。

相关新闻

从研发到人事:AI Agent在制造业的完整价值地图(附数字)——TaoToken统一Key打通企业级智能自动化落地评测

从研发到人事:AI Agent在制造业的完整价值地图(附数字)——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/17 11:20:23 阅读更多 →
RabbitMQ TTL与死信队列实战:从原理到延迟队列落地

RabbitMQ TTL与死信队列实战:从原理到延迟队列落地

我很久没写过消息队列相关的内容了。今天这篇想把 RabbitMQ 里两个经常被放在一起讲、又经常被搞混的概念彻底说清楚——TTL 和死信队列。如果你已经在用 RabbitMQ 做异步任务或者系统解耦,这两个东西大概率是你迟早要碰的,尤其是做延迟任务、超时控制、…

2026/10/17 11:20:23 阅读更多 →
把CUDA-Q量子程序接入Amazon Bedrock AgentCore的实践指南

把CUDA-Q量子程序接入Amazon Bedrock AgentCore的实践指南

把 CUDA-Q 的量子程序挂进 Amazon Bedrock AgentCore,本质上是在做一件事:让大模型 Agent 把自然语言问题翻译成量子计算的 API 调用,再把量子程序的运行结果翻译回自然语言。很多人听到“量子计算 Agent”的第一反应是炫技,但真…

2026/10/17 11:20:23 阅读更多 →

最新新闻

微信小程序加载外部3D模型实战:Three.js渲染与性能优化

微信小程序加载外部3D模型实战:Three.js渲染与性能优化

简介:这份资源面向希望在微信小程序中实现3D可视化与交互的开发者,重点解决小程序环境无法直接引入npm库、加载外部3D模型困难等问题。借助three.js这一基于WebGL的JavaScript 3D库,读者可以掌握在小程序中搭建场景、相机与渲染器&#xff0c…

2026/10/17 12:10:41 阅读更多 →
Artcraft:参数即画笔的实时创作方法论

Artcraft:参数即画笔的实时创作方法论

1. “Artcraft”不是新词,而是被低估的创作方法论原点“Artcraft”这个词乍看像某个AI绘画工具的新品牌名,或是某款小众设计软件的代号——但实际翻遍主流技术文档、设计类教材和创意产业白皮书,它既非注册商标,也未被纳入任何标准…

2026/10/17 12:10:41 阅读更多 →
软考NPV计算全解析:静态与动态投资回收期、ROI公式及避坑指南

软考NPV计算全解析:静态与动态投资回收期、ROI公式及避坑指南

简介:这份文档面向备考系统集成项目管理工程师的考生及需要做项目财务评估的从业者,聚焦计算题中的净现值(NPV)这一高频考点。内容围绕NPV基本概念、贴现率与资金时间价值、静态与动态投资回收期公式、投资收益率ROI的换算关系展开…

2026/10/17 12:10:41 阅读更多 →
Kettle PDI 9.2 实战避坑指南:从启动到生产部署的断点解析

Kettle PDI 9.2 实战避坑指南:从启动到生产部署的断点解析

简介:本资源是一套面向1–3年经验研发人员的Kettle(Pentaho Data Integration)入门教学PPT,聚焦ETL核心流程与数据同步实践,帮助开发者快速掌握开源ETL工具的安装、连接、转换设计与性能调优。内容涵盖ETL基础概念、PD…

2026/10/17 12:10:41 阅读更多 →
动态网格交易:基于标准差与RSV的自适应参数方法

动态网格交易:基于标准差与RSV的自适应参数方法

简介:本资源是一份面向量化投资初学者与Python编程实践者的网格交易策略优化方案,聚焦解决传统网格交易中因固定网格导致的过早满仓/空仓、回撤大等核心痛点。作者提出基于市场波动性(收盘价、最高价、最低价标准差)与趋势强度&am…

2026/10/17 12:10:41 阅读更多 →
低查重AI教材生成工具实战:从查重机制到编写流程全解析

低查重AI教材生成工具实战:从查重机制到编写流程全解析

做教材编写这行久了,谁没被“查重率”三个字折腾过。早年间写教材是纯手工活儿,一个字一个字地抠;后来用AI辅助,效率是上来了,但生成的稿子拿去过查重,经常碰一鼻子灰。今天要聊的,是我最近深度…

2026/10/17 12:09:41 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →