M5.2: agent memory
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m48s
CI / e2e (pull_request) Successful in 4m33s

remember(name, description, fact) and forget(name, why): control tools for
the driver (before the go-ahead too) and conversations, writing only the
agent's own vault folder, one note per fact with its provenance. No one
agrees first; each change is a line in the thread. The harness keeps the
index and puts it into the transcript once per item, with a hash.

At an item's close, completed or abandoned, a bounded memory pass (the
driver's model, its own transcript and view) records what was decided and
learned; it never holds the close up (tuning.memory.max_turns).

With the operator: corrections may be paraphrased (L6 changed), the model
forgets on its own, and nothing limits what may prompt a note. The walk
remembers and forgets, and checks nothing lands outside the agent's folder.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-08 23:05:45 +00:00
1 parent 2a35475eec
commit 2b26f0cff5
16 files changed
+604 -16

No files matched your search

+24
View File
@@ -108,6 +108,29 @@ SEARCH_NOTES = _tool(
)
NOTE_TOOLS = [READ_NOTE, LIST_NOTES, SEARCH_NOTES]
# Agent memory (L6.4): the agent's own notes, one fact each, no asking.
REMEMBER = _tool(
"remember",
"Remember one fact for later work: the operator's preferences, a lesson, "
"a decision and its reason. One note per fact; the same name replaces it.",
name="A short name: lowercase letters, digits and -, like prefers-small-prs.",
description="One line saying what the note is, for your memory's index.",
fact="The fact and why it matters; for something the operator said, who "
"said it and its gist.",
)
FORGET = _tool(
"forget",
"Forget a note of yours that is wrong or superseded.",
name="The note's name.",
why="Why it's no longer true or needed.",
)
MEMORY_TOOLS = [REMEMBER, FORGET]
MEMORY_DONE = _tool(
"memory_done",
"You've recorded what will matter later: end the pass.",
summary="What you remembered or forgot, in a line.",
)
# A conversation's tools (L1, L5): it talks, and may propose work.
REPLY = _tool(
"reply",
@@ -153,6 +176,7 @@ WAITING = frozenset(
"propose_project",
"toolchain_ready",
"request_reimage",
"memory_done",
}
)