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

推荐订阅源

N
Netflix TechBlog - Medium
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
博客园 - Franky
F
Fortinet All Blogs
D
Docker
博客园 - 司徒正美
腾讯CDC
Recent Announcements
Recent Announcements
The Cloudflare Blog
B
Blog RSS Feed
GbyAI
GbyAI
T
Tailwind CSS Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
OpenYF — Building Intelligent Systems
youelfedr · 2026-05-17 · via Hacker News - Newest: "AI"

The transition from Phase 01 to Phase 02 was not planned.

It was not the result of reading a paper on causal reasoning or deciding theoretically that knowledge graphs were superior to flat lists. It came from a specific moment of failure during actual work — the kind of failure that is obvious in retrospect and invisible until it happens.

I was trying to plan a multi-step action for ARIA.


The Moment It Broke

Phase 01 gave ARIA a persistent memory bank. It worked well at what it was designed for. ARIA could remember across sessions that the OS was Windows, that the database was SQLite, that there was a custom model provider configured. Those facts persisted. They were retrieved when relevant. That was useful.

Then I tried to do something that required more than retrieval.

I needed to fix a custom provider configuration. The immediate change was in config.py. But that change had a cascade: the .env file had a default Gemini setting that would conflict with the new provider. The database had stored connection parameters that would be wrong after the change. The connectivity test was failing for a reason that was downstream of the environment variable, not the provider code itself.

ARIA's memory at that point held three facts:

  • /The user has a custom provider
  • /The .env file has a default Gemini setting
  • /The connectivity test is failing

To the flat memory list, those were three unconnected sentences. There was no line between them. ARIA knew what the gears were. It did not understand why turning one gear would strip the teeth off another.

I was asking an agent to reason about consequences with a system that was only capable of retrieving facts. Those are not the same capability. And in that moment, with a specific file and a specific cascade of dependencies in front of me, the gap became impossible to ignore.


A List Is Just a Database

A flat list of facts is a database. A world model is understanding. The distinction sounds philosophical until you try to plan something.

When I tell you "the grass is wet," you know what is true. But if you understand why — because it rained, or because the sprinklers ran — you can do three things a database cannot:

Counterfactual reasoning: "If it hadn't rained, the grass would be dry." You can reason backward from a fact to its cause and ask what would be different if the cause had not occurred.

Prediction: "If I walk on the grass, my shoes will get muddy." You can reason forward from a fact to its consequences.

Planning: "I should take the paved path instead." You can select actions based on predicted consequences rather than reacting to the current state.

Pure retrieval supports none of these. It answers: "Do I have this fact?" It cannot answer: "Given this fact, what follows?" and "Given that I want this outcome, what action produces it?"

That is the line between a database and understanding. And it is exactly the line ARIA was stuck behind.


What the Causal Graph Actually Does

Phase 02 introduced a causal entity graph built on NetworkX, mirrored in SQLite. Every fact ARIA learns becomes a node. Every relationship between facts becomes a typed edge.

The edge types matter. "Causes" is different from "enables" is different from "requires" is different from "contradicts." When ARIA learns that changing the environment variable causes the database connection parameters to become stale, that is a "causes" edge — a directional relationship with a specific semantic meaning. When it learns that the custom provider requires the .env file to be updated first, that is a "requires" edge. When it learns that the default Gemini setting contradicts the custom provider setting, that is a "contradicts" edge.

The graph is not just a richer storage format. It is a different kind of object entirely. You can traverse it. You can ask: "If I change this node, what other nodes are affected?" You can follow "causes" edges forward to predict consequences. You can follow "requires" edges backward to identify prerequisites. You can detect "contradicts" edges to find inconsistencies before taking action.

That is what happened in the config.py situation. With a causal graph, ARIA does not just know that the .env file exists — it knows that the custom provider requires the .env file to be updated, that the environment variable causes the database connection parameters to change, and that the existing default contradicts the new configuration. Before touching a single line of code, it can trace the full consequence chain.

That shift — from knowing what exists to understanding why it exists and what depends on it — is where an agent stops taking actions in the dark.


The Contradiction Detector

One of the more interesting consequences of a causal graph is that contradictions become visible.

In a flat memory list, contradictions are invisible. If ARIA stores "the custom provider is configured" and also stores "the default Gemini setting is active," those two facts sit next to each other with no indication that they are in tension. The flat list does not know what a contradiction is. It just stores strings.

In the causal graph, when a new observation arrives that conflicts with an existing node, the contradiction detector flags it. Both facts are kept — not because both are true, but because the tension between them is itself meaningful information. "These two things cannot both be correct — which one is right?" is a question the system can now ask. The answer comes from context, from new evidence, from tracing which causal chain is more consistent with subsequent observations.

This changes how ARIA handles uncertainty. Instead of silently overwriting old information with new information — which is what a flat memory does — the graph holds the tension explicitly and waits for resolution. That is much closer to how careful reasoning actually works.


What It Cannot Do Yet

The world model is not a causal engine in the formal sense that Judea Pearl describes in his work on causality. The edges in ARIA's graph are claims made by the language model, not verified causal relationships. The model will sometimes identify a causal link where none exists. It will sometimes miss one that is obvious. The graph accumulates noise alongside signal.

Entity resolution is still fragile. If ARIA encounters "config.py" in one conversation and "the config file" in another, those should be the same node. Determining that they refer to the same entity requires either exact string matching — which fails too often — or fuzzy matching — which introduces false merges. We use word overlap similarity, which is a compromise that works most of the time and fails in specific predictable ways.

And the graph is only as good as the observations that feed it. If the language model's causal_observations field produces vague or incorrect relationships, the graph inherits those errors. Garbage in, garbage out applies to knowledge graphs as much as it does to any other system.


Why It Still Matters

Despite those limitations, the causal graph represents something qualitatively different from the flat memory list it replaced.

An agent that can trace dependency chains before taking action is a different kind of tool than one that retrieves isolated facts and generates responses. The difference is not always visible in simple conversations — for "what is my name" or "what was I working on yesterday," the flat list and the graph produce similar results.

The difference becomes visible at exactly the moment it matters most: when an action has consequences, when the system needs to reason about what will happen rather than just what is, when planning requires understanding dependencies rather than just retrieving them.

That is the moment when most AI assistants reveal themselves as very fast pattern matchers. And it is the moment when an agent with a world model starts to feel like something different.

We are still building toward that. The graph is real, the edges are real, the contradiction detection is real. But the gap between what the world model currently does and what genuine causal reasoning would look like is still large.

The direction is right. The distance is honest.

We are building the watch, not just moving the gears.