@erllecta/coding-helper
v1.0.27
Published
ER-GPT Coding Helper — автоматизация общекорпоративных сервисов CFU IT ЭР-Телеком Холдинг (Claude Code / OpenCode)
Downloads
7,893
Readme
ER-GPT Coding Helper
CLI-утилита для настройки интеграции coding-ассистентов с ER-GPT.
Установка / npx
# Явная версия (надёжнее, чем @latest после релиза)
npm install -g @erllecta/[email protected] --no-fund --no-audit
# Если «уже установлено», но версия старая:
npm install -g @erllecta/[email protected] --force --no-fund --no-audit
ergpt-coding-helper --versionБез установки:
npx --yes -p @erllecta/[email protected] ergpt-coding-helperПервый запуск спросит API ключ (личный кабинет). Повторный сразу переписывает Claude/OpenCode из сохранённого профиля (каталог + GET /api/settings/public с API key), затем открывает меню. Ключ сменить пунктом «Сменить API ключ».
MCP пишет тот же /mcp/sse (Bearer API key):
ergpt-builtin— безX-Assistant-Id, в клиенте толькоweb_search(не crawl/code/skills). Ассистент не нужен.ergpt— сX-Assistant-Id, тулы выбранного ассистента. Aider MCP не пишет (в доке нет файла).
Фильтр builtin — в конфиге хоста (Hermes tools.include, OpenCode tools, Claude includeTools). Continue и Cline в доке не умеют hide per-tool: им gateway по-прежнему отдаёт полный catalog.
Если ETARGET сразу после релиза — подождите 10–30 сек или:
npm cache clean --force
npm view @erllecta/coding-helper versionsРелиз: тег vX.Y.Z → CI job publish (нужен NPM_TOKEN). На main — manual play.
Использование
# Интерактивная настройка (каждый запуск обновляет Claude/OpenCode из профиля)
ergpt-coding-helper
# Stage (или prod) до UI
ergpt-coding-helper --env stage
# Показать текущую конфигурацию
ergpt-coding-helper --status
ergpt-coding-helper --env prod --status
# Только обновить конфиги и выйти
ergpt-coding-helper --refresh
# Очистить всю конфигурацию (store + Claude/OpenCode)
ergpt-coding-helper --clearВ меню пункт «Окружение: prod → stage» переключает активный профиль. У prod и stage отдельные API-ключ, ассистент и targets; при переключении tool-конфиги переписываются из сохранённого профиля (если ключ есть).
Поддерживаемые инструменты
Claude Code
Настраивает файлы:
~/.claude/settings.json—ANTHROPIC_AUTH_TOKEN,ANTHROPIC_BASE_URL, слоты каталога с именами (не сырой id). Helper пишетCLAUDE_CODE_MAX_OUTPUT_TOKENS=8192(иначе Claude Code шлёт 32k и GPU 128k overflow),CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1и capabilitieseffort,xhigh_effort,max_effort,thinkingбезadaptive_thinking: Qwen не умеет Anthropic adaptive, глубину выбираете/effort(low/medium/high/xhigh/max→ шлюзxhigh).CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1— слать effort даже на чужом id.CLAUDE_CODE_MAX_CONTEXT_TOKENS— изmax_contextкаталога (чтобы не было ложного[1m]).~/.claude.json— MCPergpt(ассистент) иergpt-builtin(includeTools: толькоweb_search)
OpenCode
Настраивает файл:
~/.config/opencode/opencode.json— провайдерergpt(@ai-sdk/openai-compatible) сbaseURL=…/api/openai;limit.contextберётся из каталогаmax_context/context_window. Для каждой модели:reasoning: true, стрим изreasoning_content, вариантыnone/low/medium/high/xhigh(reasoningEffort). База для моделей с каталожнымthinking: true—common.thinking_effortизGET /api/settings/public(не литерал в helper и не id Fast). Вариантnoneостаётся в UI. Модели без thinking — defaultnone. Каталожныеmodals→ OpenCodemodalities.input+attachment: true, если естьimage(иначе OpenCode считает кастомный провайдер text-only иreadкартинок блокирует).- MCP:
mcp.ergptиergpt-builtin(SSE);tools.ergpt-builtin_*= false, кромеweb_search.
Не путать с Claude: OpenCode ходит в OpenAI-compatible (
/api/openai/chat/completions), не в/api/anthropic. Claude Code: thinkingenabled(adaptive выключен helper’ом), глубина —/effort. OpenCode — вариантыreasoningEffort.
Hermes Agent
Настраивает файлы:
~/.hermes/config.yaml— named providerergpt(provider: custom:ergpt) сapi=…/api/openaiи моделью из каталога;context_lengthизmax_context, если есть. Каталожныеmodalsсimage→model.supports_visionиproviders.ergpt.models.<id>.supports_vision(иначе Hermes считает кастомный id text-only и режет картинки / гоняетvision_analyze).~/.hermes/.env—ERGPT_API_KEY(неOPENAI_API_KEY, чтобы не перебить чужой OpenAI).- MCP:
mcp_servers.ergpt(ассистент) иergpt-builtin(tools.include: толькоweb_search).
Continue (VS Code / JetBrains / CLI cn)
Это и есть путь «VS Code»: не сам редактор, а Continue. Официальный файл:
~/.continue/config.yaml(schema: v1) — моделиprovider: openai,apiBase=…/api/openai(без выдуманного/v1),apiKey,useResponsesApi: false(иначе Continue для части моделей ходит в/responses, которого у ER-GPT нет). Каталожныеmodalsсimage→capabilities: [tool_use, image_input](иначе Continue не включает загрузку картинок для кастомного id).- MCP:
mcpServersER-GPT(ассистент) иER-GPT builtin(type: sse).
Бинар в PATH для пометки «установлен» — официальный CLI cn. Расширение VS Code без cn всё равно получит конфиг.
Cline (VS Code / CLI)
По доке Cline и OpenAI Compatible:
~/.cline/data/settings/providers.json—lastUsedProvider: openai-compatible, ключ/base/model вproviders["openai-compatible"].settings(version: 1). Каталожныеmodalsсimage→openAiModelInfo.supportsImages(тот же флаг, что UI «Supports Images»). CLI читает этот файл.~/.cline/data/globalState.json+secrets.json— слот VS Code Cline 3.x (planModeApiProvider/actModeApiProvider:openai,openAiBaseUrl,planModeOpenAiModelInfo.supportsImages/actModeOpenAiModelInfo, ключopenAiApiKey). Merge: чужие ключи не трогаем.--clearснимает их только еслиopenAiBaseUrlсодержит/api/openai.- MCP:
mcpServers.ergptиergpt-builtin(type: sse) в обоих файлах.
Aider
По YAML config и OpenAI compatible APIs:
~/.aider.conf.yml—openai-api-key,openai-api-base=…/api/openai,model: openai/<id>.- MCP у Aider в доке нет — helper его не пишет.
- Слоты OpenAI в Aider глобальные: apply перезапишет чужой
openai-api-key/ base.--clearснимает их только если base содержит/api/openai.
В меню хост без бинаря в PATH остаётся выбираемым, но помечается «не установлен» (конфиг всё равно записывается). Helper не ставит CLI сам.
Новый coding-агент добавляется записью в src/tools/registry.ts, а не копипастой switch по инструментам. OMO (Oh My OpenAgent Ultimate) — харнесс поверх OpenCode: отдельного пункта нет, достаточно настроить OpenCode.
Не в меню (проверено по официальным докам, writer не пишем):
- Cursor — Override OpenAI Base URL только в GUI, канонического файла нет.
- VS Code Copilot — модели GitHub, не наш шлюз.
- Codex CLI — Responses API, не chat completions ER-GPT.
- Gemini CLI — протокол Gemini, не
/api/openai. - Goose — ключи не в
config.yaml(keyring /secrets.yaml); SSE MCP Goose не поддерживает. - Roo Code — настройки в зашифрованном storage расширения, не в файле.
Что происходит при настройке
- API ключ — сохраняется в локальное хранилище (отдельно для prod/stage) и прописывается в конфиги инструментов
- Ассистент — выбирается из каталога ER-GPT (опционально)
- Base URL — формируется автоматически на основе выбранного ассистента и активного окружения
- MCP —
ergpt-builtinвсегда (толькоweb_search);ergptсX-Assistant-Id, если выбран ассистент
URL по умолчанию
| Окружение | API | UI |
| --------- | ---------------------------------------- | ------------------------------------ |
| prod | https://api.er-gpt.ertelecom.loc | https://er-gpt.ertelecom.loc |
| stage | https://api.stage.er-gpt.ertelecom.loc | https://stage.er-gpt.ertelecom.loc |
Аварийный override API только для активного окружения:
export ERGPT_API_BASE=https://api.example.com
ergpt-coding-helperТребования
- Node.js ≥ 18 (для corp TLS без ручного CA — лучше ≥ 22.15)
- API ключ ER-GPT (получить в личном кабинете)
CLI подхватывает system CA (macOS Keychain). Если всё же TLS-ошибка:
export NODE_EXTRA_CA_CERTS=/path/to/corp-root.pemРазработка
Репозиторий публикации: git.erllecta.ru/ergpt/coding-tool
Исходники автора: git.erllecta.ru/ergpt/code-helper
npm install
npm run ci # lint + typecheck + unit/regression tests
npm run build # tsc: src/ → dist/ (dist не коммитим)
npm test # build + ava
npm run lint # prettier --check
npm run format # prettier --writedist/ и src/api/types/generated.ts в git не хранятся — собираются локально / в CI / в prepublishOnly перед npm publish.
Опционально обновить OpenAPI-типы из openapi.json:
npm run api:generateТесты:
test/unit/— URL defaults, maskApiKey, write/clear Claude/OpenCodetest/regression/— Ink screens (нет raw text вне<Text>), package bin/engines,--clearsemantics, нетapi.er-gpt.ruв dist/src
Перегенерация типов API:
npm run api:generateTLS в корпоративной сети
Node.js может не доверять корпоративному CA:
security find-certificate -a -c "ERTelecom-CA-New" -p /Library/Keychains/System.keychain > ~/.ertelecom-ca.pem
export NODE_EXTRA_CA_CERTS="$HOME/.ertelecom-ca.pem"Лицензия
MIT
