Vibe Coding实战指南:AI辅助编程从入门到精通
最近在技术圈里一个词频繁出现Vibe Coding。很多开发者第一次听到时可能会觉得这又是某种新潮但华而不实的概念。但如果你实际体验过会发现它背后代表的是一种编程范式的转变——从人完全主导到人与AI协同创作。传统的编程流程中我们需要自己构思架构、编写代码、调试错误每一步都依赖个人经验和知识储备。而Vibe Coding的核心在于通过AI编程助手如Claude Code、Cursor、Codex等来分担大部分重复性、模式化的编码工作让开发者能够更专注于核心逻辑和创意实现。本文将带你从零开始完整掌握Vibe Coding的全流程。无论你是刚接触AI编程的新手还是已经使用过一些AI工具但想要系统化提升效率的开发者都能在这里找到实用的操作指南和深度见解。1. Vibe Coding到底是什么为什么现在必须掌握Vibe Coding中文常译为氛围编程或直觉编程本质上是一种基于AI辅助的软件开发方法论。它不仅仅是使用某个具体的AI工具而是构建一整套让AI深度融入开发流程的工作方式。1.1 传统编程 vs Vibe Coding 的核心差异为了更直观地理解这种差异我们通过一个实际场景来对比传统方式开发一个用户注册功能需要手动编写控制器、服务层、数据访问层代码需要自己处理参数校验、异常处理、事务管理需要反复测试各种边界情况整个过程耗时30-60分钟Vibe Coding方式用自然语言描述需求创建一个用户注册接口需要验证邮箱格式、密码强度处理重复注册情况AI助手在几秒内生成完整代码框架开发者只需审查和微调关键业务逻辑整个过程缩短到5-10分钟这种效率提升在复杂项目中会更加明显。当项目涉及多个技术栈、需要处理各种集成时AI助手能够快速提供符合最佳实践的代码模板。1.2 为什么现在是学习Vibe Coding的最佳时机三个关键因素推动了Vibe Coding的普及技术成熟度Claude、GPT-4等大语言模型在代码生成和理解方面已经达到实用水平不再是简单的代码补全工具。工具生态完善Cursor、Claude Code等专门为AI编程优化的编辑器出现提供了无缝的集成体验。市场需求变化企业对开发效率的要求越来越高掌握AI编程能力的开发者更具竞争力。2. 核心工具选型Claude Code、Cursor、Codex深度对比在选择具体的AI编程工具前我们需要了解每个工具的特点和适用场景。2.1 Claude Code Anthropic的编程专用模型Claude Code是Anthropic公司针对编程场景优化的模型在代码理解和生成方面表现突出。优势特征对代码逻辑的理解深度较好能处理复杂算法生成的代码可读性强注释规范在安全性方面有较好考虑避免生成有风险的代码适用场景需要深度理解业务逻辑的复杂功能开发代码重构和优化工作学习新的编程语言或框架2.2 Cursor专为AI编程重设计的编辑器Cursor是基于VS Code内核重构的编辑器深度集成了AI能力是当前Vibe Coding的主流选择。核心功能亮点内置AI聊天界面支持代码生成和问题解答智能代码编辑功能CmdK快速生成项目上下文感知能基于整个代码库进行分析安装配置步骤访问Cursor官网cursor.sh下载对应版本安装完成后首次启动需要配置AI模型推荐使用Claude-3系列模型效果最佳# 在Cursor中快速生成代码的快捷键操作 # Windows/Linux: CtrlK # Mac: CmdK # 示例生成一个Python Flask应用的基础结构 创建一个Flask web应用包含用户注册和登录功能使用SQLite数据库 2.3 CodexGitHub Copilot背后的技术Codex是OpenAI开发的代码生成模型也是GitHub Copilot的技术基础。技术特点支持多种编程语言覆盖面广在简单代码片段生成方面响应速度快与GitHub生态集成紧密使用方式通过GitHub Copilot插件在主流IDE中使用或者通过OpenAI API直接调用3. 环境搭建从零配置Vibe Coding工作流建立一个高效的Vibe Coding环境需要合理的工具组合和配置。下面以最流行的Cursor Claude Code组合为例详细介绍配置过程。3.1 基础环境要求操作系统兼容性Windows 10/11推荐macOS 10.15及以上LinuxUbuntu 18.04、CentOS 7硬件建议配置内存16GB及以上AI工具较耗内存存储SSD至少50GB可用空间网络稳定互联网连接模型需要在线调用3.2 Cursor详细安装步骤下载安装包访问官方下载页面https://cursor.sh/选择对应操作系统的版本下载运行安装程序按提示完成安装首次配置启动Cursor会提示登录或注册账户建议使用GitHub账户登录便于同步设置模型配置进入设置Settings → AI Provider选择Claude作为默认模型提供商输入API密钥需要先在Anthropic官网获取// Cursor的AI配置示例settings.json { ai.provider: claude, ai.claude.apiKey: your_claude_api_key_here, ai.enableCompletions: true, ai.enableChat: true }3.3 中文界面配置很多开发者关心如何设置中文界面其实Cursor支持多语言配置很简单打开命令面板CtrlShiftP输入Configure Display Language选择zh-cn简体中文重启Cursor生效如果界面没有完全汉化可以安装中文语言包扩展。4. Vibe Coding实战从需求到完整项目理论说再多不如实际动手。我们通过一个完整的项目案例来体验Vibe Coding的全流程。4.1 项目目标个人博客系统我们将开发一个功能完整的个人博客系统包含以下特性用户认证注册、登录、退出文章管理创建、编辑、删除、发布分类和标签系统评论功能响应式前端界面4.2 第一步项目初始化在Cursor中新建项目文件夹然后使用AI助手生成项目基础结构。操作步骤在项目根目录右键选择New File创建README.md用CmdK调出AI生成界面输入项目描述创建一个Python Flask博客系统使用SQLAlchemy操作数据库Jinja2模板引擎# AI生成的 app.py 基础结构 from flask import Flask, render_template, request, redirect, url_for, flash from flask_sqlalchemy import SQLAlchemy from datetime import datetime import os app Flask(__name__) app.config[SECRET_KEY] your-secret-key-here app.config[SQLALCHEMY_DATABASE_URI] sqlite:///blog.db app.config[SQLALCHEMY_TRACK_MODIFICATIONS] False db SQLAlchemy(app) # 定义数据模型 class User(db.Model): id db.Column(db.Integer, primary_keyTrue) username db.Column(db.String(80), uniqueTrue, nullableFalse) email db.Column(db.String(120), uniqueTrue, nullableFalse) password db.Column(db.String(120), nullableFalse) posts db.relationship(Post, backrefauthor, lazyTrue) class Post(db.Model): id db.Column(db.Integer, primary_keyTrue) title db.Column(db.String(100), nullableFalse) content db.Column(db.Text, nullableFalse) created_at db.Column(db.DateTime, defaultdatetime.utcnow) user_id db.Column(db.Integer, db.ForeignKey(user.id), nullableFalse) app.route(/) def index(): posts Post.query.order_by(Post.created_at.desc()).all() return render_template(index.html, postsposts) if __name__ __main__: with app.app_context(): db.create_all() app.run(debugTrue)4.3 第二步完善核心功能使用AI助手快速生成用户认证功能# 用户认证相关的路由和视图函数 app.route(/register, methods[GET, POST]) def register(): if request.method POST: username request.form[username] email request.form[email] password request.form[password] # 检查用户是否已存在 existing_user User.query.filter((User.username username) | (User.email email)).first() if existing_user: flash(用户名或邮箱已存在) return redirect(url_for(register)) # 创建新用户实际项目中应该加密密码 new_user User(usernameusername, emailemail, passwordpassword) db.session.add(new_user) db.session.commit() flash(注册成功请登录) return redirect(url_for(login)) return render_template(register.html) app.route(/login, methods[GET, POST]) def login(): if request.method POST: username request.form[username] password request.form[password] user User.query.filter_by(usernameusername, passwordpassword).first() if user: # 实际项目中应该使用session管理登录状态 flash(登录成功) return redirect(url_for(index)) else: flash(用户名或密码错误) return render_template(login.html)4.4 第三步前端界面生成Vibe Coding的强大之处在于不仅能生成后端代码还能快速创建前端界面。!-- AI生成的 index.html 模板 -- !DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title我的博客/title link hrefhttps://cdn.jsdelivr.net/npm/bootstrap5.1.3/dist/css/bootstrap.min.css relstylesheet /head body nav classnavbar navbar-expand-lg navbar-dark bg-dark div classcontainer a classnavbar-brand href{{ url_for(index) }}我的博客/a div classnavbar-nav a classnav-link href{{ url_for(index) }}首页/a {% if current_user.is_authenticated %} a classnav-link href{{ url_for(create_post) }}写文章/a a classnav-link href{{ url_for(logout) }}退出/a {% else %} a classnav-link href{{ url_for(login) }}登录/a a classnav-link href{{ url_for(register) }}注册/a {% endif %} /div /div /nav div classcontainer mt-4 {% with messages get_flashed_messages() %} {% if messages %} {% for message in messages %} div classalert alert-info{{ message }}/div {% endfor %} {% endif %} {% endwith %} {% for post in posts %} div classcard mb-3 div classcard-body h5 classcard-title{{ post.title }}/h5 p classcard-text{{ post.content[:200] }}.../p small classtext-muted作者: {{ post.author.username }} | 发布时间: {{ post.created_at.strftime(%Y-%m-%d %H:%M) }}/small /div /div {% endfor %} /div /body /html5. 高级技巧LangChain与Agent开发集成当基础功能实现后我们可以引入更先进的AI技术来增强应用能力。LangChain是一个用于构建基于LLM应用的框架能够实现更复杂的AI交互。5.1 LangChain基础集成首先安装LangChain依赖pip install langchain openai然后集成一个简单的文本摘要功能from langchain.llms import OpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate import os # 设置OpenAI API密钥 os.environ[OPENAI_API_KEY] your-openai-api-key def generate_summary(text): 使用LangChain生成文章摘要 llm OpenAI(temperature0.7) prompt_template PromptTemplate( input_variables[text], template请为以下文章内容生成一个简洁的摘要不超过100字\n\n{text} ) chain LLMChain(llmllm, promptprompt_template) summary chain.run(text) return summary # 在博客系统中集成摘要功能 class Post(db.Model): # ... 之前的字段定义 summary db.Column(db.Text) def generate_auto_summary(self): 自动生成文章摘要 if len(self.content) 200: # 只在内容较长时生成摘要 self.summary generate_summary(self.content[:1000]) # 限制输入长度5.2 构建简单的AI AgentAgent是能够自主执行任务的AI系统。我们构建一个博客管理Agentfrom langchain.agents import Tool, AgentExecutor, LLMSingleActionAgent from langchain import SerpAPIWrapper class BlogManagementAgent: def __init__(self): self.tools self._setup_tools() self.agent self._setup_agent() def _setup_tools(self): 设置Agent可用的工具 # 搜索工具需要SerpAPI密钥 search SerpAPIWrapper(serpapi_api_keyyour-serpapi-key) tools [ Tool( name搜索, funcsearch.run, description用于搜索最新的技术趋势和资讯 ), Tool( name生成内容建议, funcself.generate_topic_suggestions, description基于当前趋势生成博客主题建议 ) ] return tools def generate_topic_suggestions(self, query): 生成博客主题建议 # 这里可以集成更复杂的逻辑 suggestions [ Python异步编程最佳实践, 机器学习模型部署实战, 微服务架构设计模式, 前端性能优化技巧 ] return \n.join(f- {suggestion} for suggestion in suggestions) def get_blog_ideas(self, user_interests): 获取个性化的博客主题建议 prompt f基于用户兴趣{user_interests}推荐5个技术博客主题 # 实际实现中会调用LLM生成更精准的建议 return self.generate_topic_suggestions(prompt)6. 常见问题与解决方案在实际使用Vibe Coding工具过程中会遇到各种问题。这里整理了一些典型问题及其解决方法。6.1 安装配置问题问题1Cursor启动时报错 cc switch local proxy failed这是一个常见的网络代理配置问题。解决方案# 检查系统代理设置 echo $HTTP_PROXY echo $HTTPS_PROXY # 如果使用了代理需要在Cursor中配置 # 在Settings中添加 { http.proxy: http://your-proxy-server:port, https.proxy: http://your-proxy-server:port } # 或者临时关闭代理测试 unset HTTP_PROXY unset HTTPS_PROXY问题2API密钥配置错误排查步骤检查API密钥是否正确复制注意前后空格验证API服务是否可用检查账户余额或调用限额查看防火墙或网络限制6.2 代码生成质量问题问题3生成的代码不符合项目规范改善方法在提示词中明确代码规范要求提供项目现有的代码示例作为参考使用更具体的功能描述# 不好的提示词 创建一个用户管理功能 # 好的提示词 遵循PEP8规范创建一个用户管理类包含以下方法 - create_user(username, email, password): 创建用户密码需要bcrypt加密 - get_user_by_id(user_id): 根据ID获取用户信息 - update_user_profile(user_id, **kwargs): 更新用户资料 使用类型注解和适当的错误处理 问题4AI不理解复杂的业务逻辑解决方案将复杂需求拆分成多个简单任务先让AI生成基础框架再逐步添加复杂逻辑使用注释和文档为AI提供更多上下文7. Vibe Coding最佳实践与进阶技巧掌握了基础操作后以下最佳实践能帮助你更高效地使用Vibe Coding。7.1 提示词工程技巧有效的提示词是Vibe Coding成功的关键。结构化提示词模板1. 角色设定你是一个经验丰富的[语言]开发专家 2. 任务描述需要实现[具体功能] 3. 技术要求使用[特定框架/库]遵循[编码规范] 4. 输入输出输入是[数据类型]输出应该是[格式要求] 5. 约束条件不能使用[某些方法]必须处理[异常情况]实际示例你是一个专业的Python后端开发工程师。需要创建一个RESTful API端点用于处理用户订单。 技术要求 - 使用Flask框架和SQLAlchemy - 遵循PEP8规范添加类型注解 - 实现GET /orders列表、POST /orders创建、GET /orders/id详情 - 需要验证输入数据处理数据库异常 - 返回标准的JSON响应格式 订单数据包括id、user_id、total_amount、status、created_at7.2 项目级Vibe Coding工作流个人项目开发流程需求分析阶段用AI进行技术调研和方案设计项目初始化生成基础项目结构和配置文件核心开发分模块使用AI生成代码人工审核逻辑测试优化生成测试用例进行性能分析部署维护生成部署脚本和监控配置团队协作注意事项建立统一的AI使用规范代码审查时重点关注AI生成部分的业务逻辑定期更新提示词库共享最佳实践7.3 性能与安全考量代码性能优化对AI生成的数据库查询进行索引优化检查生成算法的时间复杂度进行压力测试和性能分析安全最佳实践永远不要让AI处理敏感数据或密钥仔细审查AI生成的认证和授权代码对用户输入进行严格的验证和过滤定期进行安全扫描和代码审计8. 未来展望AI编程的发展趋势Vibe Coding只是AI辅助编程的起点未来几年我们将看到更多革命性的变化。8.1 技术发展趋势更深入的代码理解AI将能理解整个代码库的架构和业务逻辑而不仅仅是单个文件。自动化测试和调试AI能够自动生成测试用例甚至自主定位和修复bug。个性化编码风格AI会学习每个开发者的编码习惯生成更符合个人风格的代码。8.2 对开发者技能的影响需要强化的能力提示词工程和AI交互技巧系统架构设计能力代码审查和质量管理业务需求分析和拆解可能弱化的技能基础语法记忆简单代码的手动编写重复性的调试工作8.3 适应策略建议主动学习定期了解新的AI编程工具和技术实践导向在实际项目中应用Vibe Coding积累经验深度思考专注于AI不擅长的复杂问题解决和架构设计协作能力提升与AI工具的高效协作能力Vibe Coding不是要取代开发者而是将开发者从重复劳动中解放出来专注于更有创造性的工作。掌握这一技能意味着你在软件开发效率和质量上都能获得显著提升。开始实践的最佳方式就是选择一个个人项目按照本文的指南一步步体验整个流程。在实际操作中你会逐渐找到最适合自己的Vibe Coding工作方式。

相关新闻

HarmonyOS 应用功耗优化实战:定位耗电、收口任务与验证回归

HarmonyOS 应用功耗优化实战:定位耗电、收口任务与验证回归

HarmonyOS 应用功耗优化实战:定位耗电、收口任务与验证回归 应用耗电问题往往不是某一行代码造成的,而是多个小问题叠加:页面离开后还在轮询,后台继续请求接口,定位和传感器没有释放,失败重试过于频繁。用…

2026/10/19 22:02:25 阅读更多 →
STM32内部FLASH存储实战:替代EEPROM的均衡磨损与数据管理策略

STM32内部FLASH存储实战:替代EEPROM的均衡磨损与数据管理策略

1. 项目概述与核心价值最近在调试一个基于STM32的数据采集项目,需要把设备运行过程中的关键参数,比如校准系数、运行时间、故障代码这些掉电不能丢的数据存起来。最开始图省事,直接用了芯片内部的EEPROM来存,但很快就遇到了麻烦&a…

2026/10/19 22:02:34 阅读更多 →
C语言实现高并发HTTP服务器:从Socket到Epoll与线程池架构

C语言实现高并发HTTP服务器:从Socket到Epoll与线程池架构

1. 项目概述:为什么我们需要自己动手写一个高并发HTTP服务器? 在当今这个万物互联的时代,HTTP协议几乎是无处不在的基石。从你刷的网页、用的App接口,到各种物联网设备的控制面板,背后都离不开一个稳定高效的HTTP服务…

2026/10/19 17:55:19 阅读更多 →

最新新闻

MCP、Skill、Agent、Prompt:AI应用开发四大概念解析与协同实践

MCP、Skill、Agent、Prompt:AI应用开发四大概念解析与协同实践

1. 从一堆混乱概念说起:为什么这四个词总被混着用 刚接触AI应用开发那会儿,我最怕别人问我"你那个Agent和Prompt到底啥区别"。不是答不上来,是每次答完对方眼神里都写着"你确定?"。后来我发现,问题…

2026/10/20 17:20:54 阅读更多 →
柔性作业车间调度多目标优化:NSGA2/NSOOA/NSDBO/NSCOA算法对比与Matlab实现

柔性作业车间调度多目标优化:NSGA2/NSOOA/NSDBO/NSCOA算法对比与Matlab实现

做柔性作业车间调度(FJSP)这些年,我最大的感受是:单目标排程早就满足不了实际生产需求了。订单交付、设备均衡、能耗成本,哪个都不能牺牲,可它们之间又经常打架——压缩完工时间往往意味着某几台设备超负荷…

2026/10/20 17:20:54 阅读更多 →
AndroidKiller实战:APK资源分析与Smali代码解析完整流程

AndroidKiller实战:APK资源分析与Smali代码解析完整流程

很久以前我刚开始接触Android逆向时,第一件事就是找工具。打开搜索引擎,结果五花八门,但真正能把“资源分析”和“代码解析”串成一条完整流程的,AndroidKiller算是我用得最顺手的之一。这篇文章就以AndroidKiller为主线&#xff…

2026/10/20 17:20:54 阅读更多 →
MCP Server 生产级改造:连接、工具描述、错误处理与并发控制

MCP Server 生产级改造:连接、工具描述、错误处理与并发控制

1. 从“能跑”到“敢上线”:MCP Server 的四个断层很多开发者第一次接触 MCP Server 的时候,都会经历一个极其相似的阶段:照着官方文档把示例代码复制下来,本地起一个进程,用客户端连上去,工具列表能拉出来…

2026/10/20 17:20:54 阅读更多 →
墨西哥现金贷市场全景复盘:风控、产品与合规的实战指南

墨西哥现金贷市场全景复盘:风控、产品与合规的实战指南

墨西哥现金贷市场最近几年成了很多出海金融团队绕不开的话题,热钱涌入、流量暴涨、坏账率也跟着坐过山车。市面上关于这片市场的讨论很多,但大多要么停留在宏观叙事,要么只讲某个单一环节的碎片经验。这次我把从市场格局、产品设计到风控落地…

2026/10/20 17:20:54 阅读更多 →
Python+MySQL学生管理系统:可视化界面落地与避坑指南

Python+MySQL学生管理系统:可视化界面落地与避坑指南

简介:这是一套面向Python与数据库初学者的学生管理系统实战项目,采用Python编写客户端逻辑、MySQL负责数据存储,适合正在学习桌面应用开发或需要完成课程设计的学生参考。压缩包共2个文件,包含1个py主程序与1个sql数据库脚本&…

2026/10/20 17:19:49 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
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/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

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