第15讲:专栏资源说明——模板、源码、Prompt、工程SOP全集
CSDN专栏嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料第15讲专栏资源说明——模板、源码、Prompt、工程SOP全集一、专栏配套资源总览本专栏提供完整的配套资源帮助读者快速上手、高效开发、质量保证。1.1 资源分类资源一Spec模板库内容驱动Spec模板GPIO、UART、SPI、I2C、ADC、PWM协议Spec模板Modbus、自定义协议RTOS Spec模板任务、队列、互斥锁系统Spec模板初始化、异常处理容错Spec模板通信、传感器、执行器作用快速编写Spec统一Spec格式保证Spec完整性资源二源码示例库内容驱动源码示例GPIO、UART、SPI、I2C、ADC、PWM协议源码示例Modbus、自定义协议RTOS源码示例FreeRTOS任务示例系统源码示例初始化、异常处理完整项目示例温湿度采集、电机控制作用学习代码实现参考代码风格快速开发资源三Prompt模板库内容Vibe模式Prompt模板Spec模式Prompt模板增量修改Prompt模板容错设计Prompt模板文档生成Prompt模板作用提高AI生成质量统一Prompt格式快速生成代码资源四工程SOP文档内容Vibe模式工作流SOPSpec模式工作流SOP混合模式工作流SOP代码审查SOP测试验证SOP问题修复SOP作用规范开发流程提高开发效率保证开发质量二、Spec模板库详解2.1 驱动Spec模板GPIO驱动Spec模板## SpecGPIO驱动 ### 1. 需求层 #### 1.1 功能需求 - FR-001配置GPIO引脚为输入/输出/复用模式 - FR-002读取GPIO输入状态 - FR-003设置GPIO输出状态 ### 2. 设计层 #### 2.1 硬件层约束 - HW-001引脚定义 - GPIOA: PA0-PA15 - GPIOB: PB0-PB15 - GPIOC: PC0-PC15 - HW-002模式定义 - 输入模式GPIO_MODE_INPUT - 输出模式GPIO_MODE_OUTPUT_PP/GPIO_MODE_OUTPUT_OD - 复用模式GPIO_MODE_AF_PP/GPIO_MODE_AF_OD - 模拟模式GPIO_MODE_ANALOG #### 2.2 函数契约 - FUNC-001GPIO_Init - 签名int8_t GPIO_Init(uint32_t port, uint16_t pin, uint8_t mode) - 入参约束port有效pin有效mode有效 - 返回值0成功-1失败 - FUNC-002GPIO_Read - 签名int8_t GPIO_Read(uint32_t port, uint16_t pin, uint8_t *state) - 入参约束port有效pin有效state非空 - 出参约束state为0或1 - 返回值0成功-1失败 - FUNC-003GPIO_Write - 签名int8_t GPIO_Write(uint32_t port, uint16_t pin, uint8_t state) - 入参约束port有效pin有效state为0或1 - 返回值0成功-1失败 ### 3. 编码层 #### 3.1 编码规范 - 遵循MISRA C:2012 - 函数命名GPIO_功能名 - 参数检查所有函数检查参数有效性 ### 4. AI生成指令 根据以上Spec生成GPIO驱动代码包含初始化、读取、写入功能UART驱动Spec模板## SpecUART驱动 ### 1. 需求层 #### 1.1 功能需求 - FR-001初始化UART - FR-002发送数据 - FR-003接收数据 - FR-004配置波特率、数据位、停止位、校验位 ### 2. 设计层 #### 2.1 硬件层约束 - HW-001UART实例 - USART1: PA9(TX), PA10(RX) - USART2: PA2(TX), PA3(RX) - USART3: PB10(TX), PB11(RX) - HW-002配置参数 - 波特率9600/19200/38400/57600/115200 - 数据位8位 - 停止位1位 - 校验位无 #### 2.2 数据层约束 - DATA-001发送缓冲区 - 大小256字节 - 类型环形缓冲区 - DATA-002接收缓冲区 - 大小256字节 - 类型环形缓冲区 #### 2.3 函数契约 - FUNC-001UART_Init - 签名int8_t UART_Init(uint8_t uartId, uint32_t baudrate) - 入参约束uartId有效baudrate有效 - 返回值0成功-1失败 - FUNC-002UART_Send - 签名int8_t UART_Send(uint8_t uartId, uint8_t *data, uint16_t len) - 入参约束uartId有效data非空len0 - 返回值0成功-1失败 - FUNC-003UART_Receive - 签名int8_t UART_Receive(uint8_t uartId, uint8_t *data, uint16_t len) - 入参约束uartId有效data非空len0 - 返回值0成功-1失败 #### 2.4 容错边界 - FT-001发送超时 - 超时时间100ms - 超时后返回失败 - FT-002接收超时 - 超时时间100ms - 超时后返回失败 ### 3. 编码层 #### 3.1 编码规范 - 遵循MISRA C:2012 - 函数命名UART_功能名 - 参数检查所有函数检查参数有效性 ### 4. AI生成指令 根据以上Spec生成UART驱动代码包含初始化、发送、接收功能支持超时处理2.2 协议Spec模板Modbus RTU Spec模板## SpecModbus RTU协议 ### 1. 需求层 #### 1.1 功能需求 - FR-001实现Modbus RTU从站功能 - FR-002支持功能码03读保持寄存器 - FR-003支持功能码06写单个寄存器 - FR-004支持功能码16写多个寄存器 ### 2. 设计层 #### 2.1 硬件层约束 - HW-001UART配置 - 数据位8位 - 停止位1位 - 校验位无 - 帧间隔≥3.5字符时间 #### 2.2 数据层约束 - DATA-001Modbus帧格式 - 从站地址1字节范围1-247 - 功能码1字节 - 数据N字节 - CRC2字节 - DATA-002寄存器区 - 保持寄存器100个地址0-99 - 数据类型uint16_t #### 2.3 函数契约 - FUNC-001Modbus_Process - 签名int8_t Modbus_Process(uint8_t *rxBuf, uint16_t rxLen, uint8_t *txBuf, uint16_t *txLen) - 入参约束rxBuf非空rxLen≥4txBuf非空txLen非空 - 出参约束txBuf为响应帧txLen为响应长度 - 返回值0成功-1失败 #### 2.4 容错边界 - FT-001CRC校验 - 校验方法CRC-16Modbus - 校验失败丢弃帧不响应 - FT-002帧格式检查 - 检查项地址、功能码、数据长度 - 检查失败返回异常响应 - FT-003超时处理 - 帧接收超时50ms - 响应超时100ms ### 3. 编码层 #### 3.1 编码规范 - 遵循MISRA C:2012 - 函数命名Modbus_功能名 - 参数检查所有函数检查参数有效性 ### 4. AI生成指令 根据以上Spec生成Modbus RTU从站代码支持功能码03/06/16包含CRC校验、异常处理2.3 容错Spec模板通信容错Spec模板## Spec[通信类型]容错 ### 1. 容错边界 - FT-001通信失败重试 - 重试次数3次 - 重试间隔10ms - 失败后复位通信外设 - FT-002通信超时 - 超时时间100ms - 超时后取消操作复位外设 - FT-003数据校验 - 校验方法CRC校验 - 校验失败丢弃数据重试 - FT-004总线恢复 - 恢复方法复位外设 - 恢复后重新初始化 ### 2. AI生成指令 生成带容错的通信代码包含重试、超时、校验、总线恢复机制三、源码示例库详解3.1 驱动源码示例GPIO驱动示例/** * file gpio_driver.c * brief GPIO driver implementation * note Spec-ID: SPEC-GPIO-001 */#includegpio_driver.h/** * brief Initialize GPIO * param port: GPIO port (GPIOA, GPIOB, GPIOC) * param pin: GPIO pin (GPIO_PIN_0 ~ GPIO_PIN_15) * param mode: GPIO mode (INPUT, OUTPUT, AF, ANALOG) * retval 0: success, -1: failure */int8_tGPIO_Init(uint32_tport,uint16_tpin,uint8_tmode){GPIO_InitTypeDef GPIO_InitStruct{0};// Enable GPIO clockif(portGPIOA){__HAL_RCC_GPIOA_CLK_ENABLE();}elseif(portGPIOB){__HAL_RCC_GPIOB_CLK_ENABLE();}elseif(portGPIOC){__HAL_RCC_GPIOC_CLK_ENABLE();}else{return-1;// Invalid port}// Configure GPIOGPIO_InitStruct.Pinpin;GPIO_InitStruct.Modemode;GPIO_InitStruct.PullGPIO_NOPULL;GPIO_InitStruct.SpeedGPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init((GPIO_TypeDef*)port,GPIO_InitStruct);return0;}/** * brief Read GPIO state * param port: GPIO port * param pin: GPIO pin * param state: GPIO state (0 or 1) * retval 0: success, -1: failure */int8_tGPIO_Read(uint32_tport,uint16_tpin,uint8_t*state){if(stateNULL){return-1;}GPIO_PinState pinStateHAL_GPIO_ReadPin((GPIO_TypeDef*)port,pin);*state(pinStateGPIO_PIN_SET)?1:0;return0;}/** * brief Write GPIO state * param port: GPIO port * param pin: GPIO pin * param state: GPIO state (0 or 1) * retval 0: success, -1: failure */int8_tGPIO_Write(uint32_tport,uint16_tpin,uint8_tstate){GPIO_PinState pinState(state1)?GPIO_PIN_SET:GPIO_PIN_RESET;HAL_GPIO_WritePin((GPIO_TypeDef*)port,pin,pinState);return0;}3.2 完整项目示例温湿度采集系统示例/** * file main.c * brief Temperature and humidity collection system * note Spec-ID: SPEC-PROJECT-001 */#includemain.h#includesht30_driver.h#includeuart_driver.h#includegpio_driver.h// Global variablesfloatg_temperature0.0f;floatg_humidity0.0f;// Function prototypesvoidSystem_Init(void);voidData_Collection(void);voidData_Report(void);/** * brief Main function */intmain(void){// System initializationSystem_Init();// Main loopwhile(1){// Data collectionData_Collection();// Data reportData_Report();// DelayHAL_Delay(1000);}}/** * brief System initialization */voidSystem_Init(void){// HAL initializationHAL_Init();// Clock configurationSystemClock_Config();// GPIO initialization (LED indicator)GPIO_Init(GPIOA,GPIO_PIN_5,GPIO_MODE_OUTPUT_PP);// I2C initialization (SHT30)I2C_Init();// UART initialization (data report)UART_Init(USART1,115200);}/** * brief Data collection */voidData_Collection(void){// Read temperature and humidityif(SHT30_Read(g_temperature,g_humidity)!0){// Read failed, use safe valuesg_temperature25.0f;g_humidity50.0f;}// LED toggle (indicator)staticuint8_tledState0;GPIO_Write(GPIOA,GPIO_PIN_5,ledState);ledState!ledState;}/** * brief Data report */voidData_Report(void){charmsg[100];sprintf(msg,Temperature: %.2f°C, Humidity: %.2f%%\r\n,g_temperature,g_humidity);UART_Send(USART1,(uint8_t*)msg,strlen(msg));}四、Prompt模板库详解4.1 Vibe模式Prompt模板基础Prompt模板【Vibe模式 - 基础驱动生成】 目标生成[外设名称]驱动代码 硬件信息 - MCU型号[STM32F103] - 外设[UART1] - 引脚[PA9(TX), PA10(RX)] - 配置[波特率115200, 8N1] 功能需求 - 初始化 - 发送数据 - 接收数据 请生成完整的驱动代码使用HAL库迭代修正Prompt模板【Vibe模式 - 迭代修正】 当前问题[问题描述] 现象[具体现象] 期望[期望行为] 请修改代码解决问题4.2 Spec模式Prompt模板Spec驱动Prompt模板【Spec模式 - 驱动生成】 Spec内容 [粘贴完整Spec] 请根据以上Spec生成代码要求 1. 严格遵守Spec约束 2. 每个函数注释标注Spec ID 3. 包含参数检查 4. 包含容错处理Spec协议Prompt模板【Spec模式 - 协议生成】 Spec内容 [粘贴完整Spec] 请根据以上Spec生成协议实现代码要求 1. 严格遵守协议格式 2. 包含CRC校验 3. 包含异常处理 4. 包含超时处理4.3 容错设计Prompt模板容错设计Prompt模板【容错设计】 场景[具体场景] 不确定性 - [不确定性1] - [不确定性2] 容错要求 - 重试机制[重试次数]次 - 超时机制[超时时间]ms - 异常处理[处理方法] 请生成带容错的代码五、工程SOP文档详解5.1 Vibe模式工作流SOP## SOPVibe模式工作流 ### 适用场景 - 快速原型验证 - 毕设竞赛项目 - 学习实验 ### 工作流程 #### 步骤一需求口语化描述 - 输入功能需求 - 输出口语化描述 - 要求清晰、准确、完整 #### 步骤二AI生成代码 - 输入口语化描述 - 工具ChatGPT/Claude - 输出代码框架 #### 步骤三烧录试错 - 编译代码 - 烧录到硬件 - 观察运行现象 #### 步骤四迭代修正 - 输入问题描述 - AI生成修正代码 - 重复步骤三 #### 步骤五验证通过 - 功能正确 - 时序稳定 - 边界测试通过 ### 注意事项 - 每次只改一个问题 - 保留可用代码快照 - 明确描述问题现象5.2 Spec模式工作流SOP## SOPSpec模式工作流 ### 适用场景 - 量产产品开发 - 安全相关设备 - 长期维护项目 ### 工作流程 #### 步骤一需求分析 - 分析功能需求 - 分析安全需求 - 分析性能需求 #### 步骤二编写Spec - 需求层功能、安全、性能需求 - 设计层硬件、数据、函数、容错约束 - 编码层编码规范 - 测试层测试用例 #### 步骤三AI生成代码 - 输入完整Spec - AI生成代码 - 输出代码框架 #### 步骤四代码审查 - 审查逻辑正确性 - 审查规范符合性 - 审查安全正确性 #### 步骤五测试验证 - 功能测试 - 边界测试 - 异常测试 - 性能测试 #### 步骤六问题修复 - 分析问题原因 - 制定修复方案 - AI修改代码 - 重复步骤四-五 ### 注意事项 - Spec必须完整 - 代码必须审查 - 测试必须充分5.3 代码审查SOP## SOP代码审查 ### 审查时机 - 每次提交前 - 每个模块完成后 - 项目完成后 ### 审查内容 #### 逻辑审查 - [ ] 逻辑是否正确 - [ ] 是否实现设计意图 - [ ] 是否有遗漏 #### 规范审查 - [ ] 命名是否规范 - [ ] 注释是否完整 - [ ] 代码风格是否一致 #### 安全审查 - [ ] 参数是否检查 - [ ] 异常是否处理 - [ ] 容错是否完整 #### 性能审查 - [ ] 时序是否满足 - [ ] 资源是否满足 - [ ] 功耗是否满足 ### 审查记录 - 审查人 - 审查时间 - 审查结果 - 问题列表 - 修复方案六、资源使用建议6.1 新手使用建议阶段一学习阶段使用资源Spec模板学习Spec结构源码示例学习代码实现Prompt模板学习Prompt编写方法先阅读模板理解结构再参考示例理解实现最后实践掌握方法阶段二实践阶段使用资源Spec模板快速编写SpecPrompt模板快速生成代码工程SOP规范开发流程方法从模板库选择模板修改模板适应需求按SOP流程开发6.2 有经验工程师使用建议日常开发使用资源Spec模板快速编写Spec源码示例参考实现Prompt模板提高生成质量方法建立个人模板库持续优化模板积累最佳实践团队协作使用资源Spec模板团队统一规范工程SOP团队统一流程代码审查SOP团队统一标准方法建立团队模板库培训团队使用方法持续改进流程6.3 团队负责人使用建议建立团队规范使用资源Spec模板建立团队Spec规范工程SOP建立团队开发流程代码审查SOP建立团队审查标准方法选择适合团队的模板培训团队使用方法强制执行规范持续改进方法收集团队反馈优化模板和SOP分享最佳实践更新资源库七、本讲核心要点7.1 记住这三句话专栏提供完整配套资源Spec模板、源码示例、Prompt模板、工程SOP资源使用要循序渐进先学习理解再实践应用最后优化改进资源是工具不是目的目标是提高开发效率和质量资源是辅助手段7.2 模块一总结模块一嵌入式AI范式认知1-15讲核心内容 - Vibe模式快速原型、无约束、效率优先 - Spec模式量产固件、强约束、质量优先 - 范式选择根据项目特点选择合适范式 - 代码腐烂无约束AI生成的风险 - RTOS约束任务优先级、堆栈、互斥锁 - 裸机边界Vibe模式适用边界 - 工控轨交Spec约束满足SIL要求 - 人机分工人主导设计AI辅助实现 - 效率对比AI双范式效率提升2-10倍 - 混用误区混用范式导致工程混乱 - 学习路线Vibe入门→Spec进阶→混合精通 - 容错思维硬件不确定性的应对 - 资源说明配套资源介绍 学习目标 - 建立双范式认知 - 理解范式选择 - 掌握容错思维 - 了解配套资源7.3 下一模块预告模块二嵌入式Vibe极速原型编程16-40讲内容 - Vibe标准流程 - 外设驱动快速开发 - 时序快速验证 - 避坑指南 目标 - 掌握Vibe模式实战 - 快速开发原型 - 避免常见问题

相关新闻

第14讲:硬件不确定性下的容错思维

第14讲:硬件不确定性下的容错思维

CSDN专栏: 嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料 第14讲:硬件不确定性下的容错思维 一、硬件不确定性的本质 硬件环境充满不确定性,这是嵌入式系统与互联网软件的根本差异。理解硬件不确定性的本…

2026/10/16 20:22:38 阅读更多 →
第12讲:新手误区——混用范式导致工程炸库、时序错乱

第12讲:新手误区——混用范式导致工程炸库、时序错乱

CSDN专栏: 嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料 第12讲:新手误区——混用范式导致工程炸库、时序错乱 一、什么是混用范式 混用范式是指在同一个项目中、同一个模块中、甚至同一个功能中,不加区…

2026/10/17 9:15:56 阅读更多 →
rtt-studio——OTA远程升级(HTTP)

rtt-studio——OTA远程升级(HTTP)

一.软件准备: 1.rtthread-studio 2.mobaxterm(可选) 3.STM32 ST-LINK Utility 4.cubemx 二.制作Bootloader 1.打开rtt官方的网站登录进去iot_admin 2.注册并进入新建一个产品(随意书写就行),按照步骤…

2026/10/17 4:55:27 阅读更多 →

最新新闻

从字节序到内存对齐:数据在内存中的真实布局深度拆解

从字节序到内存对齐:数据在内存中的真实布局深度拆解

每个写过几年代码的人,一定都遇到过一个诡异的问题:某个变量在断点里看着是对的,可一传入函数就变了;浮点数比较怎么都对不上;结构体明明只声明了几个字段,内存占用却比想象中多一截。这些问题绝大多数都能…

2026/10/18 2:14:57 阅读更多 →
桌面应用集成大模型:本地离线推理选型与工程落地全攻略

桌面应用集成大模型:本地离线推理选型与工程落地全攻略

这个项目我记了挺久:把一个大模型真正装进桌面程序里跑起来,不联网、不上云、不开后台服务,用户双击图标就能用。今天把这轮本地离线推理的选型和工程落地过程完整复盘一遍,重点说清楚三件事——为什么坚持本地推理、模型与推理引…

2026/10/18 2:14:57 阅读更多 →
SAP固定资产处置实操:ABAVN+F-02替代ABAON的完整走账与避坑指南

SAP固定资产处置实操:ABAVN+F-02替代ABAON的完整走账与避坑指南

简介:本资源为SAP FI模块固定资产全流程操作手册,围绕固定资产报废、出售、盘点三大高频业务展开,重点讲解ABAVN、F-02、AW01N/AB03等标准事务码的运用,并配有完整的会计分录示例与科目结转规则,适合SAP FI顾问、财务关…

2026/10/18 2:14:57 阅读更多 →
engarde816:专为击剑赛事设计的离线编排工具

engarde816:专为击剑赛事设计的离线编排工具

简介:Engarde816是一款面向击剑赛事组织者、裁判团队及体育管理从业者的专业编排软件,专为解决中小型至大型击剑比赛中的赛程规划、对阵生成、实时成绩追踪等核心痛点而设计。资源包共38个文件,含1个可执行程序(Engarde.exe&#…

2026/10/18 2:14:57 阅读更多 →
OpenClaw 对接微信:保姆级教程及部署推荐(TaoToken 统一 Key 接入版)

OpenClaw 对接微信:保姆级教程及部署推荐(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/18 2:14:57 阅读更多 →
NPU/TPU硬件加速本质:软硬协同的决策框架与落地实践

NPU/TPU硬件加速本质:软硬协同的决策框架与落地实践

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

2026/10/18 2:13:56 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →