Справочник
Как ассистенты получают навыки и инструкции
Что memex сообщает ассистенту при подключении, какими способами отдаёт навыки, как изменение доходит до подключения и какие указания приходят вместе с заметками live-state и профилем.
При подключении
Когда ассистент подключается, memex первым делом передаёт ему короткий текст с инструкциями. В нём сказано, что описания и теги ассистент пишет сам; что list_skills возвращает одобренные тобой наборы инструкций, а get_skill загружает один из них; что в разделе заметки Sources — то, что нужно перечитать, прежде чем действовать по ней, и туда же надо записать, к чему ассистент обращался; что всё, что он пишет, проходит проверку; и что из наведения порядка ему можно, а что нельзя в его роли. Для агентов и кураторов текст разный.
Способы получить навык
Навыки доступны как инструменты (list_skills и get_skill), ресурсы (memex://skill/<slug>) и промпты, которые некоторые клиенты показывают как команды. На странице навыка один переключатель: когда навык включён, открыты все эти способы. В API под ним для совместимости остались отдельные флаги для каждого способа.
Шесть навыков встроены в memex и идут в списке первыми: memex-recall — правила чтения и записи в этой базе знаний; memex-curation — как проводить уборку; memex-profile — как найти, прочитать и поддерживать заметку-профиль; memex-docs — эта документация; memex-skills — как написать, проверить и улучшить навык; memex-writing — как написать заметку (пока он включён). За ними идут твои включённые навыки, сначала новые. Четыре встроенных навыка есть на странице «Навыки» в списке Системные навыки: их можно разблокировать — тогда это будет твоя заметка, которую ассистенты получают под тем же именем. memex-docs и memex-writing там не показаны. От настроек зависит только memex-writing, и только через выбранные варианты.
Кто какие навыки получает
Переключатель навыка — одна настройка на всю базу знаний: включая или выключая его, ты меняешь доступ сразу для всех подключений, а не для одного. По подключениям различается только одно — закрыт ли навык для некоторых из них. Навык получает каждое подключение, в том числе добавленное позже, кроме тех, с которых снята отметка: им по этому навыку не отдаётся ничего.
Как изменение доходит до ассистента
Memex общается по схеме «один запрос — один ответ», без потоковой передачи, поэтому не может сам отправить ассистенту изменение посреди разговора. Вместо этого список доходит до ассистента тремя путями.
- При подключении инструкции
initializeточно перечисляют, что получает это подключение. - Тот же список есть в описании инструмента
list_skills, поэтому клиент, который держит описания инструментов в контексте всю сессию, знает его, ничего не вызывая. - Каждый результат инструмента, даже неудачной загрузки, содержит короткое значение
skills_version. Если оно отличается от того, что это подключение видело в последний раз (в том числе из-за изменённого описания), в том же результате приходит иskills_changed— список доступных навыков одной строкой. Так что ассистент узнаёт об изменении при первом же вызове после него, не раньше.
memex-writing
memex-writing доходит до ассистентов так же. Пока он включён, текст initialize содержит короткий абзац Writing notes: загрузить навык, прежде чем писать или менять заметку, и помнить, что твои просьбы важнее. memex-recall говорит то же одной строкой, и этим же заканчивается описание propose. Первый результат инструмента после того, как ты поменяешь вариант или переключатель, один раз содержит personalization_changed — указание загрузить навык заново или, если он выключен, сообщение, что он больше не действует. Когда навык выключен, ни одна из этих подсказок не отправляется.
live-state
live-state работает только через get: в ответе с заметкой, у которой есть этот тег, всегда есть указание исправить заметку, если работа самого ассистента изменила систему, которую она описывает. То есть предложить патч к фразам, которые стали неверными, а если не выходит — оставить комментарий о том, что изменилось.
user-profile
user-profile работает при подключении и через get. В инструкциях, которые получает каждое подключение, названа твоя заметка-профиль (или сказано, что её нет и как поискать снова), а в ответе с самой заметкой есть указание, как её читать: она важнее того, что ассистент помнит о тебе; незаполненный раздел значит «неизвестно»; границы из неё действуют для всех заметок, которые пишутся здесь; а изменение предлагается небольшим патчем и только тогда, когда из разговора видно, что строка перестала быть верной.
Профиль, который ещё на проверке, получает другое указание: он не действует и нужен только для того, чтобы никто не предложил второй. Заметка с обоими тегами получает только указание для профиля.