docs: expand lint scope batch52 (2 files)

This commit is contained in:
Apple
2026-02-16 07:48:48 -08:00
parent 3c11d243c5
commit 4c92b1dded
3 changed files with 165 additions and 164 deletions

View File

@@ -14,7 +14,7 @@
---
# 1. Цілі системи памʼяті
## 1. Цілі системи памʼяті
1. Зробити агентів **контекстними**: вони памʼятають діалоги, рішення, факти.
@@ -38,7 +38,7 @@
---
# 2. Рівні памʼяті
## 2. Рівні памʼяті
## 2.1. Short-Term Memory (STM)
@@ -106,7 +106,7 @@
---
# 3. Простір памʼяті (Scopes)
## 3. Простір памʼяті (Scopes)
Памʼять розділяється за обсягом:
@@ -128,9 +128,9 @@
---
# 4. Модель даних
## 4. Модель даних
### Таблиці (логічно):
### Таблиці (логічно)
- `agent_memory_events`
@@ -172,7 +172,7 @@
---
# 5. AgentMemoryAdapter (деталізація)
## 5. AgentMemoryAdapter (деталізація)
Посилання на 12_agent_runtime_core.md:
@@ -183,41 +183,41 @@ export interface AgentMemoryAdapter {
saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>;
appendFact(ctx: AgentContext, fact: string): Promise<void>;
}
```
```text
### 5.1. loadShortTerm
* Витягує останні `N` подій типу `kind = 'message'` зі scope `short_term` для:
- Витягує останні `N` подій типу `kind = 'message'` зі scope `short_term` для:
* `agent_id`,
- `agent_id`,
* `team_id`,
- `team_id`,
* `channel_id` (якщо є).
- `channel_id` (якщо є).
### 5.2. loadLongTerm
* Витягує список текстових фактів зі scope `long_term` (через `agent_memory_events` з `kind = 'fact'`).
- Витягує список текстових фактів зі scope `long_term` (через `agent_memory_events` з `kind = 'fact'`).
### 5.3. saveTurn
* Записує повідомлення user/assistant як `message` (short-term).
- Записує повідомлення user/assistant як `message` (short-term).
* Якщо увімкнено автоматичне ущільнення памʼяті — може переносити деякі фрагменти в mid-term.
- Якщо увімкнено автоматичне ущільнення памʼяті — може переносити деякі фрагменти в mid-term.
### 5.4. appendFact
* Додає факт у long-term (як `kind = 'fact'`).
- Додає факт у long-term (як `kind = 'fact'`).
* Додатково:
- Додатково:
* рахує ембедінг (через окремий LLM/embedding API),
- рахує ембедінг (через окремий LLM/embedding API),
* зберігає в `agent_memory_facts_vector`.
- зберігає в `agent_memory_facts_vector`.
---
# 6. RAG (Retrieval-Augmented Generation)
## 6. RAG (Retrieval-Augmented Generation)
### 6.1. Retrieval
@@ -227,9 +227,9 @@ export interface AgentMemoryAdapter {
2. Шукає релевантні факти у:
* `agent_memory_facts_vector`,
- `agent_memory_facts_vector`,
* (опційно) Co-Memory документів (файли, wiki).
- (опційно) Co-Memory документів (файли, wiki).
3. Обмежує контекст, наприклад Top-K = 510 фактів.
@@ -244,11 +244,11 @@ const memoryMsg: AgentMessage = {
"LONG_TERM_MEMORY:\n" +
retrievedFacts.map((f, i) => `- ${f.text}`).join("\n"),
};
```
```text
---
# 7. Перетікання памʼяті (compression / distillation)
## 7. Перетікання памʼяті (compression / distillation)
Щоб памʼять не перетворювалась на хаос, потрібні періодичні "distillation jobs".
@@ -262,85 +262,85 @@ const memoryMsg: AgentMessage = {
3. Отримуємо:
* конспект (summary),
- конспект (summary),
* витяг корисних фактів,
- витяг корисних фактів,
* пропозиції правил.
- пропозиції правил.
4. Записуємо:
* summary → mid-term,
- summary → mid-term,
* факти → long-term (appendFact),
- факти → long-term (appendFact),
* пропозиції → evolution suggestions.
- пропозиції → evolution suggestions.
### 7.2. Видалення шуму
Після успішної дистиляції:
* можна частину короткої памʼяті чистити;
- можна частину короткої памʼяті чистити;
* можна перевести непотрібні `message` у архів.
- можна перевести непотрібні `message` у архів.
---
# 8. Контроль з боку користувача
## 8. Контроль з боку користувача
У UI потрібно дати користувачу можливість:
1. Переглядати памʼять (принаймні long-term):
* список фактів,
- список фактів,
* розділений по каналах / темах.
- розділений по каналах / темах.
2. Видаляти факти:
* для конфіденційних даних,
- для конфіденційних даних,
* при помилках.
- при помилках.
3. Вимикати зберігання:
* «Не зберігати DM-переписку з агентом у довгострокову памʼять».
- «Не зберігати DM-переписку з агентом у довгострокову памʼять».
4. Експортувати памʼять:
* для аудиту / переносу.
- для аудиту / переносу.
---
# 9. Memory Scopes vs Agent Roles
## 9. Memory Scopes vs Agent Roles
### Guide Agent (онбординг)
* short-term: поточна сесія онбордингу;
- short-term: поточна сесія онбордингу;
* long-term: факти про те, як виглядає створена команда (не обовʼязково).
- long-term: факти про те, як виглядає створена команда (не обовʼязково).
### Team Assistant
* short-term: останні діалоги в конкретному каналі;
- short-term: останні діалоги в конкретному каналі;
* mid-term: summaries мітингів / сесій;
- mid-term: summaries мітингів / сесій;
* long-term: знання про команду, процеси, словник.
- long-term: знання про команду, процеси, словник.
### Meta-Agent
* працює на mid-/long-term даних:
- працює на mid-/long-term даних:
* аналізує їх,
- аналізує їх,
* пропонує зміни в правилах,
- пропонує зміни в правилах,
* оновлює памʼять.
- оновлює памʼять.
---
# 10. Псевдокод реалізації Adapter'а
## 10. Псевдокод реалізації Adapter'а
```ts
export class PgAgentMemoryAdapter implements AgentMemoryAdapter {
@@ -398,11 +398,11 @@ export class PgAgentMemoryAdapter implements AgentMemoryAdapter {
// TODO: обчислити embedding та зберегти у agent_memory_facts_vector
}
}
```
```text
---
# 11. RAG Implementation
## 11. RAG Implementation
## 11.1. Embedding Generation
@@ -417,7 +417,7 @@ export async function generateEmbedding(text: string): Promise<number[]> {
const result = await embeddings.embedQuery(text);
return result;
}
```
```text
## 11.2. Vector Search
@@ -448,7 +448,7 @@ export async function searchRelevantFacts(
score: r.similarity,
}));
}
```
```text
## 11.3. Integration with runAgentTurn
@@ -479,11 +479,11 @@ export async function runAgentTurn(ctx: AgentContext): Promise<AgentTurnResult>
// ... решта логіки
}
```
```text
---
# 12. Distillation Job Implementation
## 12. Distillation Job Implementation
```ts
export async function runDistillationJob(
@@ -569,11 +569,11 @@ export async function runDistillationJob(
},
});
}
```
```text
---
# 13. Database Schema
## 13. Database Schema
## 13.1. agent_memory_events
@@ -594,7 +594,7 @@ CREATE TABLE agent_memory_events (
INDEX idx_agent_channel (agent_id, channel_id),
INDEX idx_created_at (created_at)
);
```
```text
## 13.2. agent_memory_facts_vector
@@ -613,11 +613,11 @@ CREATE TABLE agent_memory_facts_vector (
INDEX idx_agent_team (agent_id, team_id),
INDEX idx_embedding USING ivfflat (embedding vector_cosine_ops)
);
```
```text
---
# 14. API Endpoints
## 14. API Endpoints
## 14.1. GET /agents/{id}/memory
@@ -640,7 +640,7 @@ export async function getAgentMemory(req: Request, res: Response) {
items: memory,
});
}
```
```text
## 14.2. DELETE /agents/{id}/memory/{memoryId}
@@ -657,7 +657,7 @@ export async function deleteMemoryItem(req: Request, res: Response) {
res.json({ success: true });
}
```
```text
## 14.3. POST /agents/{id}/memory/distill
@@ -676,33 +676,33 @@ export async function triggerDistillation(req: Request, res: Response) {
res.json({ success: true });
}
```
```text
---
# 15. Інтеграція з еволюційним агентом (09)
## 15. Інтеграція з еволюційним агентом (09)
Еволюційний агент:
* читає `agent_memory_events` (особливо з негативним фідбеком),
- читає `agent_memory_events` (особливо з негативним фідбеком),
* агрегує логи,
- агрегує логи,
* робить distillation,
- робить distillation,
* створює пропозиції покращень.
- створює пропозиції покращень.
Memory System → джерело для:
* аналізу діалогів,
- аналізу діалогів,
* виявлення патернів,
- виявлення патернів,
* побудови Train-to-Earn.
- побудови Train-to-Earn.
---
# 16. Тестування
## 16. Тестування
## 16.1. Unit Tests
@@ -733,15 +733,15 @@ describe("PgAgentMemoryAdapter", () => {
);
});
});
```
```text
---
# 17. Завдання для Cursor
## 17. Завдання для Cursor
Приклад промта:
```
```text
You are a senior backend engineer.
Implement the Agent Memory System for MicroDAO using:
@@ -769,25 +769,24 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 18. Результат
## 18. Результат
Після впровадження цієї системи:
* агенти MicroDAO мають справжню багаторівневу памʼять;
- агенти MicroDAO мають справжню багаторівневу памʼять;
* можна керувати тим, що саме вони памʼятають;
- можна керувати тим, що саме вони памʼятають;
* можна будувати RAG, еволюційний аналіз, Train-to-Earn;
- можна будувати RAG, еволюційний аналіз, Train-to-Earn;
* перехід до DAGI стає природним — через спільну колективну памʼять агентів.
- перехід до DAGI стає природним — через спільну колективну памʼять агентів.
---
**Готово.**
Це **повна специфікація системи пам'яті агентів**, готова до використання в Cursor.