0a7c40688c
- :memory-md-vector (KMP jvm+linuxX64+mingwX64): .md-файлы как source of truth, векторный индекс (sqlite-vec) как derived cache. reconcile() на старте: orphan-cleanup + content-hash-gated re-embed. Гибридный скор 0.7*vector + 0.3*keyword. Заменяет EmbeddingProvider на KMP-TextEmbeddingExecutor из :memory-api. - :reflection-api: новый 4-й API-модуль (Reflection, ReflectionStore, ReflectionEvent). Зависит только от :memory-api. - :journal-api получил ConversationRecord/ConversationStore/Ids (бывший :message-store-api, полностью удалён). :outbox-api получил Event, CommonEvent, AgentEvent (бывший :event-store). - :memory-api получил MemoryVectorIndex + NoteMatches + TextEmbeddingExecutor (suspend-обёртка над TextEmbeddingExtractor). - :memory-vector KMP-цели достигнуты через commonMain-only TextEmbedding- Executor, EmbeddingProvider выпилен; :memory-md-vector тянет text-embedding-api транзитивно через :memory-api. - :standalone flatten в commonMain/commonTest завершён (тесты из jvmTest переехали в commonTest). Включён optional деп :memory-md-vector через AGENTIK_MEMORY_BACKEND=md-vector. jvmTest: 96 задач, 407 тестов, 0 падений.
:memory-api — контракт долговременной памяти (KMP, jvm + native)
Что это
Интерфейсы долговременной памяти агента:
MemoryStore— append-only журналMemoryNote(id, content, createdAt).MemoryCategory— discriminator (USER,WORLD,PREFERENCE, кастомные).MemoryNote— структурная единица памяти; immutable.- Прелоадер / ревьювер по контракту, не по реализации.
Решает: как единая абстракция позволяет иметь одновременно файловую
память (:memory-md), SQLite + ANN (:memory-vector) и тестовую
in-memory (в :standalone/tests). Агент работает с MemoryStore,
не с конкретным бэкендом.
Где используется
:memory-md— Hermes-style§-файлы (user.md / world.md / preference.md).:memory-vector— SQLite + JVector + LLM-эмбеддинги.:standaloneподключает обе реализации и переключает черезAGENTIK_MEMORY_BACKEND=md|vector|off.
Как подключить
kotlin {
sourceSets.commonMain.dependencies {
api("pw.binom.agentik:memory-api:0.1.0")
}
}
Артефакт публикуется в caffeine.
Версии
gradle/libs.versions.toml → [versions] agentik-memory-api.
Что в API
interface MemoryStore {
suspend fun save(category: MemoryCategory, content: String): MemoryNote
suspend fun query(category: MemoryCategory?, q: String, limit: Int = 10): List<MemoryNote>
suspend fun all(category: MemoryCategory? = null): List<MemoryNote>
}
enum class MemoryCategory(val path: String) {
USER("user"),
WORLD("world"),
PREFERENCE("preference");
}
data class MemoryNote(
val id: String,
val category: MemoryCategory,
val content: String,
val createdAt: Instant,
)
Тесты
./gradlew :memory-api:allTests
Контрактные тесты на Kotlin Multiplatform (без jvmTest-специфики).
Чего здесь НЕТ
- Никаких конкретных storage — это API. Backend-ы в
:memory-mdи:memory-vector.
Текущий статус
Используется продакшеном. Контракт стабильный.