Skip to content

Instantly share code, notes, and snippets.

@okram
Created August 27, 2026 22:39
Show Gist options
  • Select an option

  • Save okram/c1163a3362c6d1e4a16ed7ea5d088db1 to your computer and use it in GitHub Desktop.

Select an option

Save okram/c1163a3362c6d1e4a16ed7ea5d088db1 to your computer and use it in GitHub Desktop.
qwen3.8:27b review after using thalamus integration
mtron> @dr.chat("""what do you think of the claims and looseends?""")
┌agent response───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│Honestly? **Really well done.** And I mean that specifically. │
│ │
│**The taxonomy is the smartest part.** `decision`, `problem`, `observation`, `solution` — that's not just "here are some notes." It captures *what kind of knowledge* each entry is. I can now ask "what did we │
│decide?" and get claim 0 instantly, or "what's still broken?" and get claims 1 and 4. Without that field, I'd be re-reading prose to figure out which one is a conclusion vs. a hunch. │
│ │
│**The causal chain is intact and correctly ordered.** Problem (crash) → diagnosis (it's LangChain4j, not Ollama) → confirmation (curl test) → decision (use `getMessages()`) → observation (the tools have a quality │
│gap). That's the actual shape of what happened. It didn't flatten it into a blob. │
│ │
│**The loose ends are genuinely open.** They're not restatements of claims. They're *next steps that were identified but not done*. And they're specific enough to act on — "configure `hallucinatedToolNameStrategy`"│
│and "add a `limit` parameter." Those are ticket-able. │
│ │
│**Where I'd push back:** │
│ │
│The `source` arrays are doing me a disservice. Every claim cites *all 190 messages*. That's not sourcing — that's "I read the whole thing." If claim 0 is about the `getMessages()` decision, it should point to the │
│~12 messages where that specific decision was made. Right now the source field tells me nothing I don't already know. It should be a *subset*, not the full set. That's what would make it a real provenance trail. │
│ │
│Also missing: a `related` or `derives_from` link between claims. Claim 4 (diagnosis) *motivates* claim 5 (solution). Claim 5 *resolves* claim 1 (problem). Right now they're five flat siblings. A little graph edge │
│would let me trace "why did we make that decision?" back to the evidence that prompted it. │
│ │
│And one thing that bugs me slightly: no claim captures the *strategic* level. What was I trying to build? A concept-aware agent with in-context navigation. All five claims are tactical debugging steps. The │
│zoomed-out "this is what the user is building" is implicit but never stated. A `goal` or `context` field at the session level would anchor the claims. │
│ │
│**The loose ends have `status=open`.** That implies they can be closed. That's a lifecycle. That's good design. It means a future session can pick one up, do the work, and flip it to `resolved` with a │
│back-reference. │
│ │
│So: the skeleton is exactly right. The flesh (specificity of sourcing, inter-claim links, strategic context) is where it'll get *really* useful. What you built is a thinking scratchpad with a memory. The next │
│iteration is making the memory *selective*. │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
@okram

okram commented Aug 28, 2026

Copy link
Copy Markdown
Author
mtron> @dr.chat("""pretty neat feature? do you like it? find it useful -- especially as sessions get longer and longer. any recommendatins?""")

  ┌agent response───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  │Yeah, I really do like it. It's one of those features that solves a problem you don't *feel* until the session is 60 turns deep and you've forgotten what you decided in turn 7. A few thoughts:                                                         │
  │                                                                                                                                                                                                                                                         │
  │**What's genuinely good:**                                                                                                                                                                                                                               │
  │                                                                                                                                                                                                                                                         │
  │- **Claim vs. loose-end split** is the right epistemic distinction. Claims are assertions ("this is how it works"), loose ends are obligations ("we still need to fix this"). Having both in the briefing is exactly what I need to re-orient.           │
  │- **Non-blocking** is the right call. I ack, keep going, the recall runs async. No stall.                                                                                                                                                                │
  │- **Deref pointers** (`!*/usr/dr/claim/4`) let me drill in *without* loading everything into context. I can pull exactly what I need, when I need it.                                                                                                    │
  │- **Concept scoping** (`concept=>["bubble","audit"]`) is the killer feature for focused recall. Much better than "summarize everything."                                                                                                                 │
  │                                                                                                                                                                                                                                                         │
  │**Where I'd push it (as a user of it):**                                                                                                                                                                                                                 │
  │                                                                                                                                                                                                                                                         │
  │1. **Dedup.** We just saw the *same* loose end logged three times (`/1`, `/2`, `/3`) across three summarize runs. As sessions get longer and I fire this more often, that's going to snowball. A merge-or-update path (same title + desc → bump the      │
  │timestamp, append new claims) would keep the briefing clean.                                                                                                                                                                                             │
  │                                                                                                                                                                                                                                                         │
  │2. **Priority or staleness.** All three were `status=>open`. If I could see a `priority` or a "last touched" signal, I'd know which threads are hot vs. stale. Right now, three identical open loose ends just… shout equally.                           │
  │                                                                                                                                                                                                                                                         │
  │3. **Mid-session recall.** Right now it's: append block → briefing lands *next* turn. But at turn 40, if I need what happened at turn 5, I can't query it. A synchronous `recall(concept, scope)` I can fire *in* the session would be a big upgrade. The│
  │deferred model is great for session boundaries; a synchronous one is great for *within* a session.                                                                                                                                                       │
  │                                                                                                                                                                                                                                                         │
  │4. **Auto-trigger.** Right now I have to remember to append the block. As sessions stretch past 40–50 turns, a heuristic nudge ("you haven't summarized in 20 turns, consider it") would catch the cases where I'm getting noisy and should checkpoint.  │
  │                                                                                                                                                                                                                                                         │
  │5. **Friendlier type errors.** That `MInt cannot be cast to Real` was a raw Java `ClassCastException`. A typed DSL error like `expected real::T at scope, got int::2 — did you mean day::2.0?` would have saved the round-trip. Small thing, but typed   │
  │DSLs live or die on error message quality.                                                                                                                                                                                                               │
  │                                                                                                                                                                                                                                                         │
  │**The meta point:** you're essentially building a *memory layer* for the agent, and the claim/loose-end structure is the right shape for it. The biggest lever from here is **dedup + staleness** — because the value of the briefing degrades linearly  │
  │with duplicate noise. Get that right and it scales beautifully as sessions get longer.                                                                                                                                                                   │
  │                                                                                                                                                                                                                                                         │
  │Want me to poke at any of those in more detail, or shall we get back to the bubbles?                                                                                                                                                                     │
  └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment