- Fixed watcher stuck on old session bug (restarted service) - Fixed plugin capture 0 exchanges (added extractMessageText for OpenAI content arrays) - Updated README, session.md, function_check.md, audit_checklist.md - Verified: 9 exchanges captured per session
5.6 KiB
5.6 KiB
TrueRecall v2 - Function Check (GENERIC)
Quick validation checklist for TrueRecall v2 setup
For: Generic installation (sanitized)
Version: 2.2
Quick Status Check
cd ~/<PROJECT_PATH>/true-recall-v2
1. Directory Structure
| Check | Command | Expected |
|---|---|---|
| Project exists | ls ~/<PROJECT_PATH>/true-recall-v2 |
Files listed |
| Watcher script | ls <SKILL_PATH>/qdrant-memory/scripts/realtime_qdrant_watcher.py |
File exists |
Paths:
- Project:
~/<PROJECT_PATH>/true-recall-v2/ - Watcher:
<SKILL_PATH>/qdrant-memory/scripts/realtime_qdrant_watcher.py - Systemd:
/etc/systemd/system/mem-qdrant-watcher.service
2. Services
| Check | Command | Expected |
|---|---|---|
| Watcher running | systemctl is-active mem-qdrant-watcher |
active |
| Watcher enabled | systemctl is-enabled mem-qdrant-watcher |
enabled |
| Cron job set | crontab -l | grep true-recall |
Cron entry present |
Service:
- Service:
mem-qdrant-watcher.service - Status:
systemctl status mem-qdrant-watcher --no-pager - Logs:
journalctl -u mem-qdrant-watcher -n 20 - Cron: Configured interval (e.g.,
*/5 * * * *)
3. Qdrant Collections
| Check | Command | Expected |
|---|---|---|
| memories_tr status | curl -s http://<QDRANT_IP>:6333/collections/memories_tr | jq .result.status |
green |
| gems_tr status | curl -s http://<QDRANT_IP>:6333/collections/gems_tr | jq .result.status |
green |
| memories_tr count | curl -s http://<QDRANT_IP>:6333/collections/memories_tr | jq .result.points_count |
1000+ |
| gems_tr count | curl -s http://<QDRANT_IP>:6333/collections/gems_tr | jq .result.points_count |
10+ |
Qdrant:
- URL:
http://<QDRANT_IP>:6333 - Collections: memories_tr, gems_tr
- Embedding Model: Configured in openclaw.json
4. Curation Status
| Check | Command | Expected |
|---|---|---|
| Uncurated count | See Section 7 | Number of uncurated |
| Curated count | See Section 7 | Number of curated |
| Curator config | cat tr-continuous/curator_config.json |
Valid JSON |
Config:
- Timer: Configured minutes
- Batch Size: Configured (e.g., 100)
- User ID: Your user ID
- Source: memories_tr
- Target: gems_tr
- Curator Log:
/var/log/true-recall-timer.log
5. Capture Test
| Step | Action | Check |
|---|---|---|
| 1 | Send a test message | Message received |
| 2 | Wait 10 seconds | Allow processing |
| 3 | Check memories count increased | curl -s http://<QDRANT_IP>:6333/collections/memories_tr | jq .result.points_count |
| 4 | Verify memory has user_id | user_id: "<YOUR_USER_ID>" in payload |
| 5 | Verify memory has curated=false | curated: false in payload |
Watcher:
- Script:
<SKILL_PATH>/qdrant-memory/scripts/realtime_qdrant_watcher.py - User ID: Configured (check openclaw.json)
- Collection:
memories_tr - Embeddings: Configured model
6. Curation Test
| Step | Action | Check |
|---|---|---|
| 1 | Note current gems count | Baseline |
| 2 | Run curator manually | cd tr-continuous && python3 curator_timer.py |
| 3 | Check gems count increased | New gems added |
| 4 | Check memories marked curated | curated: true |
| 5 | Check curator log | tail /var/log/true-recall-timer.log |
7. Recall Test
| Step | Action | Check |
|---|---|---|
| 1 | Start new conversation | Context loads |
| 2 | Ask about previous topic | Gems injected |
| 3 | Verify context visible | Relevant memories appear |
8. Path Validation
| Path | Check | Status |
|---|---|---|
| Watcher script | <SKILL_PATH>/qdrant-memory/scripts/realtime_qdrant_watcher.py |
☐ |
| Curator script | <PROJECT_PATH>/true-recall-v2/tr-continuous/curator_timer.py |
☐ |
| Config file | <PROJECT_PATH>/true-recall-v2/tr-continuous/curator_config.json |
☐ |
| Log file | /var/log/true-recall-timer.log |
☐ |
9. Quick Commands Reference
# Check all services
systemctl status mem-qdrant-watcher --no-pager
tail -20 /var/log/true-recall-timer.log
# Check Qdrant collections
curl -s http://<QDRANT_IP>:6333/collections/memories_tr | jq '{status: .result.status, points: .result.points_count}'
curl -s http://<QDRANT_IP>:6333/collections/gems_tr | jq '{status: .result.status, points: .result.points_count}'
# Check uncurated memories
curl -s -X POST http://<QDRANT_IP>:6333/collections/memories_tr/points/count \
-d '{"filter":{"must":[{"key":"user_id","match":{"value":"<YOUR_USER_ID>"}},{"key":"curated","match":{"value":false}}]}}' | jq .result.count
# Run curator manually
cd ~/<PROJECT_PATH>/true-recall-v2/tr-continuous
python3 curator_timer.py
# Check OpenClaw plugin
openclaw status | grep memory-qdrant
# Restart watcher (if needed)
sudo systemctl restart mem-qdrant-watcher
# View watcher logs
journalctl -u mem-qdrant-watcher -n 50 --no-pager
Configuration Variables
Replace these placeholders with your actual values:
| Variable | Description | Example |
|---|---|---|
<QDRANT_IP> |
Your Qdrant IP | 10.0.0.40 or localhost |
<OLLAMA_IP> |
Your Ollama IP | 10.0.0.10 or localhost |
<PROJECT_PATH> |
Your project path | .local_projects or .projects |
<SKILL_PATH> |
Your skills path | ~/.openclaw/workspace/skills |
<YOUR_USER_ID> |
Your user ID | rob or username |
Sign-Off
| Check | Date | Initials |
|---|---|---|
| All services running | ||
| Collections healthy | ||
| Capture working | ||
| Curation working | ||
| Recall working |
Last updated: 2026-02-25 Version: 2.2 (Generic)