Фаза 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:
sages-ds
2026-07-14 17:43:41 +03:00
parent 899c4e66e1
commit be616f18e3
7 changed files with 148 additions and 6 deletions
+1 -1
View File
@@ -17,6 +17,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1.0000000000000024,
"scale": 0.3628873693012127,
"close": true
}
+5 -3
View File
@@ -28,12 +28,14 @@ created: 2026-07-14
| `project_get_state` | `projectName` | Останній стан сесії + project items |
| `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-save` — збереження стану сесії
- `/mem-save` — збереження стану сесії (+ пропозиція зберегти довговічні факти окремими записами)
- `/mem-note` — швидке збереження факту/нотатки в пам'ять
- `/mem-find` — пошук у пам'яті
- `/mem-find` — пошук у пам'яті (+ перегляд запису і графа зв'язків)
## Резерв на майбутнє (фаза 2+)
+4 -2
View File
@@ -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] Ініціалізація бази `ai_memory` + `CREATE EXTENSION vector;` (авто-міграції при старті) ✅ 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
- [ ] `/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)
+29
View File
@@ -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`), інакше кирилиця зіпсується.
+36
View File
@@ -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`), інакше кирилиця зіпсується.
+38
View File
@@ -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`), інакше кирилиця зіпсується.
+35
View File
@@ -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`), інакше кирилиця зіпсується.