Skip to main content
Glama

Helx

Универсальная среда выполнения артефактов для ИИ-агентов. Один движок, который читает, создаёт, редактирует, проверяет, сравнивает и отображает форматы, с которыми реально работают агенты, — DOCX, XLSX, PPTX, PDF, Markdown, HTML, CSV, а также диаграммы, схемы, шаблоны, конвертацию между форматами и операции с CSV-данными. Доступен тремя способами:

  • CLI — helx для людей и shell-скриптов

  • MCP-сервер — 20 инструментов через stdio для ИИ-агентов (Claude, Cursor и т. д.)

  • TypeScript SDK — чистый фасад Artifact для вашего кода

npm version license PRs welcome

one model, every file
create → read → edit → save → validate → diff → render → convert

Визуальная галерея

Каждый артефакт ниже был создан и отредактирован самим Helx, а затем предпросмотрен с помощью Helx. Нажмите на карточку, чтобы открыть файл.

DOCX report

XLSX sales

PPTX deck

PDF quarterly

Markdown playbook

HTML landing

CSV customers

DOCX letter (template merge)

Diagram

Диаграммы, созданные с помощью helx chart:

Revenue by region Trend Mix

Галерея создаётся командой npx tsx scripts/make-gallery.ts — она открывает каждый демо-файл через SDK и растеризует стилизованный SVG-превью в PNG с помощью @resvg/resvg-js.

Related MCP server: LibreOffice MCP Tools

Почему Helx, а не OfficeCLI

OfficeCLI — это мощный редактор Word/Excel/PPT для ИИ-агентов. Helx идёт дальше:

Возможность

Helx

OfficeCLI

Форматы

DOCX, XLSX, PPTX, PDF, Markdown, HTML, CSV

Только Word, Excel, PPT

Конвертация между форматами

helx convert report.docx report.md — DOCX↔MD/HTML/PDF, XLSX↔CSV/HTML/MD, PPTX→MD/HTML/DOCX, PDF→MD/HTML/DOCX, CSV↔XLSX

нет

Диаграммы и схемы

helx chart (bar/line/pie/donut/area/scatter), helx diagram (mermaid-style flowcharts)

нет

Шаблоны

{{var}}/{{#each}}/{{#if}} + встроенное слияние DOCX

Только слияние DOCX

Операции с CSV-данными

analyze, filter, sort, group, aggregate, profile, dedupe, clean

нет

PDF

создание, извлечение текста, объединение, разделение

нет

Рендеринг для визуального восприятия агента

DOCX/XLSX/CSV→HTML, PPTX→SVG, PDF→текст, MD→HTML, диаграммы→SVG

render → PNG

Интерфейсы

CLI + MCP (20 инструментов) + TypeScript SDK

CLI + MCP

Пути агентов

единые /p[2], /sheet[X]/cell[C3], css:.hero, ... во всех форматах

свой для каждого формата

Проверка и сравнение

validate + семантический diff для каждого движка

нет

Helx также включает stat (статистика документа) и move (переупорядочивание абзацев/строк/слайдов/фигур) во всех интерфейсах.

Установка

npm install -g helx        # CLI + MCP server
# or
npm install helx           # SDK for your own TypeScript/JavaScript project

Затем выполните helx --help или добавьте MCP-сервер в ваш ИИ-клиент:

{
  "mcpServers": {
    "helx": { "command": "helx", "args": ["mcp"] }
  }
}

Вот и всё — любая ИИ-модель или агент (Claude, Cursor, Cline, LangChain, пользовательские скрипты) может создавать, читать, редактировать и отображать настоящие офисные и веб-документы.

Сборка из исходников

git clone https://github.com/Asno-dev/Helx.git
cd Helx
npm install
npm run build        # tsc → dist/
npm test             # 71 integration checks (tsx test/smoke.ts)

Node >= 18 (для динамического импорта ESM требуется >= 12.20; проверено на Node 22).

Быстрый старт (CLI)

# Create a DOCX from a JSON spec (type inferred from the extension)
helx create report.docx '{"title":"Q3 Report","paragraphs":["Revenue grew 20% to $52k."],"tables":[{"headers":["Metric","Value"],"rows":[["ARR","4.2M"]]}]}'

# Inspect the structure as a path-addressed tree
helx inspect report.docx

# Read / write a single value via an agent path
helx get report.docx "/p[1]"
helx set report.docx "/table[0]/row[1]/cell[1]" "4.5M"

# Insert / remove / move, then validate and render to HTML for a visual check
helx insert report.docx "/p[2]" '{"text":"New paragraph","style":"Heading 2"}'
helx remove report.docx "/p[4]"
helx move report.docx "/p[2]" "/p[5]" --after
helx stat report.docx
helx validate report.docx
helx render report.docx --out report-preview.html

# Cross-format conversion (any direction, any engine)
helx convert report.docx report.md
helx convert report.md report.pdf
helx convert sales.xlsx sales.csv
helx convert deck.pptx deck.md

# Spreadsheets
helx create data.xlsx '{"sheet":"Revenue","rows":[["Quarter","Amount"],["Q1","10"]]}'
helx get data.xlsx "/sheet[Revenue]/cell[B2]"
helx analyze data.csv
helx filter data.csv '{"col":"score","op":"gt","value":80}'

# Decks
helx create deck.pptx '{"title":"Investor Deck","subtitle":"Q3 2026","bullets":["Market size: $10B"]}'
helx get deck.pptx "/slide[0]/shape[1]"

# PDFs (create via model; merge/split for structure)
helx create a.pdf '{"title":"Doc A","sections":[{"heading":"Intro","text":"Hello."}]}'
helx merge merged.pdf a.pdf b.pdf
helx split page1.pdf merged.pdf --pages 1
helx extract merged.pdf

# Charts, diagrams, templates
helx chart '{"type":"bar","labels":["Q1","Q2"],"values":[10,12]}' --out chart.svg
helx diagram 'graph TD; A[Start] --> B[End];' --out diagram.svg
helx template 'Hello {{name}}' '{"name":"Ada"}'

# Run the MCP server (for AI agents)
helx mcp

Пути агентов

Каждый артефакт предоставляет стабильное дерево с адресацией по путям, поэтому агенты могут читать/записывать любые значения:

Формат

Примеры путей

DOCX

/p[2], /p[1]/text, /table[0]/row[1]/cell[0]

XLSX

/sheet[Revenue]/cell[C24], /sheet[0]/row[3]

PPTX

/slide[0]/shape[1], /slide[0]/shape[2]/text

PDF

/page[0], /page[0]/text

Markdown

/heading[0], /p[2]

HTML

css:h1, css:.summary > p

CSV

/row[3]/cell[1]

set, insert, remove и move изменяют модель, а save() сохраняет её обратно в файл.

Конвертация между форматами

convert работает с реальной моделью контента — это не строковые манипуляции:

Из \ В

DOCX

XLSX

PPTX

PDF

MD

HTML

CSV

DOCX

—

✔

✔

✔

XLSX

—

✔

✔

✔

PPTX

✔

—

✔

✔

PDF

✔

—

✔

✔

MD

✔

✔

—

✔

HTML

✔

✔

✔

—

CSV

✔

✔

✔

—

const md = await Artifact.create('markdown', { root: { children: [] } });
await md.insert('/node', { type: 'heading', depth: 1, text: 'Hello' });
const docx = await md.convertTo('docx');   // real DOCX bytes
const html = await docx.convertTo('html');

MCP-сервер

helx mcp запускает сервер Model Context Protocol через stdio. Он предоставляет 20 инструментов:

create_artifact, inspect, get, set, insert, remove, move, convert, stat, render, validate, diff, merge_pdf, split_pdf, extract, analyze_csv, filter_csv, chart, diagram, template

Инструменты основаны на путях файловой системы — агент передаёт путь к файлу и JSON-значение, а сервер читает, редактирует, сохраняет или отображает артефакт. Зарегистрируйте его в таком клиенте, как Claude Desktop:

{
  "mcpServers": {
    "helx": { "command": "node", "args": ["/path/to/helx/dist/cli/index.js", "mcp"] }
  }
}

TypeScript SDK

import { Artifact, chartToSvg, dataFilter, renderTemplate } from 'helx';

// Create, edit, save
const doc = await Artifact.create('docx', {
  title: 'Report',
  paragraphs: ['Revenue grew 20% to $52k.'],
  tables: [{ headers: ['Metric', 'Value'], rows: [['ARR', '4.2M']] }],
});
await doc.set('/p[0]/text', 'Updated headline');
await doc.insert('/p[1]', { text: 'Inserted paragraph' });
const bytes = await doc.save();
await fs.writeFile('report.docx', bytes);

// Open any file, regardless of format
const art = await Artifact.open('data.xlsx', buffer);
console.log(await art.get('/sheet[Revenue]/cell[B2]'));
console.log(await art.inspect());

// Convert to another format, get stats, move elements
const md = await art.convertTo('markdown');
console.log(await art.stat());
await art.move('/sheet[Revenue]/row[3]', '/sheet[Revenue]/row[1]', 'before');

// Validation and diff
console.log(await art.validate());   // { status, issues[] }
console.log(await art.diff(other));  // DiffEntry[]

// Generator utilities
const svg = chartToSvg({ type: 'pie', labels: ['A', 'B'], values: [3, 7] });
const rows = dataFilter(data, { col: 'score', op: 'gt', value: 80 });
const out = renderTemplate('Hi {{name}}', { name: 'Ada' });

Также экспортируются: convertArtifact, canConvert, mergePdfs, splitPdf, dataProfile, dataSort, dataAggregate, dataDedupe, dataClean, parseDiagram, diagramToSvg, renderDocxTemplate, detectType, engineForFile, registerEngine, engines.

Архитектура

src/
  core/
    types.ts        # shared model contracts (Engine, ArtifactModel, ValidationReport, ...)
    base.ts         # BaseEngine with typed dispatch for set/insert/remove/move
    paths.ts        # agent-path parser (/p[0], /sheet[X], css:..., /row[n]/cell[n])
    utils.ts        # LCS diff, diffText/diffSeqMerged, HTML document shell
    convert.ts      # cross-format converter (content-model based, 19 directions)
    index.ts        # engine registry + Artifact facade (create/open/save/...)
    engines/
      docx.ts       # paragraphs, heading styles, tables
      xlsx.ts       # sheets, cells, formula read-back
      pptx.ts       # slides, shapes, text boxes
      pdf.ts        # create (pdfkit), extract text (pdfjs-dist), merge/split (pdf-lib)
      markdown.ts   # remark/rehype round-trip
      html.ts       # cheerio DOM editing + css: selectors
      csv.ts        # rows + data ops: profile/filter/sort/group/aggregate/clean/dedupe
      chart.ts      # SVG charts (bar, line, pie, donut, area, scatter, grouped bar, stacked bar)
      diagram.ts    # mermaid-style flowchart → SVG
      template.ts   # {{var}}/{{#each}}/{{#if}} + in-place DOCX placeholder merge
  cli/index.ts      # helx CLI (commander)
  mcp/index.ts      # MCP stdio server (20 tools)
  sdk/index.ts      # public package surface
scripts/make-gallery.ts   # README gallery generator
examples/demo/            # all demo files created by Helx itself

Каждый файловый движок реализует один контракт: read(bytes) → model, write(model) → bytes, а также create(spec), get/set/insert/remove/move(path), inspect(), validate(), diff(other), render(). Фасад Artifact сохраняет исходные байты, поэтому неизменяемые форматы (PDF) можно по-прежнему конвертировать после редактирования в другие форматы.

Примечания и проектные решения

  • PDF неизменяем по своей модели: извлечение текста доступно только для чтения (pdfjs-dist; pdf-parse был удалён, потому что его встроенный pdf.js 2.x не может разобрать вывод pdfkit). Для структурных операций используется pdf-lib: mergePdfs и splitPdf.

  • Рендеринг в HTML для цикла визуального восприятия агента: DOCX/XLSX/CSV → HTML-таблицы, PPTX → постраничный SVG, PDF → постраничный текст, Markdown → HTML, диаграммы/схемы → SVG.

  • helx chart, helx diagram, helx template — это утилиты-генераторы; они не зарегистрированы как файловые движки.

  • Конвертация основана на моделях: конвертеры читают реальную модель каждого формата (DocxModel, XlsxModel, ...) и создают спецификацию другого движка, поэтому convert сохраняет структуру, а не вставляет необработанный текст.

Лицензия

Apache-2.0 — см. LICENSE.

Участие в разработке

Приветствуются отчёты об ошибках, запросы функций и pull request'ы. О рабочем процессе разработки, соглашениях и Кодексе поведения см. CONTRIBUTING.md.

Related MCP Connectors

Related MCP Servers