81 lines
2.0 KiB
Markdown
81 lines
2.0 KiB
Markdown
# 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`, `read_file`, `write_file`, `exec_command`
|
||
- Telegram polling без внешних библиотек
|
||
- JSON-хранилище сессий
|
||
|
||
## Ограничения текущей реализации
|
||
|
||
- это упрощённая серверная архитектура, а не побайтный порт всего `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
|
||
```
|
||
|