@euhenio/pi-buddy

中文文档
2.4.7发布于 2026/11/05MITES Module零依赖近 30 天下载 3389

A terminal tamagotchi for pi: animated pixel pets that react to your coding agent, with English and Russian speech

原始使用文档
文档目录9 节
  1. Установка
  2. Язык
  3. Анимация
  4. Субагенты — «стая»
  5. Команды
  6. Свои фразы и обучение
  7. Файлы
  8. Ошибки и предложения
  9. Устройство кода

@euhenio/pi-buddy

Русский · English

Тамагочи для pi: питомец живёт в полосе справа от поля ввода и реагирует на работу агента — идёт, пока агент работает, виляет хвостом после успешного хода, грустит на ошибках, засыпает в простое.

Исходный код на GitHub · Сообщить об ошибке

Демо pi-buddy: ВЕО и уточка, субагенты, реакции, реплики и игры

30 секунд: основные возможности на настоящих спрайтах питомцев. Постановочное демо.

Установка

pi install ./pi-buddy                              # из локальной папки
pi install git:github.com/e-davidenko/pi-buddy      # из git
pi install npm:@euhenio/pi-buddy                   # из npm

Попробовать без установки: pi -e ./pi-buddy.

Если раньше расширение лежало файлом в ~/.pi/agent/extensions/buddy.ts — удалите тот файл, иначе будут две команды /buddy. Питомец сохранится: его состояние в ~/.pi/agent/buddy.json.

Язык

Поддерживаются русский и английский: /buddy lang ru, /buddy lang en и /buddy lang auto. Команды, ключи видов и тем не переводятся; имя питомца сохраняется. Существующие питомцы без настройки языка остаются на русском. Новые используют auto: первое непустое значение LC_ALL, LC_MESSAGES, LANG; русская локаль выбирает ru, все остальные (включая C и POSIX) — en. Настройка общая для терминалов и сохраняется при hatch; в режиме auto каждый терминал использует своё окружение. Переключение очищает текущую реплику и игровую сцену.

Анимация

У каждого питомца — пиксельный спрайт и 30 кадров: моргание, свои «фирменные» движения в простое (кот машет хвостом и умывается, утка кивает, сова подмигивает, дракон пускает дымок…), ходьба, пока агент работает, прыжки от радости, позы «лежит», «грустит» и «спит» с дыханием. Во время работы агента питомец показывает, чем тот занят: думает, ищет (агент читает код), работает (правит файлы), настороже (команда в терминале), сидит и ждёт (тесты, сборка, субагенты), а на зелёных тестах подаёт голос. Позы у каждого свои: собака нюхает след и гавкает, кот крадётся и закапывает баг, утка ныряет хвостом вверх и высиживает билд в гнезде, сова листает книгу и ухает, дракон роет сокровища и выдыхает пламя, призрак ищет с лупой и пугает «бу!», аксолотль роет песок и пускает пузыри, блоб шлёпает ложноножками. Каждая поза активности держится не меньше 5 секунд. Смена анимаций идёт через базовую стойку, без резких скачков. В простое питомец иногда сам берёт любимую игрушку.

Субагенты — «стая»

Когда агент запускает субагентов (инструмент subagent из примеров pi и похожие — task, delegate, spawn_agents…), над питомцем появляются его мини-копии (щенки, котята, утята…), по одному на субагента (до трёх, остальные — +N). Каждый щенок показывает, чем занят его субагент: нюхает, копает, сидит на тестах, виляет хвостом на ✓, грустит на ✗; в цепочке (chain) следующие ждут своей очереди. Сам питомец в это время сидит и «пасёт стаю», а когда все вернутся — гавкает. Фоновые запуски pi-subagents (async) тоже понимает: инструмент возвращается сразу, а стая бегает, пока субагент действительно не закончит (живой статус берётся из его status.json). Опыт за работу субагентов начисляется питомцу родительской сессии (сами дочерние pi-процессы состояние не трогают).

Команды

КомандаЧто делает
/buddyпоказать / спрятать
/buddy choose [вид]выбрать питомца: ВЕО (пиксели), немецкая овчарка, блоб, кот, утка, призрак, сова, аксолотль, дракон — все пиксельные, с анимацией
/buddy feed pet napпокормить, погладить, уложить
/buddy play [предмет]поиграть любимой игрушкой: у каждого их две (мячик и косточка, клубок и мышка, фрисби и канат…)
/buddy name <кличка>дать имя
/buddy statsстатистика
/buddy lang ru|en|autoязык интерфейса и речи; без аргумента — текущая настройка
/buddy versionверсия расширения для сообщения об ошибке
/buddy dock compact big topгде и как показывать
/buddy mute unmuteболтовня выкл/вкл
/buddy anim on|off|autoанимация (auto — не мешает прокрутке вне fullscreen)
/buddy pxcolor fg|bg|autoотрисовка пиксельного пса (fg — для терминала IntelliJ)
/buddy bark (голос)подать голос: гав, мяу, кря, уху…
/buddy learn [тема|пожелание]модель pi придумает новые фразы
/buddy phrases / phrases cleanфайл своих фраз / убрать те, что не прозвучат (длинные, не та поза)

В чате можно попросить агента: «добавь питомцу фраз про Kafka» — он вызовет инструмент buddy_phrases.

Чтобы выбрать собаку без меню, введи полную команду в одной строке: /buddy choose veo_px — пиксельный ВЕО, /buddy choose gsd — немецкая овчарка. Имя, уровень и опыт сохранятся. Если после /buddy choose меню не видно, нажми Esc и используй одну из команд из показанного списка.

Свои фразы и обучение

/buddy learn генерирует фразы на активном языке. Инструмент buddy_phrases принимает необязательный locale: "ru" | "en" для явного выбора языка; по умолчанию используется текущий. Качество формулировок зависит от модели. Если во время обучения сменить язык или вид, ответ сохранится в исходный набор, который будет указан в уведомлении.

Новый формат файла:

{
  "version": 2,
  "locales": {
    "ru": {
      "common": { "done": ["ещё один баг побеждён!"] },
      "species": { "cat": { "hello": ["мяу, снова кодим?"] } }
    },
    "en": {
      "common": { "done": ["another bug defeated!"] },
      "species": {}
    }
  }
}

Пользовательские фразы дополняют только свой язык. Старые файлы читаются как русский набор; первое изменение или /buddy phrases переводит файл в v2, сохраняя оригинал в buddy-phrases.json.bak. Чтение само по себе файл не меняет. Перед откатом на версию без поддержки v2 восстановите старый файл из .bak, сохранив отдельно v2 с новыми фразами. Повреждённые данные и неизвестные версии не перезаписываются шаблоном. После ручной правки нужен /reload; выученные фразы подключаются сразу. phrases clean проверяет все языки. Ограничение — 34 видимых графемы без метки позы; метки @stand:, @walk:, @lie:, @sit: должны подходить теме.

Записи защищены блокировкой и атомарной заменой. При занятом файле команда сообщает ошибку — повторите её. Ручные правки делайте, когда обучение не выполняется. /buddy play принимает также стабильный id игрушки (ball, bone и другие); прежние русские названия продолжают работать на английском.

Файлы

  • ~/.pi/agent/buddy.json — состояние питомца
  • ~/.pi/agent/buddy.json.bak — предыдущая сохранённая версия для восстановления
  • ~/.pi/agent/buddy-phrases.json — свои и выученные фразы

Опыт сохраняется после каждого хода модели, в конце запроса и раз в 30 секунд во время работы. Терминалы сливают прогресс под общей файловой блокировкой (buddy.json.lock), поэтому их одновременные сохранения не перезаписывают друг друга. Дочерние процессы без интерфейса прогресс не сохраняют. При ошибке сохранения прогресс остаётся в памяти до следующей попытки, а pi показывает предупреждение. Если основной файл повреждён, читается резервная копия. Если обе версии не читаются, расширение сообщает об ошибке, а не создаёт нового питомца поверх старого состояния. Команда /buddy hatch после подтверждения создаёт нового питомца со сбросом опыта, сохраняя настройки интерфейса. Если диалог подтверждения недоступен, введи /buddy hatch confirm.

Ручная игра не даёт XP. Ошибка инструмента и неуспешное возвращение стаи отнимают 10 пунктов радости; бонус за завершение даётся только при успехе. Все правила ухода, настроения и общего прогресса описаны в правилах поведения.

Расширение само в сеть не ходит. /buddy learn обращается к модели pi; buddy_phrases сохраняет фразы, переданные агентом.

Ошибки и предложения

Нашли ошибку или хотите предложить улучшение? Создайте issue на GitHub. Перед этим проверьте существующие обсуждения — возможно, проблема уже известна.

Для сообщения об ошибке укажите версии pi и pi-buddy, ОС и терминал, шаги для повторения, ожидаемое и фактическое поведение. Если проблема связана с отображением, приложите скриншот.

Устройство кода

Расширение — обычные TypeScript-модули: pi загружает их сам, сборка не нужна, зависимостей нет. extensions/buddy.ts — точка входа, весь код в src/, разложен по слоям (зависимости идут только внутрь):

СлойЧто там
src/domainправила питомца (шкалы, опыт, слияние между терминалами), настроение, автомат поз (очередь занятий, долгое «думает», переходы), стая субагентов, речь. Чистая логика, без файлов и экрана
src/contentданные: пиксельные спрайты, палитра, фразы, виды, любимые предметы
src/appприложение: BuddyApp (сценарии на события агента, таймер), команды /buddy, обучение фразам; порты — интерфейсы к внешнему миру
src/adapterspi (события, команда, инструмент buddy_phrases), экран (полоса dock, compact/big/top, полублочные пиксели), файлы (buddy.json, свои фразы, status.json субагентов)

После npm ci: тесты домена, приложения и хранилища — npm test, проверка типов — npm run typecheck.

Структура каталогов и добавление языка: руководство по локализации.

版本与发布记录

@euhenio/pi-buddy 共发布 18 个版本,首次发布于 2026/10/27;过去 12 个月发布了 18 个版本。

版本发布日期距今
2.4.7latest2026/11/058 天前
2.4.62026/11/058 天前
2.4.52026/11/058 天前
2.4.42026/11/0310 天前
2.4.32026/11/0211 天前
2.4.22026/11/0211 天前

关于 @euhenio/pi-buddy 的常见问题

@euhenio/pi-buddy 是什么?

A terminal tamagotchi for pi: animated pixel pets that react to your coding agent, with English and Russian speech

如何安装 @euhenio/pi-buddy?

在项目目录运行 npm install @euhenio/pi-buddy,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@earendil-works/pi-coding-agent(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@euhenio/pi-buddy 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/euhenio__pi-buddy 是否存在。

@euhenio/pi-buddy 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@euhenio/pi-buddy 可以商用吗?

@euhenio/pi-buddy 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@euhenio/pi-buddy 的下载量有多少?

根据 npm 官方下载统计,@euhenio/pi-buddy 在 2026/10/14 – 2026/11/12 这 30 天内被下载 3,389 次,日均约 113 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@euhenio/pi-buddy 还在维护吗?

最新版本 2.4.7 发布于 2026/11/05(8 天前);至今共发布 18 个版本,其中过去 12 个月发布了 18 个;首次发布于 2026/10/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。