Flink线上故障排查指南:CK超时、重启、积压与倾斜
1. 写在前面这四个坑我基本都踩过做Flink实时计算的人早晚都会碰到今天要聊的这四件事Checkpoint超时、任务频繁重启、Kafka消息积压、数据倾斜。可以说这四兄弟是线上Flink作业最常见的“送命题”也是面试官最爱问的压轴题。我自己的经历是刚上手Flink那会儿一个订单量统计的实时任务每天凌晨准时CK超时然后就是连环重启、积压告警那段时间看到报警群消息心都在抖。这篇内容不整虚的把我在线上环境实际排查这四类问题的思路、命令、参数调整和踩坑记录完整梳理一遍。无论你是刚接触Flink的新手还是已经被线上问题折磨过的老兵这篇都值得花二十分钟读完——因为这些问题迟早会找上你早点知道套路少熬几个夜。先给个整体认知这四个故障从来不是孤立的。CK超时常常引发任务重启任务重启又直接导致Kafka消费停止从而积压而数据倾斜往往是积压背后真正的推手。排查时要有一条全局的链路思维不能头疼医头。下面逐个拆解。2. Checkpoint超时先搞清楚它为什么是你任务的第一大敌2.1 什么是CK超时为什么它总在“不经意间”出现Flink的Checkpoint机制是任务容错的核心它通过Barrier机制定期把算子状态快照保存到外部存储HDFS、OSS或S3。所谓CK超时就是快照在规定时间内没做完触发了超时阈值。到了这一步任务不会立即挂掉但会反复重试重试多了就会导致任务重启。我在线上看到过很多次这种场景某个任务稳定跑了两周突然某天开始频繁报CK超时。很多人第一反应是“是不是HDFS有问题”但经过排查发现HDFS的RPC延迟其实正常问题出在状态太大加网络抖动叠加。所以排查CK超时的正确姿势是先看趋势再看根因。CK超时的本质原因是从源头算子到下游算子的Barrier传播时间超出了checkpoint.timeout的配置值。超时期间的Source数据还在不断写入积压随之而来。理解这条链路很重要——Barrier要从Source端出发依次经过每个算子最后算子把State快照异步刷到远端存储。任何一个环节慢整个CK就完蛋。2.2 排查CK超时的标准三连日志、监控、火焰图遇到CK超时我建议按下面的顺序排查别一上来就改参数。先看日志里有没有大量的Checkpoint expired before completing或Checkpoint ... failed关键词。如果只是偶发几次可能是网络抖动或HDFS短暂变慢如果是连续性的失败就要去看监控了。监控主要看两个指标flink_jobmanager_job_last_checkpoint_duration和flink_taskmanager_job_checkpoint_time配合看flink_taskmanager_job_checkpoint_counts里的状态变化。这里有个关键细节——要按算子维度看Checkpoint耗时Terminal窗口的CloudLab环境以及实际生产环境的监控面板都能看到每个算子花了多少时间。绝大多数情况下时间都耗费在某个State比较大的算子上。如果是自定义的RichFunction里用了ValueState或MapState且数据量巨大序列化就成了瓶颈。这时候用jstack抓线程栈或者用JFR火焰图看是序列化消耗多还是远端存储IO消耗多。我遇到过最奇葩的一次问题出在HDFS的写入线程池被打满导致快照上传排队这种纯靠调Flink参数根本解决不了最后是调整了HDFS租户配额才缓解的。2.3 CK超时的三板斧调阈值、开增量、换存储定位到问题在哪之后再去调整。三板斧按从易到难排列。第一板斧调超时时间。默认的execution.checkpointing.timeout一般是10分钟如果任务状态不大但偶发超时可以适度放宽到15-20分钟。但我不建议疯狂加时长因为你放宽超时的本质是允许下游在更长时间内不commit这会放大端到端延迟还会让堆积在内存里的数据变多。第二板斧开启增量Checkpoint。如果你用的是RocksDB状态后端这个必须开。state.backend.incrementaltrue会把全量快照变成基于上次快照的增量补齐效果立竿见影尤其是状态达到几十G的场景。不过要记住一个坑开增量后每次的本地RocksDB文件会累积要配合定期的全量快照配置比如累积N次增量后强制做一次全量否则本地磁盘会被撑爆。第三板斧如果状态实在太大且增量也不好使就要考虑是不是状态模型设计有问题。比如某些场景下明明可以用MapState按key存小对象你却用了ValueState存了一个累计的大JSON字符串每次CK都全量序列化这个大便——这种状态设计的锅靠调参救不回来必须重构。注意千万不要为了“解决”CK超时就去关闭Checkpoint或把间隔调到极大。Checkpoint是任务恢复的底牌你动的每个参数都在降低容错能力这种自毁式解法在线上绝对是禁忌。3. 任务重启不是重启就完事要找到背后那条导火索3.1 任务重启的两类场景被动的失败和主动的收敛任务重启分两种情况很多新手混在一起处理结果走了弯路。第一种是作业崩溃导致的真正重启。比如代码抛出未捕获异常、容器OOM被K8s杀掉、外部系统连接超时且重试次数耗尽。这种情况任务会直接从最新Checkpoint恢复恢复期间的消费暂停积压随之而来。第二种是Flink的“主动重启”——当Checkpoint连续失败次数达到阈值JobManager判定Job无法正常提供容错能力会主动触发重启并尝试从最后一个成功的Checkpoint恢复。这和第一类的根本区别在于业务代码没有报错只是容错链路断了。我见过有人拼命查代码日志却找不到原因实际上看一眼jobmanager.log里关于“Failing the job”的上下文就能定位到是Checkpoint连续失败导致的。3.2 从日志和监控中拼出重启真相排查任务重启核心是看两个地方JobManager日志和TaskManager日志。JobManager日志里会写清楚重启的原因——是Exception还是Checkpoint失败。如果是异常异常堆栈就是方向如果没异常则重点去看前因后果。还有一个特别典型的隐性杀手TaskManager堆外内存溢出。Flink的框架本身用堆外内存做网络缓冲如果你的taskmanager.memory.task.off-heap.size配置过小在高吞吐场景下会触发OutOfDirectMemoryError。这个错误表现奇特有时不直接抛异常而是JVM卡顿后容器被健康检查杀掉表现成K8s层面的重启。盯监控时重点看两个曲线flink_taskmanager_status_jvm_gc里老年代GC次数和耗时以及flink_taskmanager_status_jvm_memory_direct内存的用量。GC曲线在重启前如果出现悬崖式攀升大概率是堆内有大对象堆积DirectMemory曲线如果触顶则考虑调大堆外内存或减少网络缓冲占用的比例。3.3 重启策略和恢复机制的配置基调Flink支持fixed-delay固定延时、failure-rate失败率、exponential-delay指数延时三种重启策略。线上生产我推荐用exponential-delay因为它兼顾了快速恢复的意愿和防止“失败风暴”的保护。配置大概是这样restart-strategy: exponential-delay restart-strategy.exponential-delay.initial-backoff: 1s restart-strategy.exponential-delay.max-backoff: 1min restart-strategy.exponential-delay.backoff-multiplier: 1.5 restart-strategy.exponential-delay.reset-backoff-threshold: 5min这个配置的意思是任务第一次失败后等1秒再次拉起如果继续失败则下次等待时间乘以1.5最大退避到1分钟。如果连续成功运行超过了5分钟则重置退避时间回到1秒。这样既避免了频繁重启导致的连环雪崩又能在短时间抖动恢复后快速重归正常。还有一点至关重要默认的恢复点是最近一次成功的Checkpoint。如果你的作业存在EXACTLY_ONCE的Kafka sink重启后会从保存的Kafka offset继续消费中间消费中断产生的数据会通过Kafka自身的保留机制找回。但如果中断时间超过了Kafka消息保留期数据就会永久丢失——这是另一个层面的话题但在设计告警和恢复预案时一定要把时间窗口估算进去。3.4 重启后必做的三件套检查每次重启恢复后不要直接撒手不管按下面三条验一遍第一确认任务是否真正从Checkpoint恢复。看JobManager日志里有没有Restarting the job...和Starting job ... from checkpoint字样。注意如果日志里出现的是from savepoint说明你手动触发的恢复覆盖了自动检查点两者路径不同行为也有区别。第二确认Source端消费位点是否被正确重置。打开Kafka消费组监控看当前Lag是否短时间内暴涨。如果是重启期间消息大量积压Lag出现一个“断崖式”的爬坡是正常的但如果持续高位不上不下就要怀疑并行度变化导致的rebalance问题。第三确认所有Sink侧下游是否恢复了正常写入。Flink重启后Sink的连接池、事务超时状态都可能重置特别是使用两阶段提交的外部系统如Kafka Sink、HBase Sink经常出现重启后第一批数据写不进去的情况。如果有条件在下游系统里看写入速率是否回升到重启前水平。4. Kafka积压先分清是“消费不动”还是“吐不出去”4.1 积压的第一个判断Source消费能力到底够不够Kafka积压这个词其实不太严谨严格说应该叫“消费Lag持续增长”。积压通常有两大类原因一类是上游写入量暴增消费吞吐跟不上另一类是任务本身处理能力掉了导致消费被反压拖慢。判断方法很简单打开Kafka自带的监控指标看消费组的records-lag-max最大滞后消息数。如果Lag一路飙升且没有回落趋势就是真积压如果Lag涨到某个阈值后稳定不动说明当前消费和生产的速率达到了动态平衡积压“恒定了”——这种往往是消费并行度不够需要扩容。这里给一个经验公式当前总Lag ÷ 单并行度消费速率 ≈ 消化积压所需时间。举例Lag 500万条每个并行度每秒消费500条总共16个并行度那么每秒消费8000条需要625秒≈10.4分钟才能消化完。如果业务容忍不了这个延迟就得扩容并行度或者优化单条处理逻辑。4.2 注意“反压导致的消费不动”这个伪装大师很多人在排积压时只盯着Kafka的Lag却忽略了一个关键链路——反压。Flink的背压机制是下游处理不过来时会通过算子间的缓冲层层向上传导最终让Source端的Kafka拉取暂停。这种情况下Kafka Lag涨得飞快但JobManager的Web UI上背压指标会显示为红色。如果你只加Source并行度而不解决下游瓶颈扩多少都没用因为下游已经是瓶颈了。判断反压位置很简单打开Flink Web UI的“Backpressure”标签页看看哪些算子的背压比高达80%以上。先解决最大瓶颈算子再逐层向上排查。我处理过的很多积压案例根子都不在Kafka消费本身而是在一个复杂的Join算子或窗口聚合算子上。4.3 积压的五大常规解法按优先级排序如果确认是任务自身处理能力不足解法按破坏性从低到高排列是这样的加大并行度是最直接的但有个前提——你的Source分区数也要够。Kafka一个分区只能被同一个消费组里的一个并行子任务消费如果你Topic只有8个分区Source并行度开到16也没用白开的8个并行度闲着。所以调整并行度前先看Topic分区数。优化处理链路——搜索排查每条消息的处理路径看看有没有可以异步化的耗时操作。比如一条消息里包含10个维表查询同步调用是串行的改成asyncIO后能并发发起多个查询吞吐立刻翻几倍。再比如JSON解析、加密解密这类CPU密集操作可以尝试用更高效的序列化框架。拆分窗口逻辑——如果积压集中在整点或零点的大窗口触发瞬间多半是因为窗口内积累了海量数据在触发计算那一刻形成了计算洪峰。解法是优化窗口内的预聚合、使用增量聚合函数而非全量聚合把一个巨大的窗口拆分成多个小窗口处理后再合并结果。开启Buffer调优——taskmanager.memory.network比例和env.java.opts里的堆缓冲配置taskmanager.memory.framework.heap.size也会影响吞吐。但这属于“微调”别指望这点配置能救大问题。动态扩容是最稳妥的生产级方案基于Kafka消费者组的自动Rebalance机制动态增加并行度并让新并行Task从最近offset继续拉取不会丢数据但要注意Flink的Checkpoint和Kafka offset的配合。这里有个实操经验——Flink任务从Savepoint恢复并增加并行度时最好先把Job停掉再扩容恢复在线动态调整并行度的操作虽然在较新版本支持了但生产环境慎重升级并行度时会出现短暂的Rebalance风暴如果你的Topic分区数不够加并行度还要配合改Topic那就必须停作业统筹操作了。4.4 一个生产案例积压7000万的实战复盘说个我处理过的典型场景。一个电商订单事件流目标是把订单变更写入HBase某天大促流量暴涨三倍Lag从几十万直接冲到7000万。当时第一反应是并行度不够直接把Source从16调到24结果发现Lag不仅没降反而还在涨。再看背压面板发现一个“解析订单JSON并更新Redis”的FlatMap算子背压是90%。这个FlatMap里有两次同步Redis读写每条消息耗时8-10毫秒。在当时流量下同步阻塞成了最大瓶颈。处理手段是两手抓一方面用Redis的MGET批量读替换逐条读把查外存的RTT分摊到批量上另一方面给该算子单独调大并行度Primary key同时参与用disableOperatorsChain把热算子独立成单独的Task。最终效果是单条处理耗时从9毫秒降到2毫秒整体消费速率恢复平稳7000万Lag在40分钟里清零。这个案例的教训是调并行度之前先看背压位置别盲目扩容。5. 数据倾斜排查中最难啃的骨头也是积压的隐形推手5.1 怎么快速确认任务“倾斜了”数据倾斜的本质是相同Key的大量数据都落在同一并行子任务上导致一部分Task忙死另一部分闲得发慌。它的典型表现和背压还不太一样背压是整体链路阻塞而倾斜往往是个别TaskManager的CPU和内存飙升其余Task没事。从Web UI上定位倾斜有个笨但有效的方法看每个Subtask的numRecordsIn和numRecordsOut。如果某个Subtask接收的记录数是其他Subtask的好几倍那就是倾斜了。另一种判断是从Watermark推进速度看——如果部分Subtask的Watermark明显落后于其他说明这些Subtask卡在大量数据上。5.2 四种最常见的倾斜场景和对应的拆解招分组聚合倾斜。最典型的场景按商品ID统计实时销量一个爆款商品的流量占了90%。这会导致包含爆款Key的Task计算量巨大。招数是加盐Salting——把Key先加一个随机前缀比如0到N-1拆成N个中间Key做局部聚合再在全量聚合时去掉前缀做最终汇总。Flink SQL里可以用group by concat(cast(rand()*N as int), _, key)这种脏但有效的办法实现第一层聚合。这个办法能显著把热点Key分拆打散注意加盐的N不要太大否则预聚合的中间状态会膨胀。两阶段聚合是加盐方案在SQL中的标准落地核心是先做一次带随机前缀的局部聚合再做一次去前缀的全局聚合。比如算某个店铺的GMV时先按店铺ID 随机数%10聚合出10个中间结果再把10个结果汇总成最终值能有效缓解单Key压力。关键Key数据暴涨。动态发现热点Key比如某大V突然发了条爆款内容怎么办可以做一个动态分流机制维护一个热点Key的名单命中名单的Key走侧输出流用单独的逻辑处理非热点Key走主流正常聚合。这样热点Key就不会把正常链路的Task卡死。数据倾斜出现在Join。典型场景是两个大流Join一张流里某个Key的数据量是另一个的几百倍。常见的解法是把大流按Key加盐打散增加随机后缀小流也按相同逻辑多份复制Expand让原本集中在一个Key上的Join压力分散到N个Task上。这里要注意的是复制小流会成倍增加小流的数据量N的选择要在Join效率和资源消耗间找平衡我一般线上从8到16起步测试。5.3 维表关联时的热点问题容易被忽视数据倾斜还有个容易被忽略的场景维表Join。如果某个维表Key比如热门城市ID、热门商家ID被海量实时数据反复命中那么维表缓存的并发读写会在这个Key上形成热点。解决思路是给广播维表按照Key增加多份副本缓存或者把维表Join改成异步查询AsyncIO并用本地缓存分片。说个实操中的真实坑用MapState做维表缓存时如果热点Key同时在多个并行子任务上存在且每个子任务各有一份缓存那查询量大的子任务会频繁触发缓存淘汰和重新加载反而比直接查外部存储性能更差。这种情况建议减少维表缓存的淘汰阈值或者用更大粒度的TTL统一管理。5.4 倾斜排查的“三步定位法”如果拿不准到底哪里倾斜了按下面三步做基本能锁定位置。第一步看TaskManager的CPU曲线。如果一两个节点CPU接近100%而其他节点在20%以下大概率有倾斜。注意这里要看单节点不要看平均值——平均值会掩盖倾斜真相。第二步在Web UI里进入具体Job的Task列表找到运行时长明显偏长或numRecordsIn明显偏高的Subtask记录它是第几个实例。然后去日志里找这个实例的TaskName和JobVertexID再对应到业务代码的哪个算子。第三步如果作业是SQL写的在SQL中临时打印对应Key的Count确认是哪些Key贡献了主要流量。确认之后再按前面说的四种场景选对应的打散方案。5.5 加盐方案的一个关键避坑点做加盐聚合时有一个非常容易忽略的坑如果最终结果不是幂等的加盐后的中间状态会在两层聚合之间产生重复计算或丢失。比如你要精确计算UV正常的做法是Count Distinct或者用BitMap。但如果第一层聚合用的是count(*)第二层做sum()数据中间跨Checkpoint重放时会重复累加因为第一层的count结果无法去重。这种情况下第一层聚合一定要保留Distinct语义比如count(distinct user_id)或者直接使用Flink SQL的approx_distinct函数做近似去重沉淀到最终结果。简单说加盐适用于SUM、COUNT这类允许一点误差的指标精确去重类指标要格外小心。6. 一套通用排查流程从报警到定位十分钟内理清思路6.1 我把线上问题响应拆成了五步走经历过的故障多了以后我给自己定了一套标准的排查流程每次上线前都会在脑子里过一遍。这里分享出来它对新手尤其友好。第一步接到报警先看是“趋势告警”还是“瞬时告警”。趋势告警比如Lag持续上升5分钟以上要认真对待瞬时告警往往只是抖动不用过度反应。第二步看Job状态。如果任务还活着去Web UI看背压——背压的位置就是瓶颈的位置。如果任务已经重启直接看JobManager日志里的Exception或者恢复原因。第三步看Checkpoint状态。如果最近几个Checkpoint失败或耗时异常优先处理CK问题因为它是其他故障的源头。第四步看Kafka消费Lag曲线图。积压的形态持续上升、恒定、V型回落能告诉你很多信息。第五步对照业务流量和上游系统状态。有时不是Flink自己的问题而是上游数据源突发写入或者下游存储变慢了。千万别在Flink内部死磕及时确认上下游系统状态是排查效率的关键。6.2 每个故障类型的信号特征帮你快速对号入座我用一张表记录了几种故障的“信号指纹”排查时经常拿出来对照故障类型关键信号优先排查项CK超时Checkpoint连续失败/耗时超阈值State大小、HDFS写入延迟、反压链路任务重启Job状态反复、日志报异常或恢复JobManager日志、堆外内存、外部依赖稳定性Kafka积压Lag持续上升且消费速率低于生产速率背压位置、Source并行度、单条处理耗时数据倾斜部分Subtask负载高出数倍Key分布、Join条件、维表热点Key这张表不能帮你精确到具体哪一行代码但能帮你把方向定住后续排查再逐步收敛。6.3 我从这些故障中总结出的四个“保命配置”最后送几个线上保命的配置习惯。这些不是一个一个调参数而是一套组合拳。第一个务必开启execution.checkpointing.min-pause。它的作用是设置两次Checkpoint之间的最短间隔防止频繁失败时Checkpoint风暴。如果没有这个保护任务在故障恢复后会连续发起大量Checkpoint还没等业务追上来又把系统干趴。第二个配置合理的execution.checkpointing.tolerable-failed-checkpoints。允许1-2次Checkpoint失败不触发重启给短暂抖动留出缓冲空间。但别设太大否则等于屏蔽了容错。第三个给TaskManager的内存配好优先级。线上我习惯先配好总内存再按taskmanager.memory.process.size的方式让Flink自动推导各分区。要手动调整时优先保证taskmanager.memory.managed.size足够大给RocksDB用其次是网络缓冲最后才是Framework堆。第四个Kafka Source一定要显式设置消费位点策略。推荐在作业启动参数里明确指定从GroupOffset还是从Latest开始否则升级重启时经常会因为位点策略不一致出现重复消费或漏消费。7. 写在最后的经验之谈我记得有一次连续排查了三个小时的积压问题最后发现是上游Kafka Producer端一个批量参数配错导致消息写不进去Producer端的发送队列堵住了下游Flink自然拉不到数据。从那以后我养成了一个习惯遇到Flink自身现象奇怪时花五分钟看看上下游系统的监控大盘往往比死磕Flink的内部指标更快找到答案。还有个小技巧分享给大家每次上线前把作业的并行度、状态后端、Checkpoint间隔、Kafka Topic分区数、预期峰值吞吐这五个核心参数记录成一张表放进团队的文档里。故障排查时第一件事不是翻开代码而是对照这张表做基线对比——有没有人改过参数、流量是不是超出了预期、分区分寸是不是不够。很多故障的答案就藏在这些“对比”里。Flink的线上故障排查从来不是一步到位的爽文而是抽丝剥茧的侦探剧。把今天这四类问题的排查套路记牢再配合一套自己的监控清单你也能在报警响起时保持冷静一步一步把问题钉死在屏幕上。祝大家线上作业平稳永无红色告警。

相关新闻

达梦数据库体系

达梦数据库体系

一、DM逻辑结构概述1、数据库与实例在DM7之前版本的DM数据库中,“数据库”和“实例”这两个术语经常可以互相替换, 意义也很相近。在DM7以及之后版本的数据库中,“数据库”和“实例”这两个概念之间有 着很大的差别,甚至可以说它们…

2026/10/1 14:38:54 阅读更多 →
claude code mac下的配置与强制提醒:把 settings 改到 TaoToken 的完整步骤

claude code mac下的配置与强制提醒:把 settings 改到 TaoToken 的完整步骤

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

2026/10/1 14:38:54 阅读更多 →
我准备了 10 个有 Bug 的 PR,让三个 AI 审查方案来查:TaoToken 统一 Key 接入实测

我准备了 10 个有 Bug 的 PR,让三个 AI 审查方案来查: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/1 14:38:54 阅读更多 →

最新新闻

h3.c画布与时长选择指南:512到768p分辨率和帧数配置的最佳实践

h3.c画布与时长选择指南:512到768p分辨率和帧数配置的最佳实践

h3.c画布与时长选择指南:512到768p分辨率和帧数配置的最佳实践 【免费下载链接】h3.c MiniMax H3 inference engine for Mac computers 项目地址: https://gitcode.com/gh_mirrors/h3/h3.c h3.c 是面向 Apple Silicon 的 MiniMax H3 原生视频推理引擎&#x…

2026/10/1 15:26:17 阅读更多 →
【CANN比赛】算子开发比赛

【CANN比赛】算子开发比赛

【全局生态】 【码力全开特辑】一张图看懂CANN:技术架构与编程开发全景_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV11nac68EEZ/?spm_id_from333.337.search-card.all.click&vd_source1f3f694d074ce0ac334eb3023001f728 【Cube算子】 【2024CANN训…

2026/10/1 15:26:17 阅读更多 →
告别繁杂的科研写作事务!Paperxie 一站式 AI 写作工具真心安利

告别繁杂的科研写作事务!Paperxie 一站式 AI 写作工具真心安利

前言 临近毕业季,不少同学一边实习备考,一边埋头打磨自己的学术文章,时间被拆解得支离破碎。 着手准备一篇完整的学术文章,第一道难关就是文献处理:外文资料晦涩难懂,中文文献堆积如山,梳理研究…

2026/10/1 15:26:17 阅读更多 →
木纹砖个性化定制电话 欣荣建材 600x600木纹地砖 阳台庭院户外铺贴适用场景

木纹砖个性化定制电话 欣荣建材 600x600木纹地砖 阳台庭院户外铺贴适用场景

木纹砖个性化定制,为什么越来越多人开始关注?近年来,木纹砖在家装与工装领域的出现频率明显升高。它以瓷砖的材质还原实木纹理,既有木材的温润视觉,又规避了实木地板怕潮、怕虫、难打理的短板。尤其在昆明这样多雨潮湿、干湿季分…

2026/10/1 15:26:17 阅读更多 →
长程Agent上下文管理:ICLR/ICML 2026核心方案与工程落地全汇总

长程Agent上下文管理:ICLR/ICML 2026核心方案与工程落地全汇总

ICLR、ICML 2026:一文汇总长程 Agent 上下文管理大概从去年开始,我就在持续跟进长程 Agent 这个方向。原因很直接:现在大家做的 Agent 大多只能在"几轮对话"或者"单步工具调用"里表现良好,一旦把任务拉长到小…

2026/10/1 15:26:17 阅读更多 →
4.Clean Architecture:架构与系统边界能力提炼

4.Clean Architecture:架构与系统边界能力提炼

目录 1. 架构到底是什么?2. Clean Architecture 的核心3. Dependency Rule:依赖规则4. Entity / Domain5. Use Case / Application6. Infrastructure7. Interface Adapter8. 为什么架构需要“边界”?9. 不要机械套 Clean Architecture10. 架…

2026/10/1 15:25:16 阅读更多 →

日新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →