9.1 KiB
Next Session Guide - LLMemory
Quick Start for Next Developer/Agent
Project: LLMemory - AI Agent Memory System
Current Phase: Phase 0 Complete (Planning + Prototype)
Next Phase: Phase 1 - MVP Implementation
Estimated Time to MVP: 12-15 hours
What's Been Done
✅ Completed
-
Planning & Architecture
- Two competing investigate agents analyzed implementation strategies
- Comprehensive SPECIFICATION.md created (data model, search algorithms, CLI design)
- Detailed IMPLEMENTATION_PLAN.md with step-by-step checkboxes
- ARCHITECTURE.md with algorithm pseudo-code and performance targets
-
Project Structure
- Directory created:
/home/nate/nixos/shared/linked-dotfiles/opencode/llmemory/ - package.json configured with dependencies
- .gitignore set up
- bin/memory executable created
- CLI prototype implemented (command structure validated)
- Directory created:
-
Documentation
- README.md with overview and status
- SPECIFICATION.md with complete technical design
- IMPLEMENTATION_PLAN.md with phased roadmap
- ARCHITECTURE.md with algorithms and data flows
- PROTOTYPE.md with CLI validation results
- NEXT_SESSION.md (this file)
-
CLI Prototype
- All commands structured with Commander.js
- Help text working
- Argument parsing validated
- Ready for real implementation
❌ Not Yet Implemented
- Database layer (SQLite)
- Actual storage/retrieval logic
- Search algorithms (LIKE, FTS5, fuzzy)
- Tests
- Agent guide documentation
What to Do Next
Immediate Next Step: Phase 1 - MVP
Goal: Working memory system with basic LIKE search in 2-3 days
Start with Step 1.2: Database Layer - Schema & Connection
Location: IMPLEMENTATION_PLAN.md - Phase 1, Step 1.2
Step-by-Step
-
Review Documents (15 minutes)
cd llmemory cat README.md # Overview cat SPECIFICATION.md # Technical spec cat IMPLEMENTATION_PLAN.md # Next steps with checkboxes cat docs/ARCHITECTURE.md # Algorithms and design -
Install Dependencies (5 minutes)
npm install # Should install: better-sqlite3, commander, chalk, date-fns, vitest -
Test Prototype (5 minutes)
node src/cli.js --help node src/cli.js store "test" --tags demo # Should show placeholder output -
Create Database Layer (2 hours)
# Create these files: mkdir -p src/db touch src/db/connection.js # Database connection & initialization touch src/db/schema.js # Phase 1 schema definition touch src/db/queries.js # Prepared statementsImplementation checklist:
- SQLite connection with WAL mode
- Schema creation (memories, tags, memory_tags)
- Indexes on created_at, expires_at, tags
- Metadata table with schema_version
- Prepared statements for CRUD operations
- Transaction helpers
Reference: SPECIFICATION.md - "Data Schema" section
SQL Schema: IMPLEMENTATION_PLAN.md - Phase 1, Step 1.2 -
Implement Store Command (2 hours)
mkdir -p src/commands src/utils touch src/commands/store.js touch src/utils/validation.js touch src/utils/tags.jsImplementation checklist:
- Content validation (length < 10KB)
- Tag parsing (comma-separated, normalize to lowercase)
- Expiration date parsing
- Insert memory into DB
- Insert/link tags (get-or-create)
- Return memory ID with success message
Reference: SPECIFICATION.md - "Memory Format Guidelines"
-
Implement Search Command (3 hours)
mkdir -p src/search touch src/commands/search.js touch src/search/like.js touch src/utils/formatting.jsImplementation checklist:
- Build LIKE query with wildcards
- Tag filtering (AND logic)
- Date filtering (after/before)
- Agent filtering (entered_by)
- Exclude expired memories
- Order by created_at DESC
- Format output (plain text with colors)
Reference: ARCHITECTURE.md - "Phase 1: LIKE Search" algorithm
-
Continue with Steps 1.5-1.8 See IMPLEMENTATION_PLAN.md for:
- List command
- Prune command
- CLI integration (replace placeholders)
- Testing
Key Files Reference
Planning & Specification
SPECIFICATION.md- Start here for technical designIMPLEMENTATION_PLAN.md- Your checklist for step-by-step tasksdocs/ARCHITECTURE.md- Algorithm details and performance targetsREADME.md- Project overview and status
Code Structure
src/cli.js- CLI entry point (currently placeholder)src/commands/- Command implementations (to be created)src/db/- Database layer (to be created)src/search/- Search algorithms (to be created)src/utils/- Utilities (to be created)test/- Test suite (to be created)
Important Patterns
Database Location:
// Default: ~/.config/opencode/memories.db
// Override with: --db flag
Schema Version Tracking:
// metadata table stores current schema version
// Used for migration triggers
Search Evolution:
// Phase 1: LIKE search (simple, <500 memories)
// Phase 2: FTS5 (production, 10K+ memories)
// Phase 3: Fuzzy (typo tolerance, 100K+ memories)
Development Workflow
Daily Checklist
- Pull latest changes (if working with others)
- Run tests:
npm test - Pick next unchecked item in IMPLEMENTATION_PLAN.md
- Implement feature with TDD (write test first)
- Update checkboxes in IMPLEMENTATION_PLAN.md
- Commit with clear message
- Update CHANGELOG.md (if created)
Testing
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report
Commit Message Format
<type>(<scope>): <subject>
Examples:
feat(db): implement SQLite connection with WAL mode
feat(store): add content validation and tag parsing
test(search): add integration tests for LIKE search
docs(spec): clarify fuzzy matching threshold
Common Questions
Q: Which search algorithm should I start with?
A: Start with LIKE search (Phase 1). It's simple and sufficient for <500 memories. Migrate to FTS5 when needed.
Q: Where should the database be stored?
A: ~/.config/opencode/memories.db by default. Override with --db flag.
Q: How do I handle expiration?
A: Always filter WHERE expires_at IS NULL OR expires_at > now() in queries. Manual cleanup with memory prune.
Q: What about fuzzy matching?
A: Skip for Phase 1. Implement in Phase 3 after FTS5 is working.
Q: Should I use TypeScript?
A: Optional. JavaScript is fine for now. TypeScript can be added later if needed.
Q: How do I test without a real database?
A: Use :memory: SQLite database for tests. Fast and isolated.
Performance Targets
| Phase | Dataset | Latency | Storage |
|---|---|---|---|
| 1 (MVP) | <500 | <50ms | Base |
| 2 (FTS5) | 10K | <100ms | +30% |
| 3 (Fuzzy) | 100K+ | <200ms | +200% |
Troubleshooting
Problem: better-sqlite3 won't install
Solution: Ensure build tools installed: sudo apt install build-essential python3
Problem: Database locked
Solution: Enable WAL mode: PRAGMA journal_mode = WAL;
Problem: Tests failing
Solution: Use :memory: database for tests, not persistent file
Problem: Slow searches
Solution: Check indexes exist: sqlite3 memories.db ".schema"
Success Criteria for Phase 1
- Can store memories with tags and expiration
- Can search with basic LIKE matching
- Can list recent memories
- Can prune expired memories
- All tests passing (>80% coverage)
- Query latency <50ms for 500 memories
- Help text comprehensive
- CLI works end-to-end
Validation Test:
memory store "Docker Compose uses bridge networks by default" --tags docker,networking
memory store "Kubernetes pods share network namespace" --tags kubernetes,networking
memory search "networking" --tags docker
# Should return only Docker memory
memory list --limit 10
# Should show both memories
memory stats
# Should show 2 memories, 3 unique tags
Resources
- SQLite FTS5: https://www.sqlite.org/fts5.html
- better-sqlite3: https://github.com/WiseLibs/better-sqlite3
- Commander.js: https://github.com/tj/commander.js
- Vitest: https://vitest.dev/
Contact/Context
Project Location: /home/nate/nixos/shared/linked-dotfiles/opencode/llmemory/
OpenCode Context: This is a plugin for the OpenCode agent system
Session Context: Planning done by two investigate agents (see agent reports in SPECIFICATION.md)
Final Notes
This project is well-documented and ready to implement.
Everything you need is in:
- SPECIFICATION.md - What to build
- IMPLEMENTATION_PLAN.md - How to build it (step-by-step)
- ARCHITECTURE.md - Why it's designed this way
Start with IMPLEMENTATION_PLAN.md Phase 1, Step 1.2 and follow the checkboxes!
Good luck! 🚀
Created: 2025-10-29
Phase 0 Status: ✅ Complete
Next Phase: Phase 1 - MVP Implementation
Time Estimate: 12-15 hours to working MVP