memexдокументация

Справочник

Как ассистенты получают навыки и инструкции

Что 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 общается по схеме «один запрос — один ответ», без потоковой передачи, поэтому не может сам отправить ассистенту изменение посреди разговора. Вместо этого список доходит до ассистента тремя путями.

  1. При подключении инструкции initialize точно перечисляют, что получает это подключение.
  2. Тот же список есть в описании инструмента list_skills, поэтому клиент, который держит описания инструментов в контексте всю сессию, знает его, ничего не вызывая.
  3. Каждый результат инструмента, даже неудачной загрузки, содержит короткое значение 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. В инструкциях, которые получает каждое подключение, названа твоя заметка-профиль (или сказано, что её нет и как поискать снова), а в ответе с самой заметкой есть указание, как её читать: она важнее того, что ассистент помнит о тебе; незаполненный раздел значит «неизвестно»; границы из неё действуют для всех заметок, которые пишутся здесь; а изменение предлагается небольшим патчем и только тогда, когда из разговора видно, что строка перестала быть верной.

Профиль, который ещё на проверке, получает другое указание: он не действует и нужен только для того, чтобы никто не предложил второй. Заметка с обоими тегами получает только указание для профиля.