Tools
Longterm Memory
OpenClaw Context Engine plugin for long-term memory management with narrative facts and entity tracking
Install
npm install openclaw-longterm-memory-plugin
Configuration Example
{
"plugins": {
"slots": {
"contextEngine": "longterm-memory"
}
},
"pluginsConfig": {
"longterm-memory": {
"memoryConsoleUrl": "http://localhost:3000",
"apiToken": "your-token",
"maxNarrativeFacts": 5,
"entityConfidenceThreshold": 0.7,
"autoReflectInterval": 3600
}
}
}
README
# openclaw-longterm-memory-plugin
OpenClaw Context Engine ๆไปถ๏ผๆไพๅขๅผบ็้ฟๆ่ฎฐๅฟ็ฎก็่ฝๅใ
## ๅ่ฝ็นๆง
### ๆ ธๅฟๅ่ฝ
| ๅ่ฝ | ๆ่ฟฐ | ไผๅ
็บง |
|------|------|--------|
| Narrative Fact ๅญๅจ | ๅญๅจๅๆฃ็ดขๅไบๆงไบๅฎ | P0 |
| Entity ่ฟฝ่ธช | ๅฎไฝ็ฎก็ๅไฟกๅฟๅบฆ่ฟฝ่ธช | P0 |
| Context ๅขๅผบ | ๅจไธไธๆ็ป่ฃ
ๆถๆณจๅ
ฅ็ธๅ
ณไบๅฎ | P0 |
| ๅ้ๆ็ดข | ๅบไบ embedding ็่ฏญไนๆฃ็ดข | P1 |
| Reflect ๅฎๆถไปปๅก | ่ชๅจๆดๆฐๅฎไฝไฟกๅฟๅบฆ | P2 |
| ๅ้ๆบๅถ | API ๅคฑ่ดฅๆถไผ้
้็บง | P2 |
### ๅทฅไฝๅ็
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OpenClaw Gateway โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ LongtermMemoryEngine (Context Engine) โ โ
โ โ โ โ
โ โ 1. bootstrap() โ ๅๅงๅไผ่ฏ โ โ
โ โ 2. ingest() โ ๆๅ
ฅๆถๆฏ โ โ
โ โ 3. assemble() โ ็ป่ฃ
ไธไธๆ + ๆณจๅ
ฅไบๅฎ โ โ
โ โ 4. compact() โ ๅงๆ็ป legacy โ โ
โ โ 5. dispose() โ ๆธ
็่ตๆบ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Memory Console โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Narrative โ โ Entity โ โ Memory โ โ
โ โ Facts โ โ Store โ โ Store โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
## ๅฎ่ฃ
```bash
npm install openclaw-longterm-memory-plugin
```
## ้
็ฝฎ
ๅจ `openclaw.json` ไธญ้
็ฝฎ๏ผ
```json
{
"plugins": {
"slots": {
"contextEngine": "longterm-memory"
}
},
"pluginsConfig": {
"longterm-memory": {
"memoryConsoleUrl": "http://localhost:3000",
"apiToken": "your-token",
"maxNarrativeFacts": 5,
"entityConfidenceThreshold": 0.7,
"autoReflectInterval": 3600
}
}
}
```
### ้
็ฝฎๅๆฐ
| ๅๆฐ | ็ฑปๅ | ้ป่ฎคๅผ | ๆ่ฟฐ |
|------|------|--------|------|
| `memoryConsoleUrl` | string | `http://localhost:3000` | Memory Console API ๅฐๅ |
| `apiToken` | string | - | API ่ฎค่ฏ Token |
| `maxNarrativeFacts` | number | `5` | ๆฏๆฌกไธไธๆๆณจๅ
ฅ็ๆๅคงไบๅฎๆฐ |
| `entityConfidenceThreshold` | number | `0.7` | ๅฎไฝไฟกๅฟๅบฆ้ๅผ |
| `autoReflectInterval` | number | `3600` | Reflect ไปปๅก้ด้๏ผ็ง๏ผ |
## API
### Context Engine ๆฅๅฃ
```typescript
interface ContextEngine {
readonly info: ContextEngineInfo;
bootstrap(params: {
sessionId: string;
sessionKey?: string;
sessionFile: string;
}): Promise<BootstrapResult>;
ingest(params: {
sessionId: string;
sessionKey?: string;
message: AgentMessage;
isHeartbeat?: boolean;
}): Promise<IngestResult>;
assemble(params: {
sessionId: string;
sessionKey?: string;
messages: AgentMessage[];
tokenBudget?: number;
}): Promise<AssembleResult>;
compact(params: {
sessionId: string;
sessionKey?: string;
sessionFile: string;
tokenBudget?: number;
force?: boolean;
customInstructions?: string;
}): Promise<CompactResult>;
dispose?(): Promise<void>;
}
```
### ๅฎขๆท็ซฏๆฅๅฃ
```typescript
interface MemoryConsoleClient {
// Narrative Facts
createNarrativeFact(fact: Omit<NarrativeFact, 'id'>): Promise<NarrativeFact>;
searchNarrativeFacts(query: string, options?: SearchOptions): Promise<NarrativeFact[]>;
// Entities
createEntity(entity: Omit<Entity, 'id' | 'createdAt' | 'updatedAt'>): Promise<Entity>;
getEntity(name: string): Promise<Entity | null>;
updateEntity(id: string, updates: Partial<Entity>): Promise<Entity>;
listEntities(): Promise<Entity[]>;
// Generic Memory
createMemory(memory: Omit<MemoryEntry, 'id'>): Promise<MemoryEntry>;
searchMemories(query: string, options?: SearchOptions): Promise<MemoryEntry[]>;
}
```
### ๆฐๆฎๆจกๅ
```typescript
type FactType = 'world' | 'experience' | 'opinion' | 'observation';
interface NarrativeFact {
id: string;
content: string; // ไบๅฎๅ
ๅฎน
entities: string[]; // ๅ
ณ่ๅฎไฝๅ
confidence: number; // ไฟกๅฟๅบฆ 0-1
factType: FactType; // ไบๅฎ็ฑปๅ
createdAt: Date;
source?: string; // ๆฅๆบ
sessionId?: string; // ไผ่ฏID
}
interface Entity {
id: string;
name: string; // ๅฎไฝๅ๏ผๅฏไธ๏ผ
description?: string;
facts: string[]; // NarrativeFact IDs
confidence: number; // ไฟกๅฟๅบฆ 0-1
lastReflected?: Date; // ไธๆฌกๅๆๆถ้ด
createdAt: Date;
updatedAt: Date;
}
```
## ๅผๅ
### ่ฟ่กๆต่ฏ
```bash
npm test
```
### ๆๅปบ
```bash
npm run build
```
### ้กน็ฎ็ปๆ
```
src/
โโโ index.ts # ๆไปถๅ
ฅๅฃ
โโโ engine.ts # Context Engine ๅฎ็ฐ
โโโ memory-console-client.ts # HTTP ๅฎขๆท็ซฏ
โโโ types/
โโโ context-engine.ts # ๆฅๅฃๅฎไน
โโโ index.ts # ๅ
้จ็ฑปๅ
tests/
โโโ engine.test.ts # ๅผๆๆต่ฏ
โโโ narrative-facts.test.ts # CRUD ๆต่ฏ
โโโ integration.test.ts # ้ๆๆต่ฏ
โโโ mocks/
โโโ memory-console.ts # Mock ๅฎขๆท็ซฏ
```
## ๅ้ๆบๅถ
ๅฝ Memory Console API ไธๅฏ็จๆถ๏ผ
1. **assemble** ไผๆ่ทๅผๅธธๅนถ่ฟๅ็ฉบ facts
2. **compact** ๅงๆ็ป legacy ๅผๆ
3. ไธๅฝฑๅๆ ธๅฟไผ่ฏๅ่ฝ
## License
MIT
tools
Comments
Sign in to leave a comment