Devtron 全局插件创建全流程指南:从 plugin_metadata 到步骤条件的 7 步 SQL 实操
云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载Devtron 的全局插件Global Plugin体系允许开发者以纯 SQL 的方式在数据库中注册一个可复用的自动化能力——从插件元数据、标签、执行脚本、步骤到步骤变量与执行条件全部通过一组结构化的数据表描述随后即可在 CI/CD 流水线的 Pre/Post 阶段中像内置能力一样被引用。本文以仓库开发者指南文档 developers-guide/PluginCreationStep.md 为骨架结合 建表迁移脚本 与真实插件示例如 Terraform CLI 插件完整讲解创建一个新插件的 7 个步骤并补充服务层源码pkg/plugin与变量运行时流转机制帮助你从数据库层彻底理解插件的定义与执行链路。插件体系与数据表全景Devtron 插件的元数据分布在 8 张核心表中其中 7 张由本文主线步骤覆盖另有plugin_stage_mapping用于声明插件可用的阶段类型。建表与初始种子数据见迁移文件 scripts/sql/49_plugin_integration.up.sql。表名作用创建步骤plugin_metadata插件本体名称、描述、类型、图标步骤 1plugin_tag插件标签Load testing、Code quality、Security 等步骤 2plugin_tag_relation标签与插件的多对多关联步骤 3plugin_pipeline_script步骤执行的脚本本体及挂载方式步骤 4script_path_arg_port_mapping脚本的文件路径/命令参数/端口映射步骤 4plugin_step插件内的步骤定义INLINE / REF_PLUGIN步骤 5plugin_step_variable步骤的输入/输出变量步骤 6plugin_step_condition变量上绑定的执行条件步骤 7plugin_stage_mapping插件适用的阶段类型CI / CD / CI_CD / SCANNER补充步骤从源码看这些枚举值都有对应的常量定义见 pkg/plugin/repository/GlobalPluginRepository.go插件类型SHARED、PRESET脚本类型SHELL、DOCKERFILE、CONTAINER_IMAGE映射类型FILE_PATH、DOCKER_ARG、PORT步骤类型INLINE、REF_PLUGIN变量类型INPUT、OUTPUT取值类型NEW、FROM_PREVIOUS_STEP、GLOBAL条件类型SKIP、TRIGGER、SUCCESS、FAIL变量格式STRING、NUMBER、BOOL、DATE。每张业务表都携带审计字段created_on、created_by、updated_on、updated_by与软删除标记deletedf表示未删除、t表示已删除这与仓库全局的审计与软删除规范保持一致。步骤 1在 plugin_metadata 中登记插件元数据任何插件都从一条元数据记录开始。参照真实插件 Terraform CLI 的写法见 scripts/sql/198_terraform_cli.up.sql插入语句如下INSERT INTO plugin_metadata (id, name, description, type, icon, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_metadata), name_of_plugin, description_of_plugin, SHARED, link_to_icon, f, now(), user_id, now(), user_id);字段说明id使用序列id_seq_plugin_metadata自增生成该序列在 建表脚本 中创建name插件名称服务层校验要求长度在 3~100 之间见 pkg/plugin/bean/bean.go 中的validate:required,min3,max100,global-entity-name同名的插件会直接报错PluginWithSameNameExistErrortypeSHARED或PRESET。PRESET指随产品内置的预置插件如 K6、Sonarqube、Terraform CLISHARED指共享给所有用户的自建插件icon图标链接服务层会实际请求该链接并校验其可访问性与大小上限 2MB见 pkg/plugin/bean/bean.go 的PluginIconMaxSizeInBytes与 pkg/plugin/utils/utils.go 的FetchIconAndCheckSizedeleted软删除标记f表示有效。注意当前版本的仓库还引入了插件版本化能力plugin_parent_metadata、plugin_metadata中的plugin_version、is_latest等字段定义见 GlobalPluginRepository.go。通过CreatePluginOrVersions接口创建插件时会为插件生成唯一标识identifier由插件名小写化并替换特殊字符得到见 utils.go 的CreateUniqueIdentifier并校验版本号遵循 SemVer 规范ValidatePluginVersion。因此更推荐通过 UI 或 API 完成元数据创建本文的 SQL 方式更适用于理解数据模型与批量初始化。步骤 2为插件添加标签plugin_tag标签用于对插件分类如Load testing、Code quality、Security。若目标标签尚不存在先插入标签本身并记录其id供步骤 3 使用INSERT INTO plugin_tag (id, name, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_tag), name_of_tag, f, now(), user_id, now(), user_id);初始种子数据在 49_plugin_integration.up.sql 中可以看到三个预置标签Load testing、Code quality、Security的 id 分别为 1、2、3。步骤 3建立插件与标签的关联plugin_tag_relationplugin_tag_relation是标签与插件的多对多关联表外键定义见 建表脚本。一个插件可以关联多个标签每条关联单独一行INSERT INTO plugin_tag_relation (id, tag_id, plugin_id, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_tag_relation), id_from_table-plugin_tag, id_from_table-plugin_metadata, now(), user_id, now(), user_id);从真实数据看Sonarqube 插件同时关联了Code quality与Security两个标签见 49_plugin_integration.up.sql印证了一个插件可挂多个标签的规则。服务层在列出插件时会通过getPluginIdTagsMap将标签聚合到插件上见 pkg/plugin/GlobalPluginService.go。步骤 4创建步骤执行脚本与映射plugin_pipeline_script4.1 插入脚本本体对于插件中的每一个自定义INLINE步骤都需要先创建执行脚本INSERT INTO plugin_pipeline_script (id, script, store_script_at, mount_code_to_container, mount_code_to_container_path, mount_directory_from_host, type, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_pipeline_script), script, mount_code_at-field-on-UI, true/false, path_if_yes_in_previous_field, true/false, SHELL/CONTAINER_IMAGE, f, now(), user_id, now(), user_id);字段说明对应结构体定义见 GlobalPluginRepository.goscript脚本内容。SHELL类型即一段 shell 脚本真实示例见 Terraform 插件的脚本198_terraform_cli.up.sql其中通过环境变量TERRAFORM_IMAGE、ARGS、WORKINGDIR等驱动docker run执行terraform init与后续命令typeSHELL或CONTAINER_IMAGE另有DOCKERFILE常量见 常量定义。CONTAINER_IMAGE类型的脚本直接以镜像路径 参数运行mount_code_to_containermount_code_to_container_path是否将代码目录挂载进容器以及挂载目标路径mount_directory_from_host是否挂载宿主目录store_script_at脚本存放位置后续版本还扩展了container_image_path、image_pull_secret_typeCONTAINER_REGISTRY/SECRET_PATH、image_pull_secret等字段用于指定容器镜像与拉取密钥。4.2 为脚本补充路径/参数/端口映射若脚本存在文件路径映射mount_directory_from_host场景、命令参数或端口映射则需要逐条写入script_path_arg_port_mappingINSERT INTO script_path_arg_port_mapping (id, type_of_mapping, file_path_on_disk, file_path_on_container, command, args, port_on_local, port_on_container, script_id, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_script_path_arg_port_mapping), FILE_PATH/DOCKER_ARG/PORT, file_path_mapping_entry, file_path_mapping_entry, command, array_of_args, port_on_local, port_on_container, id-from-script-table, f, now(), user_id, now(), user_id);要点type_of_mapping取值FILE_PATH、DOCKER_ARG、PORT常量见 GlobalPluginRepository.goargs是 PostgreSQL 数组类型建表时定义为text[]见 49_plugin_integration.up.sql对应 Go 结构体中的Args []string一个脚本存在多个映射文件或端口时每条映射都需要单独一行记录外键script_id指向plugin_pipeline_script.id见 建表约束。服务层读取脚本时会将映射聚合到脚本下GetScriptMappingDetailByScriptId与GetScriptMappingDetailByScriptIds见 GlobalPluginRepository.go。步骤 5创建插件步骤plugin_step脚本就绪后即可创建步骤INSERT INTO plugin_step (id, plugin_id, name, description, index, step_type, script_id, ref_plugin_id, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_step), id-from-plugin_metadata, name_of_step, description_of_step, index_of_step-start-from-1, INLINE/REF_PLUGIN, id_from_script_table, id-of-ref-plugin-get-from-plugin_metadata, f, now(), user_id, now(), user_id);字段说明结构体见 GlobalPluginRepository.goplugin_id所属插件 id来自plugin_metadataindex步骤在插件内的顺序从 1 开始后续步骤可依赖前一步骤dependent_on_step字段保存前一步名称step_typeINLINE自带脚本执行或REF_PLUGIN引用另一个插件作为步骤。REF_PLUGIN时填写ref_plugin_idscript_id为空INLINE时反之版本化后还扩展了output_directory_path步骤输出目录text[]数组、dependent_on_step等字段。真实示例中Terraform 插件只有一个 INLINE 步骤198_terraform_cli.up.sql其script_id直接取自序列id_seq_plugin_pipeline_script的last_value保证了步骤与刚插入的脚本一一对应。在流水线侧pipeline_stage_step表复用了相同的步骤模型当用户在流水线阶段中添加步骤时INLINE 步骤会按同样方式创建脚本与映射PipelineStageService.go 的CreateStageSteps中先创建脚本再创建步骤REF_PLUGIN 步骤则会深拷贝引用插件的定义BuildRefPluginStepData见 PipelineStageService.go。步骤 6创建步骤变量plugin_step_variable步骤中的输入/输出变量是插件的核心数据契约INSERT INTO plugin_step_variable (id, plugin_step_id, name, format, description, is_exposed, allow_empty_value, variable_type, value_type, previous_step_index, default_value, variable_step_index, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_step_variable), id-from-plugin_step, name_of_variable, STRING/BOOL/DATE/NUMBER, description_of_variable, true/false, true/false, INPUT/OUTPUT, NEW/FROM_PREVIOUS_STEP/GLOBAL, index_of_step_of_ref_variable, default_value-nullable, index_of_step_variable_is_present_in, f, now(), user_id, now(), user_id);字段语义结构体见 GlobalPluginRepository.goformat变量格式STRING/NUMBER/BOOL/DATEvariable_typeINPUT用户在流水线中填写或OUTPUT步骤执行后产生供后续步骤消费value_type值的来源NEW用户新填写的值、FROM_PREVIOUS_STEP引用前序步骤输出、GLOBAL引用 Devtron 全局变量is_exposed是否暴露给流水线用户填写对于 REF_PLUGIN 引用场景只有is_exposed true的变量会展示给用户allow_empty_value是否允许空值服务层校验见 pkg/plugin/bean/bean.go 的IsEmptyValueAllowed/IsEmptyValue输出变量恒允许空值previous_step_index当value_type FROM_PREVIOUS_STEP时指明被引用变量所在步骤的 indexdefault_value可空变量未填值时使用variable_step_index变量所在步骤的 index版本化后还扩展了variable_step_index_in_pluginREF_PLUGIN 场景下变量在插件内的步骤 index与reference_variable_name引用变量的名称。真实示例198_terraform_cli.up.sql中Terraform 插件的步骤 1 定义了 8 个 INPUT 变量HTTP_PROXY、HTTPS_PROXY、NO_PROXY、TERRAFORM_IMAGE、WORKINGDIR、ARGS、RUN_TERRAFORM_INITBOOL默认值true、ADDITIONALPARAMS全部为NEW类型——这正好对应脚本中引用的环境变量。另外Devtron 还提供了一批开箱即用的全局变量value_type GLOBAL时可引用定义在 pkg/plugin/GlobalPluginService.go 的GetAllGlobalVariables中例如CI 阶段WORKING_DIRECTORYgit 材料克隆目录仓库 home 路径 WORKING_DIRECTORY CHECKOUT_PATH、DOCKER_IMAGE_TAG、DOCKER_REPOSITORY、DOCKER_REGISTRY_URL、DOCKER_IMAGE、TRIGGER_BY_AUTHOR、APP_NAME/JOB_NAMECD 阶段CD_PIPELINE_ENV_NAME、CD_PIPELINE_CLUSTER_NAME、DOCKER_IMAGE、APP_NAME、DEPLOYMENT_RELEASE_ID、DEPLOYMENT_UNIQUE_ID、CD_TRIGGERED_BY、CD_TRIGGER_TIME、GIT_METADATA含GIT_COMMIT_HASH、GIT_SOURCE_TYPE、GIT_SOURCE_VALUE、APP_LABEL_METADATA、CHILD_CD_METADATA。步骤 7为变量创建执行条件plugin_step_condition条件用于控制步骤在满足/不满足某个变量取值时的行为INSERT INTO plugin_step_condition (id, plugin_step_id, condition_variable_id, condition_type, conditional_operator, conditional_value, deleted, created_on, created_by, updated_on, updated_by) VALUES (nextval(id_seq_plugin_step_condition), id-from-plugin_step, id-of-variable-on-which-condition-is-applied, SKIP/TRIGGER/SUCCESS/FAILURE, conditional_operator, conditional_value, f, now(), user_id, now(), user_id);字段说明结构体见 GlobalPluginRepository.gocondition_variable_id被施加条件的变量 id指向plugin_step_variable.id外键见 建表脚本condition_typeSKIP跳过该步骤、TRIGGER触发该步骤、SUCCESS成功条件、FAIL失败条件——注意原文档写的是FAILURE而源码常量定义为FAILGlobalPluginRepository.go建表注释中同时出现两种写法实际入库应以源码常量为准conditional_operator比较运算符如等于、不等于等conditional_value比较的目标值。服务层在创建/更新插件时会对条件做差分处理新增create、删除delete与更新update三种场景分别处理见 pkg/plugin/GlobalPluginService.go 的saveDeepStepVariableConditionsData、deleteDeepStepVariableConditionsData、updateDeepStepVariableConditionsData。流水线阶段步骤同样拥有独立的条件表pipeline_stage_step_condition运行时通过BuildVariableAndConditionDataByStepId将变量与条件组装成 DTOPipelineStageService.go。补充声明插件适用的阶段plugin_stage_mapping部分场景还需要把插件绑定到特定阶段类型。plugin_stage_mapping的建表与初始化见 scripts/sql/159_create_plugin_stage_mapping.up.sqlstage_type取值对应常量CI(1)、CD(2)、CI_CD(3)、SCANNER(4)GlobalPluginRepository.go。例如 Terraform 插件被映射到stage_type 0对应 CI见 198_terraform_cli.up.sql。服务层通过GetMetaDataForPluginWithStageType按阶段过滤插件列表。从数据到执行变量的运行时流转创建好的插件变量最终会随工作流请求下发到 CI runner。仓库配套文档 developers-guide/PluginIntegrationVariableInfoFlow.md 给出了精确的映射逻辑流水线步骤变量Inline 场景——ValueType到 runner 侧VariableType的映射NEW → VALUE GLOBAL → REF_GLOBAL FROM_PREVIOUS_STEP → 若 ReferenceVariableStage POST_CI 则 REF_POST_CI若 PRE_CI 则 REF_PRE_CI插件变量RefPlugin 场景随refPlugins字段下发——FROM_PREVIOUS_STEP一律映射为REF_PLUGIN。Value 的取值规则Inline 步骤用户有值则取用户值否则取默认值Inline 无默认值概念空即为空RefPlugin若变量无默认值则取用户值因为必须暴露若有默认值且变量已暴露则用户值保存在pipeline_stage_step_variable中取用户值否则取默认值。这套逻辑保证了插件作者定义的默认值与流水线用户填写的覆盖值在运行时正确合流是插件体系可用性的关键一环。创建插件后的验证清单完成 7 个步骤后可对照以下清单检查数据完整性plugin_metadata中存在一条deleted f的插件记录且名称/图标通过服务层校验标签与插件关联plugin_tag_relation正确插件列表页可看到对应分类每个INLINE步骤都有对应的plugin_pipeline_script脚本引用的每个环境变量都已在plugin_step_variable中定义对比 Terraform 示例存在文件/端口映射时script_path_arg_port_mapping中每条映射独立一行且script_id正确REF_PLUGIN步骤的ref_plugin_id指向真实存在的插件需要控制执行时机时plugin_step_condition的condition_variable_id指向真实变量condition_type使用SKIP/TRIGGER/SUCCESS/FAIL需要限定使用阶段时在plugin_stage_mapping中声明stage_type。如需在代码层面验证插件装配逻辑可从 pkg/plugin/GlobalPluginService.go插件 CRUD 与列表装配、pkg/plugin/repository/GlobalPluginRepository.go数据模型与仓储接口以及 pkg/pipeline/PipelineStageService.go流水线阶段步骤构建三个文件入手继续深入。赞分享云原生DevOps运维【免费下载链接】devtronThe only Kubernetes dashboard you need项目地址https://gitcode.com/gh_mirrors/dev/devtron点击查看免费下载相关推荐5个步骤轻松搞定AI绘画插件从安装到创作全流程5个步骤轻松搞定AI绘画插件从安装到创作全流程 还在羡慕别人能用AI绘画创作出惊艳作品吗其实AI绘画插件的安装和使用比你想象的要简单得多今天我就带你用最轻AI 应用媒体生成本地部署rsuite Steps 步骤条组件完全指南从基础用法到动态流程编排rsuite Steps 步骤条组件完全指南从基础用法到动态流程编排 本指南以 rsuite 官方文档 Steps 步骤条组件文档 https://link.前端UI组件Obsidian Git插件完全指南从安装到高级使用的7个关键步骤你是否曾在编辑重要笔记时担心数据丢失是否希望像程序员一样管理你的知识库版本Obsidian Git插件正是你需要的解决方案。作为Obsidian社区中最受欢开发工具版本控制上一篇【亲测免费】 探秘未来游戏体验GPCS4 PlayStation 4 模拟器下一篇Manga OCR技术培训营实战型OCR开发人才培养创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI资讯聚合系统实战:从信息源管理到自动摘要的完整链路

AI资讯聚合系统实战:从信息源管理到自动摘要的完整链路

1. 当"日报"变成一种产品:AI资讯聚合的底层逻辑做AI资讯聚合这件事,我前前后后折腾了快两年。最早只是给自己用——每天要刷十几个信息源,论文、模型发布、开源项目、行业动态,刷完一圈两个小时没了,效率极低…

2026/10/12 5:18:06 阅读更多 →
Nextcloud Android 导航重构实战:将 DrawerActivity 页面平滑迁移到 NavigatorActivity + Fragment 架构

Nextcloud Android 导航重构实战:将 DrawerActivity 页面平滑迁移到 NavigatorActivity + Fragment 架构

移动开发企业应用 【免费下载链接】android 📱 Nextcloud Android app 项目地址: https://gitcode.com/gh_mirrors/andr/android 点击查看 免费下载 本篇技术指南基于 Nextcloud Android 客户端仓库(.claude/skills/android-activity-to-nav…

2026/10/12 5:18:06 阅读更多 →
mlpack 嵌入式交叉编译环境搭建:supported_boards 支持的架构清单与工具链配置指南

mlpack 嵌入式交叉编译环境搭建:supported_boards 支持的架构清单与工具链配置指南

人工智能机器学习深度学习 【免费下载链接】mlpack mlpack: a fast, header-only C machine learning library 项目地址: https://gitcode.com/gh_mirrors/ml/mlpack 点击查看 免费下载 mlpack 是一个以效率为核心、header-only 设计的 C 机器学习库,非…

2026/10/12 5:18:06 阅读更多 →

最新新闻

有害气体控制洁净工程的底层逻辑:从过滤到吸附,从压差到监测

有害气体控制洁净工程的底层逻辑:从过滤到吸附,从压差到监测

空气里最危险的不是脏,而是失控:有害气体控制洁净工程的底层逻辑干了这么多年洁净工程,我越来越觉得“洁净”这个词会误导人。很多人一听到洁净室,想到的就是无尘、高等级过滤、白大褂和干干净净的地板,下意识把“颗粒…

2026/10/12 6:03:33 阅读更多 →
Pygame乒乓球游戏开发实战:从游戏循环到碰撞检测的完整指南

Pygame乒乓球游戏开发实战:从游戏循环到碰撞检测的完整指南

简介:游戏循环是几乎所有实时游戏的心跳,它决定了每一帧里输入、更新与渲染的执行顺序。碰撞检测则负责回答“物体是否重叠”这个基本问题,而引擎中那些微妙的物理手感,往往源于对碰撞响应和状态管理的精细控制。乒乓球游戏恰好是…

2026/10/12 6:03:33 阅读更多 →
栈的压入、弹出序列判定算法详解:辅助栈模拟与 Java 实现(YCBlogs 剑指 Offer 系列)

栈的压入、弹出序列判定算法详解:辅助栈模拟与 Java 实现(YCBlogs 剑指 Offer 系列)

教程技术博客文档 【免费下载链接】YCBlogs 技术博客笔记大汇总,包括Java基础,线程,并发,数据结构;Android技术博客等等;常用设计模式;常见的算法;网络协议知识点;部分fl…

2026/10/12 6:03:33 阅读更多 →
C# TCP服务器与客户端双向通信:骨架搭建与避坑指南

C# TCP服务器与客户端双向通信:骨架搭建与避坑指南

简介:这是一份面向C#网络编程初学者的TCP通信示例工程,目标是用一个程序实现TCP客户端与服务器之间的互发消息,并支持在客户端界面点击按钮弹出服务器界面。资源围绕System.Net命名空间下的TcpListener与TcpClient展开,覆盖端口绑…

2026/10/12 6:03:32 阅读更多 →
CodeIgniter 4.7.4 安全与稳定性更新详解:四个安全公告与十余项缺陷修复

CodeIgniter 4.7.4 安全与稳定性更新详解:四个安全公告与十余项缺陷修复

后端Web框架 【免费下载链接】CodeIgniter4 Open Source PHP Framework (originally from EllisLab) 项目地址: https://gitcode.com/gh_mirrors/co/CodeIgniter4 点击查看 免费下载 CodeIgniter 4.7.4(2026 年 7 月 7 日发布)是一次以安全加…

2026/10/12 6:03:32 阅读更多 →
Tortoise-ORM 与 Sanic 集成实战:register_tortoise 生命周期管理全解析

Tortoise-ORM 与 Sanic 集成实战:register_tortoise 生命周期管理全解析

数据库后端 【免费下载链接】tortoise-orm Familiar asyncio ORM for python, built with relations in mind 项目地址: https://gitcode.com/gh_mirrors/to/tortoise-orm 点击查看 免费下载 本文以 Tortoise-ORM 仓库中 Sanic 集成示例 为主线,系统讲解…

2026/10/12 6:02:32 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →