tools: подключить skill_save/skill_delete к ChatAgent (Hermes Phase 3 ready)
Тулзы были написаны ранее (SkillSaveTool/SkillDeleteTool, SkillToolsFactory), но не были подключены к ChatAgent. Этот коммит закрывает пробел: * ChatAgent: новый параметр skillStore: SkillStore? = null. Когда задан — в allTools добавляются SkillToolsFactory.create(skillStore) → агенту доступны skill_save и skill_delete (помимо read_skill который всегда есть при непустом каталоге). * Main.kt: если config.skillsDir задан — создаём DiskSkillStore(File(dir)) и скармливаем агенту. Каталог используется и для чтения (SkillCatalog), и для записи (DiskSkillStore.upsert/remove) — одни и те же файлы, никаких рассинхронов между read_skill и skill_save. * SkillLoader.loadDirectory больше не нужен в Main — DiskSkillStore сам подгружает каталог в init. Удалён старый импорт. * Тесты SkillToolsTest (5): SkillSaveTool persists file and surfaces in catalog; rejects blank name; SkillDeleteTool archives (rename to .archived); errors on missing skill; colon-named skills map to nested dirs (backend:spring:db-base → backend/spring/db-base/SKILL.md). * README: раздел "Навыки" расширен описанием трёх тулов (read_skill / skill_save / skill_delete). Smoke: standalone запускается с пустым AGENTIK_SKILLS_DIR, видит "skills: 0 loaded from /tmp/skills-smoke" (DiskSkillStore создаёт каталог при отсутствии). Агент при наличии skillStore имеет в своём распоряжении все три тула для self-improvement'а. Теперь Phase 3 (skill self-improvement) реально работает end-to-end: агент может дёрнуть skill_save когда понимает что задача повторяется, потом в следующих диалогах использовать новый скил через read_skill. Tests: 160 standalone JVM (+5), 241 всего JVM, 73 native, all green.
This commit is contained in:
@@ -318,6 +318,25 @@ AGENTIK_SOUL=/etc/agentik/SOUL.md
|
||||
AGENTIK_SKILLS_DIR=/etc/agentik/skills
|
||||
```
|
||||
|
||||
Когда `AGENTIK_SKILLS_DIR` задан, агенту доступны три тула для работы со
|
||||
скилами (Hermes-style self-improvement):
|
||||
|
||||
- **`read_skill(name)`** — загружает полный markdown скила по имени из
|
||||
каталога (нужно для деталей, т.к. в system prompt обычно только краткие
|
||||
описания).
|
||||
- **`skill_save(name, description, body)`** — создаёт или обновляет скил.
|
||||
Имя может содержать `:` (opencode-style: `backend:spring:db-base`
|
||||
→ `backend/spring/db-base/SKILL.md`).
|
||||
- **`skill_delete(name)`** — архивирует скил (переименовывает файл в
|
||||
`.archived`, оставляя возможность восстановить).
|
||||
|
||||
`skill_save`/`skill_delete` не требуют рестарта агента — изменения видны
|
||||
на ближайшем вызове `read_skill` (включая в этом же диалоге).
|
||||
|
||||
```bash
|
||||
AGENTIK_SKILLS_DIR=/etc/agentik/skills
|
||||
```
|
||||
|
||||
## MCP-инструменты
|
||||
|
||||
`AGENTIK_MCP_CONFIG` — путь к JSON-файлу со списком MCP-серверов
|
||||
|
||||
Reference in New Issue
Block a user