82 lines
8.2 KiB
Markdown
82 lines
8.2 KiB
Markdown
# 📋 История изменений (CHANGELOG)
|
||
|
||
Все ключевые изменения архитектуры, инструментов и модулей проекта SCUD Orion AI фиксируются в данном файле[cite: 6].
|
||
|
||
---
|
||
|
||
## [2026-08-19] — Инлайн-редактор задач, интеллектуальный ContextManager и стабилизация Function Calling
|
||
|
||
### ✨ Добавлено
|
||
* **Инлайн-редактирование задач (`task_widget.js` / `tasks.py`)**:
|
||
- Добавлена кнопка редактирования (`✏️`) на каждой карточке задачи.
|
||
- Карточка трансформируется в инлайн-форму с тремя полями: текст задачи, HTML5-пикер календаря планируемого срока и выпадающий список важности (`LOW`, `MEDIUM`, `HIGH`, `CRITICAL`).
|
||
- Добавлен REST API эндпоинт `PATCH /api/v1/tasks/{task_id}` с поддержкой комплексного обновления полей в SQLite.
|
||
- В карточки выведено отображение даты создания задачи.
|
||
* **Интеллектуальный ContextManager (`context_manager.py`)**:
|
||
- Служебные запросы и карточки инструментов сохраняются синхронными парами (`is_ephemeral = 1`) и атомарно удаляются при завершении операций.
|
||
- Свободные диалоги оператора (включая темы Topic Drift) сохраняются в постоянную историю (`is_ephemeral = 0`) и не стираются при закрытии сессий промпта/задач.
|
||
* **Поддержка Y-снапшотов (`db_snapshots.py`)**:
|
||
- Исправлен SQL-запрос `db_get_snapshots` для точного извлечения ночных и фоновых срезов с префиксом `Y` (например, `Y20260817-003`).
|
||
|
||
### 🔧 Изменено
|
||
* **`modules/web_api/llm/agent.py`**:
|
||
- Полностью удалены эвристические текстовые фильтры и принудительные сортировки инструментов.
|
||
- Настроен нативный возврат и исполнение инструментов без зацикливания модели.
|
||
- Устранена ошибка `UnboundLocalError` при вызове справочных инструментов.
|
||
* **`modules/web_api/llm/schemas.py`**:
|
||
- Очищены описания инструментов от агрессивных директив и капса, стабилизирована селективность Function Calling для Qwen 2.5.
|
||
* **`modules/web_api/llm/core/ollama_client.py`**:
|
||
- Оптимизированы параметры генерации для Function Calling (`repeat_penalty: 1.0`, `presence_penalty: 0.0`, `temperature: 0.0`), что исключило спам несколькими вызовами инструментов на один запрос.
|
||
* **`modules/web_api/static/js/chat/task_widget.js`**:
|
||
- Фильтр по умолчанию переведен на вкладку **«В работе»** (`IN_PROGRESS`).
|
||
|
||
---
|
||
|
||
## [2026-08-18] — Двухфазный жизненный цикл сессий, двусторонний Diff и Topic Drift Guard
|
||
|
||
### ✨ Добавлено
|
||
* **Двусторонний клиентский Diff (`core.js`)**: Реализован алгоритм сравнения черновика с baseline-промптом. Удаленные строки остаются на экране с красным зачеркиванием `[УДАЛЕНИЕ]`, а добавленные/измененные строки выделяются красной рамкой с авто-отступами.
|
||
* **Topic Drift Guard (`agent.py`)**: Внедрен двухуровневый контроль смены темы:
|
||
- Мгновенный сброс стейта и зачистка эфемерных сообщений при вызове сторонних инструментов (задачи, снапшоты, база).
|
||
- Мягкий счетчик отвлечений (`idle_turns` = 3) в свободном диалоге с выводом напоминания и кнопок из `tool_action_registry`.
|
||
* **Команда `context purge` в CLI (`db_cli.py`)**: Добавлен флаг `--all` для полной очистки таблицы `chat_messages` и сброса стейтов сессий.
|
||
|
||
### 🔧 Изменено
|
||
* **`modules/web_api/llm/agent.py`**:
|
||
- Прямой просмотр промпта (`db_get_system_prompt`) переведен в прозрачный режим без блокировки строки ввода и без лишних кнопок.
|
||
- В инструмент `db_prompt_node_edit` добавлена передача исходного `baseline_prompt` для точного сопоставления правок в UI.
|
||
* **`modules/web_api/llm/core/fast_path.py`**: Оптимизирована зачистка эфемерных сообщений при кликах на кнопки фазы follow-up.
|
||
|
||
---
|
||
|
||
## [2026-08-17] — Внедрение CLI-инспекции контекста и переход на нативный Function Calling
|
||
|
||
### ✨ Добавлено
|
||
* **`scripts/db_cli.py`**: Добавлена команда `context` для инспекции истории сообщений `chat_messages` по сессиям с визуальным отображением флагов `[ЭФЕМЕРНОЕ]`[cite: 6].
|
||
* **`ROADMAP.md`**: Сформирована актуальная дорожная карта с планом отказа от регулярных выражений в пользу нативного Function Calling[cite: 6].
|
||
|
||
### 🔧 Изменено
|
||
* **`modules/web_api/llm/db_tools.py`**: Удалены устаревшие неиспользуемые функции и заглушки счетчиков простоя[cite: 6].
|
||
* **`modules/web_api/static/js/chat/core.js`**: Внедрена поддержка вызова инлайн-редактора черновика промпта прямо из окна диалога[cite: 6].
|
||
|
||
---
|
||
|
||
## [2026-08-15] — Реляционная архитектура системного промпта
|
||
|
||
### ✨ Добавлено
|
||
* **`system_prompt_nodes`**: Создана таблица реляционных узлов промпта с индексацией по разделам и пунктам (`section_id`, `item_id`)[cite: 6].
|
||
* **`db_prompt_node_edit`**: Добавлен инструмент точечного добавления, изменения и удаления пунктов системного промпта[cite: 6].
|
||
* **Инлайн-редактор**: Добавлен визуальный diff-просмотр изменений с подсветкой и кнопкой `[✏️ Редактировать]`[cite: 6].
|
||
|
||
### 🔧 Изменено
|
||
* **`modules/web_api/llm/agent.py`**: Генерация активного системного промпта переведена на динамическую сборку из реляционных узлов SQLite[cite: 6].
|
||
* **`modules/web_api/llm/core/fast_path.py`**: Обработка кнопок «Подтвердить» и «Отменить» переведена на атомарную запись узлов в базу данных[cite: 6].
|
||
|
||
---
|
||
|
||
## [2026-08-10] — Механизм эфемерных сообщений и очистки диалога
|
||
|
||
### ✨ Добавлено
|
||
* **Эфемерные сообщения (`is_ephemeral`)**: Маркировка временных сервисных ответов и черновиков[cite: 6].
|
||
* **`db_purge_ephemeral_messages`**: Механизм физической зачистки временных записей из SQLite при завершении операций[cite: 6].
|
||
* **Интерактивные виджеты**: Поддержка карточек задач (`TASK_INTERACTIVE_CARD`) с кнопками быстрого действия[cite: 6]. |