325 lines
5.5 KiB
Markdown
325 lines
5.5 KiB
Markdown
# Интерфейс работы с пользователем
|
|
|
|
## Цель интерфейса
|
|
|
|
Интерфейс должен быть не просто чатом.
|
|
|
|
Он должен позволять пользователю:
|
|
|
|
- поставить задачу;
|
|
- увидеть, как система поняла задачу;
|
|
- увидеть план/граф выполнения;
|
|
- выбрать режим доступа;
|
|
- подключить local worker;
|
|
- подтвердить действия;
|
|
- наблюдать прогресс;
|
|
- посмотреть логи;
|
|
- открыть артефакты;
|
|
- продолжить задачу после ошибки;
|
|
- повторить задачу с другой моделью.
|
|
|
|
## Основные экраны
|
|
|
|
### 1. Chat / Task Console
|
|
|
|
Главный экран.
|
|
|
|
Слева:
|
|
|
|
- список диалогов;
|
|
- проекты;
|
|
- активные задачи;
|
|
- подключенные workers.
|
|
|
|
Центр:
|
|
|
|
- чат;
|
|
- сообщения пользователя;
|
|
- ответы assistant;
|
|
- карточки планов;
|
|
- карточки подтверждений;
|
|
- статусы выполнения.
|
|
|
|
Справа:
|
|
|
|
- execution graph;
|
|
- используемые tools;
|
|
- выбранные модели;
|
|
- стоимость;
|
|
- логи;
|
|
- артефакты.
|
|
|
|
## 2. Project Settings
|
|
|
|
Настройки проекта:
|
|
|
|
```text
|
|
Project name
|
|
Default model slots
|
|
Available MCP servers
|
|
Available local workers
|
|
Policy modes
|
|
Cost limits
|
|
Log level
|
|
Storage paths
|
|
```
|
|
|
|
## 3. Model Settings
|
|
|
|
Пользователь может настроить:
|
|
|
|
```text
|
|
weak model
|
|
strong model
|
|
vision model
|
|
embedding model
|
|
```
|
|
|
|
Пример:
|
|
|
|
```text
|
|
weak: local/qwen-coder-7b
|
|
strong: local/qwen-coder-32b
|
|
vision: external/gpt-vision
|
|
```
|
|
|
|
Или полностью локально:
|
|
|
|
```text
|
|
weak: local/qwen-coder-7b
|
|
strong: local/qwen-coder-32b
|
|
vision: local/qwen-vl
|
|
```
|
|
|
|
Или без strong:
|
|
|
|
```text
|
|
weak: local/model
|
|
strong: disabled
|
|
vision: disabled
|
|
```
|
|
|
|
## 4. Access Modes
|
|
|
|
Важно: это не запреты в коде, а выбор пользователя.
|
|
|
|
Для каждого класса действий:
|
|
|
|
```text
|
|
models.external
|
|
mcp.remote
|
|
filesystem
|
|
shell
|
|
sql
|
|
1c
|
|
browser
|
|
desktop
|
|
network
|
|
cost
|
|
```
|
|
|
|
режим:
|
|
|
|
```text
|
|
full_auto
|
|
confirm
|
|
manual
|
|
disabled
|
|
```
|
|
|
|
Пример:
|
|
|
|
```text
|
|
filesystem = confirm
|
|
shell = confirm
|
|
sql = full_auto
|
|
1c = confirm
|
|
external_models = manual
|
|
desktop = disabled
|
|
```
|
|
|
|
## 5. Local Worker Screen
|
|
|
|
Показывает:
|
|
|
|
```text
|
|
Worker name
|
|
Machine name
|
|
OS
|
|
Status: online/offline
|
|
Capabilities
|
|
Allowed paths
|
|
Available commands
|
|
Last heartbeat
|
|
Current task
|
|
Version
|
|
```
|
|
|
|
Кнопки:
|
|
|
|
```text
|
|
Connect worker
|
|
Disconnect
|
|
Edit capabilities
|
|
View logs
|
|
Run diagnostic
|
|
```
|
|
|
|
## 6. Task Plan Card
|
|
|
|
Когда пользователь отправляет сложную задачу, система показывает:
|
|
|
|
```text
|
|
Я понял задачу так:
|
|
- найти файл
|
|
- прочитать код
|
|
- проверить запрос
|
|
- предложить исправление
|
|
- применить patch
|
|
- запустить проверку
|
|
```
|
|
|
|
Кнопки:
|
|
|
|
```text
|
|
Run
|
|
Edit plan
|
|
Run step by step
|
|
Use strong model
|
|
Use local only
|
|
```
|
|
|
|
## 7. Confirmation Card
|
|
|
|
Если нужно подтверждение:
|
|
|
|
```text
|
|
Система хочет выполнить действие:
|
|
|
|
Tool: file.write
|
|
Path: D:/Projects/1C/module.bsl
|
|
Risk: write
|
|
|
|
Preview:
|
|
- будет изменено 12 строк
|
|
- будет создан backup
|
|
```
|
|
|
|
Кнопки:
|
|
|
|
```text
|
|
Approve once
|
|
Approve for this task
|
|
Approve always for this project
|
|
Reject
|
|
Edit policy
|
|
```
|
|
|
|
## 8. Progress View
|
|
|
|
Показывает выполнение:
|
|
|
|
```text
|
|
[done] analyze request
|
|
[done] build plan
|
|
[running] search files
|
|
[pending] read file
|
|
[pending] apply patch
|
|
[pending] validate
|
|
```
|
|
|
|
Для каждого шага:
|
|
|
|
```text
|
|
input
|
|
output
|
|
model used
|
|
tool used
|
|
duration
|
|
logs
|
|
errors
|
|
artifacts
|
|
```
|
|
|
|
## 9. Result View
|
|
|
|
Итог должен быть не только текстом.
|
|
|
|
Типы результата:
|
|
|
|
```text
|
|
chat_answer
|
|
file_created
|
|
file_modified
|
|
patch_generated
|
|
sql_executed
|
|
report_created
|
|
task_failed
|
|
confirmation_required
|
|
manual_action_required
|
|
```
|
|
|
|
Пример:
|
|
|
|
```text
|
|
Задача выполнена.
|
|
Изменен файл:
|
|
D:/Projects/1C/CommonModule/Exchange.bsl
|
|
|
|
Создан backup:
|
|
D:/Projects/1C/.backups/Exchange_2026-07-03.bsl
|
|
|
|
Проверка:
|
|
validate_sql: success
|
|
syntax_check: success
|
|
```
|
|
|
|
## 10. Error Recovery
|
|
|
|
Если задача упала:
|
|
|
|
```text
|
|
Ошибка на шаге: validate_sql
|
|
Причина: поле Номенклатура.Артикул не найдено
|
|
|
|
Варианты:
|
|
- исправить автоматически
|
|
- запустить strong model
|
|
- показать подробный лог
|
|
- изменить запрос вручную
|
|
- остановить задачу
|
|
```
|
|
|
|
## Интерфейс сообщения
|
|
|
|
Каждое сообщение assistant может содержать:
|
|
|
|
```json
|
|
{
|
|
"type": "assistant_message",
|
|
"text": "...",
|
|
"task_id": "...",
|
|
"cards": [
|
|
"plan",
|
|
"confirmation",
|
|
"progress",
|
|
"artifact",
|
|
"error"
|
|
]
|
|
}
|
|
```
|
|
|
|
## Принцип
|
|
|
|
Пользователь должен всегда понимать:
|
|
|
|
```text
|
|
что система собирается делать
|
|
что она уже сделала
|
|
какие данные использовала
|
|
какая модель была вызвана
|
|
какой tool был вызван
|
|
что изменилось в системе
|
|
как откатить действие
|
|
```
|