Ghidra 11.0.2 实战指南:安装配置、反编译定位与无头批处理
简介Ghidra 11.0.2 是面向软件逆向工程师、安全研究员与恶意代码分析人员的开源逆向工程框架支持 Windows、Linux、macOS 等多种平台涵盖反汇编、反编译、脚本扩展与自动化分析等核心能力适用于固件分析、病毒排查和漏洞研究等场景。压缩包为 Linux 环境下的 zip 格式共 2000 个文件大小约 393.79MB以 Python/Java 脚本、C/C 源码、配置文件及文档为主便于用户快速部署并利用内置插件或自定义脚本开展分析。包内还包含可执行文件与动态库可直接运行或二次编译整体结构清晰适合需要完整离线工具链的实操场景。已有 2771 人学习下载对希望深入 SRE 流程、提升逆向效率的开发者而言这份资源能省去自行编译的麻烦直接获得功能齐备的 Ghidra 环境与示例脚本便于快速上手与分析实践。1. Ghidra 11.0.2 到底新在哪从一个反编译翻车现场说起如果你经常和二进制打交道大概率碰到过这样的场景一个陌生固件摆在面前商业反编译器的签名匹配不上函数识别得七零八落反编译出来的代码像天书。换成 Ghidra 11.0.2 之后同样一份样本的导入和分析要顺利得多。Ghidra 是 NSA 开源的综合逆向工程框架导入器、反编译器、调试器、脚本引擎全都有11.0.2 是 11.0 系列里修了一轮反编译器 Bug 的稳定版本安装方式没变但值得重新评估一次。这篇笔记按我自己的落地流程写先讲为什么要选它、怎么装、怎么用反编译器定位函数再讲脚本化批处理和几个真实的翻车点最后给你一个能直接抄走的批处理技巧。适合手里有固件、样本、插件开发需求或者想替换昂贵商业工具的从业者。2. 安装 Ghidra 11.0.2JDK 17、解压启动与第一个项目的四个必调参数2.1 汉化版和原版怎么选打包版的风险与英文界面的安全感搜索 ghidra 的时候总能看到不少标着“ghidra汉化版”的打包资源。我一般不建议直接拿来当生产工具。原因有两个第一打包者可能改过脚本目录、内置 classpath 或者默认配置文件后续你按社区教程装插件、跑脚本时行为会跟官方版不一致出错之后很难定位是插件问题还是改包问题。第二Ghidra 的操作路径其实很固定常用功能就那几个菜单英文界面反而方便你去搜错误信息和查官方文档因为网上几乎所有的排错经验都是基于英文原版界面的。如果你实在需要中文界面更可控的做法是自己做翻译资源文件或者只汉化菜单清单不要拿整个汉化包替换到生产环境。这里有个判断标准凡是安装步骤里出现“先装主程序再覆盖补丁”的都要留个心眼。Ghidra 的官方发布就是一个 zip 包解压即用根本不需要覆盖式的“补丁”。改过的东西越多升级 11.0.2 或者后续版本时血泪经验就越多。2.2 JDK 17 安装与启动脚本两个环境变量和一组内存参数Ghidra 11.0.2 对 Java 的要求是 JDK 17注意不是 8 也不是 11。你用旧版本项目文件时可能还用着 JDK 11升级之后启动脚本自带的环境检测会直接失败。先确认当前环境java -version # 期望输出类似openjdk version 17.0.10 或 java version 17 # 如果版本号是 1.8 或 11需要先安装 JDK 17安装完 JDK 之后建议显式设置JAVA_HOME不要让系统自己去猜。Linux 和 macOS 下我一般这样写export JAVA_HOME/usr/lib/jvm/java-17-openjdk-amd64 export PATH$JAVA_HOME/bin:$PATH这段的目的是让 Ghidra 的启动脚本能稳定找到 Java。特别是 macOS 上如果装了多个 JDK系统默认的java可能还是旧版本启动脚本就会莫名失败。Windows 用户则在“系统属性 - 环境变量”里新建JAVA_HOME值填 JDK 17 的安装目录再把%JAVA_HOME%\bin加到PATH。解压官方 zip 之后进入目录找到ghidraRunLinux/macOS或者ghidraRun.batWindows直接运行即可。首次启动会比较慢因为要初始化工作区。这里有一个值得提前调的参数默认内存上限对大型固件不够用。打开support/launch.properties找到VMARGS一行把-Xmx调高例如-Xmx4G同时建议加上-Xss16M给足线程栈否则后面跑复杂函数反编译时容易出现栈溢出。这一步属于“不调没事调了能少踩一个坑”的典型。2.3 新建项目、导入二进制与自动分析四个必调分析选项启动进入主界面后第一步是建项目。菜单File - New Project选Non-Shared Project项目文件会存在你指定的目录注意这个目录不要放在中文路径下否则部分脚本解析路径时会出问题。项目建好之后通过File - Import File选择要分析的样本。导入时 Ghidra 会自动检测文件格式和架构。对大多数固件来说它能正确识别 ELF、PE 和常见 Mach-O。识别不了的时候就要手动选语言嵌入式 ARM 固件一般是ARM:LE:32:v764 位 ARM 是AARCH64:LE:64:v8A。选错语言会让反编译结果完全不可读这一条后面避坑章节还会提。导入完成后会弹出分析确认框点Analyze开始自动分析。分析选项里默认开启的项目基本够用但有四个值得手动确认。我用一张表说明我的习惯分析选项默认状态我的建议原因Function Finding开开识别函数边界是后续所有分析的基础Decompiler Parameter ID开开改善伪代码里的参数命名能让反编译结果更像手写 CShared Return Calls关关开启后分析明显变慢对普通样本帮助有限Stack Analysis开开识别局部变量和栈帧布局关了之后伪代码会很难读分析耗时取决于样本大小和 CPU 性能。一个几 MB 的固件在普通笔记本上可能要几分钟到十几分钟。状态栏有进度条看到它走完再开始看反编译结果中途打断容易留下不完整的函数列表。分析完成后左侧的 Symbol Tree 里会出现函数列表这就是你接下来工作的主战场。3. 用反编译器定位关键代码字符串引用、伪代码阅读与符号修复的完整路径3.1 从 Listing 到伪代码反编译器的最小使用路径Ghidra 最值钱的部分就是它的反编译器。在 Symbol Tree 里双击任意函数右侧 Listing 窗口会跳到函数入口然后在函数名上右键选择Decompile Function底部或右侧会打开 Decompiler 窗口显示这个函数的 C 风格伪代码。很多新手拿到伪代码后第一反应是复制出来直接用。我建议先别急花两分钟看一下整体结构函数开头通常是栈帧初始化和参数读取中间是控制流末尾是返回值处理。Ghidra 的伪代码本质是反编译器内部中间表示的重构结果不是真实的 C 源码所以变量名、结构体都很粗糙。但它已经把地址、寄存器、栈偏移做了抽象阅读效率远高于逐行看汇编。这里有一个习惯性的操作顺序先看函数列表里哪些函数名字能对上已知符号比如memcpy、strlen这类库函数再对可疑函数做反编译最后再回 Listing 里确认关键指令。反编译器能做的是告诉你“这段代码大概在干什么”但它不会告诉你“这个分支为什么存在”所以伪代码和汇编要交替着看。实际分析时我一般会在 Decompiler 窗口里右键变量直接重命名、改类型而不是回到 Listing 手工操作这样伪代码的可读性提升非常快。# 说明这里没有可独立运行的脚本描述的是界面操作 # 操作路径Symbol Tree - 双击函数 - 右键函数名 - Decompile Function # 在 Decompiler 窗口内选中变量 - 右键 - Set Variable Name / Set Data Type这段操作没有对应命令但它是反编译器使用里最核心的交互路径。Set Variable Name 相当于给变量重新命名比如把local_8改成buf_lenSet Data Type 可以把一个undefined4改成uint或者自定义结构体指针改完之后整个函数的可读性会上一个台阶。3.2 用字符串和交叉引用快速定位关键函数面对一个没有符号表的固件最实用的入口是字符串。菜单Window - Strings打开字符串窗口按 CtrlF 搜索协议关键字、日志关键字、路径关键字。找到一个有业务含义的字符串后点击它再右键选择References - Show References to Address就能看到哪个函数引用了这个地址跳过去继续反编译。这个路径对网络设备固件和嵌入式固件尤其好用。厂商 SDK 编译出来的二进制通常会保留完整的日志输出比如login failed、httpd started、command not found。这些字符串指向的函数往往就是协议处理逻辑的入口。从字符串倒推到函数比从头开始逐条阅读汇编要快得多。交叉引用窗口里会列出引用地址、引用指令、引用所在函数。这里有个细节同一个字符串可能被多处引用比如错误提示会被多个分支共用。遇到这种情况把每个引用点都打开看一下通常只有一处是真正的核心逻辑其他只是错误处理。快速判断的方法是看引用点的上下文指令如果前后有比较寄存器、跳转指令那大概率是条件分支逻辑如果只是压栈然后调用输出函数那说明是报错路径优先级可以往后放。3.3 手动修复符号重命名、结构体与入口点的处理固件分析里符号修复是跑不掉的体力活。函数重命名在 Ghidra 里很简单在 Decompiler 窗口顶部点击函数名按 F2 进入编辑状态直接改名字回车确认。也可以在 Symbol Tree 里右键选择Rename Function。命名规则我建议用“功能 模块”的格式比如parse_http_header、crypto_aes_init方便后续在函数列表里快速过滤。比命名更麻烦的是结构体。Ghidra 自带的数据类型管理器在Window - Data Type Manager里面可以创建Structure。选中一段连续内存区域右键选择Create StructureGhidra 会根据已有字段大小自动切分但切分结果经常是错的。我一般会先根据反编译结果推断字段类型如果伪代码里出现*(int *)(ptr 4)那说明偏移 4 处是一个 int如果有*(char *)(ptr 8)偏移 8 处是 char。按这个推断手工编辑结构体字段类型再回到伪代码里把变量类型改成这个结构体指针后续字段访问就会变成ptr-field_name可读性瞬间就不一样了。还有一类特殊入口点需要手工处理。Cortex-M 系列固件的向量表第一项是栈指针第二项是复位入口Reset_Handler。Ghidra 对这类入口的自动分析不一定能把Reset_Handler识别成函数。遇到这种情况在 Listing 窗口找到入口地址按 G 输入地址跳过去然后在地址上右键选择Create Function如果 Ghidra 报错说“没有有效的指令”说明这儿的 Thumb 模式指令解码错了需要先确认语言设置和地址对齐。手动创建完函数入口后续的调用链分析才能跟着展开。4. 让 Ghidra 11.0.2 自己干活Python 批处理脚本与无头分析参数调优4.1 脚本接口选 Java 还是 PythonJython 2.7 的边界Ghidra 的脚本能力非常强但有一个天然的历史包袱内置 Python 环境是 Jython 2.7不是 Python 3。这意味着第三方 Python 库基本没法用标准库也只有 Jython 移植过来的子集。能用os、sys、re这类常见模块但subprocess、struct这类模块在某些版本里表现不稳定。所以选型就很简单了如果只是读取分析结果、批量导出、重命名符号用 Python 脚本足够开发效率高如果要做自定义反编译功能、深度集成 API、开发插件面板那就用 Java。Java 脚本在 Ghidra 里拥有完整的 API 访问权限调试也更方便启动时还能用 IDE 远程调试。我自己的分界线是脚本超过两百行或者需要操作 GUI 组件直接转 Java。所有脚本都在Window - Script Manager里管理。点开之后左侧按类别分好了脚本右侧能直接新建脚本模板会自动生成run方法。对新手来说建议从 Python 模板开始核心原因是可以少写一堆类型定义调 API 时出错信息也直观。4.2 一个批量导出反编译结果的脚本遍历函数与超时保护下面的脚本可以直接粘到 Script Manager 里运行它的作用是遍历当前程序的所有函数把每个函数的反编译结果导出到指定目录。实际场景里分析完一个固件后把全部函数导出成 C 文件再丢给 sort 和 grep 做批量检索比在 GUI 里一个个点高效得多。# ExportAllFunctions.py # 运行位置Ghidra Script Manager # 作用遍历当前程序所有函数导出反编译伪代码到 /tmp/ghidra_out/ import os from ghidra.app.decompiler import DecompInterface from ghidra.util.task import ConsoleTaskMonitor # 初始化反编译器接口 decomp DecompInterface() decomp.openProgram(currentProgram) monitor ConsoleTaskMonitor() # 获取函数管理器并遍历 fm currentProgram.getFunctionManager() functions list(fm.getFunctions(True)) # 输出目录确保存在 out_dir /tmp/ghidra_out if not os.path.exists(out_dir): os.makedirs(out_dir) for idx, func in enumerate(functions): # 反编译超时时间设为 60 秒 result decomp.decompileFunction(func, 60, monitor) if result and result.decompileCompleted(): source result.getDecompiledFunction().getC() # 文件名带上序号和函数名避免特殊字符导致路径问题 safe_name func.getName().replace(/, _).replace(\\, _) file_path os.path.join(out_dir, {:04d}_{}.c.format(idx, safe_name)) with open(file_path, w, encodingutf-8) as fp: fp.write(source) else: print(FAILED: func.getName())这段代码的逻辑是先初始化反编译器接口再获取函数管理器然后逐个函数调用decompileFunction。超时参数 60 表示单函数反编译最多执行 60 秒超过之后放弃并返回失败避免个别混淆函数拖垮整个脚本。文件名用序号前缀是为了防止函数名里带目录分隔符或者重名覆盖。运行完检查/tmp/ghidra_out目录下的 .c 文件数量如果跟函数总数不一致就把 FAILED 输出的函数名收集起来后面单独处理。4.3 无头分析参数说明import、postScript 与内存上限的取舍上面脚本在 GUI 里跑没问题但真正高效的做法是配合无头模式analyzeHeadless完全脱离界面做批量分析。这个命令在 Ghidra 安装目录的support/下。一个典型的调用是这样/opt/ghidra_11.0.2/support/analyzeHeadless \ /home/user/ghidra_projects \ weekly_batch \ -import /home/user/samples \ -postScript ExportAllFunctions.py \ -scriptPath /home/user/ghidra_scripts参数含义拆开看第一个路径是项目存储目录第二个参数weekly_batch是项目名不存在时会自动创建。-import指定要分析的样本路径可以是单文件也可以是目录。-postScript指定分析完成后运行的脚本也就是上面那个导出脚本。-scriptPath告诉 Ghidra 去哪个目录找这个脚本。这个命令跑完之后所有样本都会被导入、自动分析、执行导出脚本全程没有任何 GUI 操作。对大批量重复分析来说这是把人力从“每天重复导入导出”里解放出来的关键路径。如果样本特别大建议在launch.properties里把-Xmx调高到 8G 甚至更高无头模式比 GUI 更吃内存。还有一个容易忽略的参数-process配合项目名可以只重跑脚本而不重新导入样本适合你已经分析过、只想换脚本重新导出的场景。5. 避坑从 JDK 错配到反编译超时的 5 个真实排查记录5.1 启动没反应JDK 版本错配的典型表现现象双击ghidraRun.bat或者执行./ghidraRun之后终端没有任何输出窗口也不弹出来。原因最常见的是JAVA_HOME指向了 JDK 8 或 JDK 11。Ghidra 11.0.2 要求的 JDK 17 不满足时启动脚本里的版本检测会直接退出而且不做任何界面提示。macOS 上还容易遇到系统自带的/usr/bin/java是旧版本但JAVA_HOME没设置的情况。解决先用java -version确认版本再显式设置JAVA_HOME。如果在 Windows 上改了环境变量还不生效重新打开终端或者注销一次再试。Linux 上则可以用which java看解析路径确认不是被其他脚本覆盖了。还有一个隐蔽检查点Ghidra 启动脚本读的是JAVA_HOME不是java命令本身所以就算java -version正确JAVA_HOME也要同步确认。5.2 旧项目迁移后结果不一致分析缓存和元数据问题现象用 Ghidra 11.0.2 打开以前 10.x 版本创建的项目发现函数列表不完整或者反编译结果和旧版本不一样。原因Ghidra 的项目文件跨版本迁移时分析缓存和元数据不是完全兼容的。新版可能跳过部分旧缓存直接重建导致符号表看起来“少了东西”。解决不要在原项目上升级分析至少先复制一份项目文件做对比测试。更干净的做法是直接重新导入原始二进制新建项目重新分析。分析结果不一致这件事本身不一定是 Bug因为反编译器的算法改进了输出有差异是正常的。你要做的是确认关键函数的新结果是否更合理而不是强行回到旧版本的结果。5.3 反编译一直转圈超时、复杂函数与内存不足现象Decompiler 窗口打开某个函数后一直显示转圈或进度条不动过几分钟弹出一个类似 “Function is too complex to decompile” 的提示。原因混淆过的控制流会产生大量基本块和跳转反编译器的数据流分析在这种函数上容易超时或者内存溢出。这和样本本身有关跟 Ghidra 版本关系不大。解决第一步确认内存launch.properties里-Xmx是不是给得太小4G 起步比较稳妥。第二步是识别具体函数避免整段反编译。可以在 Listing 窗口里把光标定位到函数内部用Create Function把疑似子块拆成独立函数再反编译。如果还不行接受现实这个函数可能不值得完全还原改成结合汇编做局部定位只反编译关键分支。5.4 脚本输出乱码Jython 编码坑现象Python 脚本里print(登录失败)控制台输出变成???或者\u767b\u5f55类似转义内容。原因Jython 2.7 的默认编码不是 UTF-8控制台输出时编码转换失败强制转成了问号。解决不要依赖控制台打印中文改写成输出到文件并用 UTF-8 写入也就是前面脚本里open(file_path, w, encodingutf-8)的写法。如果确实要打印可以用print(u\u767b\u5f55)这种显式 Unicode 转义绕开控制台编码问题。另一个建议是脚本里所有字符串统一用英文文件名、日志、异常消息都用英文这是 Ghidra 脚本开发里最省心的习惯。5.5 汉化版引发的插件冲突现象、排查路径和最终选择现象在某个“汉化版”基础上安装第三方插件后Ghidra 启动报错或者菜单栏缺失一部分功能卸载插件也恢复不了正常。原因汉化版往往通过替换内置资源文件实现界面翻译这些文件在插件安装时同样会被扫描一旦插件自带的资源键和汉化资源冲突类加载就会失败。这种问题很隐蔽因为报错信息不一定指向汉化包而是指向某个不相关的类。解决最彻底的方案是放弃汉化版从官方渠道重新下载原版 zip插件、脚本全部按原版路径安装。这个坑我踩过一次之后就不再碰任何打包版了。Ghidra 的界面菜单几十个真正常用的不超过十个英文界面用一周就习惯了。中文界面带来的舒适感远比不上插件兼容问题带来的折磨。6. 最后一招用 analyzeHeadless 定时批处理顺手把反编译结果做成可 diff 的存档6.1 用无头模式做每周自动分析前面已经跑通了无头命令这一步只需要把它包装成定时任务。一个典型的场景是你的团队每周会收到一批新固件放到固定目录然后有人手动导入 Ghidra 分析。我一般会写一个脚本让分析过程完全自动化。下面是一个最小封装#!/bin/bash # /home/user/bin/weekly_ghidra.sh export JAVA_HOME/usr/lib/jvm/java-17-openjdk-amd64 export PATH$JAVA_HOME/bin:$PATH /opt/ghidra_11.0.2/support/analyzeHeadless \ /home/user/ghidra_projects \ weekly \ -import /home/user/incoming \ -postScript ExportAllFunctions.py \ -scriptPath /home/user/ghidra_scripts /home/user/logs/ghidra_$(date %Y%m%d).log 21脚本里把日志单独存到按日期命名的文件方便排错。定时任务在 Linux 上用 crontabWindows 上用任务计划程序条目写法稍有不同但背后执行的都是同一个分析链路。这样新样本一到目录第二天早上结果就已经躺在导出目录里了。6.2 把反编译结果做成可 diff 的存档自动分析的价值不只是省时间更重要的是能留下历史结果。每次生成的.c文件目录按日期归档后续做版本对比、回归分析时非常有用。一个实用的小技巧是用函数列表做 diff而不是直接 diff 整个 C 文件。函数列表变化能快速反映固件更新改了什么grep -E ^[a-zA-Z_].*\( /home/user/ghidra_out/$(date %Y%m%d)/*.c | sort /tmp/functions_new.txt diff /tmp/functions_old.txt /tmp/functions_new.txt这个命令会把所有导出的 C 文件里疑似函数定义的行抓出来排序再做对比。输出里的新增行和删除行就是固件更新的差异线索。配合字符串引用的变化能更快定位到具体的业务函数。说实话这个习惯我是踩过坑才养成的。曾经连续三周手动分析同一批固件每天重复“打开 Ghidra、导入、右键反编译、保存 C 文件”直到把整套流程换成无头模式后每周至少省下两小时而且不用再担心漏掉某个文件。如果你也经常被重复分析折磨建议从这最后一招开始改造你的流程。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

告别氛围编码:我如何从AI生成代码的烂摊子中重写核心系统

告别氛围编码:我如何从AI生成代码的烂摊子中重写核心系统

“氛围编码”这个词,现在提起来我都有点PTSD。过去两年,我几乎把所有能交给AI的代码都交给了AI——丢给它一个需求描述,让它“照着氛围写”,写完直接跑,跑通就算完事。当时确实爽,一天能交好几个功能&#…

2026/10/12 15:55:15 阅读更多 →
西北空管CNS系统实操手册:通信导航监视落地要点全解析

西北空管CNS系统实操手册:通信导航监视落地要点全解析

简介:本资源是一份面向民航通信导航监视(CNS)领域初学者与一线从业人员的系统性入门课件,聚焦西北地区空管实际业务场景,全面解析CNS系统的核心职能、技术构成与管理体系。内容覆盖机场与航路概况、CNS系统性质与三大任…

2026/10/12 15:55:15 阅读更多 →
AI芯片软硬件协同设计:从架构定义到编译器落地的关键实践

AI芯片软硬件协同设计:从架构定义到编译器落地的关键实践

新一代AI芯片的软硬件设计,这几年被炒得火热,特别是“软硬件协同设计”这个概念,从学术界一路火到工业界。我参与过的某款边缘侧AI加速芯片项目“X”的开发周期里,最深的一点体会就是:硬件架构和软件编译栈&#xff0c…

2026/10/12 15:55:15 阅读更多 →

最新新闻

Zookeeper生产级集群部署:从ZAB协议到三节点高可用实战

Zookeeper生产级集群部署:从ZAB协议到三节点高可用实战

1. 项目概述:为什么Zookeeper部署不是“装完就跑”,而是分布式系统的地基工程Zookeeper这个名称听起来像某种动物保护组织,但对任何接触过分布式系统的开发者来说,它就是那个在后台默默扛起协调重担的“老班长”。我第一次在某电商…

2026/10/12 20:54:33 阅读更多 →
旅游景点数据分析实战:从客流、客单价到归因与预测

旅游景点数据分析实战:从客流、客单价到归因与预测

简介:旅游景点数据分析实战资源包聚焦“去哪儿”平台国庆期间旅游数据,面向对数据分析与旅游业运营感兴趣的初学者和从业者。资源以Python脚本处理景区门票销量、各省份景点分布、星级比例等数据,并输出可交互的HTML图表,帮助读者…

2026/10/12 20:54:33 阅读更多 →
OpenCV手势识别源码解析:从肤色分割到凸包缺陷检测

OpenCV手势识别源码解析:从肤色分割到凸包缺陷检测

简介:一套基于Python与OpenCV的手势识别课程设计源码材料,面向计算机视觉入门及图像处理课程设计的学生与开发者,主要解决通过摄像头实时捕获手势并识别手指动作的问题。项目基于Pycharm开发,流程涵盖视频帧读取、图像镜像翻转、形…

2026/10/12 20:54:33 阅读更多 →
指针函数与函数指针:C语言中的语法辨析、应用场景与避坑指南

指针函数与函数指针:C语言中的语法辨析、应用场景与避坑指南

指针函数和函数指针,这两个词在C/C相关的笔试、面试和日常代码评审里,出现的频率高得离谱。十多年写下来,我见过太多人在它们上面栽跟头——不是不会写代码,而是这两个名字实在太像,一紧张就把定语和中心词断错了。简单…

2026/10/12 20:54:33 阅读更多 →
OpenClaw简洁教程:用Docker与pnpm把飞书机器人跑起来

OpenClaw简洁教程:用Docker与pnpm把飞书机器人跑起来

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

2026/10/12 20:54:33 阅读更多 →
openJiuwen DeepSearch 溯源内容识别 Prompt 体系:从句子级候选提取到相似度校验的完整实现

openJiuwen DeepSearch 溯源内容识别 Prompt 体系:从句子级候选提取到相似度校验的完整实现

人工智能大模型AI AgentRAG深度研究搜索引擎后端代码智能体 【免费下载链接】deepsearch openJiuwen DeepSearch是一款知识增强的深度搜索与研究框架,有业界领先的片段级引用和溯源推理能力,提供精准Agentic搜索与研究能力 项目地址: https:/…

2026/10/12 20:53: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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →