
Перенеси программу на Rust и проверь, что она ведёт себя так же.
PortCode — терминальный агент. Он изучает оригинал, записывает, что удалось выяснить, переписывает программу на Rust по кусочку и сверяет каждый кусок с настоящим выводом оригинала. Работает с моделями, которые ты запускаешь сам: lakomoor.com/v1, Ollama, LM Studio, llama.cpp, vLLM.
macOS, Linux, Windows и WSL. Установщик проверяет sha256 загрузки. Работает и на вашей подписке Claude Code или Codex, без API-ключа.
cargo test --workspace



Элементы управления и страница пульта — копии настоящего интерфейса. Цифры взяты из примера wordstat в репозитории. В скриншотах модель — записанный сценарий, поэтому всё воспроизводимо.
Терминальный интерфейс
Агент port работает над wordstat: вызовы инструментов, факты и список дел справа. Снято скриптом make_screenshots.sh.
Начните с /create
Введите /create и ответь на несколько вопросов: что воссоздать (сайт, программу, игру, формат файла или пока ничего), насколько близко PortCode может в это заглядывать, на чём строить и чего ты хочешь. Он запустит нужного агента в нужном режиме. Выберите «Just look inside», если нужно только разобраться: получите docs/SPEC.md и журнал фактов, без кода порта.
Первый запуск
Три шага, все внутри приложения. /setup покажет их снова.
1. Выбери провайдера
Локальная модель, ключ не нужен: /provider ollama qwen3:14b. Просто /provider покажет все и у каких нет ключа.
2. Вставь ключ
/key спросит его. Пока вводишь, он скрыт; сохраняется с правами 600. Или в терминале: portcode auth set <provider>.
3. Проверь и начни
portcode doctor проверит настройку. Потом /create или просто напиши задачу. Подробная инструкция.
Обновления: portcode update или /update сравнивает твою версию с последним релизом. Раз в день приложение проверяет тихо. PORTCODE_NO_UPDATE_CHECK=1 отключает. Сами обновления не ставятся.
Работай на своей подписке Claude или ChatGPT
Ключ API не нужен. PortCode запускает на твоём компьютере официальную программу claude или codex, и она использует твой вход. Свои инструменты PortCode добавляет сам: журнал доказательств, фиксацию оригинала, проверки parity и скриншоты.
PortCode на твоей подписке
portcode -m claude-code/sonnet или portcode -m codex/default. Работа видна в окне PortCode, а доказательства попадают в тот же журнал.
Твой CLI использует PortCode
claude mcp add portcode -- portcode mcp даёт Claude Code (а Codex через codex mcp add) инструменты PortCode в привычной сессии. Подробности и ограничения.
Посмотри настоящий запуск
Это порт wordstat. Вызовы инструментов и их вывод записаны с настоящего запуска, а ответы модели заранее написаны, чтобы запуск повторялся. Ничего не напечатано вручную.
Доказательства
Дела
Попробуй /create

Установка
# Windows (PowerShell), no Rust needed
irm https://raw.githubusercontent.com/LakoMoor/portcode/main/install.ps1 | iex
# macOS / Linux / WSL
curl -fsSL https://raw.githubusercontent.com/LakoMoor/portcode/main/install.sh | sh
# options: PORTCODE_VERSION=v0.1.0 · PORTCODE_INSTALL_DIR=~/bin · PORTCODE_FROM_SOURCE=1 · --with-engines core · --with-skill ~/.claude/skills · --uninstall
cargo install --git https://github.com/LakoMoor/portcode portcode-cli
portcode init && portcode doctor && portcode
Windows, Linux и macOS, x86_64 и aarch64. Установщики проверяют sha256; установщик для Linux/macOS собирает из исходников, если бинарника для твоей системы нет. Сборке для Windows не нужны ни Rust, ни Visual C++.
Clean room или deep
В режиме clean-room PortCode смотрит на оригинал только снаружи: запускает и сравнивает вывод. Дизассемблеры, декомпиляторы и hex-просмотрщики не используются. В режиме deep он работает с Capstone, Unicorn, Ghidra и ImHex. Они ставятся рядом с бинарником, каждый — только после твоего «да».


Capstone показывает первые инструкции: функция резервирует 416 байт стека.
Unicorn запускает.
PortCode работает с
инструментами. Каждый ставится только после твоего «да».
ImHex описывает формат файла. Агент пишет шаблон, ты проверяешь его в ImHex.
Рядом rizin, radare2, YARA, Frida, LIEF, capa и Detect It Easy, а для Unity и C# ещё ILSpy, Il2CppDumper, dnfile и UnityPy.
Внутрь никто не заглядывает, пока ты не включишь.
По умолчанию — clean room. Deep включается в терминале или на странице пульта.
Числа на этих карточках получены запуском инструментов на бинарнике wordstat из репозитория.
Workbench
Введите /workbench в режиме deep. Слева функции, в центре псевдо-C, дизассемблер или hex, справа журнал фактов, внизу агент. a заставляет агента объяснить функцию и записать, что он нашёл.
Две сессии, разделённые стеной
Первая сессия смотрит внутрь и пишет docs/SPEC.md, вторая строит порт только по этой спецификации, в режиме clean-room.
portcode engines install core
portcode --deep -a reverse
portcode --clean-room -a portСначала факты, потом код
Изучение
Фиксируем точную сборку, просматриваем файлы, идём по главному циклу. Что только прочитано — inference; observation — только то, что запускали.
Запись
Журнал, в который можно только дописывать. У каждой записи есть id (E-0007), источник и хеш, открытые вопросы помечены unknown. Каждое правило в порте ссылается на запись.
Порт
По одному небольшому куску, сверяя с выводом оригинала, а не с твоим прочтением его кода.
Проверка
parity и фаззинг против оригинала решают, совпадает ли порт. Агент не остановится до PASS.
Работает с локальными и своими моделями
Один OpenAI-совместимый клиент, который переносит то, в чём ошибаются открытые модели: reasoning_content и <think> в тексте, вызовы инструментов обычным текстом, битый или оборванный JSON в аргументах, числа в кавычках, серверы, отвергающие необязательные поля, зависающие потоки. Маленькое окно контекста и ответы, обрезанные лимитом вывода, тоже учтены.
| Провайдер | Адрес по умолчанию | Ключ |
|---|---|---|
lakomoor | https://lakomoor.com/v1 | LAKOMOOR_API_KEY |
ollama | http://localhost:11434/v1 | не нужен |
lmstudio | http://localhost:1234/v1 | не нужен |
llamacpp · vllm · sglang | :8080 · :8000 · :30000 | по желанию |
deepseek · openrouter | облако, тот же протокол | переменная окружения |
portcode eval на своей модели и подправьте.$ portcode models -p lakomoor
$ portcode -m lakomoor/deepseek-chat
$ portcode -m ollama/qwen3:14b -a portШесть агентов
build
По умолчанию. Доводит изменения от начала до конца.
port
Процесс rustport, инструменты порта и проверка завершения.
reverse
Изучает оригинал и записывает факты. Код не правит. Использует инструменты deep.
plan
Только чтение: исследует и пишет план.
explore · general
Подагенты с чистым контекстом, запускаются через task.
Правки и команды сначала спрашивают (разрешить, всегда, запретить). Опасные команды отклоняются всегда, файловые инструменты не выходят за проект. Оболочка работает с закрытым stdin, лимитом времени и ограниченным выводом; при таймауте убивается вся группа процессов.
Навык rustport
Он встроен в бинарник и работает также в Claude Code, Codex и OpenCode (portcode skill export ~/.claude/skills). Основной файл — около 100 строк, подробные заметки подгружаются, только когда нужны этапу.
- Заявка точность, платформы, clean-room или deep, лицензия →
docs/PORT.md - Фиксация и обзор хеш сборки, опись, неизвестные записаны
- План карта модулей от листьев; на каждый — переписать, подключить или отбросить
- Эталоны детерминированные сценарии, снятые с оригинала
- Ядро порта кусок → тест → clippy → parity; искать расхождение бисекцией, допуск не расширять
- Платформа и графика только для GUI; wgpu за трейтами, сравнение PNG вне экрана
- Доказательство скриншот на каждую функцию, скорость,
site_build
Пример порта
wordstat, C → Rust
Настоящая программа на C, 6 эталонных случаев, 400 прогонов фаззинга против оригинала, 11 записей фактов и один открытый вопрос.
Журнал в терминале
portcode port ledger показывает, что для этого порта наблюдалось, предполагалось и неизвестно.
Всё — инструмент
Терминальный интерфейс, агент и скрипты вызывают одни и те же инструменты. Всё, что умеет модель, можно запустить руками: portcode tool <name> '{json}'.
| Команда | Что делает |
|---|---|
portcode | Диалог |
portcode run "…" -a port -y --json | Один запрос, JSON-строки |
portcode doctor · eval | Проверка настроек · проверка модели |
portcode port … | Инструменты порта, без LLM |
portcode serve | Удалённое управление, см. пульт |
portcode skill export <dir> | Поставить навык в другой агент |
Откуда это
PortCode повторяет архитектуру OpenCode, переписанную на Rust, и объединяет её с навыком rustport и идеями Craft Anything. Это переписывание, а не форк. Таблица соответствия показывает, что покрыто.