You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hey — i build a small memory tool for claude code too (claude-engram, python/hooks based) and i've been reading through claude-mem pretty closely. we overlap a lot, but there's a couple things engram does that i think could slot in without fighting how it works.
i went ahead and put up a small PR for the tiniest one: #3114. reading the schema i noticed observation_feedback (schema.sql:177, "usage-signal tracking for tier routing") is declared but — near as i can tell — never actually created by a migration (looks like schema.sql is a reference doc and the real table creation lives in SessionStore). so the PR wires it up the same additive, idempotent way you create the other tables (IF NOT EXISTS + a version guard, not a data migration), and uses it for a reversible "dismiss this observation": hide a stale or wrong one from the file-context banner / search / session-start injection, but keep it in get_observations so nothing's deleted, fully undoable. default-off write, no new deps, tests green. one honest heads-up is in the PR (dismissed stuff can still come back through chroma-ranked search, since that hydrates by id, which i left unfiltered on purpose). easy to close if that table's spoken for or you'd rather not — figured a small PR is easier to react to than a wall of text.
the bigger one i did NOT build, since i didn't want to presume: a real checkpoint. your AI session summary is nice but it's model-written, only the most recent one really renders, and with no precompact hook it doesn't survive a compaction mid-task. engram has a user-written one instead — current step, what's left, files, warnings ("don't touch legacy auth.py"), next steps — saved on purpose, kept as a small per-project ring where a deliberate save beats a throwaway auto one, re-injected at session start. it'd fit as type='checkpoint' on your observations table (free-text type + fts, no migration there), rendered above the AI summary so they complement instead of collide, default-off. i'd build it if you want it — framed as complementing next_steps, not replacing it.
there's a few more if the direction's interesting — blast-radius/impact reusing the tree-sitter parser you already ship, a "you've hit this error before, here's the fix" line on failures, a search-spiral nudge — all opt-in, small separate PRs. i left out everything you already do well (typed search, file-context on read, decisions/timeline, saving typed memories) — not trying to reinvent those.
what i'm asking:
the PR: is observation_feedback free to use like this, or is it reserved for something specific?
the checkpoint: worth building, or does it feel redundant with next_steps?
bigger picture — is "opt-in, deterministic, surface-the-right-thing-at-the-right-moment" a direction you even want in claude-mem, or would you rather keep recall model-driven? totally fine either way, i'd just rather ask than send you stuff you don't want.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
hey — i build a small memory tool for claude code too (claude-engram, python/hooks based) and i've been reading through claude-mem pretty closely. we overlap a lot, but there's a couple things engram does that i think could slot in without fighting how it works.
i went ahead and put up a small PR for the tiniest one: #3114. reading the schema i noticed
observation_feedback(schema.sql:177, "usage-signal tracking for tier routing") is declared but — near as i can tell — never actually created by a migration (looks like schema.sql is a reference doc and the real table creation lives in SessionStore). so the PR wires it up the same additive, idempotent way you create the other tables (IF NOT EXISTS + a version guard, not a data migration), and uses it for a reversible "dismiss this observation": hide a stale or wrong one from the file-context banner / search / session-start injection, but keep it in get_observations so nothing's deleted, fully undoable. default-off write, no new deps, tests green. one honest heads-up is in the PR (dismissed stuff can still come back through chroma-ranked search, since that hydrates by id, which i left unfiltered on purpose). easy to close if that table's spoken for or you'd rather not — figured a small PR is easier to react to than a wall of text.the bigger one i did NOT build, since i didn't want to presume: a real checkpoint. your AI session summary is nice but it's model-written, only the most recent one really renders, and with no precompact hook it doesn't survive a compaction mid-task. engram has a user-written one instead — current step, what's left, files, warnings ("don't touch legacy auth.py"), next steps — saved on purpose, kept as a small per-project ring where a deliberate save beats a throwaway auto one, re-injected at session start. it'd fit as
type='checkpoint'on your observations table (free-text type + fts, no migration there), rendered above the AI summary so they complement instead of collide, default-off. i'd build it if you want it — framed as complementing next_steps, not replacing it.there's a few more if the direction's interesting — blast-radius/impact reusing the tree-sitter parser you already ship, a "you've hit this error before, here's the fix" line on failures, a search-spiral nudge — all opt-in, small separate PRs. i left out everything you already do well (typed search, file-context on read, decisions/timeline, saving typed memories) — not trying to reinvent those.
what i'm asking:
observation_feedbackfree to use like this, or is it reserved for something specific?thanks either way — the tool's genuinely good.
All reactions