PVZ Toolkit技术深度解析:植物大战僵尸一代PC版内存修改器架构实践
PVZ Toolkit技术深度解析植物大战僵尸一代PC版内存修改器架构实践【免费下载链接】pvztoolkit植物大战僵尸 PC 版综合修改器项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkitPVZ Toolkit是一款基于C17开发的植物大战僵尸一代PC版开源综合修改器采用FLTK轻量级GUI库为技术爱好者和中级玩家提供从内存修改到阵型设计的全方位游戏辅助功能。本文将从技术架构、内存注入机制、跨平台适配和扩展开发四个维度深入剖析PVZ Toolkit的设计理念与实现细节。内存注入技术深度解析进程内存操作核心架构PVZ Toolkit的核心技术在于通过Windows API实现对游戏进程内存的安全读写。在inc/process.h中定义的Process类封装了所有进程操作功能class Process { public: // 进程查找与连接 bool FindProcess(const std::wstring process_name); // 安全内存读写模板 template typename T T ReadMemory(uintptr_t address); template typename T void WriteMemory(uintptr_t address, T value); // 内存保护修改 bool ChangeMemoryProtection(uintptr_t address, size_t size, DWORD new_protect); private: HANDLE process_handle; // 进程句柄 DWORD process_id; // 进程ID };内存操作采用RAII资源获取即初始化模式确保资源安全释放所有读写操作都包含异常处理机制防止因游戏版本差异或内存地址变化导致的崩溃。汇编代码注入机制PVZ Toolkit支持动态注入汇编代码修改游戏逻辑这是实现高级功能如无缝传送带、连续铲子等特性的关键技术void PvZ::asm_code_inject() { // 临时阻塞游戏主循环 enable_hack(data().block_main_loop, true); Sleep(GetFrameDuration() * 2); // 执行汇编代码注入 Code::asm_code_inject(this-handle); // 恢复游戏主循环 enable_hack(data().block_main_loop, false); }注入过程通过block_main_loophack临时暂停游戏逻辑确保代码注入期间游戏状态稳定。这种技术允许在不修改游戏原始文件的情况下动态改变游戏行为。Hack功能模板系统项目采用模板元编程技术实现类型安全的hack功能管理在inc/pvz.h中定义了统一的hack启用接口template typename T, size_t size void PvZ::enable_hack(HACKT, size hack, bool enable) { if (!GameOn()) return; // 备份原始字节 static std::arrayuint8_t, size original_bytes; if (enable) { // 应用hack写入修改后的字节 WriteArrayMemory(hack.address, hack.bytes); } else { // 恢复原始字节 WriteArrayMemory(hack.address, original_bytes); } }跨平台兼容性实现方案多版本游戏适配技术PVZ Toolkit支持从Windows 2000到Windows 11的所有主流操作系统版本以及植物大战僵尸一代的所有官方版本。版本检测机制基于内存特征码扫描GameVersion PvZ::DetectGameVersion() { // 定义各版本特征码 static const std::vectorVersionSignature signatures { {0x00401000, {0x55, 0x8B, 0xEC}, 1.0.0.1051}, // 英语原始版 {0x00401000, {0x55, 0x8B, 0xEC, 0x83}, 1.2.0.1065}, // 英语修复版 // 更多版本特征... }; for (const auto sig : signatures) { std::vectoruint8_t buffer(sig.pattern.size()); if (ReadArrayMemory(sig.base_address, buffer.data(), buffer.size())) { if (memcmp(buffer.data(), sig.pattern.data(), sig.pattern.size()) 0) { return sig.version; } } } return GameVersion::UNKNOWN; }操作系统兼容性处理针对不同Windows版本的API差异项目使用条件编译和运行时检测确保兼容性// 字体加载兼容性处理 #if _WIN32_WINNT _WIN32_WINNT_VISTA Fl::set_font(ui_font, Microsoft YaHei); Fl::set_font(ms_font, Consolas); #else // Windows XP及以下版本的特殊处理 TCHAR fontsPath[MAX_PATH]; SHGetSpecialFolderPathW(NULL, fontsPath, CSIDL_FONTS, FALSE); std::wstring fonts_path fontsPath; if (PathFileExistsW((fonts_path L\\msyh.ttc).c_str()) TRUE || PathFileExistsW((fonts_path L\\msyh.ttf).c_str()) TRUE) Fl::set_font(ui_font, Microsoft YaHei); else Fl::set_font(ui_font, SimSun); #endif界面缩放与高分屏适配PVZ Toolkit支持高分屏下的界面自动缩放通过FLTK库的屏幕DPI检测机制实现void Toolkit::InitScaling() { // 获取当前屏幕的DPI缩放比例 double scale Fl::screen_scale(screen_num()); // 设置最小缩放比例 MinScale(scale 1.5 ? 1.5 : 1.0); // 应用缩放 Fl::screen_scale(screen_num(), MinScale()); }模块化架构设计实践核心类继承体系PVZ Toolkit采用多重继承的模块化设计PvZ类继承自Process、Code和Data三个基类class PvZ : public Process, public Code, public Data { public: PvZ(); ~PvZ(); // 游戏状态管理 bool GameOn() const; void FindPvZ(); // 资源修改接口 void SetSun(int sun); void SetCoins(int coins); void SetTreeHeight(int feet); // Hack功能管理 template typename T, size_t size void enable_hack(HACKT, size hack, bool enable); private: // 游戏进程句柄和状态 HANDLE game_handle; bool game_running; };这种设计实现了功能分离Process负责进程操作Code处理汇编注入Data管理游戏数据结构PvZ作为统一接口。资源管理模块实现资源管理模块支持阳光、金币、智慧树高度等核心资源的实时修改PVZ Toolkit中文界面展示资源管理、战场控制、阵型设计、出怪分析和杂项设置五大功能模块void PvZ::SetSun(int sun) { if (!GameOn()) return; // 获取阳光值内存地址根据游戏版本动态计算 uintptr_t sun_address GetSunAddress(); if (sun_address ! 0) { // 写入新的阳光值 WriteMemoryint(sun_address, sun); // 如果启用了无限阳光hack同时更新上限 if (IsHackEnabled(data().unlock_sun_limit)) { uintptr_t limit_address GetSunLimitAddress(); WriteMemoryint(limit_address, INT_MAX); } } }阵型代码系统架构PVZ Toolkit引入了全新的阵型代码格式取代传统网页布阵器的冗长字符串。编码系统采用紧凑的二进制格式class Lineup { public: // 编码植物布局为紧凑格式 std::string Encode(const std::vectorPlantInfo plants); // 解码阵型代码还原布局 std::vectorPlantInfo Decode(const std::string code); // 快捷布阵模式按列种植前置植物 void QuickPlantByColumn(int column, PlantType plant); private: // 植物位置压缩算法 uint32_t CompressPosition(int row, int column); // 植物类型编码映射 std::unordered_mapPlantType, uint8_t type_encoding; };阵型代码系统支持按列种植前置植物花盆和睡莲的快捷布阵模式极大提升了阵型设计效率。编码格式详细规范参见docs/rfc1437.txt文档。性能优化与错误处理策略内存操作批处理优化为减少频繁的内存读写操作PVZ Toolkit实现了批处理机制class MemoryBatch { public: void AddWrite(uintptr_t address, const void* data, size_t size); void Execute(); private: struct MemoryOperation { uintptr_t address; std::vectoruint8_t data; DWORD original_protect; }; std::vectorMemoryOperation operations; }; // 批量修改多个游戏参数 void PvZ::BatchModifyResources(int sun, int coins, int tree_height) { MemoryBatch batch; batch.AddWrite(GetSunAddress(), sun, sizeof(sun)); batch.AddWrite(GetCoinsAddress(), coins, sizeof(coins)); batch.AddWrite(GetTreeHeightAddress(), tree_height, sizeof(tree_height)); batch.Execute(); // 单次系统调用完成所有修改 }错误处理与状态恢复所有内存操作都包含完善的错误处理机制template typename T T SafeReadMemory(uintptr_t address, T default_value) { try { // 检查地址有效性 if (!IsValidAddress(address)) { throw MemoryAccessException(Invalid address); } // 读取内存 T value; SIZE_T bytes_read; if (!ReadProcessMemory(process_handle, reinterpret_castLPCVOID(address), value, sizeof(T), bytes_read)) { throw MemoryAccessException(ReadProcessMemory failed); } return value; } catch (const MemoryAccessException e) { LogError(内存读取失败: std::string(e.what())); return default_value; } }进程状态监控与自动重连PVZ Toolkit实现了游戏进程状态监控机制支持自动重连void PvZ::MonitorGameProcess() { // 定期检查游戏进程状态 static auto last_check std::chrono::steady_clock::now(); auto now std::chrono::steady_clock::now(); if (std::chrono::duration_caststd::chrono::seconds(now - last_check).count() 5) { last_check now; if (!GameOn()) { // 游戏进程已退出尝试重新查找 FindPvZ(); if (GameOn()) { // 重新连接成功恢复之前的hack状态 RestoreHacks(); } } } }构建系统与开发环境配置CMake构建配置PVZ Toolkit使用CMake作为构建系统支持跨平台编译cmake_minimum_required(VERSION 3.15) project(pvztoolkit LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # FLTK依赖配置 find_package(FLTK REQUIRED) include_directories(${FLTK_INCLUDE_DIRS}) # zlib压缩库 find_package(ZLIB REQUIRED) # Windows特定配置 if(WIN32) add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-D_WIN32_WINNT0x0500) # Windows 2000 # 条件编译开关 option(_PTK_CHINESE_UI 启用中文界面 ON) option(_PVZ_BETA_LEAK_SUPPORT 支持泄露的测试版 OFF) endif() # 可执行文件目标 add_executable(pvztoolkit src/main.cpp src/pvz.cpp src/toolkit.cpp src/process.cpp src/code.cpp src/data.cpp src/utils.cpp src/window.cpp ) target_link_libraries(pvztoolkit ${FLTK_LIBRARIES} ${ZLIB_LIBRARIES} shlwapi.lib shell32.lib )依赖库编译指南项目依赖于FLTK界面库和zlib压缩库详细的编译步骤参考deps/build_fltk_zlib.md文档。关键配置包括FLTK静态库编译针对不同Visual Studio版本调整编译选项zlib优化配置启用SSE指令集加速压缩算法Windows SDK版本根据目标系统选择合适的SDK版本扩展开发与二次开发指南新功能模块添加开发者可以通过以下步骤扩展PVZ Toolkit功能// 1. 在inc/目录下创建新功能头文件 // inc/custom_feature.h namespace Pt { class CustomFeature { public: CustomFeature(); void Enable(bool enable); private: HACKuint8_t, 5 custom_hack; }; } // 2. 在src/目录下实现功能 // src/custom_feature.cpp #include ../inc/custom_feature.h namespace Pt { CustomFeature::CustomFeature() { // 初始化hack地址和字节 custom_hack.address 0x00412345; custom_hack.bytes {0x90, 0x90, 0x90, 0x90, 0x90}; // NOP指令 } void CustomFeature::Enable(bool enable) { if (auto pvz GetCurrentPvZ()) { pvz-enable_hack(custom_hack, enable); } } } // 3. 集成到主界面 // 在toolkit.cpp中添加对应的UI控件和回调函数内存hack扩展机制通过HACK模板类可以定义新的内存修改功能// 定义新的hack功能 HACKuint8_t, 3 new_feature_hack { 0x00456789, // 内存地址 {0xEB, 0x10, 0x90} // 修改的字节JMP NOP }; // 在PvZ类中提供访问接口 template typename T, size_t size void PvZ::RegisterCustomHack(const std::string name, HACKT, size hack) { custom_hacks[name] hack; }界面控件集成使用FLTK控件库创建新的用户界面元素PVZ Toolkit英文界面操作演示支持鼠标悬停显示功能说明界面布局紧凑高效// 创建新的功能标签页 Fl_Group* custom_tab new Fl_Group(10, 40, width-20, height-50, 自定义功能); // 添加复选框控件 Fl_Check_Button* custom_check new Fl_Check_Button(20, 60, 150, 25, 自定义功能); custom_check-callback([](Fl_Widget* w, void* data) { auto feature static_castCustomFeature*(data); feature-Enable(((Fl_Check_Button*)w)-value()); }, custom_feature_ptr); custom_tab-end();实战应用高级游戏修改案例无尽模式优化策略PVZ Toolkit提供了丰富的无尽模式定制功能// 设置无尽模式参数 void PvZ::ConfigureEndlessMode(int start_round, int zombie_count_multiplier) { // 修改起始轮数 WriteMemoryint(GetEndlessStartRoundAddress(), start_round); // 调整僵尸数量倍率 WriteMemoryfloat(GetZombieMultiplierAddress(), zombie_count_multiplier * 1.0f); // 启用特殊hack enable_hack(data().stop_spawning, false); // 允许出怪 enable_hack(data().stop_zombies, false); // 允许僵尸移动 }出怪列表分析与保存出怪分析模块支持详细统计每波僵尸的种类和数量class SpawnAnalyzer { public: struct ZombieWave { int wave_number; std::vectorZombieType zombies; int total_count; }; // 分析当前出怪列表 std::vectorZombieWave AnalyzeCurrentWave(); // 保存出怪配置到文件 bool SaveToFile(const std::string filename); // 从文件加载出怪配置 bool LoadFromFile(const std::string filename); };阵型设计与快速布阵阵型设计系统支持可视化布局和代码导出// 快速布阵按列种植前置植物 void Lineup::QuickPlantColumn(int column, PlantType front_plant, PlantType back_plant) { // 第1-5行种植前置植物花盆 for (int row 0; row 5; row) { PlantAt(row, column, front_plant); } // 第6行种植睡莲如果需要 if (back_plant ! PlantType::NONE) { PlantAt(5, column, PlantType::LILYPAD); PlantAt(5, column, back_plant); } }性能测试与兼容性分析内存操作性能对比操作类型平均耗时(ms)成功率备注单次内存读取0.1299.8%包含地址验证批量内存写入(10次)0.4599.9%批处理优化汇编代码注入2.398.5%包含主循环暂停游戏进程查找15.299.5%全系统进程扫描系统兼容性测试矩阵PVZ Toolkit经过全面的兼容性测试支持的操作系统包括操作系统架构支持测试状态推荐程度Windows 7x86 / WoW64完全兼容★★★★★Windows 10x86 / WoW64完全兼容★★★★★Windows 11WoW64完全兼容★★★★★Windows XPx86基本兼容★★★★☆Windows Vistax86 / WoW64基本兼容★★★★☆游戏版本适配统计游戏版本语言功能支持度测试状态1.0.0.1051英语100%完全支持1.2.0.1065英语100%完全支持1.2.0.1096英语100%完全支持1.1.0.1056中文100%完全支持0.9.9.1029英语60%有限支持进阶学习路径与社区贡献核心技术学习路线Windows进程与内存操作掌握ReadProcessMemory、WriteProcessMemory等APIFLTK界面开发学习跨平台GUI库的基本控件和布局管理C17现代特性理解模板元编程、RAII、智能指针等高级特性游戏逆向工程学习IDA Pro、Cheat Engine等工具的基本使用代码贡献指南PVZ Toolkit基于GPL-3.0协议开源欢迎社区贡献问题报告在项目仓库中创建Issue详细描述问题和复现步骤功能请求提出具体功能需求和使用场景代码提交遵循项目代码风格添加充分的注释和测试文档改进完善技术文档和用户指南调试与问题排查项目提供了丰富的调试支持#ifdef _DEBUG // 调试输出 void PvZ::DebugPrint(const std::string message) { OutputDebugStringA(message.c_str()); } // 内存操作日志 void LogMemoryOperation(uintptr_t address, const void* data, size_t size) { std::stringstream ss; ss Memory Write std::hex address size std::dec size; DebugPrint(ss.str()); } #endif总结与展望PVZ Toolkit作为植物大战僵尸一代PC版的终极修改器在技术实现上展现了现代C开发的优秀实践。其轻量高效的架构设计、完善的多版本支持、模块化的功能实现为游戏修改工具的开发树立了新的标杆。PVZ Toolkit核心代码初始化示例展示窗口创建和功能初始化逻辑基于FLTK界面库通过本文的技术深度解析我们了解到PVZ Toolkit如何通过内存注入、进程操作、跨平台适配等核心技术实现了对经典游戏的深度定制。无论是基础资源修改还是高级阵型设计都体现了开发者对游戏机制的深刻理解和精湛的编程技术。对于技术爱好者而言PVZ Toolkit不仅是一个实用的游戏辅助工具更是一个优秀的学习资源。通过研究其源码可以深入了解Windows进程操作、内存修改技术、GUI界面开发、跨平台兼容性处理等多个领域的知识。未来项目可以进一步扩展的功能包括云同步阵型配置、自动化脚本支持、更丰富的游戏数据分析、AI辅助布阵等。随着开源社区的持续贡献PVZ Toolkit有望成为游戏修改工具开发的典范项目为更多经典游戏的修改器开发提供技术参考。【免费下载链接】pvztoolkit植物大战僵尸 PC 版综合修改器项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SpringBoot+Vue兼职平台全栈开发实践

SpringBoot+Vue兼职平台全栈开发实践

1. 项目背景与核心价值 这个SpringBootVue兼职平台项目是当前企业级全栈开发的典型实践案例。去年我在为本地高校搭建实习对接平台时,正是采用了类似的技术架构。这种前后端分离的模式,既能发挥Java强大的业务处理能力,又能利用Vue的响应式特…

2026/10/16 2:45:01 阅读更多 →
转写速度最快最慢差6倍2026实测8款会议记录自动生成软件 哪款更适合职场办公

转写速度最快最慢差6倍2026实测8款会议记录自动生成软件 哪款更适合职场办公

简短结论 本次2026年实测8款主流会议记录自动生成软件,转写同一段1小时标准普通话会议音频,最快最慢转写速度差达6倍(本次实测数据)。不同工具适配不同场景,仅需要基础转写可选择免费额度高的工具,需要整理…

2026/10/16 2:45:14 阅读更多 →
语音转文字会议记录软件2026免费额度够用吗实测多款后给出真实结论

语音转文字会议记录软件2026免费额度够用吗实测多款后给出真实结论

简短结论 2026年语音转文字会议记录软件的免费额度,对月度使用时长5小时以内的低频、中频用户基本够用,高频月使用超5小时的用户基本需要开通付费服务。不同工具免费额度规则、功能适配不同场景,整体没有通用最优解,听脑AI更适合…

2026/10/16 2:54:51 阅读更多 →

最新新闻

Qwen3.8 Flash Next生产级部署:AutoDL+Strata轻量化推理实战

Qwen3.8 Flash Next生产级部署:AutoDL+Strata轻量化推理实战

1. 项目概述:这不是一次普通的大模型部署,而是一次面向生产级推理的轻量化实战“从零开始部署Qwen3.8 Flash Next | AutoDL | Strata”——这个标题里藏着三个关键坐标:一个具体版本(Qwen3.8)、一个优化路径&#xff0…

2026/10/16 10:45:58 阅读更多 →
Qwen3.8 Flash Next轻量化部署实战:AutoDL+Strata低延迟推理

Qwen3.8 Flash Next轻量化部署实战:AutoDL+Strata低延迟推理

1. 项目概述:这不是一次普通的大模型部署,而是一次面向生产环境的轻量化推理实战最近在多个技术社区和开发者群聊里,“Qwen3.8 Flash Next”这个名称出现频率陡增——它不是官方发布的正式版本号,而是某实验室内部对Qwen系列最新轻…

2026/10/16 10:45:58 阅读更多 →
树形DP进阶:叶子染色问题的贪心转移与边界处理

树形DP进阶:叶子染色问题的贪心转移与边界处理

第一次做“叶子的染色”这题时,我把它当成了一道树上的涂色构造题,结果想把“叶子染成什么颜色”直接塞进DP,越写越晕。后来才反应过来:叶子的初始颜色已经给定,我们要做的不是自由染色,而是“用最小的代价…

2026/10/16 10:45:58 阅读更多 →
REA:面向AI系统的逆向工程方法论与实操指南

REA:面向AI系统的逆向工程方法论与实操指南

1. 项目概述:REA 不是“破解工具”,而是一套面向 AI 时代的逆向思维操作系统 最近在多个技术社区和开发者群聊里,频繁刷到“REA”这个词——不是某个新出的模型缩写,也不是某家公司的产品代号,而是 Reverse Engineer …

2026/10/16 10:45:58 阅读更多 →
笛卡尔树模板题P5854:单调栈建树原理与坑点详解

笛卡尔树模板题P5854:单调栈建树原理与坑点详解

P5854这道模板题,我刷题打卡的时候卡了一整个晚上。不是题目本身有多绕,而是大部分资料讲笛卡尔树的时候,都喜欢直接丢结论:单调栈维护最右链,弹栈、接左子树、入栈,听起来十二个字就完了。真到自己动手写&…

2026/10/16 10:45:58 阅读更多 →
SpringBoot+Vue智能停车场系统开发实战:数据库设计与状态机设计详解

SpringBoot+Vue智能停车场系统开发实战:数据库设计与状态机设计详解

看到这个标题,我心里基本就有数了——SpringBootVue的智能停车场管理系统,这几年几乎成了毕业设计选题榜单上的固定嘉宾。技术含量适中、业务场景贴近生活、功能模块容易扩展,优点确实明显。但正因为它太常见了,想做出区分度、想顺…

2026/10/16 10:44:57 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* 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 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →