From 4e1265e674b23fc9e6c0cf5be39c8736ddf9388f Mon Sep 17 00:00:00 2001 From: egor6240 Date: Mon, 21 Jul 2025 14:12:11 +0300 Subject: [PATCH] rules --- .cursor/rules/hallucination_checker.mdc | 21 ++++ README.md | 1 + hallucinate_alert_role_dev.md | 148 ++++++++++++++++++++++++ hallucinate_alert_role_use_case.md | 96 +++++++++++++++ spec.md | 75 ++++++------ 5 files changed, 308 insertions(+), 33 deletions(-) create mode 100644 .cursor/rules/hallucination_checker.mdc create mode 100644 hallucinate_alert_role_dev.md create mode 100644 hallucinate_alert_role_use_case.md diff --git a/.cursor/rules/hallucination_checker.mdc b/.cursor/rules/hallucination_checker.mdc new file mode 100644 index 0000000..8590b54 --- /dev/null +++ b/.cursor/rules/hallucination_checker.mdc @@ -0,0 +1,21 @@ +--- +description: Agent for detecting hallucinations in AI-generated content. +agentRequested: true +--- + +- You are an assistant tasked with detecting potential hallucinations in AI-generated content (code and text). +- Hallucinations may include: + - Inaccurate, fabricated, or unverified information not supported by source code, documentation, or authoritative sources. + - Inconsistencies with earlier prompts, requirements, or user instructions. + - Unsupported assumptions or interpretations without explicit evidence. +- Analyze both code and text in the context of the project. +- You may choose: + - A step-by-step review of each interaction from `prompt_logs`. + - Or a comparison of final results (`spec.md`, `README.md`, or other deliverables) against expectations and requirements. +- For any questionable or potentially hallucinated segment, highlight it and provide clear justification (e.g., missing source, contradiction, lack of evidence). +- When a potential hallucination is detected: + - Clearly notify the user in your output. + - Suggest ways to verify or correct the information (e.g., reference code, documentation, or request clarification). +- Prefer quoting original data or sources over paraphrasing or interpreting without references. +- Output your analysis in markdown with clear sections and justifications for each flagged segment. + diff --git a/README.md b/README.md index 505fcef..d54a5f2 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ - Только OAuth GitHub - Защита от XSS/CSRF - Rails best practices +- Роль `hallucination_checker`: автоматически проверяет код и документацию на соответствие требованиям, выявляя неточности или противоречия. --- diff --git a/hallucinate_alert_role_dev.md b/hallucinate_alert_role_dev.md new file mode 100644 index 0000000..f5ebad1 --- /dev/null +++ b/hallucinate_alert_role_dev.md @@ -0,0 +1,148 @@ +# Правила для обнаружения галлюцинаций ИИ +_Exported on 21.07.2025 at 11:43:49 GMT+3 from Cursor (1.2.4)_ + +--- + +**User** + +Помоги написать правила .cursor/rules агента, который обнаруживает потенциальные галлюцинации в реакциях искусственного интеллекта + +--- + +**Cursor** + +План действий: +1. Определить цель и область применения правил — агент должен выявлять потенциальные галлюцинации (недостоверные, вымышленные или не подтверждённые факты) в ответах ИИ. +2. Сформулировать конкретные правила для .cursor/rules, которые помогут агенту обнаруживать такие случаи. +3. Предложить структуру файла и примеры формулировок. + +Предложенные изменения: + +Создайте файл `.cursor/rules/hallucination_detection.mdc` со следующим содержанием: + +```md +--- +alwaysApply: true +--- + +- Агент должен анализировать ответы ИИ на предмет наличия недостоверных, вымышленных или не подтверждённых фактов (галлюцинаций). +- Если в ответе содержится информация, не подтверждённая исходным кодом, документацией или авторитетными источниками, агент должен пометить её как потенциальную галлюцинацию. +- Агент обязан запрашивать подтверждение или дополнительные источники для любой информации, вызывающей сомнения. +- Агент не должен делать предположения без явной опоры на факты из кода, документации или проверенных данных. +- При обнаружении потенциальной галлюцинации агент должен явно уведомлять пользователя и предлагать способы проверки информации. +- Агент должен отдавать предпочтение цитированию исходных данных, а не пересказу или интерпретации без ссылок. +``` + +Если нужно, могу адаптировать формулировки или добавить дополнительные пункты. Скажите, если требуется интеграция с другими правилами или уточнения. + +```plaintext +--- +alwaysApply: true +--- + +- Агент должен анализировать ответы ИИ на предмет наличия недостоверных, вымышленных или не подтверждённых фактов (галлюцинаций). +- Если в ответе содержится информация, не подтверждённая исходным кодом, документацией или авторитетными источниками, агент должен пометить её как потенциальную галлюцинацию. +- Агент обязан запрашивать подтверждение или дополнительные источники для любой информации, вызывающей сомнения. +- Агент не должен делать предположения без явной опоры на факты из кода, документации или проверенных данных. +- При обнаружении потенциальной галлюцинации агент должен явно уведомлять пользователя и предлагать способы проверки информации. +- Агент должен отдавать предпочтение цитированию исходных данных, а не пересказу или интерпретации без ссылок. +``` + +--- + +**User** + +Да, весь текст в файле напиши на английском + +--- + +**Cursor** + +План: +1. Перевести предложенные правила на английский язык. +2. Сохранить структуру и формулировки, сделать их максимально ясными и однозначными. +3. Подготовить финальный вариант для вставки в файл `.cursor/rules/hallucination_detection.mdc`. + +Изменения: + +```md +--- +alwaysApply: true +--- + +- The agent must analyze AI responses for the presence of inaccurate, fabricated, or unverified information (hallucinations). +- If a response contains information not supported by source code, documentation, or authoritative sources, the agent must flag it as a potential hallucination. +- The agent is required to request confirmation or additional sources for any information that appears questionable. +- The agent must not make assumptions without explicit support from code, documentation, or verified data. +- When a potential hallucination is detected, the agent must clearly notify the user and suggest ways to verify the information. +- The agent should prefer quoting original data over paraphrasing or interpreting without references. +``` + +Если нужно добавить или изменить пункты — уточните детали. + +```plaintext +--- +alwaysApply: true +--- + +- The agent must analyze AI responses for the presence of inaccurate, fabricated, or unverified information (hallucinations). +- If a response contains information not supported by source code, documentation, or authoritative sources, the agent must flag it as a potential hallucination. +- The agent is required to request confirmation or additional sources for any information that appears questionable. +- The agent must not make assumptions without explicit support from code, documentation, or verified data. +- When a potential hallucination is detected, the agent must clearly notify the user and suggest ways to verify the information. +- The agent should prefer quoting original data over paraphrasing or interpreting without references. +``` + +--- + +**User** + +Теперь сравни свою версию с этой: --- +description: Agent that detects potential hallucinations in AI responses +agentRequested: true +--- +- You are an assistant tasked with detecting potential hallucinations in AI-generated content. +- Hallucinations may include: +- Inconsistencies with earlier prompts or requirements. +- ... +- Analyze both code and text. +- You may choose: +- A step-by-step review of each interaction from `prompt_logs` +- Or a comparison of final results (`spec.md`, `README.md`) against expectations. +- Highlight any questionable segments with justification. +- Output your analysis in markdown with clear sections. и внеси улучшения. Результат сохрани в .cursor/rules/hallucination_checker.mdc + +--- + +**Cursor** + +```markdown +- You are an assistant tasked with detecting potential hallucinations in AI-generated content (code and text). +- Hallucinations may include: + - Inaccurate, fabricated, or unverified information not supported by source code, documentation, or authoritative sources. + - Inconsistencies with earlier prompts, requirements, or user instructions. + - Unsupported assumptions or interpretations without explicit evidence. +- Analyze both code and text in the context of the project. +- You may choose: + - A step-by-step review of each interaction from `prompt_logs`. + - Or a comparison of final results (`spec.md`, `README.md`, or other deliverables) against expectations and requirements. +- For any questionable or potentially hallucinated segment, highlight it and provide clear justification (e.g., missing source, contradiction, lack of evidence). +- When a potential hallucination is detected: + - Clearly notify the user in your output. + - Suggest ways to verify or correct the information (e.g., reference code, documentation, or request clarification). +- Prefer quoting original data or sources over paraphrasing or interpreting without references. +- Output your analysis in markdown with clear sections and justifications for each flagged segment. + +``` + +Сравнил обе версии и объединил их сильные стороны: + +- Добавил структурированное описание и критерии галлюцинаций (неточность, несоответствие требованиям, неподтверждённые предположения). +- Уточнил, что анализу подлежат и код, и текст. +- Оставил выбор между пошаговым анализом логов и сравнением итоговых файлов. +- Добавил требование выделять сомнительные места с обоснованием. +- Ввел рекомендации по уведомлению пользователя и способам проверки. +- Уточнил формат вывода (markdown, чёткие секции, обоснования). + +Файл сохранён как `.cursor/rules/hallucination_checker.mdc`. Если нужны доработки — уточните детали. + diff --git a/hallucinate_alert_role_use_case.md b/hallucinate_alert_role_use_case.md new file mode 100644 index 0000000..f16d9e5 --- /dev/null +++ b/hallucinate_alert_role_use_case.md @@ -0,0 +1,96 @@ +# Discussing hallucination checker functionality +_Exported on 21.07.2025 at 14:05:45 GMT+3 from Cursor (1.2.4)_ + +--- + +**User** + +@hallucination_checker.mdc + +--- + +**Cursor** + +План действий: + +1. Проанализировать файл `.cursor/rules/hallucination_checker.mdc` для понимания правил проверки галлюцинаций +2. Проверить наличие файлов с логами (`prompt_logs/`) и спецификациями (`spec.md`) +3. Сравнить содержимое этих файлов с ожиданиями и требованиями +4. Выявить потенциальные галлюцинации, если они есть + +Следующий шаг - прочитать файлы логов и спецификаций для анализа. + +--- + +**User** + +Да + +--- + +**Cursor** + +Анализ на предмет галлюцинаций: + +1. **Сравнение логов и спецификации**: + - В `prompt_logs/brainstorm.md` и `spec.md` требования полностью совпадают, все ответы пользователя корректно перенесены в спецификацию. + - В `webinar_2_logs.md` проверка базовой функциональности приложения подтверждает, что структура проекта соответствует требованиям. + +2. **Проверка на противоречия**: + - Нет расхождений между логами обсуждения и итоговой спецификацией. + - Все технические решения (OAuth, структура БД, API) логично вытекают из требований. + +3. **Проверка реализуемости**: + - Используемые технологии (Rails, Hotwire, PostgreSQL) подходят для описанных задач. + - Структура таблиц и API покрывают все функциональные требования. + +**Вывод**: Галлюцинаций не обнаружено. Спецификация полностью соответствует обсуждению и технически реализуема. + +--- + +**User** + +@hallucination_checker.mdc comparison of final results (`spec.md`, `README.md`, or other deliverables) against expectations and requirements. + +--- + +**Cursor** + +### Анализ на соответствие результатов (`spec.md`, `README.md`) требованиям и ожиданиям + +#### 1. **Сравнение `spec.md` с логами обсуждения (`prompt_logs/brainstorm.md`)** + - **Полнота**: + - Все функциональные и нефункциональные требования из логов перенесены в `spec.md`. + - Добавлены детали, не упомянутые явно в логах (например, структура БД, API), но логично следующие из требований. + - **Точность**: + - Нет противоречий между ответами пользователя и спецификацией. + - Пример: + - **Ожидание**: "Автоматически создаются чаты для всех владельцев приватного репозитория". + - **Реализация**: В `spec.md` описана таблица `chats` с полем `repository_id` и логика создания чатов при входе. + +#### 2. **Проверка `README.md` на соответствие `spec.md`** + - **Ключевые моменты**: + - Описание проекта, технологии, установка, API, безопасность — всё согласуется с `spec.md`. + - **Недочёты**: + - В `README.md` не указано, что чаты хранятся бессрочно (это есть в `spec.md`). + - Нет ссылки на структуру БД в `README.md` (только упоминание, что детали — в `spec.md`). + +#### 3. **Проверка на реализуемость** + - **Технологии**: + - Ruby on Rails, Hotwire, PostgreSQL — подходят для задач. + - **Архитектура**: + - Таблицы БД (`users`, `chats`, `messages`) покрывают все сценарии. + - API-эндпоинты соответствуют требованиям (например, `/api/chats/:id/leave` для выхода из чата). + +#### 4. **Рекомендации** + - **Для `README.md`**: + - Добавить явное упоминание о бессрочном хранении чатов. + - Включить краткую схему БД (хотя бы основные таблицы). + - **Для `spec.md`**: + - Добавить примеры JSON-ответов для API (например, для `GET /api/chats`). + +**Итог**: +Результаты (`spec.md`, `README.md`) соответствуют ожиданиям. Критических галлюцинаций нет, но есть мелкие недочёты в документации, которые легко исправить. + +Если нужно, могу предложить правки для `README.md` или `spec.md`. Уточните! + diff --git a/spec.md b/spec.md index ad1a325..574d92c 100644 --- a/spec.md +++ b/spec.md @@ -10,12 +10,12 @@ ### Аутентификация и пользователи - Вход только через OAuth GitHub. - При входе запрашиваются права на чтение приватных репозиториев. -- В базе сохраняются: - — имя пользователя (GitHub username) - — email - — аватар - — общее количество приватных репозиториев - — общее количество звёзд +- В базе сохраняются: + — имя пользователя (GitHub username) + — email + — аватар + — общее количество приватных репозиториев + — общее количество звёзд — количество звёзд на приватных репозиториях ### Список пользователей @@ -26,27 +26,27 @@ - Личные чаты (1-1) и групповые чаты (до 50 участников). - Групповые чаты создаются автоматически для всех владельцев каждого приватного репозитория. - Пользователь может выйти из группового чата (без автоматического возврата). -- В чате отображаются: - — список участников (ник, аватар) +- В чате отображаются: + — список участников (ник, аватар) — сообщения (аватар, ник, текст, время отправки) -- Сообщения: - — только текстовые, до 400 символов - — история сообщений хранится всегда - — бесконечная прокрутка истории - — стандартное выделение для копирования - — нельзя редактировать или удалять сообщения - — отображается время отправки - — аватарка рядом с каждым сообщением - — индикатор количества непрочитанных сообщений +- Сообщения: + — только текстовые, до 400 символов + — история сообщений хранится всегда + — бесконечная прокрутка истории + — стандартное выделение для копирования + — нельзя редактировать или удалять сообщения + — отображается время отправки + — аватарка рядом с каждым сообщением + — индикатор количества непрочитанных сообщений — только внутренние уведомления (индикатор новых сообщений) - Статус онлайн/офлайн участников отображается. - Сообщения доставляются всем, независимо от статуса онлайн. ### Профили -- Страница профиля содержит: - — имя, email, аватар - — общее количество приватных репозиториев - — общее количество звёзд +- Страница профиля содержит: + — имя, email, аватар + — общее количество приватных репозиториев + — общее количество звёзд — количество звёзд на приватных репозиториях - Переход на профиль по клику на аватар/имя в чате. @@ -191,23 +191,23 @@ - `GET /auth/github/callback` — callback, создание/обновление пользователя ### Пользователь -- `GET /api/users` — список всех пользователей +- `GET /api/users` — список всех пользователей Ответ: [{id, username, avatar_url, online}, ...] -- `GET /api/users/:id` — профиль пользователя +- `GET /api/users/:id` — профиль пользователя Ответ: {id, username, email, avatar_url, private_repos_count, stars_count, private_stars_count} - `GET /api/me` — текущий пользователь ### Чаты -- `GET /api/chats` — список чатов пользователя +- `GET /api/chats` — список чатов пользователя Ответ: [{id, chat_type, repository_id, participants: [{id, username, avatar_url, online}], unread_count, last_message}, ...] -- `GET /api/chats/:id` — детали чата +- `GET /api/chats/:id` — детали чата Ответ: {id, chat_type, participants, messages: [ ... ], repository_id} - `POST /api/chats/:id/leave` — выйти из группового чата ### Сообщения - `GET /api/chats/:chat_id/messages?before=&limit=30` — история сообщений (бесконечная прокрутка) -- `POST /api/chats/:chat_id/messages` - Тело: {content: string} +- `POST /api/chats/:chat_id/messages` + Тело: {content: string} Ответ: {id, user_id, content, created_at} - `POST /api/chats/:chat_id/read` — отметить сообщения как прочитанные @@ -226,11 +226,11 @@ ### Чат - Вверху: название чата, список участников (аватары, онлайн-статус) -- Сообщения: - — слева аватар, справа bubble с текстом, ник, время - — новые сообщения подсвечиваются - — стандартное выделение текста -- Внизу: поле ввода (макс. 400 символов), кнопка отправки +- Сообщения: + — слева аватар, справа bubble с текстом, ник, время + — новые сообщения подсвечиваются + — стандартное выделение текста +- Внизу: поле ввода (макс. 400 символов), кнопка отправки - Кнопка "Выйти из чата" (для групповых чатов, с подтверждением) ### Профиль пользователя @@ -241,4 +241,13 @@ ### Мобильная версия - Меню чатов — выпадающее/выезжающее - Чат — на весь экран, адаптивные элементы -- Кнопка профиля и переключатель темы — в меню \ No newline at end of file +- Кнопка профиля и переключатель темы — в меню + +## 12. Проверка на галлюцинации +Анализ проведён с использованием роли `hallucination_checker`: +- Результаты: + - Критических расхождений между требованиями и реализацией не обнаружено. + - Все технические решения (API, БД) соответствуют обсуждению. +- Рекомендации: + - Дополнить `README.md` деталями о бессрочном хранении чатов. + - Уточнить JSON-примеры для API в `spec.md`. \ No newline at end of file