Go to file
mirivlad f9b9d7d242 Automate OAuth polling in Telegram bot 2026-04-07 16:59:10 +08:00
bot Automate OAuth polling in Telegram bot 2026-04-07 16:59:10 +08:00
serv Expand server tools and bot controls 2026-04-07 16:49:33 +08:00
.gitignore Add client-server Qwen OAuth bot skeleton 2026-04-07 16:38:21 +08:00
README.md Automate OAuth polling in Telegram bot 2026-04-07 16:59:10 +08:00

README.md

new-qwen

Клиент-серверная замена локального агента qwen-code.

  • serv отвечает за OAuth, сессии, работу с Qwen LLM и вызов инструментов.
  • bot отвечает за Telegram и пересылку сообщений на сервер.

Проект написан на Python stdlib, чтобы не зависеть от Node/npm в текущем окружении.

Архитектура

Telegram User
   |
   v
bot/app.py
   |
   v
serv/app.py
   |
   v
Qwen OAuth + OpenAI-compatible endpoint

Что уже реализовано

  • Qwen OAuth Device Flow, совместимый с qwen-code
  • хранение токенов в ~/.qwen/oauth_creds.json
  • HTTP API сервера
  • агентный цикл с tool calling
  • инструменты: list_files, glob_search, grep_text, stat_path, read_file, write_file, make_directory, exec_command
  • Telegram polling без внешних библиотек
  • JSON-хранилище сессий
  • API списка и просмотра сессий
  • автоматический polling OAuth flow в боте
  • очередь сообщений, пришедших до завершения OAuth

Ограничения текущей реализации

  • это упрощённая серверная архитектура, а не побайтный порт всего qwen-code
  • пока нет MCP, skill system, subagents и rich-streaming UI
  • Telegram-бот работает через long polling

Переменные окружения

Сервер:

cp serv/.env.example serv/.env

Бот:

cp bot/.env.example bot/.env

Запуск

Сервер:

python3 serv/app.py

Бот:

python3 bot/app.py

Авторизация Qwen OAuth

  1. Отправить боту /auth
  2. Открыть ссылку подтверждения
  3. Бот сам дождётся завершения OAuth и продолжит работу

Если пользователь отправит обычное сообщение до завершения OAuth, бот поставит его в очередь и автоматически отправит на сервер после успешной авторизации.

Либо можно вызвать API сервера напрямую:

curl -X POST http://127.0.0.1:8080/api/v1/auth/device/start

API

  • GET /health
  • GET /api/v1/auth/status
  • POST /api/v1/auth/device/start
  • POST /api/v1/auth/device/poll
  • GET /api/v1/sessions
  • POST /api/v1/session/get
  • POST /api/v1/session/clear
  • POST /api/v1/chat