Tianshu Harness CLI
Кодинг-агент для терминала и рабочего стола: не засчитывает «готово» без тестов или diff и работает с DeepSeek, GLM, Kimi, Claude, Codex и Gemini
- 1 149 ★ репозитория
- Последний коммит
- Apache-2.0
Широкий доступ
Почему такой уровень
- Агент сам запускает команды оболочки, правит и откатывает файлы проекта и ходит в сеть к выбранным моделям; в режиме `/yolo` подтверждения отключены
- Ключи провайдеров хранятся на машине, а вход в Codex идет через аккаунт ChatGPT
- Удаленное одобрение с телефона или планшета включается отдельно: сеанс агента становится доступен с другого устройства
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/tianshu-harnessОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Агент сам запускает команды оболочки, правит и откатывает файлы проекта и ходит в сеть к выбранным моделям; в режиме `/yolo` подтверждения отключены
- Ключи провайдеров хранятся на машине, а вход в Codex идет через аккаунт ChatGPT
- Удаленное одобрение с телефона или планшета включается отдельно: сеанс агента становится доступен с другого устройства
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Tianshu Harness — кодинг-агент на TypeScript с терминальным интерфейсом и настольным приложением на одном ядре. CLI ставится из npm командой `npm install -g tianshu-harness` (нужен Node.js 24 или новее) и запускается командой `tianshu`; прежнее имя `rivet` осталось псевдонимом. При первом запуске открывается мастер `/connect`: в нем выбирают провайдера и вставляют ключ API. Дальше агент читает проект, ищет по коду, правит файлы, запускает тесты и использует языковые серверы: переход к определению и поиск ссылок доступны ему как инструменты, а ошибки типов после правки сразу попадают в контекст модели. Главная идея проекта — слой CVM, «когнитивная виртуальная машина». Цель, состояние, доказательства, ресурсы и условия остановки хранятся в нем отдельно от истории диалога, чтобы агент не терял их по ходу долгой сессии. Цель записана в контракте задачи, а в конце агент вызывает `deliver_task` и выдает отчет: статус сдачи (GREEN, YELLOW или RED), измененные файлы, запущенные проверки и поэлементную сверку с задачей. Без доказательств завершение не принимается. 75 хуков времени выполнения перехватывают типичные сбои модели, например сдачу при первом возражении или потерю цели, а отдельный детектор следит за зацикливанием. Для больших задач есть многоагентные режимы: `/scout` для разведки только на чтение, `/team` для параллельной работы, `/council` для обсуждения несколькими ролями и `/galaxy` для трудных задач, где нужно несколько точек зрения сразу. Команда `/domain` переключает один из 16 «звездных доменов», то есть настроек поведения: один сначала взвешивает выгоды и цену, другой считает работу сделанной, только когда исходная проблема больше не воспроизводится. В сценариях работают `tianshu -p "задача"` для разового запроса, `--stream-json` для потока событий NDJSON и `--goal "цель" --budget 50` для автономного запуска без интерфейса.
Для кого. Для разработчиков, которым нужен терминальный или настольный кодинг-агент с проверкой результата и выбором между моделями DeepSeek, GLM, Kimi, Claude, Codex и Gemini или любым адресом, совместимым с OpenAI.
Подходит, если
- Задача большая, и агент обычно теряет цель на середине: контракт задачи и проверка сдачи требуют доказательств, прежде чем принять «готово»
- Нужен один агент для нескольких провайдеров: DeepSeek, GLM, Kimi, MiniMax, Grok и Gemini по ключу, Claude по ключу через прокси `cc-switch`, Codex через вход в аккаунт ChatGPT, а также Ollama или vLLM
- Агента вызывают из сценария или CI: `tianshu --stream-json -p "задача"` отдает события в формате NDJSON, а `--goal` ведет цель без интерфейса
- Чтение и правки надо разделить: `/scout` только исследует код, `/team` делит работу между исполнителями по волнам с проверкой после каждой
- Опасные действия хочется подтверждать с телефона или планшета: настольное приложение поддерживает удаленное одобрение
Не подходит, если
- На машине Node.js ниже 24 и обновить его нельзя: для CLI это жесткое требование
- Вы работаете на Linux с Wayland или с glibc старше 2.35: AppImage рассчитан на glibc 2.35 и новее, Wayland автор пока не проверял
- Вам нужны руководства на русском: основные документы по командам, провайдерам и разрешениям написаны по-китайски, по-английски есть README и часть страниц
- Нужен плагин внутрь Claude Code или Codex: Tianshu Harness — самостоятельный агент со своей средой, поверх чужого он не ставится
Пример запроса к агенту
Прочитай проект, найди первый падающий тест, исправь его и покажи отчет сдачи с командами проверкиОграничения
- Код открыт под Apache-2.0, но два документа о теории CVM и об испытаниях выпущены под CC BY-NC-ND 4.0: их можно цитировать со ссылкой, но нельзя переделывать и использовать в коммерческих целях.
- Главные заявления проверял сам автор. Испытание CVM — две группы по пять задач на одной модели, DeepSeek-V4-Flash, без подсказки убеждений и с ней, оценку ставил Claude Opus 4.7; кэш префикса 95–99% тоже измерен на его сессиях. Независимого повтора нет, а влияние убеждений слабеет на этапе исполнения, как отмечает сам автор.
- Claude подключается только по ключу API через прокси `cc-switch`, модели Codex — через вход в аккаунт ChatGPT по OAuth.
- Сборка для macOS подписана без нотаризации Apple: если система пишет, что приложение повреждено, выполните `xattr -cr /Applications/Tianshu.app`. Для Windows нужен WebView2 версии 120 или новее, для Linux — `libwebkit2gtk-4.1` и `libgtk-3`.
- Проект создан 15 мая 2026 года и быстро меняется: пакет уже на версии 3.32.1. Данные лежат в каталоге `~/.rivet` по старому имени.
Как отключить. CLI удаляется командой `npm uninstall -g tianshu-harness`. Настольное приложение снимается обычным способом: на macOS перенесите Tianshu из «Программ» в корзину, на Windows удалите через список установленных программ, на Linux удалите файл AppImage. Данные и настройки остаются в `~/.rivet`, этот каталог удаляют вручную.
Частые вопросы
Это одна программа с Rivet?
Да. Проект раньше назывался Rivet. Основная команда теперь `tianshu`, а `rivet` остался псевдонимом на тот же вход. При переходе со старого пакета `tianshu-tui` его сначала удаляют командой `npm uninstall -g tianshu-tui`, иначе установка нового пакета остановится с ошибкой `EEXIST`.
Что произойдет, если агент объявит «готово» без проверки?
Вызов `deliver_task` запускает проверку сдачи: завершение должно сопровождаться тестами, diff или командой проверки. Без них работа возвращается на доработку, а механические правки проходят автоматически. После коммита действует второй уровень, проверка изменений.
Где посмотреть, что остановил слой CVM?
`/cvm` показывает перехваты в реальном времени, а `/cockpit` с подкомандами `verify`, `advisory`, `model` и `safety` разбирает проверки, подсказки среды, кэш и уровень опасности. Журнал пишется в `sensorium.jsonl`, путь узнают командой `tianshu logs`; полные записи включаются переменной `RIVET_DEBUG_TELEMETRY=1`.
Какие режимы разрешений есть и что с непроверенными проектами?
Три режима: `/permission supervise` спрашивает перед каждым опасным инструментом, `auto` по умолчанию спрашивает только об опасном, `/yes` или `/yolo` отключает вопросы, но включает песочницу и откат. Проект без доверия не загружает хуки, MCP, память и навыки, пока вы не выполните `/trust` или не передадите `--trust`.
Сохраняется ли память между сессиями?
Знания о проекте пишутся в `.rivet/knowledge/memory.jsonl`, и в новую сессию автоматически попадают только правила и ограничения. `/handoff` готовит передаточный документ из пяти разделов, а двойное нажатие Esc откатывает сессию к выбранной точке.
Можно ли подключить локальную модель?
Да, подойдет любой адрес с интерфейсом OpenAI, в том числе Ollama и vLLM. Кроме основных провайдеров есть 25 готовых пресетов, среди них OpenRouter, SiliconFlow и OpenAI. Модель меняется командой `/model` посреди сессии.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыТерминальный кодинг-агент на Python в манере Claude Code: читает репозиторий, правит файлы, запускает команды, с памятью, подагентами и MCP
Плагин терминального интерфейса для DeepSeek Harness: живая строка статуса, потоковое отображение размышлений, откат по двойному Esc, прогресс контекста и TPS
Открытый терминальный кодинг-агент на TypeScript, заточенный под модели DeepSeek и дешевое кеширование
Linghun — терминальный кодинг-агент с упором на доказательства: читает код перед выводом, проверяет изменения тестами и фиксирует точки git перед правками
Rust SDK для агентов программирования и готовый CLI abstract: REPL, 34 инструмента, MCP, граф памяти, Anthropic и OpenAI, вывод JSON для CI
Repository Harness ставит в репозиторий файл AGENTS.md, карту документов и явно вызываемые скиллы для онбординга, а затем безопасно обновляет их
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| Tianshu Harness (эта запись) | нет | 1 149 | |
| OpenCode | нет | 220 388 | открытый агент для программирования в терминале и на десктопе с режимами разработки и планирования |
| Crush | нет | 28 756 | терминальный агент от Charm: смена модели посреди сессии, LSP, MCP и Agent Skills |
| DeepSeek Harness | да | 258 402 | официальный агент DeepSeek, в котором все функции устроены как плагины |
Коротко о README
В документации описаны установка настольного приложения для macOS, Windows и Linux и терминального CLI, первый сеанс из чтения проекта и многошаговой задачи, три места проверки результата, режимы разрешений, таблица провайдеров и 16 звездных доменов. Рядом лежат руководство пользователя, инструкции по установке, разрешениям, провайдерам и зрению, архитектура, журнал изменений и правила для вкладчиков. Основной текст переведен на английский, японский и корейский. Автор заявляет более 21 тысячи тестов на `node:test`.