npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@thesashadev/girl-agent

v0.4.4

Published

Telegram AI persona engine with memory, schedule, relationship state and MTProto userbot mode.

Readme

girl-agent banner

girl-agent

ИИ-девушка в Telegram, которая ведёт себя как человек. Со сном, расписанием, памятью, характером — и без «конечно, я понимаю».

Сайт · Документация · Канал · Сообщество · Автор: @voided_net

License Node Telegram Docker


Это бета. Со всеми проблемами и багами — в Issues или @voided_net.

О проекте

Она не отвечает на каждое сообщение. Иногда читает и молчит. Иногда ставит реакцию. Иногда отвечает через час, потому что была занята или просто не хотела.

Это не баг. Так задумано.

girl-agent — движок ИИ-персоны для Telegram. Не промпт. Не GPTs. Не плагин. Это полноценный агент со своим состоянием: расписание дня, паттерн присутствия, сон, память на месяцы вперёд, конфликт-система, пять счётчиков отношений, девять стадий сближения. Поведение собирается из этих слоёв, а не из одного system_prompt.


Содержание


Быстрый старт

Linux / macOS / WSL — одной командой

Без Node на машине, без sudo:

curl -fsSL https://raw.githubusercontent.com/TheSashaDev/girl-agent/master/scripts/install.sh | sh

Что произойдёт:

  • определит OS + arch (linux x64/arm64, macos x64/arm64, wsl);
  • если есть Docker → поставит Docker-обёртку (полная изоляция от системы);
  • иначе → скачает официальный Node.js 22 LTS в ~/.local/share/girl-agent/runtime/ и поставит туда же @thesashadev/girl-agent (системный Node не трогается);
  • положит shim girl-agent в ~/.local/bin/girl-agent;
  • ничего не пишется в /usr/local/, sudo не нужен.

Дальше:

girl-agent                  # интерактивный визард первичной настройки
girl-agent --profile=arina  # запустить готовый профиль
girl-agent server --help    # серверный режим (без TTY, для systemd / cron / CI)

Опции установщика:

curl -fsSL .../install.sh | sh -s -- --docker        # форсировать Docker
curl -fsSL .../install.sh | sh -s -- --local         # форсировать локальную Node
curl -fsSL .../install.sh | sh -s -- --version=0.4.1 # конкретную версию пакета

Удалить: rm -rf ~/.local/share/girl-agent ~/.local/bin/girl-agent.


Windows — через npx (рекомендуем)

Самый быстрый способ. Без установщика, без WSL, без Docker.

  1. Скачай и поставь Node.js 22 LTS (.msi-инсталлер, галочка Add to PATH).

  2. В PowerShell:

    npx @thesashadev/girl-agent

    Первый запуск скачает пакет (~30 МБ) и откроет визард прямо в PowerShell. WebUI поднимется на http://localhost:3000.

Хочешь короче — поставь глобально:

npm install -g @thesashadev/girl-agent
girl-agent

Нужен системный лоток и автозапуск? Есть нативный десктоп-клиент на Rust — готовые бинари в Releases.


Если уже есть Node ≥ 22

npx @thesashadev/girl-agent
npx @thesashadev/girl-agent --profile=arina

Или глобально:

npm install -g @thesashadev/girl-agent
girl-agent

Docker (для серверов)

Интерактивная первичная настройка (визард внутри контейнера):

docker run -it --rm -v girl-agent-data:/data ghcr.io/thesashadev/girl-agent:latest

Headless (для systemd / docker-compose / k8s) — сначала готовим конфиг, потом запускаем без TTY:

# 1) шаблон конфига
docker run --rm ghcr.io/thesashadev/girl-agent:latest server --print-config > bot.json

# 2) отредактировать bot.json (token, api-key)

# 3) поднять в фоне
docker run -d --name girl-agent --restart=unless-stopped \
  -v girl-agent-data:/data \
  -v $PWD/bot.json:/config/bot.json:ro \
  ghcr.io/thesashadev/girl-agent:latest \
  server --config /config/bot.json --headless

Или совсем без файла, через env-vars:

docker run -d --name girl-agent --restart=unless-stopped \
  -v girl-agent-data:/data \
  -e GIRL_AGENT_MODE=bot \
  -e GIRL_AGENT_TOKEN=... \
  -e GIRL_AGENT_API_PRESET=claudehub \
  -e GIRL_AGENT_API_KEY=... \
  -e GIRL_AGENT_NAME='Аня' -e GIRL_AGENT_AGE=22 \
  ghcr.io/thesashadev/girl-agent:latest \
  server --headless

Готовые шаблоны (можно скопировать прямо из бинаря):

girl-agent server --print-config    # bot.json
girl-agent server --print-systemd   # /etc/systemd/system/girl-agent.service
girl-agent server --print-docker    # Dockerfile / compose / k8s snippets

И в корне: docker-compose.example.yml.

Из исходников:

git clone https://github.com/TheSashaDev/girl-agent.git
cd girl-agent
npm install
npm run dev

Что под капотом

Поведение собирается из нескольких слоёв, а не из одного промпта.

| | Слой | Что делает | |-|-------------------|------------| | 📱 | Presence | Она не всегда онлайн. Паттерн присутствия зависит от персонажа: кто-то в телефоне круглые сутки, кто-то заходит раз в час, кто-то только вечером. | | 😴 | Sleep | Ночью спит — можно разбудить через :wake, но без команды шанс ответа низкий. | | 📅 | Daily-life | У каждого дня есть расписание: пары, работа, дорога, свободное время. Если на занятиях — телефон недоступен. | | ❤️ | Relationship | Пять счётчиков: интерес, доверие, симпатия, раздражение, толер.кринжа. Меняются от каждого диалога. | | 📈 | Stages | 9 стадий сближения: «дала тг, но холодная» → «давно вместе». Стадия влияет на тепло, флирт, длину ответов. | | ⚠️ | Conflict | Если давить, спамить или нарушать границы — включается конфликт. Может замолчать на часы или дни. | | 🧠 | Memory | Важные события пишутся в long-term.md и всплывают в будущих диалогах. | | 🚫 | Anti-AI | Промпт запрещает markdown, «конечно», «я понимаю», эмодзи-ряды, вопросы в конце и всё что палит ChatGPT. | | 👤 | Userbot mode | Настоящий Telegram-аккаунт через MTProto. Умеет читать, ставить реакции, печатать, удалять и редактировать. Выглядит как живой человек. | | 🗓 | Agenda | Бот сам планирует проактивные сообщения: пожелать удачи на собес, спросить как прошла встреча, поздравить с днём рождения. |

Подробный разбор каждого слоя →


Почему не просто GPTs или промпт

Вариантов сделать «девушку в Telegram» несколько — от костыльных до полноценных. Разберём что есть и где дыры.

  • Нет памяти между сессиями — каждая начинается с нуля
  • Нет Telegram — только веб-интерфейс
  • Нет реакций, печати, редактирования
  • Бот всегда «онлайн» — нет расписания или сна
  • Память ограничена контекстным окном

Итог: чат-бот с кастомным промптом, без состояния и реалистичного поведения.

Личность через SOUL.md, IDENTITY.md, USER.md. Telegram-bridge через GramJS (MTProto).

  • Нет реализм-модулей: presence, sleep, conflict, daily-life, relationship stages
  • Нет agenda — бот не планирует действия
  • Память = история сообщений, нет long-term storage
  • Нет relationship score и conflict system

Итог: хороший bridge для Telegram, но не персонаж-движок. Поведение = промпт + история.

~10K строк Python, MTProto via Telethon, 17 NSFW-overlays.

  • Слишком специфично под NSFW
  • Сложно настроить — нужны llama-server, Ollama, ComfyUI
  • Требует мощного GPU — 12B модель локально
  • Нет presence/sleep/conflict как отдельных модулей

Итог: мощное, но узкое решение под NSFW с тяжёлой инфраструктурой.

  • Нет Telegram — только веб-интерфейс
  • Нет контроля — всё на их серверах
  • Память сбрасывается между сессиями
  • Persona обрезается при росте истории

Итог: закрытый сервис с ограниченной памятью и без Telegram.

  • Presence — паттерны присутствия (частота, офлайн, вероятность ответа)
  • Sleep — время сна, night wake chance
  • Daily-life — расписание, занятость, приоритеты
  • Relationship stagesmet-irl-got-tgconvinceddating-stablelong-term
  • Relationship score — интерес, доверие, симпатия, раздражение, толер.кринжа
  • Conflict — если давить/спамить, включается конфликт, может замолчать
  • Memory — важные события в long-term.md, всплывают в диалогах
  • Anti-AI — промпт запрещает markdown, «конечно», «я понимаю», эмодзи-ряды
  • Userbot mode — умеет читать, реагировать, печатать, удалять, редактировать
  • Agenda — бот планирует действия, живёт своей жизнью

Итог: поведение собирается из состояния, а не из текстовых инструкций.


Безопасность

⚠️ Не публикуй: data/, config.json, sessionString, API-ключи.

🔒 Для userbot-режима используй отдельный тестовый аккаунт — Telegram может забанить основной за подозрительную активность.

Подробнее: Security & Privacy →


Лицензия

📄 Source-available — исходный код открыт для личного тестирования, оценки и вкладов.

| Разрешено | Запрещено без письменного разрешения | |-----------|--------------------------------------| | ✅ Клонировать и запускать локально | ❌ Коммерческое использование | | ✅ Создавать issues и PR-ы | ❌ Платный хостинг | | ✅ Изучать код и экспериментировать | ❌ Перепродажа | | | ❌ Публичные конкурирующие клоны | | | ❌ Использование кода в коммерческих продуктах |

📜 Полный текст: LICENSE.