mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
1175f4a62b
Benchmark tool comparing legacy session manager vs seahorse short memory retrieval on the LOCOMO long-term conversational memory dataset. - cmd/membench/: CLI with ingest/eval/report/run subcommands - Mode A (legacy): recency-biased budget truncation baseline - Mode B (seahorse): per-keyword trigram FTS5 search + expand - Metrics: Token-Overlap F1 and Recall Hit Rate - `make mem` builds, downloads data, runs benchmark end-to-end
35 lines
945 B
Go
35 lines
945 B
Go
package main
|
|
|
|
import (
|
|
"github.com/sipeed/picoclaw/pkg/providers"
|
|
"github.com/sipeed/picoclaw/pkg/session"
|
|
)
|
|
|
|
// LegacyStore wraps session.SessionManager for legacy baseline.
|
|
type LegacyStore struct {
|
|
sm *session.SessionManager
|
|
}
|
|
|
|
// NewLegacyStore creates a new in-memory session manager.
|
|
func NewLegacyStore() *LegacyStore {
|
|
return &LegacyStore{
|
|
sm: session.NewSessionManager(""),
|
|
}
|
|
}
|
|
|
|
// IngestSample loads all turns from a LOCOMO sample into the legacy session store.
|
|
func (ls *LegacyStore) IngestSample(sample *LocomoSample) {
|
|
sessionKey := "locomo-" + sample.SampleID
|
|
turns := GetTurns(sample)
|
|
for _, turn := range turns {
|
|
content := turn.Speaker + ": " + turn.Text
|
|
ls.sm.AddMessage(sessionKey, "user", content)
|
|
}
|
|
}
|
|
|
|
// GetHistory returns all messages for a sample's session.
|
|
func (ls *LegacyStore) GetHistory(sampleID string) []providers.Message {
|
|
sessionKey := "locomo-" + sampleID
|
|
return ls.sm.GetHistory(sessionKey)
|
|
}
|