Я для себя создал sh-скрипт, который формирует файл в формате Markdown с текстом стартового запроса к ИИ. Дальше просто вносим небольшие правки в md-файле и передаем текст из этого файла вашему любимому чат-боту с нейросетью.
Я для себя выбрал 2 наиболее часто используемых варианта:
- DeepSeek - обожаю его, в первую очередь, за способность обрабатывать огромные объемы данных. Чат периодически зависает (в какие-то часы пиковой нагрузки) и приходится ждать свободной возможности получить ответ. Также чат иногда путается в собственных ответах, так что бездумное копирование - точно не тот вариант
- BotHub - платный доступ из РФ ко всем популярным сетям ИИ. Данный чат использую, когда бесплатный китайский "завис", или когда нужна другая, более мощная модель ИИ (например, некоторые задачи в создании веб-приложений ChatGPT последней версии делает на много качественнее).
Итак, для формирования md-файла создал файл "collect-chat-files.sh" в корневой папке всех моих проектов. Код скрипта:
#!/bin/bash
# Скрипт для сбора файлов чата по конфигурационному файлу с поддержкой многострочных комментариев
if [ $# -eq 0 ]; then
echo "Использование: $0 "
echo "Пример: $0 /path/to/chat_files.list"
exit 1
fi
CONFIG_FILE="$1"
if [ ! -f "$CONFIG_FILE" ]; then
echo "Ошибка: Конфигурационный файл не найден: $CONFIG_FILE"
exit 1
fi
# Определяем выходной файл (рядом с конфигом)
OUTPUT_DIR=$(dirname "$CONFIG_FILE")
OUTPUT_FILE="$OUTPUT_DIR/chat_files_report.md"
# УДАЛЯЕМ существующий файл если есть и СОЗДАЕМ новый
rm -f "$OUTPUT_FILE"
touch "$OUTPUT_FILE"
echo "# Ты — эксперт по 1С-Битрикс (версии D7 и новее). Специализация:" > "$OUTPUT_FILE"
echo " - Разработка модулей и компонентов" >> "$OUTPUT_FILE"
echo " - Интеграция с CRM/ERP" >> "$OUTPUT_FILE"
echo " - Оптимизация производительности сайтов на Битрикс" >> "$OUTPUT_FILE"
echo "# Формат ответов:" >> "$OUTPUT_FILE"
echo " 1. Четкие пошаговые инструкции" >> "$OUTPUT_FILE"
echo " 2. Примеры кода с учетом D7 API" >> "$OUTPUT_FILE"
echo " 3. Ссылки на официальную документацию" >> "$OUTPUT_FILE"
echo " 4. При внесении изменений в код говори четко, что и откуда нужно удалить, что, и куда добавить. Обязательно указывай, если какой-то код устарел и его нужно убрать перед добавлением нового" >> "$OUTPUT_FILE"
echo "# Не предлагай:" >> "$OUTPUT_FILE"
echo " - Устаревшие решения (например, на старом ядре)" >> "$OUTPUT_FILE"
echo " - Неофициальные хаки, нарушающие лицензию" >> "$OUTPUT_FILE"
echo " - Использовать файл "component.php" при создании компонентов" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "Прежде чем дать мне ответ, оцени его неопределённость. Если она больше, чем 0.1 — задавай мне уточняющие вопросы до тех пор, пока неопределённость будет 0.1 или меньше" >> "$OUTPUT_FILE"
echo "Не предлагай альтернативы решения, предлагай единственное верное, наиболее оптимизированное решение!" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "# Вводные данные: " >> "$OUTPUT_FILE"
# Функция для добавления файла в отчет
add_file() {
local file_path=$1
local title=$2
local lang=$(get_language "$file_path")
if [ -f "$file_path" ]; then
echo "## $title" >> "$OUTPUT_FILE"
echo "**Файл:** \`$file_path\`" >> "$OUTPUT_FILE"
echo "**Язык:** $lang" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "\`\`\`$lang" >> "$OUTPUT_FILE"
cat "$file_path" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "\`\`\`" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
else
echo "## $title" >> "$OUTPUT_FILE"
echo "**Файл не найден:** \`$file_path\`" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
fi
}
# Функция для определения языка файла
get_language() {
local ext="${1##*.}"
case "$ext" in
js) echo "javascript" ;;
php) echo "php" ;;
scss) echo "scss" ;;
css) echo "css" ;;
vue) echo "vue" ;;
json) echo "json" ;;
xml) echo "xml" ;;
html) echo "html" ;;
*) echo "plaintext" ;;
esac
}
# Читаем конфигурационный файл и извлекаем многострочные комментарии
echo "Чтение конфигурационного файла: $CONFIG_FILE"
echo "Создание отчета: $OUTPUT_FILE"
# Переменные для обработки комментариев
in_comment_block=false
comment_content=""
# Первый проход: извлекаем все комментарии до первого файла
while IFS= read -r line; do
# Начало/конец блока комментариев
if [[ "$line" =~ ^# && ! "$line" =~ \| ]]; then
if [ "$in_comment_block" = false ]; then
in_comment_block=true
comment_content=""
fi
# Убираем решетку и добавляем в содержание
clean_line=$(echo "$line" | sed 's/^# //' | sed 's/^#//')
comment_content="$comment_content$clean_line"$'\n'
elif [ "$in_comment_block" = true ] && [[ ! "$line" =~ ^# ]] && [[ ! -z "$line" ]]; then
# Конец блока комментариев, встречаем первый не-комментарий
in_comment_block=false
echo "$comment_content" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
elif [[ "$line" =~ \| ]]; then
# Встретили строку с файлом, прерываем комментарии если были
if [ "$in_comment_block" = true ]; then
in_comment_block=false
echo "$comment_content" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
fi
break
fi
done < "$CONFIG_FILE"
# Второй проход: обрабатываем файлы
while IFS= read -r line; do
# Пропускаем чистые комментарии (только решетки без |)
if [[ "$line" =~ ^# ]] && [[ ! "$line" =~ \| ]]; then
continue
fi
# Пропускаем пустые строки
if [[ -z "$line" ]]; then
continue
fi
# Разбираем строку: файл|заголовок
IFS='|' read -ra parts <<< "$line"
if [ ${#parts[@]} -ge 2 ]; then
file_path=$(echo "${parts[0]}" | xargs) # trim whitespace
title=$(echo "${parts[1]}" | xargs) # trim whitespace
echo "Добавляем файл: $file_path"
add_file "$file_path" "$title"
fi
done < "$CONFIG_FILE"
echo "✅ Отчет создан: $OUTPUT_FILE"
Файл делаем исполняемым:
chmod +x collect-chat-files.sh
Далее, создаем файл с инструкциями:
touch data.list
Пишем в него инструкцию: сначала в комментариях - то, что будет стартовым текстом для сообщения боту, далее - список путей к файлам, которые нужно обработать и заголовок-комментарий к каждому файлу через символ "|". Пример файла:
# У меня есть компонент новостей для моего сайта на 1С-Битрикс. # Файлы компонента ~/Projects/ProjectName/local/templates/template_name/components/bitrix/news.list/template.php | Шаблон компонента ~/Projects/ProjectName/local/templates/template_name/components/bitrix/news.list/result_modifier.php | Файл модификации данных ~/Projects/ProjectName/local/templates/template_name/components/bitrix/news.list/script.js | Файл с JS-скриптами к компоненту ~/Projects/ProjectName/local/templates/template_name/components/bitrix/news.list/style.scss | Файл стилей компонента в формате scss
И запускаем файл на исполнение:
./collect-chat-files.sh ./data.list
В результате, рядом с файлом с заготовкой комментария появится файл "chat_files_report.md", текст которого можно дополнить непосредственно вопросом и передать чат-боту искусственного интеллекта. Код из всех переданных файлов в полном объеме будет тут же добавлен в файл, оформленный в виде кода.
P.S. Скрипт написан для MacOs, т.к. это основная моя рабочая операционная система уже много лет, но также подойдет и для любой другой linux-системы. Как адаптировать это для Windows - не подскажу, т.к. данной операционкой не пользуюсь еще дольше, чем пользуюсь ПО от Apple.
P.P.S Ну и так как моя основная деятельность по прежнему связана с сайтами на базе 1С-Битрикс - в заготовке зашит базовый промт, касающийся именно битрикса, но его также легко можете изменить под нужный вам вариант :)
