SpringBoot整合knife4j实战:接口文档与在线调试完整指南
1. 为什么接口文档这件事值得单独拎出来聊做后端开发的人都有一个共识写接口不难难的是让前端、测试、甚至未来的自己看懂接口。早些年大家用 Swagger 那一套ApiOperation、ApiModel注解满天飞UI 长得像上世纪的产物调试接口还得切到 Postman 或者 curl来回折腾。后来 knife4j 出现了本质上它是对 Swagger 的一次“整容增强”把接口文档的展示和调试体验拉到了能用的水平。我在好几个中小型项目里都用过 knife4j从最早的 2.x 到现在的 4.x踩过的坑不算少。这篇文章不打算写成官方文档的搬运而是把我自己整合 knife4j 的完整思路、参数配置、版本选型、以及那些文档里不会写的坑一次性讲清楚。如果你正在用 SpringBoot 做后端团队里前端和测试天天追着你要接口文档或者你自己调试接口时厌倦了切工具那这篇内容应该能帮你省下不少时间。核心关键词就几个SpringBoot、knife4j、接口文档、在线调试、OpenAPI。整篇文章围绕“怎么把 knife4j 整合进 SpringBoot 项目并且让它真正好用”这条主线展开从依赖选型到配置细节再到生产环境的安全处理都会涉及。2. 整合前的整体设计与选型思路2.1 knife4j 到底是什么和 Swagger 什么关系先把概念理清楚不然选依赖的时候容易懵。knife4j 本身不是一个全新的文档规范它底层依赖的还是 OpenAPI 规范Swagger 3.0 之后改名叫 OpenAPI。你可以把它理解成Swagger 负责生成接口的元数据knife4j 负责把这些元数据渲染成一个好看的、能调试的 UI 界面。早期 knife4j 2.x 是基于 Springfox 的那时候 SpringBoot 2.4 以上版本和 Springfox 有兼容性问题很多人被NullPointerException或者文档空白折磨过。到了 knife4j 4.x官方直接转向了 springdoc-openapi也就是基于 OpenAPI 3 规范的那套方案兼容性和维护性都好了很多。所以现在新项目整合我的建议很明确SpringBoot 2.7 或者 3.x直接用 knife4j 4.x springdoc-openapi别再去碰 Springfox 那套老古董了。2.2 版本选型对照表版本选错是新手最容易翻车的地方我整理了一张对照表直接照着选就行SpringBoot 版本knife4j 版本底层依赖说明2.3.x 及以下2.0.9Springfox 2.x老项目维护用新项目别选2.4.x ~ 2.7.x3.0.3Springfox 3.x需要额外处理路径匹配策略2.7.x ~ 3.x4.x如 4.4.0springdoc-openapi推荐方案兼容性好3.2.x 及以上4.5.0springdoc-openapi 2.x注意 JDK 版本要求 17这里有个细节knife4j 4.x 的依赖坐标变了不再是knife4j-spring-boot-starter一个包搞定而是拆成了knife4j-openapi2-spring-boot-starter对应 OpenAPI 2和knife4j-openapi3-jakarta-spring-boot-starter对应 OpenAPI 3 Jakarta EE。SpringBoot 3.x 用的是 Jakarta 命名空间所以必须选带jakarta的那个选错了启动直接报ClassNotFoundException。2.3 为什么不用原生 Swagger UI有人会问springdoc 自带的 Swagger UI 也能用为什么还要套一层 knife4j我实测下来的差异主要在三点第一调试体验。原生 Swagger UI 调试接口时参数填写区域比较简陋尤其是复杂对象、文件上传这些场景knife4j 的表单渲染更友好还支持全局参数、自定义请求头。第二文档分组和搜索。knife4j 支持接口分组、标签筛选、关键字搜索接口一多的时候原生 UI 找接口基本靠翻页效率差很多。第三离线文档导出。knife4j 支持一键导出 Markdown、HTML、Word 格式的接口文档交付给外部团队或者存档的时候特别方便这个功能原生 UI 是没有的。所以结论是如果只是自己本地看看接口原生 UI 够用但凡涉及到团队协作、对外交付knife4j 的增强功能就值回票价了。3. 核心配置与实操要点拆解3.1 依赖引入的正确姿势以 SpringBoot 3.x knife4j 4.5.0 为例pom.xml里加这么一段dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactId version4.5.0/version /dependency如果是 SpringBoot 2.7.x把 artifactId 换成knife4j-openapi3-spring-boot-starter版本用 4.4.0 就行。这里有个坑要提醒不要同时引入 springfox 和 springdoc 相关的依赖两者会争抢RequestMappingHandlerMapping的处理器导致文档页面 404 或者接口列表为空。我见过有项目因为历史遗留依赖没清理干净排查了大半天。3.2 application.yml 里的关键配置依赖加完只是第一步配置文件里的参数才是决定文档能不能正常访问的关键。下面是我常用的配置模板springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs enabled: true group-configs: - group: default paths-to-match: /** packages-to-scan: com.example.demo.controller knife4j: enable: true setting: language: zh_cn swagger-model-name: 数据模型 production: false逐条解释一下这些参数背后的逻辑。springdoc.api-docs.path是 OpenAPI 元数据的暴露路径knife4j 的 UI 会去请求这个地址拿接口数据默认是/v3/api-docs一般不用改。group-configs是分组配置packages-to-scan指定扫描的 controller 包路径这个一定要写对写错了文档就是空的。knife4j.setting.language设成zh_cn之后UI 上的按钮和提示会变成中文对国内团队更友好。knife4j.production这个参数单独拎出来说它控制的是生产环境是否屏蔽文档。设成true的时候文档页面会返回一个提示页不会暴露接口信息。这个后面在安全章节会详细讲。3.3 配置类的编写要点虽然 springdoc 大部分配置可以通过 yml 完成但有些定制化的东西还是得写配置类。比如自定义文档的标题、描述、版本号以及配置全局的认证参数比如 JWT Token。下面是一个典型的配置类Configuration public class Knife4jConfig { Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(业务系统接口文档) .description(本文档涵盖用户、订单、支付等模块接口) .version(1.0.0) .contact(new Contact().name(后端团队)) .license(new License().name(内部使用))) .components(new Components() .addSecuritySchemes(Authorization, new SecurityScheme() .type(SecurityScheme.Type.HTTP) .scheme(bearer) .bearerFormat(JWT) .in(SecurityScheme.In.HEADER) .name(Authorization))); } }这段代码里Info部分定义的是文档的元信息会显示在页面顶部。Components里注册的SecurityScheme是关键它会在 knife4j 的 UI 上生成一个“全局认证”的输入框你填一次 Token后面所有接口调试都会自动带上这个请求头。这个功能在调试需要登录态的接口时特别省事不用每个接口都手动加 Header。注意SecurityScheme的name字段要和实际请求头名称一致比如你的拦截器读的是Authorization这里就必须写Authorization写错了调试时会一直返回 401。3.4 注解的使用与取舍knife4j 4.x 用的是 OpenAPI 3 的注解体系和老的 Swagger 2 注解不通用。常用的几个注解我列一下Tag(name 用户模块, description 用户注册登录相关)加在 Controller 类上用于分组。Operation(summary 用户登录, description 手机号密码登录)加在方法上描述接口用途。Parameter(description 用户ID, required true)加在方法参数上描述单个参数。Schema(description 登录请求体)加在实体类或字段上描述数据模型。这里我的个人经验是注解不要写得太满够用就行。有些团队要求每个字段都写Schema结果代码里注解比业务逻辑还长维护成本极高。我的做法是Controller 层的Tag和Operation必写因为这是文档的骨架实体类的Schema只写那些字段名不够自解释的比如status这种要说明 0 代表什么、1 代表什么。4. 完整实操流程与关键环节实现4.1 从零搭建一个可运行的示例光说配置太抽象我带你走一遍完整的搭建流程。假设你有一个最基础的 SpringBoot 3.2 项目JDK 17Maven 构建。第一步引入依赖。除了 knife4j 的 starter确保spring-boot-starter-web已经在。完整的依赖片段dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactId version4.5.0/version /dependency /dependencies第二步写一个测试用的 ControllerTag(name 用户模块, description 用户相关接口) RestController RequestMapping(/api/user) public class UserController { Operation(summary 根据ID查询用户) GetMapping(/{id}) public UserVO getUser(Parameter(description 用户ID) PathVariable Long id) { UserVO vo new UserVO(); vo.setId(id); vo.setName(测试用户); vo.setAge(25); return vo; } Operation(summary 创建用户) PostMapping(/create) public ResultUserVO createUser(RequestBody Valid UserCreateDTO dto) { return Result.success(new UserVO()); } }第三步配置 yml就是前面 3.2 节那段。第四步启动项目浏览器访问http://localhost:8080/doc.html。这里要划重点knife4j 4.x 的默认访问路径是/doc.html不是/swagger-ui.html。很多人第一次整合完访问/swagger-ui.html发现是原生 UI以为 knife4j 没生效其实是路径搞错了。/swagger-ui.html是 springdoc 自带的 UI/doc.html才是 knife4j 的界面。4.2 分组配置的实战技巧项目一大接口动辄上百个全堆在一个页面里根本没法看。knife4j 的分组功能就是解决这个问题的。除了 yml 里的group-configs还可以用配置类的方式动态分组Bean public GroupedOpenApi userApi() { return GroupedOpenApi.builder() .group(用户模块) .pathsToMatch(/api/user/**) .build(); } Bean public GroupedOpenApi orderApi() { return GroupedOpenApi.builder() .group(订单模块) .pathsToMatch(/api/order/**) .build(); }这样配置之后knife4j 页面左上角会出现分组下拉框切换分组就能只看对应模块的接口。我一般按业务模块分组而不是按 Controller 分组因为一个业务模块可能对应多个 Controller按业务分更符合前端和测试的使用习惯。提示GroupedOpenApi的group名称不要用中文特殊字符虽然大部分情况能显示但导出离线文档时偶尔会出现文件名乱码用英文或者拼音更稳妥。4.3 全局参数的配置与调试实际项目里很多接口需要携带公共参数比如tenantId租户ID、version版本号、Authorization认证令牌。如果每个接口都手动填调试效率极低。knife4j 支持配置全局参数一次配置所有接口生效。在 yml 里可以这样配knife4j: enable: true setting: language: zh_cn # 全局参数配置 global-parameters: - name: tenantId description: 租户ID type: header required: false defaultValue: 1001不过 yml 配置全局参数在 4.x 版本里支持得不算完美更可靠的方式还是通过OpenAPI的Components来注册也就是 3.3 节那段代码。两种方式我都试过配置类的方式更稳定推荐优先用。调试的时候页面右上角会有一个“全局参数”的设置入口点进去填好值后面发请求就会自动带上。这个功能在联调阶段特别有用前端同学自己就能填 Token 调试不用每次都找后端要。4.4 离线文档导出实操knife4j 的离线文档导出是我最喜欢的功能之一。在doc.html页面右上角有个“文档管理”菜单里面有“导出 Markdown”“导出 HTML”“导出 Word”几个选项。导出的 Markdown 文件结构很清晰每个接口包含请求路径、请求方式、请求参数、响应示例直接扔到内部 Wiki 或者 Git 仓库里就能当接口文档用。我一般会在每次版本发布前导出一份归档到项目的docs目录下这样即使文档服务挂了也能查到历史版本的接口定义。注意导出功能依赖浏览器的下载能力如果页面是通过内网访问且浏览器有下载限制可能会失败。这种情况可以改用 OpenAPI 元数据地址/v3/api-docs拿到 JSON 后用第三方工具转换格式。5. 常见问题与排查技巧实录5.1 文档页面 404 或空白这是最高频的问题没有之一。排查思路按顺序来第一确认访问路径。knife4j 4.x 是/doc.html不是/swagger-ui.html。如果/doc.html也 404检查项目有没有配置server.servlet.context-path如果有路径要加上前缀比如/api/doc.html。第二检查依赖冲突。在项目根目录执行mvn dependency:tree | grep springfox如果输出里有 springfox 相关的包说明有历史依赖没清理需要排除掉。第三检查拦截器。很多项目有自定义的HandlerInterceptor或者 Spring Security 配置把/doc.html、/v3/api-docs/**、/webjars/**这些路径拦截了。需要把这些路径加入白名单。第四检查packages-to-scan配置。如果扫描路径写错文档页面能打开但接口列表是空的。这个和 404 的表现不一样要区分开。5.2 接口列表为空页面能打开但没接口通常是这几个原因packages-to-scan路径写错或者包名拼写错误。Controller 类没有被 Spring 扫描到比如放在了启动类所在包的兄弟目录下。使用了RestController但方法上没有RequestMapping或GetMapping等映射注解。分组配置的paths-to-match和实际接口路径不匹配。我遇到过一次比较隐蔽的项目用了多模块Controller 在子模块里但packages-to-scan只写了主模块的包名导致子模块的接口扫不到。解决办法是把所有需要暴露的包路径都列上用逗号分隔。5.3 生产环境安全问题接口文档暴露在生产环境是有风险的相当于把系统的接口清单和参数结构直接公开了。knife4j 提供了production开关设成true之后文档页面会被屏蔽。但这里有个细节光设knife4j.productiontrue只是屏蔽了 UI 页面/v3/api-docs这个元数据接口还是能访问的。更彻底的做法是在生产环境的配置里直接关闭 springdocspringdoc: api-docs: enabled: false swagger-ui: enabled: false knife4j: production: true这样元数据接口和 UI 都关了才算真正安全。我一般会配合 Spring 的 Profile 来做application-dev.yml里开启application-prod.yml里关闭通过启动参数切换。5.4 常见问题速查表问题现象可能原因排查方向/doc.html404路径错误或依赖冲突检查 context-path、排除 springfox页面空白无接口扫描路径错误核对packages-to-scan调试返回 401全局参数未配置检查 SecurityScheme 配置导出文档乱码分组名含特殊字符改用英文分组名启动报 ClassNotFound依赖版本不匹配核对 SpringBoot 与 knife4j 版本接口参数显示不全实体类缺少 Schema 注解补充Schema描述5.5 几个踩坑后的经验之谈第一个经验不要在实体类上滥用Schema(required true)。这个注解只是文档层面的提示不会触发实际校验。真正要做参数校验得用NotNull、NotBlank这些 Jakarta Validation 注解。我见过有人以为写了Schema(requiredtrue)就能校验结果线上传了空值直接 NPE。第二个经验文件上传接口的调试。knife4j 对MultipartFile的支持还不错但要注意参数名要和RequestParam里写的一致否则调试时会报参数缺失。另外文件大小限制是 SpringBoot 的spring.servlet.multipart.max-file-size控制的和 knife4j 无关别搞混了。第三个经验泛型返回值显示问题。如果接口返回ResultUserVO这种泛型结构knife4j 有时候会把泛型显示成object看起来不够直观。解决办法是在Operation里用responses属性手动指定响应类型或者在Schema里做好继承关系的描述。这个属于 OpenAPI 规范本身的限制不是 knife4j 的锅。第四个经验文档的更新时机。knife4j 的文档是运行时动态生成的改了代码重启就生效不需要额外构建步骤。但如果是多实例部署每个实例的文档是独立的做负载均衡的时候要注意别一会儿看到新接口一会儿看到旧接口。生产环境一般直接关掉所以这个问题主要出现在测试环境。6. 进阶玩法与扩展思路6.1 结合网关做统一文档聚合微服务架构下每个服务都有自己的文档前端要挨个访问很麻烦。常见的做法是在网关层做文档聚合把各个服务的 OpenAPI 元数据拉过来统一在一个页面展示。knife4j 本身支持这种聚合模式通过配置多个springdoc数据源实现。不过这块配置相对复杂涉及跨服务调用和路径重写建议在服务数量超过 5 个之后再考虑服务少的时候直接分发各个服务的文档地址更省事。6.2 文档与代码的一致性保障文档最大的敌人是“代码改了文档没改”。我的做法是把文档检查纳入 CI 流程用脚本拉取/v3/api-docs的 JSON对比接口数量和路径是否和预期一致不一致就报警。虽然不能完全保证描述文字的准确性但至少能保证接口的增删改不会被遗漏。这个脚本用 Python 或者 Shell 都能写核心就是解析 JSON 后做 diff。6.3 自定义 UI 主题knife4j 的 UI 支持一定程度的自定义比如修改 Logo、调整主题色。在knife4j.setting下有custom-logo之类的配置项。不过说实话这个功能用得不多默认的界面已经够清爽了除非有品牌展示需求否则没必要折腾。我在实际项目里整合 knife4j 的体会是它最大的价值不在于“能生成文档”而在于“让文档这件事变得不那么痛苦”。以前写接口文档是额外负担现在注解顺手写了文档自动就有了前端和测试也能自助调试沟通成本降了一大截。唯一需要警惕的就是生产环境的安全问题这个开关一定要记得关别等出了事才想起来。

相关新闻

openrig 实战:用 tmux 与 Node.js 编排 Claude Code 和 Codex 多代理工作流

openrig 实战:用 tmux 与 Node.js 编排 Claude Code 和 Codex 多代理工作流

1. openrig 到底想解决什么问题第一次看到 openrig 这个名字,加上关联的 Claude Code、Codex、Node.js、tmux 这几个词,我脑子里冒出来的判断是:这大概率是一个把多个 AI 编码工具统一编排起来的工程化脚手架。后来实际折腾了一圈&#xff0c…

2026/10/15 0:04:56 阅读更多 →
AI入门避坑指南:零基础6个月可验证学习路线

AI入门避坑指南:零基础6个月可验证学习路线

1. 这不是“学AI”的路线图,而是帮你绕开99%初学者陷阱的生存指南你搜“人工智能入门”,页面刷出来全是“30天速成大模型”“零基础玩转ChatGPT”“PythonTensorFlow年薪30万”。我盯着屏幕看了三分钟,默默关掉网页——不是内容不好&#xff…

2026/10/15 0:04:56 阅读更多 →
探矿数据进RAG前的清洗全攻略:TXT、Word、PDF、网页四类文档处理实践

探矿数据进RAG前的清洗全攻略:TXT、Word、PDF、网页四类文档处理实践

1. 探矿数据进RAG之前,为什么必须先过清洗这一关1.1 探矿领域的文档生态:比想象中更杂做探矿业务的知识库和做通用知识库完全是两码事。通用场景里的文档再乱,基本也就是网页、PDF、Word这几类,格式相对规整。探矿业务呢&#xff…

2026/10/15 0:04:56 阅读更多 →

最新新闻

区间DP解“拿糖果”:从贪心误区到最优策略实战解析

区间DP解“拿糖果”:从贪心误区到最优策略实战解析

说实话,我第一次看到“拿糖果”这道题的时候,差点把它当成热身题给秒了。题面本身非常朴素:有 n 堆糖果排成一行,每堆糖果数量用一个整数数组表示,两个人轮流从最左端或最右端拿走一整堆,直到全部取完&…

2026/10/15 0:46:40 阅读更多 →
光通信技术突破:陶瓷封装与智能光功率控制解析

光通信技术突破:陶瓷封装与智能光功率控制解析

1. 光通信行业现状与易天定位光纤通信作为现代信息社会的基石,其市场规模在过去五年保持着年均12%的复合增长率。根据行业调研数据显示,2023年全球光模块出货量已突破1.8亿只,其中数据中心互连场景占比达到47%。在这个快速扩张的市场中&#…

2026/10/15 0:46:40 阅读更多 →
CEC2010到CEC2017:进化计算基准测试集完整指南与避坑经验

CEC2010到CEC2017:进化计算基准测试集完整指南与避坑经验

简介:面向进化计算与智能优化领域的研究者、工程师及高校学生,这份测试集汇总了CEC2010、CEC2013、CEC2014、CEC2015、CEC2017等历届单目标实参数优化竞赛的基准问题,可用于验证和对比各类新颖优化算法的寻优能力与收敛性能。压缩包内共516个…

2026/10/15 0:45:39 阅读更多 →
Z源逆变器仿真建模与PWM控制策略详解

Z源逆变器仿真建模与PWM控制策略详解

1. Z源逆变器概述与仿真意义Z源逆变器作为电力电子领域的重要拓扑结构,近年来在新能源发电、电动汽车和工业驱动等领域展现出独特优势。与传统电压源型和电流源型逆变器不同,Z源网络通过独特的阻抗网络实现了升降压功能,同时避免了传统拓扑中…

2026/10/15 0:45:39 阅读更多 →
普通程序员有没有必要学习 Agent 开发?从零手写 ReAct Agent 到 LangGraph 实战

普通程序员有没有必要学习 Agent 开发?从零手写 ReAct Agent 到 LangGraph 实战

一、先说结论:有必要,而且窗口期就在当下 如果你是一个每天写 CRUD、调接口、改 Bug 的普通后端 / 前端 / 全栈程序员,看到「Agent」「智能体」这些词,第一反应很可能是:“这不就是调一下大模型 API 吗?跟我…

2026/10/15 0:45:39 阅读更多 →
深入理解 Claude Code:CLAUDE.md、Hooks、Skills、Subagents 全解析

深入理解 Claude Code:CLAUDE.md、Hooks、Skills、Subagents 全解析

1. 引言 Claude Code 是 Anthropic 推出的命令行 AI 编程助手,它不仅能理解自然语言指令,还能通过一系列机制实现高度可定制、可扩展的自动化编码工作流。对于想要真正驾驭 Claude Code 的开发者来说,仅仅会提问远远不够,理解其四…

2026/10/15 0:45:39 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/14 16:30:29 阅读更多 →
影刀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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →