new-qwen/README.md

92 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# new-qwen
Клиент-серверная замена локального агента `qwen-code`.
- `serv` отвечает за OAuth, сессии, работу с Qwen LLM и вызов инструментов.
- `bot` отвечает за Telegram и пересылку сообщений на сервер.
Проект написан на Python stdlib, чтобы не зависеть от Node/npm в текущем окружении.
## Архитектура
```text
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 списка и просмотра сессий
## Ограничения текущей реализации
- это упрощённая серверная архитектура, а не побайтный порт всего `qwen-code`
- пока нет MCP, skill system, subagents и rich-streaming UI
- Telegram-бот работает через long polling
## Переменные окружения
Сервер:
```bash
cp serv/.env.example serv/.env
```
Бот:
```bash
cp bot/.env.example bot/.env
```
## Запуск
Сервер:
```bash
python3 serv/app.py
```
Бот:
```bash
python3 bot/app.py
```
## Авторизация Qwen OAuth
1. Отправить боту `/auth`
2. Открыть ссылку подтверждения
3. После завершения авторизации писать обычные сообщения боту
Либо можно вызвать API сервера напрямую:
```bash
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`