1c Assistant

Other

Используй когда пользователь пишет /1c или /1c-help (команды справки по 1С), или задаёт вопросы про 1С ERP, 1С Бухгалтерию, ЗУП, BSL программирование, права и роли пользователей 1С, запросы к регистрам, управляемые формы, конфигуратор, начисление зарплаты, НДФЛ, НДС, проводки, печатные формы. Всегда отвечай только на русском языке.

Install

openclaw skills install 1c-assistant

Скилл: 1C AI Assistant

Отвечает на вопросы по 1С через локальный RAG (Qdrant + bge-m3 + qwen3:14b).

Триггеры

При /1c или /1c-help или "покажи состояние базы 1С" — НЕМЕДЛЕННО выполнить:

bash /home/alexandr/.openclaw/workspace/1c-assistant/1c-help.sh 1360549978

Это всё. Больше ничего не делать, не генерировать текст. Скрипт сам отправит справку в Telegram.

Активировать при ключевых словах:

  • 1С общее: "1с", "1с erp", "1с бухгалтерия", "конфигуратор", "1с предприятие", "1с zup", "1с зуп"
  • Разработка: "bsl", "встроенный язык", "запрос 1с", "схема данных", "регистр", "управляемые формы", "общий модуль"
  • Администрирование: "права 1с", "роли 1с", "пользователи 1с", "рабочие места", "ограничение доступа"
  • Документы/Справочники: "справочник", "документ 1с", "реквизит", "табличная часть"

Определение коллекции по теме

ТемаКоллекция
BSL код, синтаксис, диагностики, оптимизацияkb_1c_code
Права, роли, пользователи, администрированиеkb_1c_admin
Бухгалтерия, налоги, отчётность, счетаkb_1c_buh
ЗУП, кадры, зарплата, отпуска, больничныеkb_1c_zup
Печатные формы, шаблоны, макетыkb_1c_forms
Всё остальное (ERP, НСИ, настройка)kb_1c_erp

Алгоритм выполнения

1. Определить коллекцию из таблицы выше

2. Вызвать RAG Query webhook

QUESTION="<вопрос пользователя>"
COLLECTION="<коллекция из таблицы>"

curl -s -X POST https://n8nwint.ru/webhook/1c-rag-query \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg question "$QUESTION" \
    --arg chat_id "1360549978" \
    --arg collection "$COLLECTION" \
    --arg model "qwen3:14b" \
    '{question: $question, chat_id: $chat_id, collection: $collection, model: $model}'
  )"

Ответ придёт в Telegram (30-60 сек). Сообщить пользователю: "Запрос отправлен, ответ придёт в Telegram."

3. Если нужен синхронный ответ (не через Telegram)

# Прямой запрос через Qdrant + Ollama
QUESTION="<вопрос>"
COLLECTION="<коллекция>"
QDRANT="http://192.168.0.200:6333"
OLLAMA="http://192.168.0.200:11434"
QDRANT_KEY="zkpDII8FaBpzpRke8uWWcOEJDGXxKNsn"

# 1. Получить embedding вопроса
VECTOR=$(curl -s -X POST "$OLLAMA/api/embeddings" \
  -H "Content-Type: application/json" \
  -d "{\"model\": \"bge-m3\", \"prompt\": \"$QUESTION\"}" | jq '.embedding')

# 2. Поиск в Qdrant
CONTEXT=$(curl -s -X POST "$QDRANT/collections/$COLLECTION/points/search" \
  -H "Content-Type: application/json" \
  -H "api-key: $QDRANT_KEY" \
  -d "{\"vector\": $VECTOR, \"limit\": 5, \"with_payload\": true}" \
  | jq -r '.result[] | .payload.text' | head -c 3000)

# 3. Ответ через Ollama
curl -s -X POST "$OLLAMA/api/generate" \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg model "qwen3:14b" \
    --arg prompt "Ты старший специалист по 1С с 10+ годами опыта. Отвечай структурированно, на русском языке.\n\nКонтекст из базы знаний:\n$CONTEXT\n\nВопрос: $QUESTION\n\nОтвет:" \
    '{model: $model, prompt: $prompt, stream: false}'
  )" | jq -r '.response'

Загрузка изображений и скриншотов

Когда пользователь просит добавить скриншот, фото, изображение:

# Изображение с сервера
bash /home/alexandr/.openclaw/workspace/1c-assistant/ingest_image.sh \
  "/path/to/screenshot.png" \
  "kb_devops" \
  "Название скриншота"

# Изображение по URL
bash /home/alexandr/.openclaw/workspace/1c-assistant/ingest_image.sh \
  "https://example.com/screenshot.png" \
  "kb_python" \
  "Название"

Что делает скрипт:

  1. OCR через tesseract (rus+eng) — извлекает текст
  2. Копирует в /tmp/mcp-serve/ — картинка становится доступна по URL
  3. Отправляет в wf21 с image_url в payload
  4. При RAG поиске — Telegram получит текстовый ответ + само фото

Коллекции для изображений: те же что для текста (kb_python, kb_devops, kb_1c_code и т.д.)

Загрузка PDF документов

Когда пользователь просит загрузить PDF — спросить:

  1. Путь к файлу на сервере ИЛИ URL к PDF
  2. Коллекцию (из таблицы выше)
  3. Название документа

Использовать универсальный скрипт (автоматически определяет скан и запускает OCR):

# PDF по пути на сервере
bash /tmp/1c-assistant/scripts/ingest_pdf.sh \
  "/home/alexandr/docs/guide.pdf" \
  "kb_1c_buh" \
  "Название документа"

# PDF по URL
bash /tmp/1c-assistant/scripts/ingest_pdf.sh \
  "https://example.com/doc.pdf" \
  "kb_1c_zup" \
  "Название документа"

Скрипт: текстовый PDF → pdftotext; скан → tesseract OCR (rus+eng). Уведомление придёт в Telegram.

Загрузка новых документов (text/url)

# Добавить URL в базу знаний
curl -s -X POST https://n8nwint.ru/webhook/1c-ingest \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg type "url" \
    --arg collection "<коллекция>" \
    --arg title "<название>" \
    --arg url "<url>" \
    --arg chat_id "1360549978" \
    --arg version_1c "8.3" \
    '{type: $type, collection: $collection, title: $title, url: $url, chat_id: $chat_id, version_1c: $version_1c}'
  )"

# Добавить текст напрямую
curl -s -X POST https://n8nwint.ru/webhook/1c-ingest \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg type "text" \
    --arg collection "<коллекция>" \
    --arg title "<название>" \
    --arg text "<текст документа>" \
    --arg chat_id "1360549978" \
    --arg version_1c "8.3" \
    '{type: $type, collection: $collection, title: $title, text: $text, chat_id: $chat_id, version_1c: $version_1c}'
  )"

Проверка состояния коллекций

QDRANT="http://192.168.0.200:6333"
QDRANT_KEY="zkpDII8FaBpzpRke8uWWcOEJDGXxKNsn"

for coll in kb_1c_erp kb_1c_buh kb_1c_zup kb_1c_code kb_1c_admin kb_1c_forms; do
  count=$(curl -s "$QDRANT/collections/$coll" \
    -H "api-key: $QDRANT_KEY" | jq '.result.points_count')
  echo "$coll: $count points"
done

Эскалация

СитуацияДействие
score < 0.7 (нет контекста)Попробовать kb_1c_erp как fallback
Все коллекции пустыеОтветить из знаний модели с пометкой "из общих знаний"
Вопрос про разработку конфигурацииПередать Codex скилл
Нужно добавить документациюИспользовать ingest webhook выше