Фаза 3: скіли /mem-start, /mem-save, /mem-note, /mem-find + реєстрація сервера в Claude Code
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Vendored
+1
-1
@@ -17,6 +17,6 @@
|
|||||||
"repelStrength": 10,
|
"repelStrength": 10,
|
||||||
"linkStrength": 1,
|
"linkStrength": 1,
|
||||||
"linkDistance": 250,
|
"linkDistance": 250,
|
||||||
"scale": 1.0000000000000024,
|
"scale": 0.3628873693012127,
|
||||||
"close": true
|
"close": true
|
||||||
}
|
}
|
||||||
+5
-3
@@ -28,12 +28,14 @@ created: 2026-07-14
|
|||||||
| `project_get_state` | `projectName` | Останній стан сесії + project items |
|
| `project_get_state` | `projectName` | Останній стан сесії + project items |
|
||||||
| `project_save_state` | `projectName`, `sessionSummary`, `todoJson`, `changes`, `bugs`, `architectureNotes` | Збереження стану сесії |
|
| `project_save_state` | `projectName`, `sessionSummary`, `todoJson`, `changes`, `bugs`, `architectureNotes` | Збереження стану сесії |
|
||||||
|
|
||||||
## Скіли для Claude Code (подібно до наявних)
|
## Скіли для Claude Code ✅ (реалізовано 2026-07-14)
|
||||||
|
|
||||||
|
Канонічні копії — у `claude-skills/`, інстальовані в `~/.claude/commands/`. Сервер зареєстровано в user-конфігурації Claude Code як `ai-memory-network` (ім'я `ai-memory` зайняте старим сервером на 8765).
|
||||||
|
|
||||||
- `/mem-start` — вибір проекту + відновлення контексту
|
- `/mem-start` — вибір проекту + відновлення контексту
|
||||||
- `/mem-save` — збереження стану сесії
|
- `/mem-save` — збереження стану сесії (+ пропозиція зберегти довговічні факти окремими записами)
|
||||||
- `/mem-note` — швидке збереження факту/нотатки в пам'ять
|
- `/mem-note` — швидке збереження факту/нотатки в пам'ять
|
||||||
- `/mem-find` — пошук у пам'яті
|
- `/mem-find` — пошук у пам'яті (+ перегляд запису і графа зв'язків)
|
||||||
|
|
||||||
## Резерв на майбутнє (фаза 2+)
|
## Резерв на майбутнє (фаза 2+)
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -21,11 +21,13 @@ created: 2026-07-14
|
|||||||
- [x] Portainer stack: ai-memory-server (порт 8767) + ai-memory-db (PostgreSQL 18, `pgvector/pgvector:pg18`) ✅ 2026-07-14
|
- [x] Portainer stack: ai-memory-server (порт 8767) + ai-memory-db (PostgreSQL 18, `pgvector/pgvector:pg18`) ✅ 2026-07-14
|
||||||
- [x] Ініціалізація бази `ai_memory` + `CREATE EXTENSION vector;` (авто-міграції при старті) ✅ 2026-07-14
|
- [x] Ініціалізація бази `ai_memory` + `CREATE EXTENSION vector;` (авто-міграції при старті) ✅ 2026-07-14
|
||||||
- [x] e2e перевірка: healthz, auth 401, tools/list, повний цикл project/memory, UTF-8 roundtrip, FTS українською ✅ 2026-07-14
|
- [x] e2e перевірка: healthz, auth 401, tools/list, повний цикл project/memory, UTF-8 roundtrip, FTS українською ✅ 2026-07-14
|
||||||
- [ ] Підключення Claude Code до endpoint (`.mcp.json` / mcp add)
|
- [x] Підключення Claude Code до endpoint: сервер `ai-memory-network` у user-конфігурації (`claude mcp add`) ✅ 2026-07-14
|
||||||
|
|
||||||
## Фаза 3 — Скіли Claude Code
|
## Фаза 3 — Скіли Claude Code
|
||||||
|
|
||||||
- [ ] `/mem-start`, `/mem-save`, `/mem-note`, `/mem-find` ([[MCP інструменти]])
|
- [x] `/mem-start`, `/mem-save`, `/mem-note`, `/mem-find` ([[MCP інструменти]]) ✅ 2026-07-14
|
||||||
|
Канонічні копії — у `claude-skills/` цього репозиторію, інстальовані в `~/.claude/commands/`.
|
||||||
|
PowerShell-запаска в скілах передає тіло як UTF-8 байти (`UTF8.GetBytes`) — перевірено кирилицею.
|
||||||
|
|
||||||
## Фаза 4 — Окремий воркфлоу: Ollama (після завершення фаз 1–3)
|
## Фаза 4 — Окремий воркфлоу: Ollama (після завершення фаз 1–3)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Пам'ять: пошук
|
||||||
|
|
||||||
|
Працюємо з MCP-сервером **ai-memory-network** (`http://192.168.0.199:8767/mcp`).
|
||||||
|
|
||||||
|
Знайди записи в пам'яті. Пошуковий запит — в ARGUMENTS; якщо порожньо — запитай користувача, що шукаємо.
|
||||||
|
|
||||||
|
Виконай наступні дії:
|
||||||
|
|
||||||
|
1. Виклич `mcp__ai-memory-network__memory_query` з `query`. За замовчуванням шукай по всій пам'яті (без `projectName`); якщо користувач явно обмежив пошук проектом — передай `projectName`. За потреби звузь через `type`. Якщо інструмент недоступний — HTTP workaround (див. нижче) з `name = "memory_query"`.
|
||||||
|
|
||||||
|
2. Відобрази результати таблицею: id, тип, заголовок, проект, фрагмент. Якщо нічого не знайдено — спробуй переформулювати запит (синоніми, інша словоформа) і повтори; повідом користувачу обидва запити.
|
||||||
|
|
||||||
|
3. Запитай, чи розкрити якийсь запис повністю. Для повного перегляду виклич `memory_get` (поверне також зв'язки запису); для огляду сусідів по графу — `memory_graph` з `id` та `depth`.
|
||||||
|
|
||||||
|
## HTTP workaround (PowerShell)
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$body = @{
|
||||||
|
jsonrpc = "2.0"; id = 1; method = "tools/call"
|
||||||
|
params = @{ name = "<TOOL_NAME>"; arguments = @{ <ARGS> } }
|
||||||
|
} | ConvertTo-Json -Depth 6
|
||||||
|
$bytes = [System.Text.Encoding]::UTF8.GetBytes($body)
|
||||||
|
(Invoke-WebRequest -Uri "http://192.168.0.199:8767/mcp" -Method POST `
|
||||||
|
-Body $bytes -ContentType "application/json; charset=utf-8" `
|
||||||
|
-Headers @{ Accept = "application/json, text/event-stream"; Authorization = "Bearer amk_477a49815af5b1790e6d35f565f5cc50ccb9a02cf89bf908" } `
|
||||||
|
-TimeoutSec 15).Content
|
||||||
|
```
|
||||||
|
|
||||||
|
ВАЖЛИВО: тіло запиту завжди передавати як UTF-8 байти (`UTF8.GetBytes`), інакше кирилиця зіпсується.
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Пам'ять: швидка нотатка
|
||||||
|
|
||||||
|
Працюємо з MCP-сервером **ai-memory-network** (`http://192.168.0.199:8767/mcp`).
|
||||||
|
|
||||||
|
Збережи факт/нотатку в пам'ять. Текст нотатки — в ARGUMENTS; якщо ARGUMENTS порожні — сформуй нотатку з ключового висновку поточної розмови і покажи користувачу перед збереженням.
|
||||||
|
|
||||||
|
Виконай наступні дії:
|
||||||
|
|
||||||
|
1. Сформуй запис:
|
||||||
|
- `title` — короткий заголовок (до 80 символів)
|
||||||
|
- `content` — повний текст нотатки у markdown
|
||||||
|
- `type` — `fact` (факт/рішення), `note` (робоча нотатка), `entity` (людина/сервіс/пристрій) — обери за змістом
|
||||||
|
- `projectName` — якщо нотатка стосується проекту, відомого з контексту; інакше не передавай (глобальний scope)
|
||||||
|
- `metadata` — за потреби: теги, джерело
|
||||||
|
|
||||||
|
2. Виклич `mcp__ai-memory-network__memory_save`. Якщо інструмент недоступний — HTTP workaround (див. нижче) з `name = "memory_save"`.
|
||||||
|
|
||||||
|
3. Якщо нотатка логічно пов'язана з існуючими записами (перевір через `memory_query` за ключовими словами) — запропонуй зв'язати через `memory_link`.
|
||||||
|
|
||||||
|
4. Підтверди збереження: id запису, scope (проект/глобальний).
|
||||||
|
|
||||||
|
## HTTP workaround (PowerShell)
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$body = @{
|
||||||
|
jsonrpc = "2.0"; id = 1; method = "tools/call"
|
||||||
|
params = @{ name = "<TOOL_NAME>"; arguments = @{ <ARGS> } }
|
||||||
|
} | ConvertTo-Json -Depth 6
|
||||||
|
$bytes = [System.Text.Encoding]::UTF8.GetBytes($body)
|
||||||
|
(Invoke-WebRequest -Uri "http://192.168.0.199:8767/mcp" -Method POST `
|
||||||
|
-Body $bytes -ContentType "application/json; charset=utf-8" `
|
||||||
|
-Headers @{ Accept = "application/json, text/event-stream"; Authorization = "Bearer amk_477a49815af5b1790e6d35f565f5cc50ccb9a02cf89bf908" } `
|
||||||
|
-TimeoutSec 15).Content
|
||||||
|
```
|
||||||
|
|
||||||
|
ВАЖЛИВО: тіло запиту завжди передавати як UTF-8 байти (`UTF8.GetBytes`), інакше кирилиця зіпсується.
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# Пам'ять: збереження сесії
|
||||||
|
|
||||||
|
Працюємо з MCP-сервером **ai-memory-network** (`http://192.168.0.199:8767/mcp`).
|
||||||
|
|
||||||
|
Виконай наступні дії:
|
||||||
|
|
||||||
|
1. Визнач проект: якщо відомий з контексту розмови — використай його; інакше виклич `mcp__ai-memory-network__project_list` і запитай користувача. Якщо проекту ще немає — запропонуй створити через `project_create` (`projectName` у kebab-case, `summary`).
|
||||||
|
|
||||||
|
2. На основі поточної сесії сформуй:
|
||||||
|
- `sessionSummary` — 2-4 речення: що зроблено, які рішення прийнято
|
||||||
|
- `todoJson` — актуальний список задач: `{ tasks: [{ task, priority: "high|medium|low", note?, done? }] }` (виконані познач `done: true` або прибери; додай нові)
|
||||||
|
- `changes` — які файли/конфіги/сервіси змінено у цій сесії
|
||||||
|
- `bugs` — нові або невирішені проблеми
|
||||||
|
- `architectureNotes` — нові архітектурні рішення чи уточнення (якщо є)
|
||||||
|
|
||||||
|
3. Покажи підготовлені дані користувачу для підтвердження.
|
||||||
|
|
||||||
|
4. Після підтвердження виклич `mcp__ai-memory-network__project_save_state` з цими даними. Якщо інструмент недоступний — HTTP workaround (див. нижче) з `name = "project_save_state"`.
|
||||||
|
|
||||||
|
5. Якщо у сесії з'явилися довговічні факти, варті окремих записів пам'яті (рішення, конфіги, граблі) — запропонуй зберегти їх через `memory_save` (type: `fact`, з `projectName`), за бажанням — зв'язати між собою через `memory_link`.
|
||||||
|
|
||||||
|
6. Підтверди збереження (session_id, кількість збережених записів).
|
||||||
|
|
||||||
|
## HTTP workaround (PowerShell)
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$body = @{
|
||||||
|
jsonrpc = "2.0"; id = 1; method = "tools/call"
|
||||||
|
params = @{ name = "<TOOL_NAME>"; arguments = @{ <ARGS> } }
|
||||||
|
} | ConvertTo-Json -Depth 6
|
||||||
|
$bytes = [System.Text.Encoding]::UTF8.GetBytes($body)
|
||||||
|
(Invoke-WebRequest -Uri "http://192.168.0.199:8767/mcp" -Method POST `
|
||||||
|
-Body $bytes -ContentType "application/json; charset=utf-8" `
|
||||||
|
-Headers @{ Accept = "application/json, text/event-stream"; Authorization = "Bearer amk_477a49815af5b1790e6d35f565f5cc50ccb9a02cf89bf908" } `
|
||||||
|
-TimeoutSec 15).Content
|
||||||
|
```
|
||||||
|
|
||||||
|
ВАЖЛИВО: тіло запиту завжди передавати як UTF-8 байти (`UTF8.GetBytes`), інакше кирилиця зіпсується.
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Пам'ять: старт сесії
|
||||||
|
|
||||||
|
Працюємо з MCP-сервером **ai-memory-network** (`http://192.168.0.199:8767/mcp`).
|
||||||
|
|
||||||
|
Виконай наступні дії:
|
||||||
|
|
||||||
|
1. Виклич інструмент `mcp__ai-memory-network__project_list`. Якщо інструмент недоступний (`No such tool available`) — використай HTTP workaround (див. нижче) з `name = "project_list"`, `arguments = @{}`.
|
||||||
|
|
||||||
|
2. Відобрази список проектів таблицею (назва, статус, кількість записів пам'яті, дата оновлення). Запитай, з яким проектом працюємо; запропонуй найактуальніший за `updated_at`. Якщо проект вже очевидний з контексту розмови — використай його без запитання.
|
||||||
|
|
||||||
|
3. Для обраного проекту виклич `mcp__ai-memory-network__project_get_state` з `projectName`.
|
||||||
|
|
||||||
|
4. Відобрази відновлений контекст:
|
||||||
|
- `last_session.session_summary` — що робили минулої сесії
|
||||||
|
- `last_session.todo_json.tasks` — відкриті задачі за пріоритетом (high → medium → low), виконані (`done: true`) — окремо
|
||||||
|
- `last_session.changes`, `bugs`, `architecture_notes`
|
||||||
|
- `recent_memories` — останні записи пам'яті проекту
|
||||||
|
|
||||||
|
5. Запитай, з чого починаємо сьогодні.
|
||||||
|
|
||||||
|
## HTTP workaround (PowerShell)
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$body = @{
|
||||||
|
jsonrpc = "2.0"; id = 1; method = "tools/call"
|
||||||
|
params = @{ name = "<TOOL_NAME>"; arguments = @{ <ARGS> } }
|
||||||
|
} | ConvertTo-Json -Depth 6
|
||||||
|
$bytes = [System.Text.Encoding]::UTF8.GetBytes($body)
|
||||||
|
(Invoke-WebRequest -Uri "http://192.168.0.199:8767/mcp" -Method POST `
|
||||||
|
-Body $bytes -ContentType "application/json; charset=utf-8" `
|
||||||
|
-Headers @{ Accept = "application/json, text/event-stream"; Authorization = "Bearer amk_477a49815af5b1790e6d35f565f5cc50ccb9a02cf89bf908" } `
|
||||||
|
-TimeoutSec 15).Content
|
||||||
|
```
|
||||||
|
|
||||||
|
ВАЖЛИВО: тіло запиту завжди передавати як UTF-8 байти (`UTF8.GetBytes`), інакше кирилиця зіпсується.
|
||||||
Reference in New Issue
Block a user