A three-layer memory system that provides context for the current task and consolidates knowledge.
Memory Layers
| Layer | File | Content | Format | Capacity |
|---|---|---|---|---|
| User Preferences | ~/.talos/profile.md |
Cross-project coding style and collaboration habits | Plain text bullet points | ≤50 lines |
| Project Hot Memory | wiki/hot.md |
Key constraints, major pitfalls, strong preferences | Plain text bullet points | ≤100 lines |
| Project Knowledge Base | wiki/<category>/<name>.md |
Domain knowledge, reusable patterns, technology choices | Obsidian markdown([[wikilinks]]) |
Unlimited |
| Change Log | wiki/log.md |
Timeline record of memory changes | `## [YYYY-MM-DD] Operation | Title` |
When full, delete the unimportant ones to make room for new content.
Reading Memory
Read the following files in order (skip if they do not exist):
~/.talos/profile.mdwiki/hot.mdwiki/INDEX.md— Scan the full index text, locate entries relevant to the current task, and if necessary read the correspondingwiki/<type>/<name>.mdpages in depth
Extract context relevant to the current task and refer to it during work.
Writing Memory
After completing a relatively complete task,explicitly determinewhether memory needs to be written (the conclusion may be "no need to write"). Write only if one of the following conditions is met:
- Involves non-obvious architectural decisions or constraints (the why is not intuitive)
- Discovered pitfalls / anti-patterns / landmines that were stepped on (others will step on them again)
- Project-specific reusable patterns (not general best practices)
- Preferences or corrections explicitly expressed by the user
- Key changes in project structure
- Valuable analysis or synthesis of existing knowledge in the wiki (query backflow)
After writing, append an entry to wiki/log.md。
INDEX.md Maintenance Rules
wiki/INDEX.md is the table of contents for the knowledge base. Each entry: link + one-line summary + optional metadata (date, number of sources).
The index is grouped by semantic type, and each type corresponds to a subdirectory under the wiki directory:
| Type | Directory | Content |
|---|---|---|
| entities | wiki/entities/ |
Concrete entities such as people, tools, libraries, systems, etc. |
| concepts | wiki/concepts/ |
Abstract concepts, patterns, methodologies, design principles |
| decisions | wiki/decisions/ |
Architecture Decision Records (ADRs) and rationale for technology choices |
| sources | wiki/sources/ |
Summaries of external sources such as documents, articles, papers, etc. |
When writing/updating knowledge base pages, maintain INDEX.md at the same time:
- Add page → insert an entry under the corresponding type group
- Update page → update the summary (if changed)
- Delete page → remove the corresponding entry
What Should Not Be Recorded
- Routine implementation details that any competent developer knows
- Content that can be inferred from code / git history
- One-off debugging details (unless they reveal a systemic problem)
- General knowledge unrelated to the project
- Pure factual statements (without why or lessons learned)
Lint (periodic maintenance)
When the user requests it or after a long interval, check the knowledge base health:
- Whether there are contradictions between pages (different pages record conflicting information)
- Outdated content (conclusions that have been overturned by code changes)
- Orphan pages (no other pages link to them)
- Pages missing from INDEX.md or links pointing to deleted pages
- Important concepts mentioned multiple times but lacking a standalone page
When problems are found, fix them and append a lint entry to wiki/log.md。