Releases: rikouu/cortex
v0.10.5 — Bug Fixes
Bug Fixes
-
Fix duplicate memory injection across conversation turns — Each turn was re-injecting all previously recalled memories, causing context bloat that grew linearly with turn count. Added
exclude_idssupport to the recall API and session-level memory ID tracking in the bridge plugin so only net-new memories are injected per turn. -
Fix relative dbPath resolution (Closes #19) — Relative
storage.dbPath(e.g.cortex/brain.db) was used as-is, causing DB file drift when the server's working directory differed from expectations. Now resolved to absolute path once at config load time, ensuringinitDatabase, sqlite export, markdown export, and backup all use the same file. Dashboard/api/v1/confignow exposesresolvedDbPathfor visibility.
Packages
- @cortexmem/[email protected] published (memory dedup fix)
v0.10.4 — Bug Fixes
Bug Fixes
- OpenClaw plugin ID mismatch fixed —
@cortexmem/openclawnow correctly declares plugin id"openclaw", resolving theplugin id mismatch (manifest uses "cortex-bridge", entry hints "openclaw")error on install (reported by @rollingshmily, #17) - Reindex now rebuilds vec0 table on dimension change — Clicking "重建向量索引" after switching embedding models (e.g. voyage-3.5 → text-embedding-3-large) no longer fails with
Expected 1536 dimensions but received 1024. The reindex endpoint now reinitializes the vector backend before re-embedding (reported by @rollingshmily, #17) - Embedding hot-reload reinitializes vector backend — Saving a new embedding config via Dashboard or
PATCH /api/v1/confignow immediately rebuilds the vec0 table if dimensions changed, no restart needed - Neo4j relation deduplication — Repeated extraction of the same
(subject, predicate, object, agent_id)tuple now updates a single edge instead of creating duplicate edges (contributed by @xieyuanqing, #16) - Correction cascade for state memories —
correctionmemories now correctly supersede relatedtodo,decision,goal,project_statememories; search coverage expanded to includetodo,constraint,policycategories (contributed by @xieyuanqing, #16)
Packages
- @cortexmem/[email protected] published (plugin id fix)
感谢 @rollingshmily 提交详细的 bug 报告 (#17),以及 @xieyuanqing 贡献 PR #16 修复 Neo4j 去重和 correction cascade 问题 🙏
v0.10.3 — Agent Namespace Isolation + Bug Fixes
Features
- pairing_code: Agent namespace isolation — Multiple OpenClaw/MCP/API instances sharing the same agent_id no longer mix memories. Set CORTEX_PAIRING_CODE per instance for isolated namespaces.
Bug Fixes
- Fix 415 Unsupported Media Type on Dashboard test/reindex buttons (#15)
- pairing_code filter properly applied in hybrid search + memory-writer
Packages
- @cortexmem/[email protected] published (reads CORTEX_PAIRING_CODE env var)
v0.10.2 — Recall Performance
⚡ Performance
- Recall timeout: Configurable
recallTimeoutMs(default 5000ms). If total recall exceeds budget, returns partial results instead of blocking agent response - Reranker instant failover: Auth errors (401/403) skip immediately (<100ms) instead of waiting for timeout
- Parallel variant embedding: All expansion variants embedded in a single batch API call (1 request instead of N)
- Budget-aware sub-timeouts: Reranker and expansion respect remaining recall budget — no more overshooting
🎨 Dashboard
- Recall timeout config in Gate section with recommendations:
- 1 variant → 3000ms
- 3 variants → 5000ms (default)
- 6 variants → 8000ms
- 10+ variants → 12000ms
🐛 Fixes
- Timer leak: recall timeout timer properly cleaned in try/finally
- Reranker/expansion no longer use hardcoded timeouts that ignore the total budget
v0.10.1
Fixes
- Auto-rebuild vec table on embedding dimension change: Switching embedding models (e.g.
text-embedding-3-small1536d →text-embedding-3-large3072d) now automatically drops and recreates the vec0 virtual table with correct dimensions on startup. Previously this would silently fail, leaving vector search broken. - Reindex reports upsert errors: Vector upsert failures during reindex are now caught and reported in the
errorsfield, instead of being silently swallowed while reporting success.
v0.10.0 — Memory Self-Improvement + Dashboard Redesign
🧠 Memory Self-Improvement System
Cortex memories now learn from usage. Recalled memories get implicit feedback based on whether the agent actually uses them, and users/agents can submit explicit feedback (+1/0/-1).
How it works
- Implicit feedback: When memories are recalled, Cortex tracks which ones the agent actually uses
- Explicit feedback:
POST /api/v1/memories/:id/feedbackwith +1 (useful), 0 (neutral), -1 (wrong) - Auto-adjustment: Lifecycle engine adjusts importance based on accumulated feedback
- Stability safeguards: Min 3 feedbacks, ±0.1 max delta, configurable window size
- Full audit trail: Every adjustment logged for rollback
New API Endpoints
POST /api/v1/memories/:id/feedback— Submit feedbackGET /api/v1/memories/:id/feedback— Feedback historyPOST /api/v1/recall/:recallId/usage— Report implicit usageGET /api/v1/feedback/overview— Dashboard overview
🎨 Dashboard UX/UI Redesign
Complete visual overhaul inspired by Linear/Vercel dashboard aesthetic:
- New CSS design system with layered backgrounds and 4-level text hierarchy
- Redesigned sidebar with section dividers
- Stats page with improved charts and trend indicators
- Memory browser with category-colored cards and inline feedback buttons (👍😐👎)
- Self-improvement configuration panel in Settings
- All pages polished and modernized
🔒 Security
- Rate limiting on feedback endpoints
- Input validation (maxLength, maxItems)
- Recall session map size cap with TTL cleanup
Thanks to @DeemoASCII for the multi-agent feedback in #12!
v0.9.5
v0.9.5 — Security & Quality Release
🔒 Security
- Fix timing leak in
safeCompare— pad both strings to equal length before constant-time comparison, preventing token length inference via timing side-channel
🐛 Fixes
- Deep merge for env config overrides —
loadConfignow usesdeepMergeso env vars likeCORTEX_DB_PATHdon't clobber other nested config keys - PLUGIN_VERSION corrected to match package version (was showing stale
0.5.1) - README accuracy — Node.js requirement fixed (
>= 20), removed speculative model names, addedcortex_relationsto MCP tools table
📄 Docs
- Added MIT LICENSE file
- CHANGELOG updated with dates and missing v0.9.3 entry
- Multi-agent isolation docs clarified
📦 cortex-bridge v0.6.2
- Synced PLUGIN_VERSION with package version
- Published to npm:
@cortexmem/[email protected]
Thanks to @DeemoASCII for the multi-agent isolation feedback in #12 that drove the v0.9.4 improvements!
v0.9.4
What's New
🔀 Multi-Agent Memory Isolation
- OpenClaw Plugin: Automatic isolation via
ctx.agentId— no config needed - MCP: Use
--agent-idper server instance for full isolation - Tools: Optional
agent_idparameter on all tools - Per-session agent caching with race condition mitigation
- Per-agent dedup hash map
⚡ Config Hot-Reload Improvements
- Selective engine rebuild — only reconstruct what actually changed
- Added hot-reload for sieve, flush, lifecycle, markdownExport configs
- Fixed MarkdownExporter not rebuilt on config change
🎨 Dashboard Improvements
- Switching providers preserves previously entered API keys
- Keys seeded from initial config on mount
🐛 Fixes
- Version endpoint now reads from root package.json only
- Fixed wrong version display after deploy
Closes #12
v0.9.3
v0.9.2
What's Changed
🧠 Fast Channel Accuracy Overhaul
Comprehensive audit and fix of all regex-based signal detection patterns. 55 regression tests passing.
False positive fixes:
skill: "我会去超市" no longer misdetected as a skill (requires skill verbs like 写/开发/部署)todo: "记得吗" and "需要注意的是" no longer misdetected as todosdecision: "你决定吧" no longer misdetected (requires first person 我)correction: "其实是我忘了" no longer misdetected as a correctionpreference: Adverb support — "我比较讨厌", "我非常喜欢", "我有点不想" now correctly detected
Question detection improved:
- Added 吗/呢 sentence-ending particle detection
- Indirect patterns (觉得...好, 还是...好) correctly skipped for questions
🌍 Multi-language & Multi-scenario Coverage
- Korean (한국어): Preference, identity, and smalltalk patterns added
- Identity: 20+ non-tech professions (护士/律师/厨师/主妇/骑手/销售...), colloquial "我是做...的", expanded EN roles
- Skill: Life skills (弹琴/做饭/开车/画画/游泳/修东西...)
- Smalltalk: Emoji-only messages, repeated chars (ㅋㅋㅋ/哈哈哈/666666), 晚安/早安/拜拜
📝 Prompt Improvements
- Added double-negation example ("不是说不喜欢" → do not extract)
- Added infrastructure relation example with new predicates:
deployed_on,configured_with,runs_on nothing_extractedfield now explicitly required- Smart Update prompt: 4 few-shot examples (conflict/merge/replace/keep)