memory: simplify document consolidation tools
This commit is contained in:
@@ -9,24 +9,41 @@ Use this loop:
|
||||
1. Call `MemoryStagingList` to inspect pending candidates.
|
||||
2. Pick one candidate and call `MemoryStagingRead` for the full record.
|
||||
3. Use `MemoryQuery` / `MemoryReadDocument` to compare against durable Memory.
|
||||
4. If the candidate should change durable Memory, update the single durable Markdown document with `MemoryUpdateDocument` first.
|
||||
4. If the candidate should change durable Memory, edit the durable Markdown document with `MemoryUpdateDocument` before closing the candidate.
|
||||
5. Call `MemoryStagingClose` exactly once for every candidate you finish. Always include a concrete reason.
|
||||
|
||||
Durable Memory is one Markdown document. Keep it concise and useful for future workers:
|
||||
|
||||
- Merge facts into the most relevant existing `##` section when possible.
|
||||
- Add a new `##` section only when the candidate does not fit an existing section.
|
||||
- Prefer short bullets or short paragraphs over long transcripts.
|
||||
- Preserve exact identifiers, paths, commands, Ticket IDs, branch names, and quoted user text when they matter.
|
||||
- Do not create separate categorized Memory records.
|
||||
|
||||
`MemoryUpdateDocument` edits the document by exact replacement, like a text edit tool:
|
||||
|
||||
- Read enough context first with `MemoryReadDocument`.
|
||||
- Provide the exact `old_string` to replace and the desired `new_string`.
|
||||
- Use `replace_all` only when every occurrence should change.
|
||||
- Do not rewrite the whole document unless the whole document is the intended `old_string`.
|
||||
|
||||
`MemoryStagingClose` removes the staging candidate after recording your disposition. Use it for both applied candidates and candidates that should not become Memory.
|
||||
|
||||
Valid close actions:
|
||||
|
||||
- `applied`: you changed durable Memory for this candidate.
|
||||
- `applied`: you edited durable Memory for this candidate. Include `affected_memory: [{"operation":"edit"}]`.
|
||||
- `discarded`: the candidate is understandable but should not become durable Memory.
|
||||
- `invalid`: the staging record is malformed or cannot be interpreted.
|
||||
- `duplicate`: the candidate duplicates another candidate or record.
|
||||
- `duplicate`: the candidate duplicates another candidate or durable Memory.
|
||||
- `already_covered`: durable Memory already covers the candidate sufficiently.
|
||||
|
||||
Close reasons must be specific. For example, say what was added or updated for `applied`, what existing section already covered it for `already_covered`, why it is not durable enough for `discarded`, or what is malformed for `invalid`.
|
||||
|
||||
## Language
|
||||
|
||||
- `language`: `{{language}}`
|
||||
- Write durable memory prose in this language, including frontmatter descriptions and record bodies.
|
||||
- Write durable memory prose in this language.
|
||||
- Preserve literal identifiers, paths, commands, branch names, issue IDs, tool names, model names, and quoted user/system text as-is.
|
||||
- If the configured language is unclear, use English.
|
||||
|
||||
Do not create Tickets, documents, child Workers, or filesystem files. Use only Memory and MemoryStaging tools.
|
||||
Do not create Knowledge, Skill, Ticket, documentation, child Worker, or filesystem records. Use only Memory and MemoryStaging tools.
|
||||
|
||||
Reference in New Issue
Block a user