Pull to refresh
13
0
Андрей Кондратьев @Andruhon

Software Developer

Send message

В июле я писал о том, что Gaunt Sloth Assistant дошёл до версии 0.9.2. Сегодня мы наконец можем сказать, что вышла версия 1.0.0. В этом релизе мы перевели основную зависимость на LangChain/LangGraph v1, обновили минимальные требования до Node 24/npm 11 и официально объявили CLI готовым к повседневной автоматизации.

Что изменилось с прошлого поста?

  • Ревью теперь завершаются вызовом встроенного рейтингового инструмента. По умолчанию шкала 10/10, порог прохождения 6/10, и оценки ниже 6 заставляют команду review возвращать ненулевой код (non-zero exit code). Если нужен только режим предупреждений, установите commands.review.rating.enabled (и/или commands.pr.rating.enabled) в false в .gsloth.config.*.

  • Профили идентичности стали частью базового сценария: один флаг -i profile-name, и вы переключаете промпты, модели и провайдеры на уровень нужной папки.

  • Middleware теперь сущность первого класса. Можно комбинировать встроенные варианты вроде anthropic-prompt-caching или summarization, подключать собственные объекты на JS, а CLI показывает, что именно выполняется при каждой команде.

  • Глубокое слияние конфигов команд устранило проблему, когда переопределение источника контента стирало настройки рейтинга. Теперь значения по умолчанию сохраняются даже при частичных правках.

  • Мы освежили кеш OAuth, документацию и README, чтобы новичкам было проще стартовать, и параллельно усилили безопасность зависимостей.

Профили идентичности — главный QoL‑апгрейд 1.0.0. Они позволяют мгновенно переключаться между системными промптами, пресетами моделей и наборами инструментов под конкретную задачу. gth pr 555 PP-4242 по‑прежнему читает .gsloth/.gsloth-settings, а gth -i devops pr 555 PP-4242 автоматически берёт конфиг из .gsloth/.gsloth-settings/devops/ со своими промптами и провайдерами.

Нужно поговорить с Jira через MCP? Создайте профиль вроде jira-mcp со своим конфигом и запустите gth -i jira-mcp chat. Укороченный пример:

{
  "llm": {
    "type": "vertexai",
    "model": "gemini-2.5-pro"
  },
  "mcpServers": {
    "jira": {
      "url": "https://mcp.atlassian.com/v1/sse",
      "authProvider": "OAuth",
      "transport": "sse"
    }
  },
  "requirementsProviderConfig": {
    "jira": {
      "cloudId": "YOUR-JIRA-CLOUD-ID-UUID",
      "displayUrl": "https://YOUR-BUSINESS.atlassian.net/browse/"
    }
  },
  "commands": {
    "pr": {
      "contentProvider": "github",
      "requirementsProvider": "jira"
    }
  }
}

Переключение между такими папками теперь — один флаг, поэтому удобно держать отдельные персоны для DevOps, документации или любого удалённого MCP.

Rater — второй крупный прорыв. Ревью всегда содержали текстовый фидбек, но в 1.0.0 оценка стала действенной: мы сохраняем её в хранилище артефактов, передаём в модуль ревью и вызываем setExitCode, чтобы CI автоматически падал при невыполнении цели по качеству. Настройка защит для продакшн‑сервисов занимает теперь секунды и не требует самописных скриптов.

Наконец, реестр middleware и хранилище артефактов дают аккуратные точки расширения на будущее. Можно оборачивать вызовы моделей и инструментов, логировать каждую операцию и при этом оставлять Gaunt Sloth вести те же chat/code/pr/init команды. CLI как и раньше — небольшой TypeScript‑бинарь, который устанавливается через npm или запускается npx gth, но теперь у него архитектура, позволяющая развиваться без костылей.

Хотите попробовать релиз — быстрый путь всё ещё
npm install -g gaunt-sloth-assistant

репозиторий https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant пригодится как справочник и место для issues. Заводите issue, оставляйте фидбек в Discussions или подключайте rater к своему CI и расскажите, как он себя ведёт — буду рад помощи в движении к 1.1.

Спасибо всем, кто помог тестами и несколькими PR.

Tags:
0
Comments0

Back in July I wrote about Gaunt Sloth Assistant hitting 0.9.2. Today we finally get to say version 1.0.0 is out. This is the release where we upgraded our primary dependency the LangChain/LangGraph to v1, moved the runtime baseline to Node 24/npm 11, and declared the tool ready for daily automation work.

What changed since the last post?

  • Reviews concluded with a call to the built-in rating tool. By default the scale is 10/10, the pass threshold is 6/10, and rates below 6 cause the review command to return non-zero exit codes. If you prefer warnings-only mode, set commands.review.rating.enabled (and/or commands.pr.rating.enabled) to false in .gsloth.config.*.

  • Identity profiles are now part of the core workflow, letting you swap prompts, models, and providers per folder with a simple -i profile-name flag.

  • Middleware is now first-class. You can stack built-ins such as anthropic-prompt-caching or summarization, or point at your own JS middleware objects, and the CLI shows what runs alongside every command.

  • Deep merging for command configs fixes the annoying situation when overriding the content provider deleted the rating settings. Defaults now survive partial overrides.

  • OAuth caching, documentation, and the README were refreshed so newcomers can get productive faster, and dependencies were hardened while we were here.

Identity profiles are the everyday quality-of-life feature in 1.0.0. They let me flip between system prompts, model presets, and tool chains per task. gth pr 555 PP-4242 still reads .gsloth/.gsloth-settings, but gth -i devops pr 555 PP-4242 automatically switches to .gsloth/.gsloth-settings/devops/ with whatever prompts and providers that folder declares.

Need to talk to Jira through MCP? Drop a profile such as jira-mcp that contains its own config and call gth -i jira-mcp chat. A trimmed example looks like this:

{
  "llm": {
    "type": "vertexai",
    "model": "gemini-2.5-pro"
  },
  "mcpServers": {
    "jira": {
      "url": "https://mcp.atlassian.com/v1/sse",
      "authProvider": "OAuth",
      "transport": "sse"
    }
  },
  "requirementsProviderConfig": {
    "jira": {
      "cloudId": "YOUR-JIRA-CLOUD-ID-UUID",
      "displayUrl": "https://YOUR-BUSINESS.atlassian.net/browse/"
    }
  },
  "commands": {
    "pr": {
      "contentProvider": "github",
      "requirementsProvider": "jira"
    }
  }
}

Switching between those folders is now just a flag, so I can keep separate personas for DevOps, documentation, or any remote MCP I need to reach.

The rater tool is the other big unlock. Reviews always included qualitative feedback, but 1.0.0 makes the score actionable: we share it with the review module through an artifact store and wire it to setExitCode, so CI can fail automatically when quality is below the goal. Setting guardrails for production services now takes seconds and no longer depends on custom scripts.

Finally, the middleware registry and artifact store give me nicer hooks for future automation. I can wrap model/tool calls, log exactly what ran, and still let Gaunt Sloth handle the chat, code, PR, or init commands it already mastered. The CLI remains a small TypeScript binary you can ship through npm or run via npx gth, but it now has the internal architecture to evolve without hacks.

If you want to try the release, the quickest path is still
npm install -g gaunt-sloth-assistant

The GitHub repo at https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant is there for reference and issues. File an issue, drop feedback in Discussions, or wire the new rater tool into your CI and tell me how it behaves—I would love help pushing 1.1 features.

Huge thanks to all contributors for their PRs and testing.

Tags:
0
Comments0

С моего последнего поста о Gaunt Sloth Assistant мы достигли ряда достижений.

Напоминаю, Gaunt Sloth — это открытый CLI-клиент ИИ с открытым исходным кодом, написанный на TypeScript и распространяемый через NPM.
Он работает на Linux, Windows и Mac. Основная функция — ревью PR и просто кода. Gaunt Sloth компактный, означает, не пртдётся тратить драгоценные минуты на ожидание установки этого инструмента в build pipeline. Репозиторий на GitHub: https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant.

Вырезка из коммента оставленного тощим ленивцем к PR на GitHub
Вырезка из коммента оставленного тощим ленивцем к PR на GitHub

Gaunt Sloth сейчас на версии 0.9.2, и достижения с момента последнего поста включают:

  • Два новых контрибьютора

  • Создание примера workflow GitHub для ревью PR. Этот workflow есть в нашем репо, и мне удалось развернуть его в пайплайне сборки на работе: https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/blob/main/.github/workflows/review.yml (обратите внимание: использование AI-ревью в публичном репо с PR от незнакомцев может привести к утечке ваших API-ключей; do your homework)

  • Добавление возможности запускать тесты и lint, так что Gaunt Sloth может закодить фичу целиком (мы используем его для разработки его собственных функций сейчас. Это полезно как часть тестирования)

  • Улучшение цикла чата (включая функцию retry, для случаев, когда ИИ выдает раздражающее сообщение "overloaded")

  • Подтверждение работы с локальными LLM от Ollama (не все модели работают. Нужна модель с text-generation и tools)

  • Добавление пресета для OpenRouter

  • Мы пересекли отметку в 500 коммитов

Планы

Большая часть документации находится в двух Markdown-документах. Мне все еще нужно найти время или контрибьютора для создания хорошей, годной документации. Мы, вероятно, будем использовать TypeDoc чтобы скомбинировать сгенерированную документацию и Markdown.

Tags:
Rating0
Comments0

Since my last post on Gaunt Sloth Assistant, we have achieved a number of things.

As a reminder, Gaunt Sloth is an open-source CLI AI client, built with TypeScript, distributed via NPM,
and it works on Linux, Windows, and Mac. The primary feature is PR and code reviews, and the fact that it is small means you're not going to spend priceless minutes waiting for this tool to install in your workflow. GitHub repo is https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant

Gaunt Sloth doing code review in GitHub
Gaunt Sloth doing code review in GitHub

Gaunt Sloth is at version 0.9.2 now, and achievements since the last post are:

  • two new contributors

  • created an example GitHub workflow for PR reviews. We have this workflow in our own repo, and I succeeded in deploying it in a build pipeline at work: https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant/blob/main/.github/workflows/review.yml (pay attention, using AI review in public repo with PRs from strangers may leak your API keys, do your homework)

  • added the ability to run tests and lint, so Gaunt Sloth can build a complete feature (we're using it to engineer its own features now. This is helpful as part of testing)

  • improved chat loop (including a retry feature, for when the AI gives you an annoying "overloaded" message)

  • confirmed that it works with local LLMs from Ollama (not all models work. It needs a model with text-generation target and with tool use)

  • Added preset for open router

  • crossed the 500 commits line

Plans

Most of the documentation is in two markdown documents. I still need to find time or contributor to build proper documentation. We're probably going to use typedoc to use combination of generated documentation and markdowns.

Tags:
Rating0
Comments0

Прошло довольно много времени с тех пор, как я в последний раз что-либо публиковал на Хабре, около 10 лет или около того, и сегодня настал день, чтобы поделиться своим небольшим Open Source проектом.

Проект под названием Gaunt Sloth Assistant — это CLI-клиент для ИИ (AI), созданный на TypeScript (LangChain.js), распространяемый через npm и работающий в Linux, Windows и Mac. Пользователь полностью контролирует промпты, и рекомендуется формировать свои собственные системные промпты, но у него также есть и стандартный.

GitHub: https://github.com/andruhon/gaunt-sloth-assistant

NPM: https://www.npmjs.com/package/gaunt-sloth-assistant

В настоящее время Gaunt Sloth имеет dependencies, позволяющие использовать простую конфигурацию JSON для VertexAI, Anthropic, Groq, DeepSeek, OpenA. Теоретически он должен работать с любой моделью, поддерживаемой LangChain; есть даже package для Яндекса, который я никогда не пробовал, но думаю, он должен работать, если установить пакет и предоставите конфиг в JS. OLLAMA? Возможно, это сработает; я никогда не пробовал, но буду признателен, если кто-нибудь поделится своим опытом.

Gaunt Sloth может просматривать запросы на слияние и сопоставлять их с требованиями из задачи Jira или GitHub, просматривать локальные различия, общаться в чате, имеет доступ к файловой системе и может записывать код в файловую систему.

Gaunt Sloth — это универсальный инструмент с рядом полезных возможностей:

  • Просматривает запросы на слияние (например 42) и сопоставляет их с требованиями из задачи Jira или GitHub (например 12).

    • gth pr 42 12

  • Просматривает локальные различия.

    • git --no-pager diff | gth review

  • Предоставляет интерактивный сеанс чата.

    • gth chat

  • Имеет доступ к файловой системе для чтения и записи кода.

    • gth code

Конечно, у него есть MCP и OAuth, так что вы можете подключиться к удаленному MCP, такому как Jira, и создавать и редактировать issues "like a boss".

У него также есть крошечная функция, которая может регистрировать время по задаче Jira, когда она заканчивает проверку PR. Это еще не задокументировано, но вы можете найти пример конфигурации в примечаниях к выпуску или спросить меня в комментариях (насколько я знаю, Jira MCP этого делать не может).

Кроме того, вы можете поставлять простые локальные инструменты ИИ в формате инструментов LangChainJS, такие как этот:

import { tool } from "@langchain/core/tools";
import { z } from "zod";
const multiply = tool(
  ({ a, b }: { a: number; b: number }): number => a * b,
  {name: "multiply", description: "Multiply two numbers", schema: z.object({ a: z.number(), b: z.number(), })}
);

Он очень ориентирован на конфигурацию и рекомендации. У меня есть отдельная конфигурация в каждом проекте, которая настраивает его для меня и предоставляет необходимые рекомендации, чтобы ИИ не напортачил из-за недостатка информации.
Кроме того, у меня есть ряд проектов, не связанных с кодированием. У меня есть отдельный для Jira с подробными инструкциями по работе с ним и еще один для написания текстов.

Зачем?

Несколько месяцев назад я искал CLI-помощника на базе LangChainJS/LangGraphJS и не нашел многого. Был фактор любопытства и другие факторы.

Первоначальным намерением было создать инструмент, в который я мог бы передавать diff и отправлять этот diff вместе с рекомендациями в ИИ, но со временем он развивался, создавались новые функции, и потенциально это можно использовать в качестве агента для кода.

Например gth code, говорите implement requirements.md, чтобы он прочитал файл и начал кодить.

GeminiCli, ClaudeCode? Они не были официально выпущены, и я не знал, что они находятся в разработке. Aider, Goose? Конечно, они вероятно лучше, но в них сложнее вносить свой вклад и добавлять нужные вам функции.

И что?

У меня больше идей по созданию функций, чем времени.
Приветствуются контрибьюторы.
Попробовать его и создать issue или поделиться отзывом — это тоже вклад; PR был бы еще лучше.

Tags:
Total votes 1: ↑1 and ↓0+1
Comments4

It's been a while since I last published anything on Habr, about 10 years or so, and today is the day to share my small open-source project.

The project, called Gaunt Sloth Assistant, is a CLI AI client built with TypeScript (LangChain.js), distributed via npm, and works on Linux, Windows, and Mac. The user is in full control of the prompts, and forming your own system prompt is encouraged, but it has a default one as well.

GitHub: https://github.com/andruhon/gaunt-sloth-assistant

NPM: https://www.npmjs.com/package/gaunt-sloth-assistant

Gaunt Sloth currently has dependencies allowing it to use a simple JSON configuration for VertexAI, Anthropic, Groq, DeepSeek and OpenAI (consequently everyone else who using OpenAI format, e.g. Inception). Hypothetically, it should work with any model supported by LangChain; there's even a package available for Yandex, which I have never tried, but I think it should work if you install the package and provide a JS config. OLLAMA? It might work; I have never tried, but I will appreciate it if someone shares their experience.

The Gaunt Sloth can review pull requests and match them with requirements from a Jira or GitHub issue, review local diffs, chat, has access to the filesystem, and can write code to the filesystem.

The Gaunt Sloth is a versatile tool with a range of helpful capabilities:

  • Reviews pull requests (e.g., 42) and matches them with requirements from a Jira or GitHub issue (e.g., 12).

    • gth pr 42 12

  • Reviews local diffs.

    • git --no-pager diff | gth review

  • Provides an interactive chat session.

    • gth chat

  • Has access to the filesystem to read and write code.

    • gth code

Of course, it has MCP and OAuth, so you can connect to a remote MCP such as Jira and create and edit stories like a boss.

It also has a tiny feature that can log time against a Jira issue when it finishes reviewing a PR. This is not documented yet, but you can find the config example in the release notes or ask me in the comments (as far as I know, Jira MCP can't do that).

Apart from that, you can supply simple local AI tools in LangChainJS tool format, as simple as this:

import { tool } from "@langchain/core/tools";
import { z } from "zod";
const multiply = tool(
  ({ a, b }: { a: number; b: number }): number => a * b,
  {name: "multiply", description: "Multiply two numbers", schema: z.object({ a: z.number(), b: z.number(), })}
);

It is very config and guidelines-driven. I have a separate config in each project, setting it up for me and providing the necessary guidelines, so the AI does not screw up because of a lack of information.
Also, I have a number of non-coding projects. I have a separate one for Jira with detailed instructions on how to work with it and another for writing.

Why, when there is X and Y?

Some months ago, I was looking for a CLI assistant based on LangChainJS/LangGraphJS and didn't find many. There was a factor of curiosity and other factors as well.

The initial intent was to build a tool into which I could pipe a diff and send this diff along with guidelines to the AI, but over time it evolved, new features were built, and potentially, this can be used as a coding agent.

E.g., you type gth code, tell it implement requirements.md, so it would read the file with requirements and go coding.

GeminiCli, ClaudeCode? They were not officially released when I started, and I didn't know they were in development.
Aider, Goose? Sure, they are good and probably better options, but this would be harder to make your contributions and add features you need.

So what?

There are more features I would like to build than I have time for.
Contributors are welcome.
Trying it out and creating an issue, or sharing feedback in Discussions is also a contribution; a PR would be even better.

Tags:
Total votes 1: ↑1 and ↓0+1
Comments0

Information

Rating
Does not participate
Location
Окленд, Auckland, Новая Зеландия
Registered
Activity