惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
博客园 - 聂微东
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
U
Unit 42
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I spent a month trying to predict multi-agent AI failures...
JEONSEWON · 2026-06-05 · via DEV Community

JEONSEWON

I had a hypothesis I was pretty excited about: that you could detect a multi-agent system going off the rails before it actually fails — early enough to stop it. If true, that's a product. If false, I wanted to know in a month, not a year.
So I ran it as an actual experiment. Here's what happened, including the part where the result didn't just come back negative — it came back backwards.
The setup I cared most about: not fooling myself
The easy way to "validate" an idea like this is to build a signal, run it, and stop tuning the moment the numbers look good. That's also how you ship something built on a lie.
So before touching results, I pre-registered everything: the signals, the dataset split, the success bar (AUC ≥ 0.80), how the threshold would be set. I separated the signal computation from the labels at the file level and wrote a leakage test that fails the build if the signal code so much as imports the labels. Every change after that was logged as a numbered amendment with a timestamp and a "decided before seeing results" flag.
It felt like overkill. It wasn't — it's the only reason I can trust what came next.
The signals
Two of them, both computed from only the past prefix of a run (never the future, never the label):

Loop Pressure — structural cycle detection in the inter-agent message graph, weighted so that low-information loops count more. The intuition: teams that fail often start going in circles.
Information Gain Decay — the rate at which each new step stops adding novel information (embedding novelty, smoothed, then its downward slope). The intuition: right before a stall, new information dries up.

The result
AUC ≈ 0.46. The pre-registered bar was 0.80. Clean fail. Per-framework, it was ~0.5 across the board — not a dataset-mixing artifact.
I could have stopped at "no signal, random performance." But the why turned out to be the interesting part.
The twist: the signal was measuring length, and fixing that reversed it
The per-trace score I was using (max over the run) correlated with trace length at Spearman 0.86. In other words, my "failure signal" was mostly measuring how long the run was. Longer run → more chances to hit a high value → higher score. The actual difference between failed and successful runs was not significant.
The honest move here is not to call the hypothesis refuted — a broken instrument doesn't test anything. So I did one pre-registered re-aggregation with a length-invariant metric (per-trace mean instead of max). Length correlation dropped from 0.86 to −0.27. The instrument was now clean.
The clean result was worse — AUC 0.42 — and the direction had flipped. Successful runs showed more information-gain decay than failed ones (small effect, but significant).
That flip is the most useful thing I learned. "Information slowing down" isn't a failure signal, because it also happens during healthy convergence — a task wrapping up successfully also stops generating novel information. My signal couldn't tell "finishing well" from "stuck in a loop," because at the level I was measuring, they look the same.
What this does and doesn't mean
It does not mean "you can never predict multi-agent failure." The labels I used were LLM-judged with ~33% disagreement against the human-labeled subset, and they were task-level rather than execution-level. Loop Pressure I couldn't even test properly — only one of seven frameworks actually logged inter-agent edges (which is its own uncomfortable finding about the state of multi-agent tooling).
What it does mean: this specific signal, measured cleanly on this data, has no predictive power and a slight inverse direction. That's a real negative for this approach — not an eternal verdict on the idea.
The part that surprised me: the instinct wasn't wrong, the implementation was
Digging into the literature afterward, there's recent work (IBM Research, "Unsupervised Cycle Detection in Agentic Applications") that tackles almost exactly the "productive cycle vs bad cycle" distinction. Their finding: structural detection alone scored F1 0.08, semantic-similarity alone 0.28 — but a cascade (structure finds candidate loops, then semantic similarity confirms whether the repeated content is actually redundant) hit F1 0.72. (That's their result, not mine — but it's instructive.)
Which is to say: structure + semantics was the right instinct. My mistakes were (1) combining them as a weighted sum instead of a cascade, and (2) measuring a global novelty trend instead of local redundancy. Global decay can't separate convergence from stalling. "Did this step regenerate information we already had?" — a local, length-invariant question — can.
What I actually believe now
The recurring pain in all those traces was never really "predict the failure." It was simpler and more expensive: agents burning tokens on redundant work — re-running, replaying handoffs, looping on things they already solved. That's money, and most teams only notice on the invoice.
So that's where I'm pointed now: less "predict every failure," more "catch and cut the wasteful, redundant cycles" — the one thing a length-invariant local-redundancy signal can actually do.
If you run multi-agent systems in production: what's the failure that actually costs you — the model being wrong, or the system quietly wasting work? I'd genuinely like to know if this matches what you see. (I'm building something narrow in this direction, so I'm biased — but mostly I want to know if I'm chasing a real problem or a ghost. Happy to share the full experiment, amendments and all.)