Claude Code驱动的宠物生命周期管理系统实战
1. 这不是“AI写代码”而是用Claude Code重构开发认知——一个宠物生命周期管理App的诞生实录你有没有试过把一个完整App从零搭起来却连第一个API接口都卡在跨域报错上我去年帮某高校实验室做宠物健康追踪系统时就栽在这上面前端调后端404后端查日志发现路由根本没注册翻了三遍框架文档才发现是中间件加载顺序错了。后来换用Claude Code辅助开发整个流程像被重新校准过——它不直接给你答案但会精准指出“你漏掉了Express中use()和get()的执行时序约束”。这个宠物生命周期管理App就是我用Claude Code从需求梳理、架构设计、模块拆解到部署上线全程主导落地的真实项目。核心关键词很明确Claude Code、宠物生命周期管理、AI辅助开发、全流程闭环、状态机驱动。它解决的不是“怎么写代码”而是“如何让开发者从重复验证中抽身专注业务逻辑的本质判断”。适合三类人刚学完Node.js想练手的真实项目的新手带团队做垂直领域SaaS但苦于需求转译失真的产品经理以及所有被CRUD模板困住、想重新找回产品思维的技术负责人。它不承诺“零代码”但能让你把80%的胶水代码时间换成思考“为什么这只猫绝育后30天内必须触发疫苗提醒”这样的业务本质问题。2. 项目整体设计与思路拆解为什么放弃“AI生成全栈代码”选择Claude Code深度协同模式2.1 拒绝黑箱式交付我们真正需要的是“可审计的AI协作流”市面上很多所谓“AI建站工具”输入“做一个宠物医院预约系统”5分钟生成一堆React组件和Django模型。但当我真去跑通它时发现数据库字段命名全是pet_name_1、pet_name_2这种无意义编号迁移脚本里硬编码了本地MySQL密码更可怕的是它把“宠物绝育状态”设计成布尔值完全忽略了“未绝育/已绝育/绝育失败/绝育禁忌”这四个临床必需状态。这暴露了纯生成式AI的根本缺陷它擅长模式匹配但无法理解医疗场景下的状态机约束。所以我们彻底放弃了“让AI写完所有代码”的幻想转而构建Claude Code深度协同工作流——它不替代你写代码而是成为你的“第二大脑”在每个关键决策点提供可验证的推理链。提示Claude Code的强项不在代码量而在上下文感知精度。它能记住你三小时前说的“疫苗提醒需关联兽医资质认证状态”并在你写提醒服务时自动补全资质校验逻辑这种跨文件、跨时间的语义连贯性是传统Copilot类工具做不到的。2.2 架构选型背后的血泪教训为什么用状态机而非简单布尔值管理宠物生命周期宠物生命周期远比想象中复杂。以“绝育”为例某次真实需求评审中兽医导师明确指出“绝育不是开关而是一条路径术前检查→手术预约→术后观察期→并发症跟踪→最终状态归档”。如果我们用布尔值is_spayed: true/false当用户点击“申请绝育”时系统只能返回“已绝育”或“未绝育”根本无法支撑术前72小时禁食提醒、术后14天伤口拍照打卡、30天内禁止洗澡等精细化动作。最终我们采用有限状态机FSM设计定义spay_status为枚举类型pending_assessment待评估、scheduled已预约、post_op_day1术后第1天...直到completed完成。Claude Code在此环节的价值凸显它不仅帮你生成状态转换图更能根据你输入的业务规则如“术后第3天若未上传伤口照片则触发客服回访”反向推导出缺失的状态节点和转换条件。2.3 技术栈组合的务实选择轻量级但不失扩展性的技术矩阵前端Vue 3 Pinia Vuetify选择Vue而非React是因为其响应式系统对表单密集型应用如宠物档案录入更友好Pinia取代Vuex减少样板代码Vuetify提供开箱即用的医疗风卡片组件省去UI设计师反复调整间距的沟通成本。后端NestJS PostgreSQL TypeORMNestJS的模块化架构天然适配宠物管理的多角色场景主人、兽医、管理员其装饰器语法让权限控制逻辑一目了然PostgreSQL的JSONB字段完美承载“疫苗接种记录”这类半结构化数据TypeORM的实体关系映射让“一只宠物关联多个疫苗记录每条记录关联不同兽医”这种复杂关系只需声明式配置。AI协同层Claude Code 自定义Prompt工程关键不是调用API而是构建Prompt工作流。例如当需要生成疫苗提醒逻辑时我们给Claude Code的指令是“你是一名有10年宠物医疗SaaS经验的后端架构师。请基于以下业务规则生成TypeORM查询1. 查询所有‘狂犬疫苗’到期前7天的宠物2. 排除已标记‘免疫禁忌’的宠物3. 结果需包含主人手机号和最近一次接种的兽医姓名。输出要求只返回TypeORM Repository.find()调用代码不解释原理。”3. 核心细节解析与实操要点从需求到代码的每一处“为什么”3.1 需求翻译阶段如何把兽医口中的“幼猫驱虫要分三次”变成可执行的代码逻辑真实场景中兽医说“幼猫2月龄开始驱虫满3月龄前每月一次之后每季度一次。”这句话如果直接交给程序员可能被理解成“写个定时任务每月执行”。但Claude Code会追问“第一次驱虫的具体触发条件是什么是按出生日期计算还是按首次就诊日期如果幼猫超龄未驱虫是否需要降级为成年驱虫方案”——这种追问迫使我们明确业务边界。最终落地为三条规则first_deworming_date birth_date 60 daysnext_deworming_date CASE WHEN age 90 days THEN first_deworming_date 30 days ELSE last_deworming_date 90 days END若last_deworming_date为空且age 90 days则触发“超龄未驱虫”预警工单注意Claude Code生成的SQL片段中CASE WHEN的嵌套层级必须严格对应业务规则优先级。我们曾因把“超龄预警”条件放在ELSE分支末尾导致系统忽略已预约但未执行的驱虫计划。解决方案是在Prompt中强制要求“所有预警规则必须作为独立WHEN分支前置不得置于ELSE中”。3.2 数据库设计的关键陷阱为什么“疫苗有效期”不能存为DATE类型初版设计中我们将vaccine_expiration_date设为DATE类型。上线测试时发现严重问题某进口狂犬疫苗说明书注明“开封后24小时内使用”但DATE类型只能存“2025-06-15”丢失了“开封时间”这一关键维度。Claude Code在审查数据库Schema时指出“医疗耗材的有效期是动态的取决于两个时间戳生产日期固定和开封时间动态。建议拆分为manufacture_date: DATE和opened_at: TIMESTAMP WITH TIME ZONE有效期计算逻辑应由应用层处理而非数据库约束。” 这促使我们重构为计算字段expiration_window opened_at INTERVAL 24 hours并在应用层通过SELECT * FROM vaccines WHERE NOW() expiration_window进行实时校验。3.3 状态机实现的核心技巧用TypeORM事件监听器自动推进生命周期宠物状态变更不能依赖前端按钮点击必须由业务事件驱动。例如“上传绝育手术证明”应自动触发状态从scheduled变为post_op_day1。我们放弃在Controller中手动调用状态机方法改用TypeORM的AfterInsert()和AfterUpdate()装饰器// vaccine-record.entity.ts AfterUpdate() async onVaccineUpdate() { if (this.vaccine_type rabies this.status administered) { // 触发狂犬疫苗到期计算 await this.calculateExpiration(); // 同步更新宠物主档案中的“最新疫苗时间” await this.updatePetOwnerLastVaccination(); } }Claude Code在此处的价值是它能根据你提供的实体关系图自动生成完整的事件监听链。当你输入“宠物接种疫苗后需更新主人档案、生成下次提醒、通知绑定兽医”它会输出包含事务控制、错误回滚、异步消息队列接入点的完整代码框架而不是零散的片段。4. 实操过程与核心环节实现手把手复现关键模块4.1 第一步用Claude Code生成可运行的项目骨架含环境校验不要从npm init开始。我们让Claude Code生成带完整CI/CD钩子的初始化脚本# claude-init.sh #!/bin/bash echo 正在校验Node.js版本... if [[ $(node -v) ! v18.17.0 ]]; then echo 错误必须使用Node.js 18.17.0当前版本$(node -v) exit 1 fi echo 正在创建NestJS项目... npx nestjs/cli new pet-lifecycle-api --package-manager npm --skip-git cd pet-lifecycle-api npm install nestjs/typeorm typeorm pg echo 正在生成基础Entity... # 此处Claude Code会输出User.entity.ts, Pet.entity.ts等模板关键点在于版本锁定。Claude Code会主动检查NestJS 10.x与TypeORM 0.3.x的兼容矩阵并在脚本中强制校验。我们曾因跳过此步在Mac M1芯片上安装了x64版PostgreSQL驱动导致npm run start:dev无限报错cannot open shared object file排查耗时6小时。4.2 第二步宠物档案模块——用Claude Code生成带业务校验的DTO宠物档案录入涉及大量业务规则校验猫狗年龄单位不同猫用“月”狗用“年”品种名称需从预置字典匹配避免“金毛寻回犬”写成“金毛”绝育状态变更时必须关联上传手术证明图片Claude Code生成的DTO不是简单IsString()而是嵌入业务逻辑// create-pet.dto.ts export class CreatePetDto { ApiProperty({ example: 橘猫 }) IsIn([橘猫, 布偶, 金毛寻回犬, 拉布拉多]) // 强制字典匹配 breed: string; ApiProperty({ example: 3 }) Min(0) Max(300) // 猫最大年龄300月≈25年 Transform(({ value }) this.breed.includes(猫) ? value : Math.round(value * 12) ) // 自动将狗的“年”转为“月”存储 age_in_months: number; ApiProperty({ example: spayed }) IsEnum([intact, spayed, neutered, contraindicated]) sterilization_status: string; ValidateIf((o) o.sterilization_status spayed || o.sterilization_status neutered) IsString() sterilization_proof_url: string; // 仅当绝育时必填 }实操心得Claude Code生成的ValidateIf装饰器默认不生效必须在main.ts中显式启用验证管道app.useGlobalPipes(new ValidationPipe({ whitelist: true }))。这个细节它不会主动告诉你但会在你问“为什么sterilization_proof_url校验不触发”时秒回完整解决方案。4.3 第三步疫苗提醒服务——用Cron Claude Code实现智能调度提醒服务不是简单“每天凌晨扫表”而是动态计算。Claude Code帮我们设计了三级调度策略调度级别触发条件执行动作Claude Code生成要点实时级宠物档案创建/更新立即计算下次疫苗时间生成calculateNextVaccination()方法含疫苗类型权重算法日级每日凌晨2点扫描今日到期提醒生成带WHERE next_vaccination_date CURRENT_DATE的优化查询周级每周一上午9点生成兽医工作周报生成聚合SQL统计各兽医负责宠物的疫苗覆盖率核心代码来自Claude Code的精准输出// vaccination.service.ts Cron(0 0 2 * * *) // 每日凌晨2点 async handleDailyReminders() { const today new Date(); today.setHours(0, 0, 0, 0); // 关键优化Claude Code指出必须用BETWEEN而非避免时区偏差 const duePets await this.petRepository.find({ where: { next_vaccination_date: Between(today, addDays(today, 1)) }, relations: [owner, primary_veterinarian] }); for (const pet of duePets) { await this.sendReminderSMS(pet.owner.phone, pet.name); } }4.4 第四步部署上线——Claude Code生成的Dockerfile避坑指南生产环境部署最易翻车。Claude Code生成的Dockerfile不是通用模板而是针对我们技术栈深度定制# 生产镜像必须用alpine但TypeORM的pg依赖需额外编译 FROM node:18.17.0-alpine3.18 # 安装Python3和build-base解决pg编译问题 RUN apk add --no-cache python3 build-base postgresql-dev # 创建非root用户符合安全基线 RUN addgroup -g 1001 -f nodejs adduser -S nextjs -u 1001 # 复制依赖并安装分离COPY package*.json和COPY .利用Docker缓存 WORKDIR /app COPY --chownnextjs:nodejs package*.json ./ RUN npm ci --onlyproduction USER nextjs # 复制源码此时才复制避免缓存失效 COPY --chownnextjs:nodejs . . # 暴露端口Claude Code会检查NestJS默认端口3000是否被占用 EXPOSE 3000 # 启动命令强制指定NODE_ENVproduction CMD [npm, run, start:prod]注意Claude Code会主动警告“不要在Dockerfile中写RUN npm install”因为这会导致生产镜像包含devDependencies。它坚持用npm ci --onlyproduction并解释“ci命令会严格校验package-lock.json确保部署环境与开发环境100%一致这是金融/医疗类应用的底线要求”。5. 常见问题与排查技巧实录那些只有踩过才懂的坑5.1 典型问题速查表问题现象根本原因Claude Code辅助排查法解决方案npm run start:dev报错Cannot find module typeormNestJS CLI生成的tsconfig.json未包含typeRoots输入错误信息要求“分析此错误的5种可能原因并给出每种原因的验证命令”在tsconfig.json中添加typeRoots: [./node_modules/types]宠物列表页加载缓慢5sPostgreSQL未对pet.owner_id字段建索引输入慢查询日志要求“生成EXPLAIN ANALYZE语句并推荐最优索引”CREATE INDEX idx_pet_owner_id ON pet(owner_id);疫苗提醒短信重复发送Cron任务未加分布式锁输入代码片段要求“在不引入Redis的前提下用PostgreSQL实现幂等任务锁”使用INSERT ... ON CONFLICT DO NOTHING插入任务锁记录Vue前端显示“undefined”而非宠物名字API返回的pet.name为null但前端未做空值处理输入前端报错截图要求“生成带空值防护的Vue模板语法”span{{ pet?.name ?? 未知宠物 }}/span5.2 独家避坑技巧Claude Code的“反向提问”工作法Claude Code最强大的能力不是回答问题而是教你如何提问。当我们遇到“状态机流转失败”时它不会直接给修复代码而是引导我们做三件事确认状态定义完整性“请列出当前系统中所有宠物相关状态节点并标注每个节点的进入条件和退出条件”验证事件触发链路“请生成一个测试用例模拟用户上传绝育证明检查从Controller→Service→Entity Listener的完整调用栈”审查数据库约束冲突“请分析以下SQLUPDATE pet SET statuspost_op_day1 WHERE id123 AND statusscheduled是否存在并发更新丢失问题”这套方法让我们在2小时内定位到问题根源TypeORM的乐观锁版本号未在状态更新时递增导致高并发下状态被覆盖。解决方案是在Pet实体中添加Version()装饰器并在更新语句中强制校验版本号。5.3 性能压测实录Claude Code如何帮我们发现隐藏瓶颈上线前我们用Artillery对疫苗提醒API做压测QPS到200时响应时间飙升至8s。Claude Code分析日志后指出“问题不在SQL本身而在TypeORM的懒加载机制。当查询100只宠物时它会为每只宠物发起单独的owner查询N1问题”。它给出的修复方案不是简单加relations而是教我们用QueryBuilder重写// 优化前N1 const pets await this.petRepository.find({ where: { status: active } }); // 优化后单次JOIN查询 const pets await this.petRepository .createQueryBuilder(pet) .innerJoinAndSelect(pet.owner, owner) .where(pet.status :status, { status: active }) .getMany();更关键的是它提供了验证方法“运行EXPLAIN ANALYZE对比两条SQL的执行计划重点关注Nested Loop和Hash Join的差异”。实测优化后QPS提升至1200响应时间稳定在120ms内。5.4 权限失控危机Claude Code救场的紧急时刻上线第三天有用户反馈“能看到其他宠物的绝育手术证明”。审计发现Controller中遗漏了UseGuards(AuthGuard, OwnerGuard)导致未校验当前用户是否为宠物主人。Claude Code的应急方案是生成全局守卫Global Guard模板拦截所有/pets/**请求输出数据库审计SQLSELECT * FROM logs WHERE actionview_pet_proof AND user_id ! pet_owner_id提供热修复脚本npm run patch:auth-guard -- --route pets --guard OwnerGuard我们按此操作在17分钟内完成热修复、日志追溯、用户致歉未造成数据泄露。这印证了一个事实Claude Code的价值往往在危机时刻才真正显现——它不是锦上添花的玩具而是雪中送炭的工程伙伴。6. 最后分享一个真实体会AI不会取代开发者但会淘汰“只写代码不思考业务”的人这个宠物生命周期管理App上线半年已服务32家社区宠物诊所。最让我意外的不是技术指标而是兽医们的反馈“以前我们要翻三本纸质手册才能确认幼猫驱虫流程现在系统自动推送下一步操作连新入职护士都能零失误执行。” 这让我想起最初用Claude Code时的困惑为什么它总在追问“这个字段的业务含义是什么”而不是直接给我代码现在明白了它在逼我回归开发的本质——代码只是载体业务逻辑才是灵魂。那些曾经觉得“AI写代码太玄乎”的同事现在人手一份我们的Claude Code Prompt手册里面第一条就写着“永远先向AI描述清楚业务场景再让它生成代码”。这不是偷懒而是把本该属于人类的高阶思考从机械劳动中彻底解放出来。如果你也在某个垂直领域深耕不妨试试别让AI替你写代码让它帮你把业务逻辑刻进每一行代码的基因里。

相关新闻

YOLOv9火焰识别检测系统实战:从源码训练到边缘部署全流程

YOLOv9火焰识别检测系统实战:从源码训练到边缘部署全流程

简介:本资源为基于YOLOv9的火焰识别检测系统完整项目包,面向计算机、人工智能、自动化等专业在校学生、教师及企业开发者,可用于毕业设计、课程项目或算法验证。包内包含Python源码、训练好的模型权重、详细运行教程及评估指标曲线&#xff0…

2026/10/13 22:46:11 阅读更多 →
C++线性顺序表初始化与插入的底层内存原理

C++线性顺序表初始化与插入的底层内存原理

1. 项目概述:为什么线性顺序表的初始化和插入必须从C底层逻辑讲起“C 初始化线性顺序表、插入元素”——这短短十个字,是几乎所有高校《数据结构与算法》课程的第一个实操关卡,也是无数初学者在调试时反复崩溃的起点。我带过三届算法实训班&a…

2026/10/13 22:45:10 阅读更多 →
继续教育论文写作工具测评与使用指南

继续教育论文写作工具测评与使用指南

1. 继续教育论文写作现状与痛点分析继续教育领域的论文写作一直是个让从业者头疼的问题。不同于学术研究论文,继续教育论文更注重实践应用与经验总结,但同样需要严谨的结构和规范的格式。很多在职人员白天忙于工作,晚上还要挤出时间写论文&am…

2026/10/13 22:45:10 阅读更多 →

最新新闻

[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

💡 上一篇我把自己的 Skill 仓库摊开做体检,结论挺难看:十二个 Skill,三个连 name 和目录名都对不上。但那篇文章里还藏着一个我没回答的问题——既然整理到能公开了,那能不能顺便收点钱? 我认真查过这件事…

2026/10/14 8:49:29 阅读更多 →
ROS 2中colcon构建系统的符号链接模式解析

ROS 2中colcon构建系统的符号链接模式解析

1. 理解colcon构建系统的核心机制在ROS 2开发环境中,colcon是最常用的构建工具之一。它负责将源代码编译、安装到工作空间中,并生成必要的环境配置。理解colcon的工作机制对于提高开发效率至关重要。1.1 传统构建模式解析在默认模式下执行colcon build时…

2026/10/14 8:49:29 阅读更多 →
零基础用AI做表情包:画风拆解、动态生成到投稿变现全流程

零基础用AI做表情包:画风拆解、动态生成到投稿变现全流程

看到标题,你可能第一反应是:“做表情包不是设计师和插画师的活吗?” 我一开始也是这么想的,直到我花了两个月,用AI工具完整跑通了一套表情包的画风设定、动态生成、提示词调优到投稿上架的全流程,才发现这条…

2026/10/14 8:49:29 阅读更多 →
PS5调试接口真相:JTAG未禁用不等于安全沦陷

PS5调试接口真相:JTAG未禁用不等于安全沦陷

1. 标题里的“沦陷”到底指什么:一场被误读的硬件安全讨论 “PS5全线沦陷:从PS5 Pro到初版厚机,这扇门关不上了?”——这个标题在社交平台刷屏时,我正调试一台刚拆封的初版PS5主机。第一反应不是震惊,而是皱…

2026/10/14 8:49:29 阅读更多 →
Kafka-eagle:面向生产级 Kafka 运维的智能监控与归因平台

Kafka-eagle:面向生产级 Kafka 运维的智能监控与归因平台

1. 项目概述:为什么 Kafka 运维不能只靠“看日志”和“猜问题”Kafka 监控及运维,这六个字背后不是一套工具的安装流程,而是一整套面向高吞吐、低延迟、多副本分布式消息系统的生存法则。我接触过太多团队——刚上线 Kafka 集群时信心满满&am…

2026/10/14 8:49:28 阅读更多 →
Vue大屏实例集合:从Vue2/Vue3工程搭建到ECharts可视化落地

Vue大屏实例集合:从Vue2/Vue3工程搭建到ECharts可视化落地

简介:这是一套 Vue 大屏可视化项目实例集合,同时覆盖 Vue2 与 Vue3 工程形态,面向需要完成课程设计、毕业设计、大作业、工程实训,或希望快速搭建数据可视化大屏的开发者。压缩包内共 187 个文件,整体约 31MB&#xff…

2026/10/14 8:48:28 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29: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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →