synsema
RU Русский

Язык программирования · фреймворк для ИИ-агентов · безопасный по умолчанию

Люди читают страницу.
Агенты читают исходник.

Один URL, согласование контента. Synsema — быстрый и безопасный по умолчанию язык программирования для ИИ-агентов со встроенным фреймворком агентов: один и тот же маршрут отдаёт людям HTML, а моделям — Markdown. Переключите панель и увидите ровно тот Markdown, который LLM получает с этой страницы.

Учитесь, создавая, на try.synsema.com: курсы с настоящей песочницей, ничего устанавливать не нужно.

GET synsema.com/ru
200 OK · Content-Type: text/markdown
# Synsema
> Язык программирования для ИИ-агентов.

## Что это
- Быстрый. 47 200 req/s, впереди Go и Node.
- Безопасный по умолчанию. Нет `require` — нет доступа.
- Нативный для агентов. Один маршрут, HTML или Markdown.

## Установка
curl -fsSL synsema.com/install.sh | sh
Индекс для агентов: /llms.txt

Synsema

Язык программирования для ИИ-агентов.

Пропускная способность
47 200req/s
vs Go (net/http)
+10 %
Безопасный по умолчанию
Нативный для агентов

↑ один ресурс, два представления · curl -H "Accept: text/markdown" synsema.com/ru

Быстрый · req/s при c=50

47 200req/s

Впереди Go (42 800) и Node (38 700)1. Нативная асинхронность, настоящая многоядерность, один статический бинарный файл, без рантайма.

Безопасный по умолчанию

-- нет require — нет доступа
require net("api.shop.com")
fetch("api.shop.com")  ✓ разрешено
fetch("evil.com")      ⊘ отклонено

Нет require — нет доступа: отказывает интерпретатор, а не код-ревью. Аутентификация, валидация и intent декларативны.

Нативный для агентов

Эта страница и есть демо. Каждый маршрут отдаёт людям HTML, а агентам — Markdown/JSON; /llms.txt, /sitemap.xml и /openapi.json выводятся из таблицы маршрутов.

Документация предоставляет MCP-сервер: агенты ищут, читают, запускают и тестируют код через один эндпоинт.

1 · измерено на Linux VPS, 6 нагрузок, c=50, медиана прогонов (первый отброшен). Воспроизводимый стенд: synsema-arena.

Что на нём строят

Фреймворк для ИИ-агентов и язык программирования в одном бинарном файле.

Всё, что нужно агентному приложению, находится в языке, а не в приклеенном сверху фреймворке: вызовы LLM, использование инструментов, память, одобрение человеком, оркестрация мультиагентных систем, production-сервер и модель безопасности. Поэтому тот же язык строит и API, и сайт, и cron, и CLI вокруг агента.

Агенты

ИИ-агенты и LLM-приложения

reason, decide, analyze и generate — примитивы: валидированные ответы, повторы, любой провайдер, ключ запечатан как secret.

docs ↗

Оркестрация

Мультиагентные системы

Агенты на настоящих потоках, общая доска, сигналы, шина событий и долговременная память — без брокера сообщений в эксплуатации.

docs ↗

Человек в контуре

Одобрения и шлюзы

approve, confirm и ask ждут живого человека — в терминале или в очереди за одноразовыми ссылками; если никого нет, отказ.

docs ↗

Инструменты

MCP-серверы

Откройте возможности программы для Claude Code, Cursor или Lampson. MCP-сервер самой документации написан именно так.

docs ↗

Бэкенды

REST API и CRUD

Маршруты, декларативные аутентификация и валидация, пагинация, SQLite, Postgres, MySQL, Mongo или Redis — в одном файле, с встроенным production-сервером.

docs ↗

Реальное время

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

Входящие WebSocket, дочерние процессы, за которыми вы следите построчно, один select надо всем, отмена и упорядоченное завершение.

docs ↗

Web

Сайты, SSR

Шаблоны, макеты и компоненты; каждая страница согласуется для агентов; /llms.txt, sitemap и OpenAPI бесплатно. Этот сайт — один из них.

docs ↗

Развёртывание

Автоматический HTTPS

--tls-auto you@site.com: сертификаты и продление от Let's Encrypt, HTTP/2, www на apex, обратный прокси, когда он нужен.

docs ↗

Приложения

Одно приложение: веб, телефон и десктоп

synsema init --desktop: то же серверно-рендеримое приложение устанавливается на Android и iOS как PWA с нативными push-уведомлениями и поставляется как десктопное приложение — один бинарник, окно приложения в браузере, ваша иконка, без консоли.

docs ↗

Автоматизация

Cron, вебхуки, задачи

Запланированные задачи и живые ленты по WebSocket; длительная работа на настоящем цикле событий, с наблюдаемостью в комплекте.

docs ↗

Данные

Данные и графики

CSV, SQL, статистика, числовые массивы и нативные SVG-графики, которые агенты читают как данные, а люди — как картинки; экспорт в PNG и PDF.

docs ↗

Поставка

Один бинарный файл или WASM

synsema build запечатывает программу и ресурсы в один исполняемый файл; интерпретатор работает и в браузерах, на edge и в TEE.

docs ↗

Один файл

Весь бэкенд, с разрешениями наверху.

Программа на Synsema начинается с объявления того, к чему ей можно прикасаться. Всё ниже этой строки работает внутри: маршруты, база данных, секреты, модель. Оба файла ниже разбираются и запускаются как есть.

api.synСобрать REST API ↗
-- A bookshop API. The `require` lines are the whole permission
-- surface: a port, one database file, one secret. Nothing else.
intent: "public read API; writes need the staff token"

require serve(8080)
require db("./shop.db")
require secret("API_TOKEN")

task check_token(token)
    let want be hmac_sha256("staff", token)
    when verify_hmac("staff", want, secret("API_TOKEN"))
        give {"role": "staff"}
    give nothing

serve on 8080
    auth with check_token
    rate_limit 120 per minute

    route "GET /books"
        give paged("SELECT id, title, price FROM books")

    route "POST /books" requires auth
        expect body {title: text, price: number}
        let b be json of request
        sql_exec("INSERT INTO books (title, price) VALUES (?, ?)",
                 [b.title, b.price])
        give created(b)

    route "GET /about"
        let doc be page([heading(1, "Bookshop"),
                         prose("HTML or Markdown, one route.")],
                        {"title": "Bookshop"})
        give content(doc)
agent.synПримитивы LLM ↗
-- An agent that triages support tickets. The model decides;
-- a human approves refunds; the API key is a sealed secret.
intent: "triage open tickets; refunds wait for a human"

require llm
require net("api.example.com")
require secret("SUPPORT_TOKEN")

let api be "https://api.example.com"
let auth be {"Authorization": bearer(secret("SUPPORT_TOKEN"))}
let r be http_get(api + "/tickets?open=1", auth)
let tickets be json_decode(body of r)

each t in tickets
    let msg be t["text"]
    let kind be decide between ["bug", "billing", "other"] given msg
    when kind == "billing"
        let amount be analyze msg for "the amount to refund"
        let who be t["customer"]
        approve "Refund " + text(amount) + " to " + who + "?" within 1h
    otherwise
        let reply be generate "a short, kind answer" given msg
        let url be api + "/tickets/" + t["id"] + "/reply"
        http_post(url, {"text": reply}, auth)
  • require — вся поверхность разрешений. Порт, один файл базы данных, один секрет. fetch к любому другому хосту отклоняется интерпретатором.
  • Аутентификация и валидация — это объявления. auth with называет задачу, которая решает, кто стоит за токеном; expect body отклоняет неверный payload ответом 400 с именем поля.
  • Один маршрут — все читатели. content() отвечает браузерам HTML, а агентам — Markdown или JSON; paged() разбивает большие выборки на страницы за вас.
  • Модель — примитив. decide возвращает один из вариантов или повторяет попытку; analyze и generate типизированы, а не склеены вручную из строк промпта.
  • Человек — тоже примитив. approve … within 1h ждёт живого человека; если никого нет, отказывает.
  • Секреты никогда не материализуются. Ключ едет запечатанным до самого сокета; модель видит заглушку.

Сделано на Synsema

Три вещи, которыми можно пользоваться уже сегодня.

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

Lampson

Open-source ИИ-агент для программирования в терминале и браузере, целиком написанный на Synsema: инструменты заперты в вашем проекте, разрешения под вашим контролем, суб-агенты, запланированные задачи, плагины.

lampson.org ↗

Возможности для агентов

Lamps

Переносимые единицы возможностей: манифест объявляет, к чему может прикасаться код, рантайм это обеспечивает и аудирует каждый вызов. lamp add, затем lamp mcp — для Claude Code, Cursor или любого MCP-агента.

lamps.sh ↗

Учиться

Try Synsema

Учитесь, создавая ПО для реального бизнеса, прямо в браузере: курсы, задания, проверяемые в настоящей песочнице, опыт и уровни. Ничего устанавливать не нужно.

try.synsema.com ↗

Из блога

Бенчмарки, проектные решения, руководства.

Все статьи → · RSS