diff --git a/AGENTS.md b/AGENTS.md index 507c862..ad354f1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,7 +37,7 @@ Read this file before answering any question about knowledge, memory, or researc | "Is X true?" · "Check this fact" | `memory_verify` | | "Analyze this code / build a code graph" | `memory_code_graph` | | "Find a function/class named X" | `memory_search_code` | -| "Show relations / graph edges" | `memory_query_graph` | +| "Show relations / graph edges" | `memory_query_graph` — `kind` is an **edge** type (`imports`/`depends_on`/`calls`/`inherits`/`related`), not an atom type | | "Remember to research X later" | `memory_add_gap` | | "Run logical inference" | `memory_infer` | @@ -84,6 +84,9 @@ Every atom needs a **claim** (one short sentence) and, where possible, provenanc Searching the web for your own base wastes calls and returns nothing useful. - **Reading a directory.** `read` expects a *file*. Use `bash` (`ls`) or the fs-search tool for directories. `read /some/dir` fails with "not a regular file". +- **`memory_query_graph` with an atom type.** Its `kind` is an **edge** type + (`imports`, `depends_on`, `calls`, `inherits`, `related`) — never `text`/`fact` (those are atom + types). Omit `kind` entirely to get all edges. - **Storing raw text.** Do not `memory_store` whole articles. Distill first (`memory_ingest`) or write one atomic claim. - **Skipping verification.** An unverified atom stays `candidate`. Cross-confirm it. diff --git a/mcp_server.py b/mcp_server.py index e895c19..419eb0b 100644 --- a/mcp_server.py +++ b/mcp_server.py @@ -244,7 +244,7 @@ def _tool_verify(args): TOOLS = [ { "name": "memory_search", - "description": "Семантический поиск по базе знаний Pegas Memory (Qdrant, EmbeddingGemma 2). " + "description": "Семантический поиск ВНУТРИ твоей базы знаний Pegas Memory (не в интернете!). " "Возвращает типизированные атомы (text/definition/logical_rule/code/table/fact) " "с оценкой сходства. Фильтры: type, status (candidate/verified/stale/contested).", "inputSchema": { @@ -306,7 +306,8 @@ TOOLS = [ }, { "name": "memory_list_gaps", - "description": "Список открытых пробелов в базе знаний (по приоритету).", + "description": "Список открытых пробелов (вопросов, на которые пока нет ответа) в базе, " + "отсортированный по приоритету. Вызывай, чтобы узнать, что ещё нужно исследовать.", "inputSchema": {"type": "object", "properties": {}, "required": []}, }, { @@ -323,7 +324,8 @@ TOOLS = [ }, { "name": "memory_stats", - "description": "Статистика базы знаний: число атомов, документов, открытых пробелов.", + "description": "Сколько всего в твоей базе знаний: атомов, документов, открытых пробелов. " + "Вызывай, когда пользователь спрашивает, ЧТО хранится в базе или её состояние.", "inputSchema": {"type": "object", "properties": {}, "required": []}, }, { @@ -384,12 +386,14 @@ TOOLS = [ }, { "name": "memory_query_graph", - "description": "Запросить граф: список рёбер (по kind или все), счётчики узлов.", + "description": "Запросить граф связей: рёбра между знаниями/кодом и счётчики узлов. " + "ВАЖНО: kind — это тип РЕБРА (связи), НЕ тип атома (text/fact/...) и НЕ поисковый запрос. " + "Если не уверен в типе ребра — оставь kind пустым, вернутся все рёбра.", "inputSchema": { "type": "object", "properties": { - "kind": {"type": "string", "description": "Фильтр по kind ребра (опционально)."}, - "top_k": {"type": "integer", "default": 50, "description": "Число рёбер."}, + "kind": {"type": "string", "description": "Тип РЕБРА (не тип атома!): imports | depends_on | calls | inherits | related. Оставь пустым — вернутся все рёбра."}, + "top_k": {"type": "integer", "default": 50, "description": "Сколько рёбер вернуть (1-200)."}, }, "required": [], }, @@ -412,7 +416,8 @@ TOOLS = [ { "name": "memory_get_context", - "description": "Собрать релевантный контекст для агента по запросу (поиск + форматирование).", + "description": "Собрать релевантный контекст из твоей базы для ответа (поиск по атомам + форматирование). " + "Используй перед ответом на вопрос, чтобы опереться на уже известные факты.", "inputSchema": { "type": "object", "properties": {