Initial commit: Pegas Memory (PG + Qdrant + Memgraph, MCP server, 14 tools)
This commit is contained in:
commit
83e77ea8c9
24 files changed
+2201
No files matched your search
@@ -0,0 +1,72 @@
|
||||
# Pegas Memory
|
||||
|
||||
Подсистема памяти и базы знаний агента **Alicorn** (рабочее имя «Pegas»).
|
||||
|
||||
- **PostgreSQL** — единственный источник истины (текст, метаданные, трейсы, верификация).
|
||||
- **Qdrant** — векторный срез (EmbeddingGemma 2, dim=768).
|
||||
- **Memgraph** — графовый срез (связи атомов, зависимости кода).
|
||||
- **Единица знания** — типизированный атом: text | definition | logical_rule | code | table | fact.
|
||||
|
||||
Полный план: [ROADMAP.md](./ROADMAP.md)
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
pegas_memory/
|
||||
config.py — конфиг (адреса сервисов, имена коллекций)
|
||||
db.py — PostgreSQL (источник истины)
|
||||
embedding.py — EmbeddingGemma 2 через Ollama (dim=768)
|
||||
qdrant_store.py — векторный срез
|
||||
memgraph_store.py— графовый срез
|
||||
atoms.py — модель атома, дистилляция, верификация
|
||||
ingest.py — парсеры text/pdf/epub/web
|
||||
outbox_sync.py — PG → Qdrant + Memgraph
|
||||
research.py — цикл исследования пробелов
|
||||
code_symbols.py — tree-sitter извлечение символов
|
||||
code_graph.py — граф зависимостей кода (calls/imports/inherits)
|
||||
inference.py — логическая инференция (forward-chaining в Memgraph)
|
||||
dedup.py — семантическая дедупликация атомов (эмбеддинги, порог 0.90)
|
||||
verify.py — верификация: self-critique (LLM) + кросс-подтверждение
|
||||
schema.sql — DDL PostgreSQL
|
||||
```
|
||||
|
||||
|
||||
## Подключение к DeepSeek Harness (dsh)
|
||||
|
||||
Память подключается как **MCP-сервер** (паттерн dsh, как SearXNG/Gitea/Outline/Playwright):
|
||||
|
||||
- **Сервер**: [mcp_server.py](./mcp_server.py) — чистый stdlib, JSON-RPC 2.0, stdio.
|
||||
- **Инструменты** (видны модели как `mcp__pegas-memory__*`):
|
||||
`memory_search`, `memory_store`, `memory_ingest`, `memory_add_gap`,
|
||||
`memory_list_gaps`, `memory_research`, `memory_stats`, `memory_get_context`.
|
||||
- **Регистрация**: в `~/.dsh/profiles/web/cordis.patch.yml` через `@deepseek-ai/dsh-mcp-client`.
|
||||
- **Live-reload**: профиль web имеет `patchReload: live` — изменения конфига
|
||||
подхватываются без рестарта (проверено: сервер спавнится автоматически).
|
||||
|
||||
```yaml
|
||||
- id: mcp-pegas-memory
|
||||
name: '@deepseek-ai/dsh-mcp-client'
|
||||
config:
|
||||
serverName: pegas-memory
|
||||
transport: stdio
|
||||
command: /home/neo/workspace/pegas-memory/.venv/bin/python
|
||||
args:
|
||||
- /home/neo/workspace/pegas-memory/mcp_server.py
|
||||
toolCallTimeoutMs: 180000
|
||||
```
|
||||
|
||||
## Доступность зарубежных сайтов и прокси
|
||||
|
||||
Прямое подключение работает для большинства сайтов (github, wikipedia, postgresql.org),
|
||||
но часть блокирует по российскому IP (memgraph.com — ConnectTimeout) или ставит
|
||||
Cloudflare anti-bot (neo4j.com — 403). Поведение research-цикла:
|
||||
|
||||
1. Полная загрузка URL (httpx, таймаут 30s).
|
||||
2. При блокировке — fallback на сниппет из SearXNG (локальный инстанс).
|
||||
|
||||
Для заблокированных сайтов можно включить SOCKS5/HTTP-прокси:
|
||||
```bash
|
||||
export PROXY_URL="socks5://127.0.0.1:1080" # hysteria2
|
||||
```
|
||||
Когда прокси задан, `parse_web` ходит через него; иначе — напрямую.
|
||||
Поддержка SOCKS5 уже установлена (`httpx[socks]`).
|
||||
Reference in new issue
Block a user