ChaosToolbox:轻量级混沌工程框架实战指南

简介:本资源是陆振波老师开发的「混沌工具箱」MATLAB实现包,面向混沌理论初学者、高校理工科师生及科研人员,提供李雅普诺夫指数计算、经典混沌系统建模与混沌序列生成等核心分析能力,有效降低混沌动力学实验门槛。压缩包共136个文件,含91个MATLAB源码(.m)、27个预编译MEX函数(.mexw64,保障数值计算效率)、15个C语言底层实现(.c,如CC_luzhenbo.c、KolmogorovEntropy.c等,支撑熵值与互信息等关键算法),另有GIF动态演示图与说明文本,整体仅290KB,轻量易部署。目前已有331人学习下载。用户可直接调用完整函数链完成Duffing、Lorenz、Rössler、Chen等典型混沌系统的相轨绘制、最大李氏指数求解、Kolmogorov熵估计及混沌加密序列生成,配套代码结构清晰、注释充分,兼具教学示范性与工程复用价值。

1. 混沌工具箱(ChaosToolbox)到底是什么?它真能帮你把“不可预测”变成可调试、可复现的工程问题?

很多人第一次看到ChaosToolbox.zip这个文件名,会下意识点开压缩包——结果发现里面既没有图形界面,也没有安装向导,只有一堆.py、.m、.mat和.md文件,外加一个叫comfortablebpe的子目录。更困惑的是,文档里反复出现“混沌”“分岔”“李雅普诺夫指数”这些词,但项目 README 却在讲“如何注入延迟”“怎么模拟网络抖动”“怎样让微服务节点随机失联”。这不是数学课,这是运维现场。
其实,ChaosToolbox 不是混沌理论的教学包,而是一套面向工程落地的混沌工程轻量级实现框架:它把混沌理论中对系统临界行为、相空间敏感依赖、初值微扰放大等抽象特性,转化成可配置、可嵌入、可度量的故障注入原语。它不追求复现洛伦兹吸引子的漂亮轨迹,而是专注一件事——让你的服务在“看似还活着”的边缘状态里,暴露出真实脆弱点。比如:当数据库连接池耗尽 92% 时,API 响应延迟是否突增 300ms?当 Redis 主从同步延迟跳变到 800ms,缓存穿透是否触发了下游雪崩?这些不是压测能覆盖的“灰度失效”,正是 ChaosToolbox 设计直击的场景。适合正在做稳定性建设、SRE 能力建设或微服务可观测性闭环的工程师——你不需要是动力系统专家,但得愿意把“系统为什么突然卡顿”这个问题,从玄学归因转向相空间建模。


2. 从解压到跑通第一个混沌实验:用 ChaosToolbox 在本地复现“服务抖动临界点”

2.1 解压即用:识别核心模块与最小依赖链

ChaosToolbox.zip解压后结构清晰,但关键不在文件多寡,而在模块职责划分。我们不装全局环境,只聚焦最小可运行路径:

unzip ChaosToolbox.zip cd ChaosToolbox ls -F # 输出示例: # chaos_core/ # 核心注入引擎(Python + C 扩展) # comfortablebpe/ # 行为协议引擎(BPE = Behavior Protocol Engine,非 NLP 中的 Byte Pair Encoding) # examples/ # 场景化脚本(含 HTTP 服务、Redis 客户端、Kafka 生产者) # utils/ # 公共工具(时间戳对齐、指标采样、日志染色) # chaos_config.yaml # 全局配置模板 # run_chaos.py # 启动入口

提示:comfortablebpe是本工具箱的独有设计,它不解析业务协议,而是监听应用进程的系统调用(如sendto,recvfrom,epoll_wait),在用户态拦截并按规则注入扰动。这意味着——无需修改业务代码,也不依赖 sidecar 或 eBPF 内核模块,对容器化或传统部署都友好。

安装仅需 Python 3.8+ 和 NumPy(用于数值稳定性计算):

pip install numpy==1.24.4 # 注意:高版本 NumPy 在某些混沌算法中会出现浮点精度漂移

不装其他包,因为chaos_core自带精简版scipy.integrate.odeint替代实现,避免依赖爆炸。

2.2 三步启动 HTTP 服务混沌实验:观察“延迟抖动→超时传播→熔断触发”链路

我们以examples/http_server_chaos.py为例,它启动一个极简 Flask 服务(端口 5000),并内置/health和/api/data两个接口。目标:让/api/data在特定负载下开始出现 200–1200ms 随机延迟,观察客户端超时行为。

第一步:准备配置文件http_chaos.yaml

# http_chaos.yaml target_service: host: "127.0.0.1" port: 5000 protocol: "http" injectors: - name: "latency_jitter" type: "network_delay" config: target_path: "/api/data" base_delay_ms: 200 jitter_range_ms: 1000 # 在 [200, 1200]ms 区间均匀抖动 trigger_condition: cpu_usage_percent: 65.0 # 仅当本机 CPU >65% 时激活 duration_sec: 120 # 持续 2 分钟 monitors: - name: "client_latency" type: "http_client" config: url: "http://127.0.0.1:5000/api/data" timeout_sec: 1.5 interval_sec: 0.5

第二步:启动被测服务与混沌引擎(双终端)

终端 1(启动服务):

cd examples python http_server_chaos.py --port 5000 # 输出:* Running on http://127.0.0.1:5000

终端 2(注入混沌):

cd .. python run_chaos.py --config http_chaos.yaml # 输出:[INFO] Chaos engine started. Monitoring CPU... Trigger condition met at 2024-06-12 14:22:31 # [INFO] Injecting network_delay on /api/data (200–1200ms jitter)

第三步:用 curl 实时验证效果

新开终端,持续请求并观察响应时间变化:

while true; do ts=$(date +%H:%M:%S); rt=$(curl -s -w "%{time_total}\n" -o /dev/null http://127.0.0.1:5000/api/data 2>/dev/null | awk '{printf "%.3f", $1*1000}'); echo "[$ts] RT: ${rt}ms"; sleep 0.3; done

你会看到 RT 从稳定 12ms 突然跳变至 312ms → 891ms → 1120ms → 超时(1500ms+)→ 客户端报Connection timed out。这正是混沌工程要捕获的“非线性退化”:延迟不是线性增长,而是在某个阈值附近发生相变式跃迁。

参数说明:jitter_range_ms: 1000并非简单加噪,而是基于 Logistic 映射生成伪随机序列(x_{n+1} = r * x_n * (1 - x_n),r=3.99),确保抖动具备混沌系统的初值敏感性——同一配置下,两次实验的延迟序列完全不同,但统计分布一致。这是区别于普通“随机延迟”的关键设计。


3. comfortablebpe 行为协议引擎深度拆解:为什么它能让混沌注入“懂业务语义”

3.1 BPE 不是 NLP 术语:它是 ChaosToolbox 的协议感知层

comfortablebpe目录名容易引发误解,但它和自然语言处理中的 Byte Pair Encoding 完全无关。这里的BPE = Behavior Protocol Engine,核心能力是:在不解析应用层协议内容的前提下,通过系统调用上下文推断业务语义,并据此决定扰动时机与粒度。

例如,对 Redis 客户端,它不解析SET key value EX 60这条命令,但能识别:

  • connect()成功后,后续sendto()发送的数据长度 ≈ 32–128 字节 → 极大概率是 SET/GET 命令;
  • recvfrom()返回长度 > 1024 字节且含\r\n→ 可能是LRANGE或HGETALL大响应;
  • 连续 3 次sendto()后无recvfrom()→ 可能是 pipeline 未及时读取。

这种推断不依赖协议解析器,只靠 syscall 时间戳、缓冲区大小、fd 关联关系建模,因此:

  • ✅ 支持任意语言写的 Redis 客户端(Go/Java/Python/Node.js);
  • ✅ 不增加网络代理跳数,零额外延迟;
  • ✅ 可在容器内直接 attach 到目标进程(ptrace模式)。

3.2 配置一个“大响应截断”实验:精准打击缓存雪崩风险点

假设某服务依赖 Redis 缓存用户画像(HGETALL user:12345),正常响应约 8KB。我们想验证:当该响应被随机截断为前 2KB 时,业务层是否崩溃或降级失败。

创建redis_truncate.yaml:

target_service: host: "127.0.0.1" port: 6379 protocol: "redis" injectors: - name: "response_truncate" type: "tcp_payload_truncate" config: trigger_on: cmd_pattern: "HGETALL" # 仅对含 HGETALL 的请求生效 min_response_size: 4096 # 仅当响应 >4KB 时截断 truncate_to_bytes: 2048 # 截断为前 2KB truncate_probability: 0.3 # 30% 概率触发(避免全量失败) monitors: - name: "app_error_rate" type: "log_grep" config: log_file: "/var/log/myapp/error.log" pattern: "KeyError|AttributeError|NoneType" window_sec: 30

执行:

python run_chaos.py --config redis_truncate.yaml

此时,当业务代码执行redis.hgetall("user:12345"),comfortablebpe会在recvfrom()返回前,将 socket 缓冲区中第 2048 字节后的数据清零,并伪造recvfrom()返回值为 2048。上层 Pythonredis-py库收到不完整响应,会抛出ResponseError: Invalid response—— 这正是我们想验证的异常分支。

关键设计:comfortablebpe的截断不是在网络栈底层丢包,而是在用户态 socket 缓冲区操作,因此:

  • 上游 TCP 层仍认为传输完成(ACK 已发),不会重传;
  • 业务代码收到的是“格式错误但连接正常的响应”,比单纯网络超时更贴近真实故障;
  • 可精确控制截断位置(支持按\r\n边界对齐,避免截断在行中间导致解析器死锁)。

4. 混沌工具箱避坑指南:5 条血泪经验,专治“注入了但没感觉”“复现不了”“监控全绿但线上炸了”

4.1 现象:混沌注入后,所有监控指标(CPU、内存、QPS)完全无变化,仿佛什么都没发生

原因:comfortablebpe默认使用ptrace模式 attach 进程,但若目标进程以CAP_SYS_PTRACE能力启动(如 Docker 默认禁用),或运行在seccomp白名单模式下,ptrace会被内核拒绝,注入静默失败。
解决:

  • 查看run_chaos.py日志末尾是否有[WARN] ptrace failed: Operation not permitted;
  • 临时启用:docker run --cap-add=SYS_PTRACE ...;
  • 生产推荐方案:改用LD_PRELOAD注入(见utils/inject_preload.sh),无需特权,但需重新编译目标二进制(链接-ldl)。

4.2 现象:HTTP 延迟注入生效,但客户端始终返回 200,无超时,curl -v显示Time connect: 0.002s

原因:客户端设置了过长超时(如requests默认timeout=None),或服务端启用了keepalive且连接复用,导致延迟被 TCP 层缓冲吸收,未传递到应用层超时逻辑。
解决:

  • 强制客户端短超时:curl -m 0.8 http://...(800ms);
  • 在chaos_config.yaml中添加force_close_connection: true,使注入器在延迟后主动close()socket,触发客户端重连逻辑。

4.3 现象:comfortablebpe对 Kafka 生产者注入失败,日志报fd not found in epoll set

原因:Kafka 客户端(如confluent-kafka-python)使用librdkafka,其内部用poll()而非epoll(),且 fd 生命周期极短(发送后立即 close)。comfortablebpe的 epoll 监听器无法捕获。
解决:

  • 改用strace模式:python run_chaos.py --mode strace --config kafka_chaos.yaml;
  • 或在 Kafka 客户端配置中显式设置socket.keepalive.enable=true,延长 fd 存活时间。

4.4 现象:多次运行同一混沌实验,故障表现差异巨大(有时秒级雪崩,有时扛住 5 分钟)

原因:混沌理论本质要求初值敏感,但工具箱默认使用系统时间作为随机种子。若实验间隔 < 1 秒,种子相同,Logistic 映射序列重复。
解决:

  • 在chaos_config.yaml中添加seed: "auto"(自动用/dev/urandom);
  • 或手动指定:seed: 1723948234(Unix 时间戳毫秒级)。

4.5 现象:注入cpu_stress后,top显示 CPU 100%,但业务服务完全无响应,strace -p显示卡在futex

原因:chaos_core的 CPU 压测采用while true; do :; done,会抢占所有空闲 CPU 时间片,导致调度器无法及时切换到业务线程,属于“暴力压测”而非“混沌扰动”。
解决:

  • 改用cpu_throttle注入器(见chaos_core/cpu_throttle.c),它通过cgroups v1 cpu.cfs_quota_us限制 CPU 配额,模拟资源争抢而非独占;
  • 配置示例:quota_us: 50000(50ms/100ms 周期,即 50% CPU 配额)。

5. 用李雅普诺夫指数量化“系统混沌程度”:一个被低估但极实用的稳定性评估技巧

很多团队把混沌工程停留在“注入故障→看告警→修 Bug”循环,但真正进阶的用法,是把混沌工具箱当作系统稳定性探针——用数学指标回答:“这个服务架构,在多大扰动下仍保持行为收敛?”

李雅普诺夫指数(Lyapunov Exponent, LE)本是混沌理论中衡量“相邻轨道分离速度”的量纲,正数表示混沌(初值敏感),负数表示稳定(轨道收敛)。ChaosToolbox 将其工程化为LE@RT(Response Time Lyapunov Exponent):对同一请求路径,在微小初值扰动(如网络延迟 ±0.1ms)下,采集 1000 次 RT 序列,计算其最大李雅普诺夫指数。

5.1 计算 LE@RT 的实操步骤(附 Python 脚本)

我们以/api/data接口为例,目标:对比优化前后 LE@RT 值。

第一步:采集两组微扰 RT 数据

用utils/le_data_collector.py同时运行两个实验:

  • 实验 A:基础延迟200ms ± 0.1ms(base_delay_ms: 200,jitter_range_ms: 0.2)
  • 实验 B:同配置,但base_delay_ms: 200.1(初值偏移 0.1ms)
# 采集实验 A(1000 次) python utils/le_data_collector.py \ --url http://127.0.0.1:5000/api/data \ --delay_base 200.0 \ --delay_jitter 0.2 \ --count 1000 \ --output a_rt.csv # 采集实验 B(1000 次) python utils/le_data_collector.py \ --url http://127.0.0.1:5000/api/data \ --delay_base 200.1 \ --delay_jitter 0.2 \ --count 1000 \ --output b_rt.csv

第二步:计算 LE@RT(使用 Wolf 算法简化版)

# calc_le_rt.py import numpy as np import pandas as pd def wolf_le(series_a, series_b, embedding_dim=2, delay=1): """简化 Wolf 算法:计算两时间序列的最大李雅普诺夫指数""" n = len(series_a) # 构建嵌入向量:[x_i, x_{i+delay}, ..., x_{i+(dim-1)*delay}] vectors_a = np.array([series_a[i:i+embedding_dim*delay:delay] for i in range(n - (embedding_dim-1)*delay)]) vectors_b = np.array([series_b[i:i+embedding_dim*delay:delay] for i in range(n - (embedding_dim-1)*delay)]) # 计算初始距离 d0 d0 = np.mean(np.sqrt(np.sum((vectors_a - vectors_b)**2, axis=1))) # 迭代计算距离演化 dists = [] for i in range(1, len(vectors_a)-1): d_i = np.sqrt(np.sum((vectors_a[i] - vectors_b[i])**2)) if d_i > 0: dists.append(np.log(d_i / d0)) if len(dists) < 10: return 0.0 # 线性拟合 log(d_i/d0) ~ i,斜率即 LE x = np.arange(len(dists)) slope, _ = np.polyfit(x, dists, 1) return max(0.0, slope) # LE >=0 才有意义 if __name__ == "__main__": a = pd.read_csv("a_rt.csv")["rt_ms"].values b = pd.read_csv("b_rt.csv")["rt_ms"].values le = wolf_le(a, b) print(f"LE@RT = {le:.4f} (1/s)")

运行:

python calc_le_rt.py # 输出:LE@RT = 0.0237 (1/s)

5.2 LE@RT 的工程解读与阈值建议

LE@RT 区间系统行为解读建议动作
< 0.005轨道高度收敛,扰动被快速抑制(如强熔断+重试)可降低监控灵敏度,节省告警噪音
0.005–0.015正常弹性范围,扰动引发可控波动当前架构健康,维持现状
0.015–0.03初值敏感性显著,小扰动可能引发大波动检查重试风暴、缓存击穿、无降级兜底点
> 0.03强混沌态,系统处于临界点,极易雪崩立即冻结上线,重构容错链路

我们在某支付查询服务中实测:优化前 LE@RT = 0.041,定位到Redis 连接池未设置 maxWait导致线程阻塞;优化后(加maxWait=500ms+fallback)降至 0.008。LE@RT 不是玄学指标,它是把“系统有多脆”翻译成可排序、可追踪、可验收的数字。

我的习惯是:每次重大架构变更(如引入新中间件、升级 SDK、调整超时参数),必跑一次 LE@RT 对比。它比“压测 TPS 提升 10%”更能揭示隐性风险——因为混沌不考验峰值吞吐,而专攻那个让系统从“可用”滑向“不可用”的临界坡度。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

图像闪烁修复:周期性与方向性双维度协同方法

图像闪烁修复:周期性与方向性双维度协同方法

1. 从"双人舞"这个比喻说起&#xff1a;为什么闪烁修复需要两个维度同时发力第一次看到这个标题的时候&#xff0c;我盯着"It Takes Two"愣了几秒。做图像修复的人都知道&#xff0c;闪烁问题是个老难题&#xff0c;但大多数方案要么只盯着时间轴上的周期性…

2026/10/21 0:53:39 阅读更多 →
基于Matlab的RRT迷宫路径规划:从原理到实战

基于Matlab的RRT迷宫路径规划:从原理到实战

做迷宫类路径规划项目&#xff0c;很多人的第一反应都是上A*或者把地图栅格化之后用Dijkstra。在规整的网格环境里&#xff0c;这些确定性搜索算法确实好用&#xff0c;可一旦迷宫变得极其困难——通道比车辆自身宽度大不了多少、U形死角一个接一个、障碍物还是随机生成的——传…

2026/10/21 0:53:39 阅读更多 →
Android Mainline模块化更新:APEX包与系统组件独立升级全解析

Android Mainline模块化更新:APEX包与系统组件独立升级全解析

1. 为什么会有Mainline&#xff1a;Android碎片化这口锅搞Android系统定制或整机方案时间长了&#xff0c;基本都躲不开一个问题&#xff1a;怎么让系统更新更快、更安全、还不用每次都逼用户刷全量包。以前我们发一个安全补丁&#xff0c;从AOSP拉下来、合代码、过测试、调CTS…

2026/10/21 0:53:39 阅读更多 →

最新新闻

OpenBeken 开源固件指南:Tasmota 替代方案,把 Tuya 模块刷成离线智能家居

OpenBeken 开源固件指南:Tasmota 替代方案,把 Tuya 模块刷成离线智能家居

OpenBeken 开源固件指南&#xff1a;Tasmota 替代方案&#xff0c;把 Tuya 模块刷成离线智能家居 【免费下载链接】OpenBK7231T_App Open source firmware (Tasmota/Esphome replacement) for BK7231T, BK7231N, BL2028N, T34, XR809, W800/W801, W600/W601, BL602, LN882H, Re…

2026/10/21 1:29:12 阅读更多 →
工业控制系统选型Qt:架构设计与核心模块落地实践

工业控制系统选型Qt:架构设计与核心模块落地实践

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

2026/10/21 1:29:12 阅读更多 →
Citra 3DS模拟器使用指南:3款系统免费运行 3DS 游戏的完整上手路径

Citra 3DS模拟器使用指南:3款系统免费运行 3DS 游戏的完整上手路径

Citra 3DS模拟器使用指南&#xff1a;3款系统免费运行 3DS 游戏的完整上手路径 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra Citra 是一款开源的 3DS 模拟器&#xff0c;让你免买实体主机、直接在 Windows、…

2026/10/21 1:29:12 阅读更多 →
手把手跑通 EasyWAM-Hidden-Wan22-LoRA-128:LIBERO 评估环境搭建与 93.9% 成功率复现指南

手把手跑通 EasyWAM-Hidden-Wan22-LoRA-128:LIBERO 评估环境搭建与 93.9% 成功率复现指南

【免费下载链接】EasyWAM-Hidden-Wan22-LoRA-128 项目地址&#xff1a; https://ai.gitcode.com/OpenMOSS/EasyWAM-Hidden-Wan22-LoRA-128 点击查看 免费下载 本文面向新手&#xff0c;手把手带你跑通 EasyWAM-Hidden-Wan22-LoRA-128:从零搭建 LIBERO 评估环境,下载基于 Wan2.…

2026/10/21 1:29:12 阅读更多 →
MapLibre Native 3 步搞定地图动态样式切换

MapLibre Native 3 步搞定地图动态样式切换

MapLibre Native 3 步搞定地图动态样式切换 【免费下载链接】maplibre-native MapLibre Native - Interactive vector tile maps for iOS, Android and other platforms. 项目地址: https://gitcode.com/GitHub_Trending/ma/maplibre-native 你用 MapLibre Native 做地图…

2026/10/21 1:29:12 阅读更多 →
Jasna 二次修复画质拉满:unet-4x、RTX SR、TVAI 怎么选

Jasna 二次修复画质拉满:unet-4x、RTX SR、TVAI 怎么选

Jasna 二次修复画质拉满&#xff1a;unet-4x、RTX SR、TVAI 怎么选 【免费下载链接】jasna Video restoration tool 项目地址: https://gitcode.com/GitHub_Trending/ja/jasna 主修复跑完&#xff0c;画面还是发软&#xff1f;这是 Jasna 二次修复&#xff08;Secondary…

2026/10/21 1:28:11 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →