Files

5.8 KiB

Интерфейс работы с пользователем

Цель интерфейса

Интерфейс должен быть не просто чатом.

Он должен позволять пользователю:

  • поставить задачу;
  • увидеть, как система поняла задачу;
  • увидеть план/граф выполнения;
  • выбрать режим доступа;
  • подключить local worker;
  • подтвердить действия;
  • наблюдать прогресс;
  • посмотреть логи;
  • открыть артефакты;
  • продолжить задачу после ошибки;
  • повторить задачу с другой моделью.

Основные экраны

1. Chat / Task Console

Главный экран.

Слева:

  • список диалогов;
  • проекты;
  • активные задачи;
  • подключенные workers.

Центр:

  • чат;
  • сообщения пользователя;
  • ответы assistant;
  • карточки планов;
  • карточки подтверждений;
  • статусы выполнения.

Справа:

  • execution graph;
  • используемые tools;
  • выбранные модели;
  • стоимость;
  • логи;
  • артефакты.

2. Project Settings

Настройки проекта:

Project name
Default model slots
Available MCP servers
Available local workers
Policy modes
Cost limits
Log level
Storage paths

3. Model Settings

Пользователь может настроить:

weak model
strong model
vision model
embedding model

Пример:

weak: local/qwen-coder-7b
strong: local/qwen-coder-32b
vision: external/gpt-vision

Или полностью локально:

weak: local/qwen-coder-7b
strong: local/qwen-coder-32b
vision: local/qwen-vl

Или без strong:

weak: local/model
strong: disabled
vision: disabled

4. Access Modes

Важно: это не запреты в коде, а выбор пользователя.

Для каждого класса действий:

models.external
mcp.remote
filesystem
shell
sql
1c
browser
desktop
network
cost

режим:

full_auto
confirm
manual
disabled

Пример:

filesystem = confirm
shell = confirm
sql = full_auto
1c = confirm
external_models = manual
desktop = disabled

5. Local Worker Screen

Показывает:

Worker name
Machine name
OS
Status: online/offline
Capabilities
Allowed paths
Available commands
Last heartbeat
Current task
Version

Кнопки:

Connect worker
Disconnect
Edit capabilities
View logs
Run diagnostic

6. Task Plan Card

Когда пользователь отправляет сложную задачу, система показывает:

Я понял задачу так:
- найти файл
- прочитать код
- проверить запрос
- предложить исправление
- применить patch
- запустить проверку

Кнопки:

Run
Edit plan
Run step by step
Use strong model
Use local only

7. Confirmation Card

Если нужно подтверждение:

Система хочет выполнить действие:

Tool: file.write
Path: D:/Projects/1C/module.bsl
Risk: write

Preview:
- будет изменено 12 строк
- будет создан backup

Кнопки:

Approve once
Approve for this task
Approve always for this project
Reject
Edit policy

8. Progress View

Показывает выполнение:

[done] analyze request
[done] build plan
[running] search files
[pending] read file
[pending] apply patch
[pending] validate

Для каждого шага:

input
output
model used
tool used
duration
logs
errors
artifacts

9. Result View

Итог должен быть не только текстом.

Типы результата:

chat_answer
file_created
file_modified
patch_generated
sql_executed
report_created
task_failed
confirmation_required
manual_action_required

Пример:

Задача выполнена.
Изменен файл:
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

Если задача упала:

Ошибка на шаге: validate_sql
Причина: поле Номенклатура.Артикул не найдено

Варианты:
- исправить автоматически
- запустить strong model
- показать подробный лог
- изменить запрос вручную
- остановить задачу

Интерфейс сообщения

Каждое сообщение assistant может содержать:

{
  "type": "assistant_message",
  "text": "...",
  "task_id": "...",
  "cards": [
    "plan",
    "confirmation",
    "progress",
    "artifact",
    "error"
  ]
}

Backend Status

Сейчас backend уже формирует:

  • plan_card
  • progress_card
  • error_card
  • normalized task event DTO with optional card references

Следующие карточки остаются следующими шагами:

  • confirmation_card
  • artifact_card

Принцип

Пользователь должен всегда понимать:

что система собирается делать
что она уже сделала
какие данные использовала
какая модель была вызвана
какой tool был вызван
что изменилось в системе
как откатить действие