Skip to content

Шаблоны по языкам ​

Не хочется собирать скелет вручную? В шаблонах для шести языков уже есть манифест, точка входа, SDK хоста и скрипт упаковки. Склонируйте, поменяйте id — и можно писать логику. В каждом репозитории есть README.md (английский) и README-CN.md (китайский).

ЯзыкРепозиторий-шаблонРезультатЧто нужно установить
Javatemplate-tml-extension-javacom.tywstudio.example.java.jarJDK (javac, jar)
Pythontemplate-tml-extension-python*.tmlextPython 3
Node.jstemplate-tml-extension-node*.tmlextNode.js 18+
Ctemplate-tml-extension-c*.tmlext (с нативным бинарником)Компилятор C (gcc / clang / MSVC cl) + Python 3
Rusttemplate-tml-extension-rust*.tmlext (с нативным бинарником)Rust (Cargo) + Python 3
Gotemplate-tml-extension-go*.tmlext (с нативным бинарником)Go 1.21+ + Python 3

Для Zig шаблона пока нет

Повторите структуру C или Go: runtime = zig, entry указывает на файл, собранный zig build-exe, остальное (поля манифеста, протокол через stdio, упаковка в zip) не меняется.

Три способа начать ​

1. Через GitHub-шаблон (рекомендуется) ​

Все шесть репозиториев помечены как template repository. Откройте репозиторий и нажмите Use this template → Create a new repository — новый репозиторий ваш, без связи с шаблоном.

2. git clone ​

bash
git clone https://github.com/TYWStudio/template-tml-extension-go.git my-ext
cd my-ext

Если нужен только последний снимок без истории, добавьте --depth 1:

bash
git clone --depth 1 https://github.com/TYWStudio/template-tml-extension-go.git my-ext

3. Скачать zip ​

Там, где нет git, используйте Code → Download ZIP на странице репозитория.

Сначала поменяйте три вещи ​

  1. id — в manifest.json (для Java — в META-INF/tml-extension.json). После установки его нельзя изменить, поэтому пишите вроде вашеимя.функция. Заодно обновите name, version, author.
  2. Логику входа — src/main.*, main.py, main.js. В шаблоне только одна строка лога и вызов host.info — замените своим кодом.
  3. permissions — объявляйте ровно то, что используете: лишние права видны пользователю и мешают установке.

По языкам ​

Java ​

Нужен JDK (java -version должен работать). Хост запускает расширение командой java -cp "<jar>" com.tywstudio.example.Main, поэтому класс входа должен совпадать с манифестом.

bash
git clone https://github.com/TYWStudio/template-tml-extension-java.git my-ext
cd my-ext
bash build.sh          # Windows: build.bat
# результат: com.tywstudio.example.java.jar

Java-шаблон выдаёт обычный .jar, а не .tmlext — при импорте выбирайте именно jar.

Python ​

Достаточно Python 3, сторонних пакетов нет.

bash
git clone https://github.com/TYWStudio/template-tml-extension-python.git my-ext
cd my-ext
python3 build.py       # Windows: python build.py
# результат: com.tywstudio.example.python.tmlext

Запуск python3 main.py вручную «зависает» в ожидании рукопожатия — это нормально, расширение должен запускать лаунчер.

Node.js ​

bash
git clone https://github.com/TYWStudio/template-tml-extension-node.git my-ext
cd my-ext
node build.js          # или: npm run pack
# результат: com.tywstudio.example.node.tmlext

В package.json нет зависимостей времени выполнения, поэтому npm install не нужен.

C ​

Нужен любой компилятор C (gcc / clang / MSVC cl) и Python 3 для упаковки.

bash
git clone https://github.com/TYWStudio/template-tml-extension-c.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# результат: template-tml-extension-c.tmlext

build.sh компилирует, build.py упаковывает манифест, исходники и бинарник в .tmlext.

Rust ​

SDK подключается как git-зависимость (tml-ext, tag sdk-rust-v1.0.0), поэтому первая сборка один раз клонирует репозиторий TML; дальше всё берётся из кеша Cargo. Не копируйте lib.rs в проект.

bash
git clone https://github.com/TYWStudio/template-tml-extension-rust.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# результат: template-tml-extension-rust.tmlext

Внутри: cargo build --release → копирование в bin/tml_ext → упаковка через build.py.

Go ​

SDK лежит в extensions/sdk/go репозитория TML; build.sh сначала выполняет go mod tidy (в первый раз нужен интернет).

bash
git clone https://github.com/TYWStudio/template-tml-extension-go.git my-ext
cd my-ext
./build.sh             # Windows: build.bat
# результат: template-tml-extension-go.tmlext

Команда сборки: CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src. CGO_ENABLED=0 даёт статическую сборку и простую кросс-компиляцию:

bash
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext.exe ./src
GOOS=linux   GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src
GOOS=darwin  GOARCH=arm64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/tml_ext ./src

Как установить ​

  1. Запустите скрипт сборки, получите .jar или .tmlext.
  2. Лаунчер → Настройки → Расширения → Импорт, либо просто перетащите файлы в окно (можно несколько).
  3. Проверьте список прав и включите. Уже подтверждённый пакет запоминается — повторного вопроса не будет; для другого пакета спросит снова.
  4. После правок пересоберите и импортируйте заново; если файл просто заменён — нажмите «Обновить».

О кнопках «Подробнее / Включить / Удалить», статусах и автозапуске см. Импорт и управление.

При первой загрузке SHA-256 пакета записывается в extensions/trusted.json. Если содержимое изменилось, лаунчер сообщит «расширение было изменено» — удалите запись и подтвердите доверие снова.

Частые проблемы ​

СимптомПричина
После импорта нет в спискеОшибка JSON в манифесте или повторяющийся id
«Среда выполнения недоступна»Интерпретатор не в PATH (Java/Python/Node), другая архитектура или нет права на запуск
Сразу завершаетсяТочка входа не читает stdin или не отвечает {"ready": true}
Первая сборка Rust/Go «висит»Идёт загрузка SDK из репозитория TML; дальше работает кеш
Работает только на одной машинеНативные пакеты (C / Rust / Go) привязаны к платформе сборки — пересоберите под целевую
macOS не открываетВстроенный бинарник нужно подписать; локально xattr -cr, для релиза — подпись

Смотрите также ​