Claude Info
AI и агенты

OpenPisci

njbinbin-pisci/openpisci

Локальный AI-агент на Tauri 2 + Rust + React для Windows/macOS/Linux. Поддерживает Claude, GPT, DeepSeek и другие LLM. Трёхуровневая агентная система (Pisci/Koi/Fish), интеграция с Feishu/WeChat, MCP, долгосрочная память и многоагентное сотрудничество.

Установка

terminal
bash
git clone https://github.com/njbinbin-pisci/openpisci.git

README

🐟 OpenPisci

Десктопный AI-агент с открытым исходным кодом

OpenPisci — локальное десктопное приложение AI-агента, построенное на Tauri 2 + Rust + React. Начиная с v0.7.0 проект был существенно переработан в многоуровневую архитектуру: pisci-core (чистая логика совместной работы/домена), pisci-kernel (ядро среды выполнения, независимое от ОС и UI), pisci-desktop (десктопная оболочка Tauri) и pisci-cli (headless-запуск). Pisci — главный агент, Koi — постоянные агенты совместной работы, Fish — временные stateless-субагенты.

Текущий статус платформ

  • Windows: основная поддерживаемая цель десктопного релиза
  • macOS / Linux: поддержка нативной сборки и CI-пакетирования добавлена в v0.7.0
  • iOS / Android: пока не поддерживается

中文 | English

Если вы клонировали этот проект, уделите 2 секунды и поставьте ⭐ — это единственный способ узнать, где оказался код. GitHub Stars

Chat Interface


✨ Ключевые возможности

🤖 Мощные возможности агента

  • Поддержка нескольких LLM: Claude (Anthropic), GPT (OpenAI), DeepSeek, Qwen, Zhipu, Kimi, MiniMax и любой OpenAI-совместимый эндпоинт
  • Потоковые ответы: опциональная потоковая передача вывода модели токен за токеном в основном чат-интерфейсе
  • Автоматическое извлечение памяти: после каждого разговора LLM-проход извлекает 0–3 ключевых факта и сохраняет их как долгосрочные воспоминания; релевантные воспоминания автоматически подставляются в будущих сессиях
  • Активная память: агент может вызывать инструмент memory_store в середине разговора для сохранения важной информации
  • Декомпозиция задач: сложные задачи разбиваются и выполняются пошагово через HostAgent
  • Восстановление после сбоев: контрольные точки записываются на каждой итерации; агент возобновляет работу с последней точки после сбоя
  • Механизм heartbeat: настраиваемый периодический heartbeat для проактивной проверки задач
  • Обнаружение циклов: четыре детектора (GenericRepeat / KnownPollNoProgress / PingPong / GlobalCircuitBreaker) предотвращают зависание агента в бесконечных циклах
  • Интеграция MCP: контекстно-зависимая регистрация MCP-инструментов позволяет основному чату и сценам задач подключаться к внешним серверам инструментов через Model Context Protocol
  • Жёсткие линты для всего workspace: линты Rust workspace работают с флагом -D warnings, чтобы предотвратить накопление мёртвого кода, неиспользуемых импортов и отладочных артефактов

🐟 Pisci / Koi / Fish: три уровня агентов

РольПозиционированиеЖизненный циклТипичные обязанностиВзаимодействие
PisciГлавный агент / менеджер проекта / точка входа для пользователяПостоянныйОбщается с пользователем, использует инструменты, создаёт пулы проектов, координирует многоагентную работу, решает, можно ли завершить проектОрганизует Koi и может делегировать разовую работу Fish
KoiПостоянный агент совместной работыПостоянный, переиспользуется между проектамиВыполняет долгосрочные роли в проекте: архитектор, разработчик, тестировщик, ревьюер, исследовательСотрудничает внутри пула через pool_chat, упоминает коллег через @, при необходимости эскалирует к @pisci
FishStateless временный субагентЭфемерный / по требованиюВыполняет сфокусированную работу: пакетное сканирование, исследования, суммаризация, изолированные подзадачиВызывается через call_fish; не участвует напрямую в совместной работе пула

Простая ментальная модель:

  • Pisci — ответственный координатор.
  • Koi — долгосрочные члены команды для устойчивого сотрудничества.
  • Fish — временные исполнители, которые выполняют задачу и возвращают только итоговый результат.

Ключевые отличия:

  • Pisci решает, создавать ли пул, как организовать работу, когда продолжать и когда просить пользователя подтвердить завершение проекта.
  • Koi имеют стабильные идентичности, собственное владение задачами и проектно-ориентированное постоянное поведение при совместной работе.
  • Fish не поддерживают долгосрочное состояние проекта и предназначены для защиты основного контекстного окна от промежуточного шума.

🏞️ Что находится внутри пруда

Koi Management

Пруд — это не единственный агент. Это рабочее пространство совместной работы вокруг проекта:

  • Пул проекта (Pool Session): контейнер проекта с именем, статусом, спецификацией организации (org_spec) и опциональным project_dir
  • Pool Chat: общее пространство разговора, где Pisci и Koi обсуждают задачи, передают работу, задают вопросы и упоминают друг друга через @
  • Board / Kanban: визуализирует задачи Koi в статусах todo / in_progress / blocked / done / cancelled
  • Koi Panel: отображает идентичность, роль, доступность и загрузку каждого Koi
  • Pisci Inbox / Heartbeat: входящие Pisci на уровне проекта для @pisci, heartbeat-сканирований и сигналов состояния
  • База знаний (kb/): общее пространство документации проекта для архитектуры, заметок по API, багов, решений и исследований
  • Директория проекта / Git Worktrees: при настроенном project_dir Koi могут работать в изолированных ветках/worktrees для снижения конфликтов файлов

🤝 Как работает совместная работа в пруду

Pool Chat Multi-Koi Collaboration Pool Kanban Board

Типичный проект в пруду следует такому механизму:

  1. Пользователь запускает проект

    • Пользователь может запустить его из приложения или из IM-каналов, например Feishu, попросив Pisci создать пул проекта
    • Pisci использует pool_org(action="create") для создания пула и записи его org_spec
  2. Pisci организует команду

    • Pisci выбирает подходящие роли Koi на основе проекта
    • Pisci должен в первую очередь запускать работу, отправляя сообщения @KoiName в pool_chat, а не через жёсткое последовательное назначение
  3. Koi сотрудничают автономно

    • Koi сообщают о прогрессе, запрашивают ревью, передают работу и сообщают о блокерах внутри pool_chat
    • @mention — это сообщение, а не жёсткая команда: упомянутый Koi сам решает, реагировать ли немедленно, продолжать текущую работу или попросить Pisci скоординировать
    • @all позволяет транслировать сообщение всему пулу

Похожие скиллы