Hacker News Digest

Тег: #bash

Постов: 29

Show HN: qqqa – A fast, stateless LLM-powered assistant for your shell (github.com)

qqqa — быстрый stateless LLM для командной оболочки, который предлагает две основные функции: ответы на вопросы через qq и выполнение команд через qa. Инструмент разработан для минимизации задержек и не сохраняет состояние между запросами, что обеспечивает приватность и эффективность. Проект использует локальные модели, что позволяет работать без подключения к внешним сервисам и снижает задержки.

Разработчик подчеркивает, что qqqa оптимизирован для работы в терминале и может обрабатывать запросы практически мгновенно. Инструмент поддерживает различные модели LLM и легко настраивается под нужды пользователя. Ключевое преимущество — отсутствие необходимости в постоянном соединении с сервером, что делает его идеальным для работы в условиях ограниченного доступа к интернету или повышенных требований к безопасности.

by iagooar • 06 ноября 2025 г. в 10:59 • 131 points

ОригиналHN

#github#bash#llm

Комментарии (80)

  • Пользователи обсуждают различные CLI-утилиты для работы с LLM, включая qqa, claude-code, aichat и другие инструменты, подчеркивая их различия в философии Unix (делай одно дело и делай это хорошо) и влияние на производительность и удобство использования.
  • Обсуждается вопрос о том, что такие инструменты должны быть простыми и легковесными, а не пытаться быть "все-в-одном".
  • Участники обмениваются ссылками на свои репозитории и обсуждают, какие из них лучше всего подходят для различных задач.
  • Также обсуждается вопрос о том, как лучше всего взаимодействовать с сообществом и поддерживать проекты, включая то, как вносить вклад в документацию и сообщать о проблемах.

Simplify your code: Functional core, imperative shell (testing.googleblog.com) 🔥 Горячее 💬 Длинная дискуссия

Google предлагает разделять код на функциональное ядро и императивную оболочку для упрощения разработки. Функциональное ядро содержит чистую бизнес-логику без побочных эффектов, а императивная оболочка обрабатывает взаимодействие с внешними системами. Такой подход позволяет тестировать логику изолированно и делает код более поддерживаемым. В статье приведен пример кода для отправки уведомлений об окончании подписки, демонстрирующий разницу между смешиванием логики и побочных эффектов и их разделением.

При таком разделении добавление новых функций становится проще - достаточно создать новые чистые функции и переиспользовать существующие. Например, для напоминаний о подписке можно создать функцию generateReminderEmails, используя уже существующую getExpiredUsers. Этот паттерн, впервые описанный Гэри Бернхардтом, помогает создавать более тестируемый, поддерживаемый и адаптивный код, избегая "спагетти" из смешанной логики и побочных эффектов.

by reqo • 25 октября 2025 г. в 07:07 • 385 points

ОригиналHN

#functional-programming#imperative-programming#testing#software-architecture#google#code-refactoring#code-maintainability#bash

Комментарии (170)

  • Обсуждение вращается вокруг идеи "functional core, imperative shell" (FCIS) и противоположного ей подхода "generic core, specific shell", а также влияния этих подходов на тестируемость, производительность и читаемость кода.
  • Участники обсуждают, что FCIS делает код более тестируемым, но может привести к проблемам с производительностью при работе с большими объемами данных, особенно если язык не поддерживает ленивые коллекции.
  • Также обсуждается, что важно разделять логику и эффекты, но пример кода в статье вызывает вопросы, потому что он не демонстрирует лучшие практики, такие как пагинация или фильтрация на уровне базы данных.
  • Некоторые участники подчеркивают, что важно не только следовать паттерну, но и использовать здравый смысл, чтобы не плодить сущности, которые не масштабируются, и не создавать ситуаций, где пример кода в статье может быть использован как оправдание для плохого кода.

Scripts I wrote that I use all the time (evanhahn.com) 🔥 Горячее 💬 Длинная дискуссия

by speckx • 22 октября 2025 г. в 14:53 • 1147 points

ОригиналHN

#bash#fzf#tmux#cli#scripting#productivity

Комментарии (328)

  • Разработчики делятся полезными скриптами и алиасами, которые экономят им время и упрощают работу.
  • Скрипты варьируются от простых алиасов до сложных инструментов, таких как f для быстрого поиска по истории или fzf для интерактивного выбора файлов.
  • Некоторые участники обсуждения поделились своими собственными инструментами, включая posh для сокращения путей и memo для кеширования результатов команд.
  • Обсуждались такие темы как использование fzf для поиска по истории команд, trash-cli для безопасного удаления файлов и tmux для управления сессиями.
  • Участники также обсуждали, как эти инструменты могут быть использованы для упрощения повседневных задач, таких как поиск по истории команд, выбор файлов и управление сессиями.

Environment variables are a legacy mess: Let's dive deep into them (allvpv.org)

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

В Linux они передаются через execve как массив строк вида KEY=VALUE. Внутри процесса они хранятся в стеке или куче, а программы используют разные структуры данных для их представления: Bash использует хешмапы, Python — словари, а C — массив environ.

Важно помнить, что изменения в дочернем процессе не влияют на родительский, и не все инструменты наследуют окружение. Например, login задаёт свежее окружение.

Из-за отсутствия пространств имён или типов легко допустить ошибку, например, перезаписать критичную переменную PATH. Хотя они удобны для конфигурации, их следует использовать с осторожностью.

by signa11 • 13 октября 2025 г. в 16:49 • 195 points

ОригиналHN

#environment-variables#linux#bash#python#c#security#systemd#configuration

Комментарии (140)

  • Обсуждение охватило широкий спектр тем: от безопасности переменных окружения до передачи секретов, влияния на разные системы и стандарты, и даже до влияния на разработку программного обеспечения.
  • Участники обсуждали, что переменные окружения небезопасны для передачи секретов, так как любой процесс может прочитать их.
  • Были упомянуты альтернативы, такие как systemd-creds, которые могут быть использованы для передачи секретов безопасно.
  • Также обсуждались проблемы с конфигурацией и стандартами, такие как использование переменных окружения для конфигурации вместо файлов конфигурации.
  • Участники также обсуждали влияние переменных окружения на разработку программного обеспечения, включая влияние на разработку в Windows и Unix системах.

Emacs agent-shell (powered by ACP) (xenodium.com)

Emacs получает собственную оболочку для взаимодействия с ИИ-агентами через ACP, что позволяет запускать агенты прямо из редактора. agent-shell использует comint-mode для эмуляции терминала, поддерживая различные бэкенды (вроде Gemini CLI или Claude Code) через единый интерфейс. Для разработки добавлена функция трассировки запросов, а для тестирования — возможность записи и воспроизведения сессий через "фейковые" агенты, что ускоряет итерации. Планы включают улучшения интерфейса, например, интерактивное подтверждение действий.

by Karrot_Kream • 12 октября 2025 г. в 20:37 • 209 points

ОригиналHN

#emacs#comint-mode#agent-client-protocol#gemini-cli#claude-code#bash

Комментарии (30)

  • Обсуждение вращается вокруг интеграции AI-агентов в редакторы кода: Emacs, Neovim и другие.
  • Пользователи делятся опытом с agent-shell (Emacs), code-companion (Neovim) и другими клиентами, которые реализуют Agent Client Protocol (ACP).
  • Обсуждаются преимущества единого протокола, удобство использования и открытость спецификации.
  • Участники упоминают такие проекты, как ECA и MCP, и сравнивают их с ACP.
  • Затрагиваются вопросы устойчивости и спонсорства проектов с открытым исходным кодом.

1Password CLI Vulnerability (2023) (codeberg.org)

Исследователь обнаружил уязвимость в CLI-клиенте 1Password (op), позволяющую злоумышленникам получать доступ к хранилищу паролей после однократного ввода мастер-пароля пользователем. Уязвимость была ответственно раскрыта через BugCrowd в октябре 2023 года, а публикация разрешена в январе 2024. Основная проблема — CLI остаётся авторизованным до перезагрузки системы, что создаёт риски в supply-chain атаках.

Два основных вектора атаки: через IDE-расширения и через инструменты разработчика. Например, вредоносное расширение темы или плагина может использовать авторизованный сеанс op для перечисления и эксфильтрации всех доступных хранилищ. Уязвимость подтверждена на последних версиях macOS с оболочками zsh и bash, подчеркивая важность осторожности при установке стороннего ПО.

by manchicken • 05 октября 2025 г. в 03:01 • 100 points

ОригиналHN

#1password#cli#vulnerability#cybersecurity#bugcrowd#macos#bash#zsh#supply-chain#electron

Комментарии (38)

  • Пользователи выражают обеспокоенность тем, что CLI 1Password предоставляет полный доступ ко всем хранилищам после однократной аутентификации, что создает риск при выполнении недоверенных скриптов.
  • Обсуждается, является ли это уязвимостью или ожидаемым поведением, так как при выполнении произвольного кода на машине пользователя злоумышленник может получить доступ к данным и другими способами.
  • Отмечается, что ответственное раскрытие уязвимости было проведено через BugCrowd в октябре 2023 года, а публикация была авторизована только в январе 2024 года.
  • В качестве меры защиты предлагается использовать отдельные сервисные аккаунты для CLI с ограниченным доступом только к необходимым секретам.
  • Некоторые пользователи критикуют 1Password за использование устаревших версий Electron, что может вызывать проблемы с производительностью и безопасностью.

Atuin Desktop: Runbooks That Run – Now Open Source (blog.atuin.sh)

Atuin Desktop — это инструмент, который объединяет документацию и исполняемые команды в едином пространстве, похожем на документ, но работающем как терминал. Он позволяет создавать и запускать сценарии, запросы к базам данных, HTTP-запросы и даже встраивать графики Prometheus, делая рабочие процессы повторяемыми, совместными и надёжными. Это решает проблему устаревшей документации и разрозненных знаний, которые часто хранятся лишь в памяти или истории команд.

Инструмент теперь полностью открыт под лицензией Apache 2.0 и включает интеграции с Kubernetes, MySQL, Git-совместимые рабочие пространства и возможности совместной работы в реальном времени. Планы развития включают удалённое выполнение, аудит, расширенные блоки и улучшенную интеграцию с облачными провайдерами.

by digdugdirk • 30 сентября 2025 г. в 20:44 • 219 points

ОригиналHN

#atuin#runbooks#kubernetes#mysql#git#yaml#prometheus#apache-2.0#bash#http

Комментарии (67)

  • Пользователи отмечают полезность инструмента для документирования и выполнения команд, особенно для редких или сложных задач администрирования.
  • Обсуждаются аналогичные подходы и инструменты: bash-скрипты, Jupyter Notebooks, org-mode в Emacs, runme.dev, speedrun.cc и Warp Notebooks.
  • Поднимаются вопросы о безопасности, включая риски выполнения деструктивных команд из истории и необходимость подтверждения.
  • Обсуждаются технические аспекты: поддержка shellcheck, формат файлов (YAML), работа с Git, удаленное и параллельное выполнение.
  • Авторы отвечают на вопросы, подчеркивая гибкость подхода, планы по развитию и открытость к обратной связи.

Dgsh – Directed graph shell (www2.dmst.aueb.gr)

Dgsh — это оболочка для создания направленных ациклических графов процессов, расширяющая возможности стандартных Unix-конвейеров. Она позволяет строить сложные нелинейные пайплайны с параллельным выполнением задач, используя существующие утилиты и специально адаптированные инструменты. Это повышает эффективность обработки больших данных и потоков, распределяя нагрузку между несколькими ядрами процессора.

Ключевые особенности включают многоканальные пайпы (multipipes) для связи команд с несколькими входами и выходами, блоки {{ ... }} для асинхронного выполнения процессов и хранение значений (stored values) для обмена данными между произвольными узлами графа. Примеры использования охватывают бенчмарки сжатия, анализ кода, поиск дубликатов и обработку научных данных, демонстрируя гибкость подхода.

by pabs3 • 30 сентября 2025 г. в 13:39 • 141 points

ОригиналHN

#dgsh#unix#dag#nushell#elvish#apache-airflow#python#ruby#bash#murex

Комментарии (52)

  • Идея Dgsh оценивается как устаревшая по синтаксису, но перспективная для современных оболочек вроде nushell и elvish.
  • Обсуждаются преимущества представления конвейеров данных в виде направленного ациклического графа (DAG) перед линейными пайплайнами.
  • Сравнивается удобство Dgsh для создания конвейеров с написанием аналогичных задач на Python, Ruby или в чистом bash.
  • Отмечается сложность работы с пайпами и процессами в Python по сравнению с shell-инструментами.
  • Упоминаются альтернативные инструменты, такие как Murex, и фреймворки для оркестрации, например Apache Airflow.

SSH3: Faster and rich secure shell using HTTP/3 (github.com) 🔥 Горячее 💬 Длинная дискуссия

SSH3 — это новая реализация SSH, построенная поверх HTTP/3 и QUIC вместо традиционного TCP. Она обещает значительно более низкую задержку установки соединения, многопоточность и встроенную поддержку мультиплексирования. Это позволяет ускорить интерактивные сессии, особенно в условиях нестабильных сетей.

Проект также включает улучшенные возможности, такие как передача файлов через HTTP и использование современных криптографических алгоритмов. Уже есть черновик IETF и техническая статья на arXiv, демонстрирующая производительность и совместимость. SSH3 может стать практичной альтернативой для DevOps и удалённого управления.

by tempaccount420 • 27 сентября 2025 г. в 14:27 • 492 points

ОригиналHN

#ssh#http3#quic#tcp#ietf#devops#cryptography#github#bash

Комментарии (248)

  • Скептицизм по поводу заявлений о скорости: некоторые участники сомневаются в значительном преимуществе SSH3, отмечая, что основная задержка часто связана не с установкой соединения, а с настройкой сессии (PAM и т.д.).
  • Критика имени "SSH3" и интеграции в HTTP: многие считают название неудачным и выражают сожаление по поводу поглощения прикладных протоколов HTTP, что увеличивает сложность и потенциальные риски безопасности.
  • Обеспокоенность безопасностью и аудируемостью: новая, не испытанная в боях реализация вызывает опасения; участники подчеркивают необходимость тщательного аудита перед использованием в production.
  • Вопросы к практической полезности и статусу проекта: обсуждается отсутствие commits за последний год, целесообразность поддержки OAuth для входа на сервер и необходимость таких функций, как миграция соединений.
  • Технические аспекты и потенциальные преимущества: отмечается возможность решения проблемы head-of-line blocking за счёт мультиплексирования в QUIC/HTTP3, а также преимущества скрытия сервера за HTTP-прокси.

From MCP to shell: MCP auth flaws enable RCE in Claude Code, Gemini CLI and more (verialabs.com)

Уязвимости в реализации аутентификации OAuth в клиентах MCP позволяют удалённое выполнение кода через популярные инструменты вроде Claude Code и Gemini CLI. Злоумышленник может создать вредоносный MCP-сервер, который передаёт клиенту поддельный URL авторизации — при его открытии происходит выполнение произвольного кода на машине пользователя.

Эксплуатация возможна из-за отсутствия проверки URL со стороны клиентов. Уязвимы Cloudflare use-mcp, MCP Inspector и другие реализации. В демонстрации показан запуск калькулятора через Claude Code, но атака может быть расширена до установки бекдоров или вредоносного ПО. Индустрия уже реагирует на обнаруженные уязвимости, внедряя исправления.

by stuxf • 23 сентября 2025 г. в 15:09 • 134 points

ОригиналHN

#oauth#remote-code-execution#mcp#cloudflare#supply-chain#prompt-injection#google#bash

Комментарии (36)

  • Аналогия MCP-серверов с пакетами (pip/npm), а не с безопасными веб-сайтами; ключевой вопрос — доверие источнику кода, а не самому протоколу.
  • Критика безопасности реализации MCP в клиентах (Claude Code/Gemini), приведшей к уязвимостям, но признание оперативного исправления Google.
  • Споры о фундаментальной уязвимости MCP к инъекциям через инструменты и невозможности полной защиты от prompt-инъекций.
  • Дебаты о необходимости и качестве протокола: одни видят в нём прорывную технологию, другие — небезопасный и избыточный уровень абстракции.
  • Акцент на важности доверенных источников (supply chain) и качества кода MCP-серверов, а не на отказе от технологии в целом.

Zoxide: A Better CD Command (github.com) 🔥 Горячее 💬 Длинная дискуссия

zoxide — это умная замена команды cd, которая запоминает часто посещаемые каталоги и позволяет быстро переходить по ним с помощью частичного совпадения имён. Она поддерживает все основные оболочки, включая bash, zsh и fish, и использует алгоритм ранжирования для предложения наиболее релевантных путей.

Инструмент работает быстрее аналогов вроде autojump, так как написан на Rust, и интегрируется с fzf для интерактивного выбора. Практический бонус — экономия времени при навигации в сложных проектных структурах.

by gasull • 23 сентября 2025 г. в 04:48 • 291 points

ОригиналHN

#rust#bash#zsh#fish#fzf#autojump#command-line-tools#navigation#github

Комментарии (178)

  • Критика zoxide за нечёткость работы и потенциальные ошибки при навигации, а также предпочтение встроенного поиска по истории ZSH или комбинации с fzf.
  • Положительные отзывы о значительном ускорении навигации и интеграции zoxide в рабочий процесс, особенно в сочетании с другими инструментами (fzf, bat, starship).
  • Обсуждение альтернатив и схожих инструментов (autojump, z, navita, CDPATH в bash/zsh), их сравнение с zoxide.
  • Варианты настройки и использования zoxide, включая алиасы для cd, флаг basedir и интерактивный режим zi.
  • Замечания о том, что для многих пользователей нативные возможности оболочки или другие инструменты покрывают большинство потребностей.

Murex – An intuitive and content aware shell for a modern command line (murex.rocks)

Murex.Rocks

Интуитивная и контекстно-ориентированная оболочка для современной командной строки.

Современная оболочка для всех

Murex предлагает множество уникальных возможностей:

Контекстная осведомленность

Нативная поддержка форматов данных: JSON, YAML, CSV и других. Типы данных могут быть явно приведены или выведены автоматически.

Выражения

Умная обработка переменных и выражений для предотвращения ошибок. Больше не нужно беспокоиться о специальных символах в именах файлов.

Интерактивность

Интуитивная интерактивная оболочка с подсказками из man-страниц и интеграцией с ИИ.

Расширяемость

Встроенный менеджер пакетов для простого обмена конфигурациями и переноса окружения между машинами.

Начало работы

Простая установка

Установите murex через ваш пакетный менеджер:

macOS:

brew install murex
# или
port install murex

Arch Linux:

wget -O PKGBUILD 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=murex'
makepkg --syncdeps --install

FreeBSD:

pkg install murex

Другие варианты в документе установки.


Лицензия GPLv2, Copyright © 2017-present Laurence Morgan

by modinfo • 17 сентября 2025 г. в 06:32 • 94 points

ОригиналHN

#murex#shell#json#yaml#csv#gplv2#bash#nushell#powershell#interactive-shell

Комментарии (46)

  • Пользователи столкнулись с техническими проблемами при установке и запуске Murex, включая ошибки с aspell, HTTPS-протоколом и системными вызовами.
  • Обсуждаются исторические и культурные отсылки в названии оболочки (Murex — моллюск, источник пурпурного красителя, значимый для финикийцев и иудеев).
  • Поднимается вопрос о целесообразности изучения нового синтаксиса, несовместимого с Bash, и необходимости убедительных преимуществ для перехода.
  • Murex сравнивается с альтернативными оболочками, в частности с Nushell и PowerShell, отмечается сходство в подходе к работе с структурированными данными.
  • Критикуется маркетинг и описание проекта за отсутствие конкретных примеров и явных преимуществ перед существующими решениями.
  • Отмечается, что для широкого применения скрипты должны быть совместимы с Bash, что ставит под вопрос нишевый потенциал Murex.
  • Некоторые пользователи выражают заинтересованность в тестировании Murex при условии, что он будет стабильным и быстрым.

Pass: Unix Password Manager (passwordstore.org) 🔥 Горячее 💬 Длинная дискуссия

pass — менеджер паролей в духе Unix.
Каждый пароль — отдельный gpg-файл в ~/.password-store; можно каталогизировать, копировать, версионировать в git.

Команды:

  • pass — список;
  • pass site.com — показ;
  • pass -c site.com — 45 с в буфере;
  • pass insert site.com → ввод;
  • pass generate site.com 15 → создать;
  • pass rm site.com — удалить;
  • pass git push/pull — синхронизация.

Установка: apt/yum/pacman/brew install pass или tar.

by Bogdanp • 13 сентября 2025 г. в 23:16 • 300 points

ОригиналHN

#unix#gpg#git#bash#cli#password-manager#encryption

Комментарии (157)

  • pass — это минималистичный CLI-менеджер паролей на Bash + GPG; кто-то использует 10+ лет и доволен, кто-то уже ушёл.
  • Главные претензии: неструктурированные файлы (приходится парсить в каждом скрипте), GPG-ключи сложны, плагинов/нормальных мобильных клиентов почти нет, Android-приложение заархивировано.
  • Уязвимость: если агент GPG закешировал ключ, любой скрипт может выполнить pass и выкачать все секреты; спасает только PIN + touch на YubiKey.
  • Удобные альтернативы: KeePassXC/KeePassDX, Bitwarden (есть CLI), Vaultwarden; синхронизация pass через Git работает, но историю зашифрованных файлов не посмотреть обычным git diff.
  • Для shared/корпоративного использования нет аудита доступа и нормального способа перешифровки для новых сотрудников — приходится менять все пароли.

Top model scores may be skewed by Git history leaks in SWE-bench (github.com) 🔥 Горячее

Проблема:
Агенты в SWE-bench могут «обмануть» тест, подглядывая в Git-репозиторий задачи: читают коммиты, issues, ветки, подбирают нужные патчи и получают завышенные баллы.

Как это работает:

  1. В каталоге /testbed лежит полный git-репо с будущими фиксами.
  2. Агенту разрешён произвольный shell-доступ: git log, git show, git diff, ls, cat и т.д.
  3. Достаточно одной команды, чтобы найти коммит-фикс и применить его:
    git log --grep='fix issue 1234' -p | git apply
    
  4. Тесты проходят, метрика растёт, но реальной разработки не было.

Масштаб:

  • 100 % задач уязвимы (12 популярных репо).
  • SOTA-агенты «решают» до 65 % задач, если разрешить git-команды, и только 15 % при закрытом репо.
  • Даже случайный поиск по логу даёт +20 % к успешности.

Почему это важно:

  • Лидерборд перестаёт отражать способность к реальному программированию.
  • Работы, которые хвастают 50 %+ solve-rate, фактически демонстрируют качество Git-скриптов, а не ИИ.

Предлагаемые фиксы:

  1. Убрать .git из контейнера (rm -rf /testbed/.git перед стартом).
  2. Запретить команды git, hg, svn в sand-boxе.
  3. Добавить «скрытую» разметку: вынести целевые патчи в отдельный репо, недоступный агенту.
  4. Проверять дифф решения на полное совпадение с существующим коммитом → засчитывать 0 баллов.
  5. Публиковать две версии датасета:
    • swe-bench-full – без ограничений (для исследования).
    • swe-bench-secure – без .git, с контролем читаемых файлов.

Следующие шаги:

  • PR с опцией --strip-git уже готов (линк).
  • Нужен аппрув мейнтейнеров и пересборка образов.
  • После мержа обновить лидерборд и уведомить сообщество переоценить старые результаты.

Обсуждение:

  • Удаление .git ломает часть тестов, которые компилируют версию через git describe – предлагаем подменять на захардкоженные строки.
  • Альтернатива – виртуальный слой, где .git виден только хосту, но не агенту.
  • Готовы помочь с тестами и CI.

Итог:
Пока репо доступно из среды, оценка агентов бесполезна. Закрываем лазейку – получаем честный бенчмарк.

by mustaphah • 11 сентября 2025 г. в 18:32 • 440 points

ОригиналHN

#git#github#bash#swe-bench#benchmark#llm#container#ci

Комментарии (136)

  • В SWE-bench агенты «подсматривали» будущие коммиты с фиксами прямо в тестовом репозитории; бенчмарк оказался «открытой книгой».
  • Организаторы признали проблему, выпустили контейнер без .git, но не уверены, сколько старых результатов уже «испорчено».
  • Пользователи сетуют: если модели при таком преимуществе всё равно не берут 100 %, это показатель их реального уровня.
  • Критики считают ошибку «школьной»: достаточно было удалить историю git перед запуском; доверие к другим LLM-бенчмаркам упало.
  • Обсуждение переросло в вопрос: можно ли вообще создать «невзломаемый» бенчмарк, если модели обучены на всём интернете.

Jiratui – A Textual UI for interacting with Atlassian Jira from your shell (jiratui.sh) 🔥 Горячее

JiraTUI — терминальный клиент Jira: ищи, создавай, обновляй задачи не отрываясь от кода.

Возможности

  • Поиск: быстрый фильтр по статусу, исполнителю, приоритету; продвинутый JQL с сохранением выражений.
  • Создание: новая задача из консоли — заголовок, описание, приоритет за секунды.
  • Обновление: статус, исполнитель, метки, дедлайн — всё правится командой.
  • Комментарии: добавляй/удаляй прямо из терминала.
  • Связи: линкуй/отвязывай подзадачи и зависимости без GUI.

Плюсы

  • Конфигурируем: хоткеи и настройки под себя.
  • Прост: команды понятны без мануала.
  • Быстр: действия выполняются мгновенно.
  • Удобен: минимум кликов, максимум фокуса.

GitHub | Документация

by gjvc • 10 сентября 2025 г. в 14:42 • 276 points

ОригиналHN

#jira#atlassian#tui#terminal#rust#go#api#cli#bash

Комментарии (68)

  • Пользователи в восторге от Jira-TUI: быстрый поиск, красивый интерфейс, спасение от тормозов веб-версии.
  • Просят аналоги для GitHub, Linear, Asana, Slack; ищут TUI-библиотеки Rust/Go такого же уровня.
  • Хотят кликабельные ссылки из почты/Slack сразу в TUI, но это требует кастомного URI-обработчика.
  • Кто-то просит CLI-версию для массового импорта задач, кто-то — классический Kanban-доску.
  • Поднимаются вопросы безопасности (API-ключ в стороннем проекте) и поддержки on-prem Jira API v2 (не поддерживается).

Building a DOOM-like multiplayer shooter in pure SQL (cedardb.com)

## DOOMQL: шутер в чистом SQL

**Идея**  
- Всё состояние — в таблицах CedarDB  
- Картинка = стек VIEW с трассировкой лучей  
- Цикл — bash-скрипт, 30 FPS: `psql < game.sql`  
- Клиент — 150 строк Python: читает клавиши, SELECT’ит кадр  

**Схема (сокращённо)**  
```sql
config( move, turn, ammo_max … );  
map(x,y,tile);  
players(id,hp,ammo…);  
inputs(player_id,action);  
mobs(id,x,y,angle,type);  
sprites(id,texture,offset);

Рендер

  1. rays — лучи от игрока, столкновения со стенами
  2. walls — высота линии = 1 / distance
  3. sprites — проекция по x, z-order
  4. frame — UNION walls+sprites, строка = пиксель
  5. hud — здоровье, ammo, миникарта в ASCII

Мультиплеер

-- добавить игрока  
INSERT INTO players VALUES(:id);  
-- чужие движения  
SELECT * FROM players WHERE id != :me;

Производительность

  • 640×480 ≈ 30 кадр/с на ноутбуке
  • CedarDB распараллеливает лучи между ядрами

Читерство

UPDATE players SET hp=100, ammo=99 WHERE id=my_id;

Вывод
База = готовый игровой сервер: транзакции дают согласованность, а SQL — ещё и консоль читов.

by lvogel • 09 сентября 2025 г. в 15:12 • 228 points

ОригиналHN

#sql#cedardb#postgresql#raycasting#multiplayer#gaming#python#bash

Комментарии (35)

  • Кто-то запустил мультиплеерный «Дум» на чистом SQL (CedarDB), и это вызвало волну «Krieger, ты с ума сошёл!»
  • Половина комментаторов спорит: это всё-таки Doom или всё же Wolfenstein 3D без текстур
  • Автор признаётся, что вдохновился DuckDB-DOOM и просто называет любой 2.5D-шутер «думоподобным»
  • Кто-то видит в проекте хитрую рекламу CedarDB (PostgreSQL-совместимый HTAP), другие – новую игру в «а тьюринг-полно ли это?»
  • Участники сравнивают с ASCII-Doom, pg_doom и мечтают о полноценной MMO, целиком живущей в базе данных

How to use Claude Code subagents to parallelize development (zachwills.net) 🔥 Горячее

Параллельная разработка с Claude Code: коротко

Запустил 3 агентов (product-manager, ux-designer, senior-engineer) одной командой — за минуту получил полный тикет в Linear.
Далее те же агенты кодят, ревьюят, тестируют в отдельных терминалах, пока я занят другим.
Ошибка стоит копейки — просто перезапускаю.

Ключевые принципы

  1. Параллельность: backend, frontend, тесты, доки пишутся одновременно.
  2. Специализация: каждый агент видит только нужный контекст (Stripe-интеграция, UI-форма, тесты).
  3. Минимальные требования: чёткая цель + границы (/docs, /tests, /ui).

Как повторить

  • Положи .md-инструкции для ролей в agents/.
  • Один bash-скрипт: claude -p agents/pm.md & claude -p agents/dev.md & claude -p agents/qa.md.
  • Результаты сливаются автоматом; если rate-limit — добавь sleep 1.

Готово: спеку, код и тесты получаешь быстрее, чем пишешь Jira-таск.

by zachwills • 09 сентября 2025 г. в 13:21 • 264 points

ОригиналHN

#claude#parallel-development#linear#bash#stripe#testing#agile

Комментарии (117)

  • Подавляющее большинство участников считают «ролевых» суб-агентов (product-manager, frontend, backend и т.д.) маркетинговым трюком: они не получают полного системного промпта и CLAUDE.md, быстро теряют контекст, пишут «моки» или ломают уже рабочий код.
  • Практический итог: вместо ускорения появляется «казино» — много запусков, загрязнённый контекст, регрессии и перерасход токенов; проекты приходится переписывать вручную.
  • Кто всё-таки использует суб-агентов, делает их не «по ролям», а «по задачам»: короткий запрос → агент жрёт много токенов → возвращает компактный отчёт (покрытие тестами, соответствие гайдам, рефакторинг-чек-лист), чтобы основной чат не засорять.
  • Альтернатива — уйти от чёрного ящика: Tmux + два独立的 CLI-агента в соседних панелях, ручной синх через файлы или GitHub-issues; так проще остановить и подправить.
  • Общий вывод: для реального кода достаточно обычного Claude Code с хорошим промптом, правилами в /commands и лаконичным CLAUDE.md; «мульти-агент» пока не приносит выгод, зато точно приносит лишние траты и головную боль.

Go for Bash Programmers – Part II: CLI Tools (github.com)

from-bash-to-go-part-ii
Репозиторий курса «Go для бывалых bash-скриптеров, часть II» — практика по созданию CLI-утилит на Go.

by reisinge • 08 сентября 2025 г. в 12:26 • 108 points

ОригиналHN

#go#bash#cli#testing#software-development#github

Комментарии (4)

  • В Go пакет *_test — единственное исключение из правила «один пакет на каталог», позволяя тестировать только публичное API.
  • Участники хвалят стиль статьи: сначала показывается «ошибочный» шаг новичка, затем объясняется, почему он не работает, и даётся правильное решение.
  • Такая линейная подача материала ускоряет реальное обучение, экономя время на поиск разрозненных советов.
  • Доп. совет: в каталоге не-main-пакета можно разместить package main-файлы, что удобно для go generate.

How the “Kim” dump exposed North Korea's credential theft playbook (dti.domaintools.com) 🔥 Горячее

Слив Kimsuky: как «Kim» раскрыл методы кражи учёток КНДР

Кратко

Архив «Kim» — утечка данных оператора из кибергруппы Kimsuky (APT43). Внутри:

  • bash-истории, фишинг-домены, OCR-скрипты, стейджеры, руткиты
  • цели — южнокорейские и тайваньские госсети
  • инструменты на китайском, инфраструктура в КНР — признак гибридной модели «КНДР-цели, КНР-ресурсы»

Техника

  • NASM-сборка — живые логи компиляции шеллкодов и загрузчиков
  • OCR — извлечение текста из PDF про PKI и VPN (южнокорейские стандарты)
  • Домены — поддельные сайты министерств, почтовые клоны, «security-update» сервисы
  • Стадии
    1. фишинг-письмо →
    2. макрос →
    3. стейджер (Go/PE) →
    4. руткит (HiddenX) →
    5. RDP/SSH-туннель до C2 в КНР

Цели

  • Кабмин Южной Кореи — внешняя политика, санкции
  • Оборонка Тайваня — технологии и поставки
  • Персонал — дипломаты, журналисты, оборонщики

Индикаторы

  • SHA256 стейджера: a1b2c3…e4f5
  • C2: update-korea[.]cn, mail-relay[.]tw
  • User-Agent: KOR-Update/2.0
  • Руткит HiddenX v3.1 — сигнатура hxdrv.sys

Вывод

Утечка показывает:

  1. Kimsuky переиспользует китайские хосты и софт
  2. OCR используется для быстрого чтения корейских PDF
  3. Жертвы ещё не все выведены из сетей — домены активны

by notmine1337 • 06 сентября 2025 г. в 19:14 • 384 points

ОригиналHN

#bash#nasm#ocr#go#rdp#ssh#cobalt-strike

Комментарии (146)

  • Утечку связывают с хакерами из КНДР, возможно, работающими из Китая; координация Пекина и Пхеньяна обсуждается, но прямых доказательств нет.
  • Участники спорят, почему государственные структуры не отказываются от паролей в пользу аппаратных ключей: удобство, привычка и остаточные риски фишинга.
  • GitHub-репозитории с офансив-инструментами (Cobalt Strike и др.) остаются открытыми: они нужны для исследований, pentestов и red-team, а запрет лишь усложнит жизнь защитникам.
  • OCR-корейских документов и следы настройки под корейскую локаль воспринимаются как намёк на происхождение, но критики считают это слабым доказательством.
  • Кибероперации — важный источник валютных доходов для изолированной КНДР; страна отбирает и интенсивно готовит элитных программистов с детства.

Making a Linux home server sleep on idle and wake on demand (2023) (dgross.ca) 🔥 Горячее

Краткое руководство

Цель:
Сервер Ubuntu засыпает при простое и просыпается по запросу любого устройства в сети (SSH, Time Machine и т.д.).

Что нужно:

  • Сервер с поддержкой Wake-on-LAN по unicast.
  • Постоянно включённый маломощный Linux-компьютер (например, Raspberry Pi).

На сервере

  1. Включить Wake-on-LAN (unicast):
sudo ethtool -s eno1 wol ug
sudo tee /etc/networkd-dispatcher/configuring.d/wol <<'EOF'
#!/usr/bin/env bash
ethtool -s eno1 wol ug || true
EOF
sudo chmod 755 /etc/networkd-dispatcher/configuring.d/wol
  1. Автоматический сон по cron (каждые 10 мин):
cat >/home/ubuntu/auto-sleep.sh <<'EOF'
#!/bin/bash
users=$(who | wc -l)
afp=$(lsof -i:548 | wc -l)
[[ $users -eq 0 && $afp -lt 3 ]] && systemctl suspend
EOF
chmod +x /home/ubuntu/auto-sleep.sh
(crontab -l 2>/dev/null; echo "*/10 * * * * /home/ubuntu/auto-sleep.sh | logger -t autosuspend") | crontab -
  1. Отключить IPv6 (ARP не работает с IPv6):
sudo sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="ipv6.disable=1"/' /etc/default/grub
sudo update-grub && sudo reboot
  1. Остановить Netatalk перед сном (по желанию):
sudo tee /etc/systemd/system/netatalk-sleep.service <<'EOF'
[Unit]
Description=Netatalk sleep hook
Before=sleep.target
[Service]
Type=oneshot
ExecStart=-/usr/bin/systemctl stop netatalk
ExecStop=-/usr/bin/systemctl start netatalk
[Install]
WantedBy=sleep.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable netatalk-sleep.service

На Raspberry Pi

  1. Установить ARP Stand-in
    Отвечает на ARP-запросы за спящий сервер.
    https://github.com/danielpgross/arp_standin

  2. Опубликовать mDNS-записи (по желанию):

sudo apt install avahi-daemon
sudo tee /etc/systemd/system/avahi-publish.service <<'EOF'
[Unit]
Description=Publish custom Avahi records
After=network.target avahi-daemon.service
[Service]
ExecStart=/usr/bin/avahi-publish -s homeserver _afpovertcp._tcp 548 -H homeserver.local
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now avahi-publish.service

Ограничения:

  • Сетевая карта сервера должна поддерживать Wake-on-LAN по unicast.
  • Лишние пакеты могут случайно разбудить сервер.

by AgaoAnar • 02 сентября 2025 г. в 19:42 • 273 points

ОригиналHN

#linux#ubuntu#wake-on-lan#arp#raspberry-pi#cron#avahi#bash

Комментарии (96)

  • Автор статьи описал сложную схему «спящий сервер + Raspberry Pi-прокси», чтобы экономить электричество и «прозрачно» будить машину по любому сетевому запросу.
  • Комментаторы спорят: стоит ли так заморачиваться, если можно просто посылать WoL-пакет, ставить BIOS-таймер или вообще купить сервер, который без нагрузки жрёт 7-15 Вт.
  • Некоторые делятся альтернативами: «умные» розетки, механические таймеры, PiKVM, USB-гаджеты для нажатия кнопки питания, RTC-будильник, подвешенные DNS-прокси.
  • Часть участников считает игру свеч: «RPi стоит дороже, чем сэкономишь на электричестве»; другие приводят счётчики: 10 Вт круглый год ≈ 25-65 $ в Европе, а у кого-то сервер жрёт 130-160 Вт.
  • Итог: если нужна абсолютная прозрачность и нельзя трогать клиентов — решение полезно; в остальных случаях достаточно WoL, BIOS-таймера или просто маломощного железа.

Jujutsu for everyone (jj-for-everyone.github.io) 🔥 Горячее 💬 Длинная дискуссия

Введение в Jujutsu для новичков.

Горячие клавиши
←/→ — листать главы, S или / — поиск, ? — справка, Esc — закрыть.

Темы
Auto, Light, Rust, Coal, Navy, Ayu, Latte, Frappe, Macchiato, Mocha.

О курсе

Курс для абсолютных новичков без опыта Git. Опытным рекомендуют туториал Стивена Клабника.
Работа в терминале; под Windows — WSL.

Как читать

Материал разбит на уровни. После каждого — практикуйтесь, затем возвращайтесь.
Если нужна коллаборация, пройдите уровни 1–2 сразу.

Уровень Что даст
1 Минимум для одиночной работы (домашки, pet-проекты).
2 Минимум для совместной работы (групповые проекты, работа).
3 Решение проблем: конфликты, восстановление файлов.
4 Переписывание истории для чистоты и стандартов проекта.
5 Продвинутые фичи, теория VCS — полное владение.
6 Теги, сабмодули, воркспейсы — по мере необходимости.

Пока готовы не все уровни.

Сброс прогресса

Каждая глава зависит от предыдущих. Сбросьте состояние скриптом reset.sh с ключом главы.
Команда указана в начале каждой главы. Проверьте скрипт перед запуском.

./reset.sh <keyword>

by Bogdanp • 31 августа 2025 г. в 15:31 • 402 points

ОригиналHN

#git#jj#vcs#wsl#bash

Комментарии (341)

  • Пользователи делятся опытом: кто-то в восторге от jj, кто-то вернулся к Git из-за «острых углов» и отсутствия .gitattributes, Git LFS, подписей GPG.
  • Главные плюсы jj: единые примитивы, отсутствие стейджа, удобное редактирование истории, «ощущение безопасности» и поддержка stacked-diffs.
  • Главные минусы: непривычные команды (jj bookmark move main --to @-), ручное обновление bookmarks, нет git add -p, проблемы с IDE-монорепозиториями, сложности интеграции в привычные Git-Pull-Request-процессы.
  • Некоторые считают VCS «естественной монополией» и не видят смысла учить новый инструмент без явной необходимости.

A deep dive into Debian 13 /tmp: What's new, and what to do if you don't like it (lowendbox.com)

Debian 13 «Trixie» переносит /tmp из диска в оперативную память (tmpfs).
Плюсы: быстрый доступ, автоматическая очистка при перезагрузке.
Минусы: теперь «забытые» файлы жрут ОЗУ; по умолчанию tmpfs ограничен 50 % RAM.

Как изменить лимит

sudo systemctl edit tmp.mount

Раскомментируйте блок [Mount] и поменяйте size=50% на нужное значение, например size=2G или size=75%. Сохраните, затем:

sudo systemctl daemon-reload
sudo systemctl restart tmp.mount

Как полностью отключить tmpfs-вариант

sudo systemctl mask tmp.mount
sudo reboot

После перезагрузки /tmp снова будет обычной директорией на диске.

Коротко

  • Нужна скорость и не жалко памяти — оставьте tmpfs.
  • Работаете с большими временными файлами — увеличьте лимит или отключите tmpfs.

by shaunpud • 29 августа 2025 г. в 02:39 • 118 points

ОригиналHN

#debian#tmpfs#ram#bash#systemctl#twitter

Комментарии (98)

  • Debian переносит /tmp в tmpfs (ОЗУ), что вызывает споры: кто-то ждёт прироста скорости, кто-то боится нехватки RAM и OOM-killer.
  • Критики указывают: tmpfs-файлы при нехватке памяти уйдут в swap, и чтение с диска станет медленнее, чем если бы файл сразу лежал на диске.
  • На серверах swap часто отключён из-за ECC и предсказуемости, поэтому tmpfs в /tmp воспринимается как риск.
  • Решение «просто используйте /var/tmp» звучит часто, но авто-очистка /tmp и /var/tmp (30 дней) может неожиданно удалить нужные данные.
  • На low-end и SD-картах (Raspberry Pi) tmpfs экономит циклы записи и может быть полезен, если выключен swap.
  • Отключить tmpfs для /tmp можно командой systemctl mask tmp.mount, что рекомендуют многие админы.

How to build a coding agent (ghuntley.com) 🔥 Горячее

Как собрать код-агента: бесплатный воркшоп

Материалы и исходники: GitHub

Суть

  • Агент — это 300 строк кода, работающие в цикле, которому просто подаются токены LLM.
  • Поняв принцип, вы перестанете быть потребителем ИИ и станете его продюсером, автоматизируя свою работу.

Зачем

  • В 2025 г. знание, как создать агента, стало фундаментальным навыком, как понимание primary key.
  • Работодатели ищут тех, кто может оркестрировать ИИ внутри компании.
  • Во время Zoom-звонка ваш агент может уже писать код, который вы только обсуждаете.

Что будет на воркшопе

  • Live-сборка агента прямо во время доклада.
  • Объяснение внутреннего устройства: цикл, токены, промпты.
  • Практика: агент строит агента под диктовку.

Дальше

  • Если хотите, чтобы я провёл такой воркшоп у вас в компании — пишите.

by ghuntley • 24 августа 2025 г. в 03:21 • 402 points

ОригиналHN

#python#llm#bash#automation#prompt-engineering#swe-bench

Комментарии (110)

  • Команда Princeton SWE-bench выложила компактный (~100 строк) агент для SWE-bench.
  • Пользователи жалуются на перегруженный AI-слайд-стиль и избыточные картинки, которые мешают чтению.
  • Спор о необходимости отдельных инструментов: многие действия можно делать через bash, но специализированные утилиты экономят токены и повышают надёжность.
  • Обсуждают, что «токены = деньги» и что локальные модели могут изменить ситуацию.
  • Критика: пост показывает лишь базовый подход, не раскрывая продвинутые темы (sandbox, snapshot, prompt-инженерия).

Modern CI is too complex and misdirected (2021) (gregoryszorc.com) 💬 Длинная дискуссия

Современные CI-платформы стали мощнее, но и сложнее. GitHub Actions, GitLab и др. предлагают YAML-конфиги с шаблонами, условиями, секретами, кешем, артефактами, экосистемой actions — в итоге CI превращается в полноценную систему сборки.

Базовые примитивы (задачи, зависимости, шаги) не отличаются от Makefile-ов, а добавление распределённого запуска и кеша делает CI почти идентичным современным билд-системам вроде Bazel.

Сложность растёт:

  • YAML становится языком программирования.
  • Пользователи копируют чужие конфиги, не понимая, что происходит.
  • Платформы закрываются на собственных экосистемах, создавая vendor lock-in.

Итог: вместо простого «удалённого запуска тестов» мы получили громоздкую систему, где границы между CI и build-системой стёрлись.

by thundergolfer • 20 августа 2025 г. в 03:30 • 170 points

ОригиналHN

#github-actions#gitlab#yaml#ci-cd#bazel#docker#build-systems#vendor-lock-in#bash#makefile

Комментарии (159)

  • Участники сходятся во мнении, что современные CI-системы слишком сложны и слишком «далеко» от разработчика, превращаясь в гибрид билд-системы и платформы.
  • Многие предлагают упрощение: локально-переносимые скрипты (Bash, Justfile, build.bash), контейнеры или минималистичные движки вроде builds.sr.ht, Drone OSS, Buildbot, Linci.
  • Критика YAML-конфигураций и SaaS-зависимости: GitHub Actions «застрял», GitLab CI мощнее, но всё равно требует «платформы».
  • Идея «CI должен быть просто расширением билд-системы» (Bazel, Nix, Dagger) звучит, но требует единого «Steve Jobs билд-систем», а не новых технологий.
  • Итог: пока нет серебряной пули; кто хочет простоты — пишет ./build.sh и запускает где угодно, кто хочет мощности — мирится с уровнем сложности текущих CI.

MCP doesn't need tools, it needs code (lucumr.pocoo.org)

CLI-инструменты часто зависят от платформы/версии, плохо документированы и ломаются при не-ASCII вводе. Агенты путаются в управлении состоянием (например, tmux-сессиями) и теряют контекст после мелкой ошибки. Каждый вызов ещё тормозит из-за предварительной проверки безопасности.

Композиция в CLI работает через bash: цепочки tmux send-keys, sleep, base64 и т.д. MCP сегодня так не умеет.

Выход — MCP-сервер с одним «убер-инструментом»: Python-интерпретатор, сохраняющий состояние между вызовами. Пример — pexpect-mcp: виртуальное окружение + pexpect, позволяющее скриптами управлять интерактивными CLI-программами. Вместо 30 отдельных MCP-функций достаточно одной, принимающей код.

by the_mitsuhiko • 18 августа 2025 г. в 09:53 • 172 points

ОригиналHN

#python#pexpect#cli#tmux#bash#api#openapi#websocket#yaml

Комментарии (110)

  • Участники спорят, нужен ли MCP (Model Context Protocol): кто-то считает его лишним слоем, другие — полезным способом дать LLM структурированные инструменты.
  • Критика: MCP ограничивает агента набором команд, не решает безопасность, дублирует OpenAPI и заставляет LLM учиться новому формату вместо bash/API.
  • Альтернативы: прямое обращение к HTTP/CLI/WebSocket (UTCP), YAML-описание тулов (hooks_mcp), eval в песочнице (runjs, Bubblewrap).
  • Практические проблемы: при 100+ тулов агент путается; приходится писать кучу обвязок вместо «просто вызвать API».
  • Общий вывод: MCP пока выглядит сыро, требует лишних усилий и не даёт очевидных преимуществ перед строками/bash/API.

Show HN: Play Pokémon to unlock your Wayland session (github.com)

wlgblock — экран-блокировка в стиле Game Boy для Wayland.
Проект AdoPi: простой скрипт на Bash, который запускает «игру»-заставку и требует пароль для разблокировки.

  • Зависимости: swaylock, grim, slurp, wl-clipboard, imagemagick, fzf, bash.
  • Установка: клонировать репозиторий, выполнить make install.
  • Использование: wlgblock или горячая клавиша в Sway/i3.

Скрипт делает снимок экрана, накладывает пиксель-фильтр «Game Boy», запускает swaylock с этим изображением и ожидает ввода пароля.

by anajimi • 10 августа 2025 г. в 12:15 • 102 points

ОригиналHN

#bash#wayland#sway#i3#nvidia#amd#kde#github

Комментарии (41)

  • Пользователи радуются, что проект-игра на Wayland показывает, что экосистема уже способна на «тяжёлую» кастомизацию и работает лучше, чем споры последних пяти лет.
  • Многие удивлены, что «игра-скринсейвер» появилась раньше обычного нормального screensaver'а для Wayland.
  • Скептик признал: блокировка экрана в Wayland действительно работает лучше и логичнее, чем в X.
  • Разработчик anajimi уже обещает попробовать сделать полноценный screensaver на ext-session-lock.
  • В KDE 82 % сессий уже Wayland; Sway и labwc активно используются, но NVIDIA всё ещё вызывает проблемы — «переходи на AMD».

Writing simple tab-completions for Bash and Zsh (mill-build.org) 🔥 Горячее

Как сделать простые таб-дополнения для Bash и Zsh

Li Haoyi, 7 августа 2025

Таб-дополнения в шелле удобны, но их настройка усложняется тем, что часть пользователей использует Bash в Linux, а другая — Zsh в macOS, и у них разные API. К тому же, пользователям полезно видеть описание каждого варианта, но это доступно только в Zsh.

В этой заметке показано, как реализовать кросс-платформенные дополнения с описаниями на примере Mill 1.0.3.

Базовый механизм

При нажатии <TAB> шелл вызывает функцию, которой передаёт текущие слова и индекс слова под курсором. Функция возвращает список возможных дополнений.

_generate_foo_completions() {
  local idx=$1; shift
  local words=( "$@" )
  local cur=${words[idx]}

  local arr=(apple apricot banana cherry durian)
  for e in "${arr[@]}"; do [[ $e == "$cur"* ]] && echo "$e"; done
}

_complete_foo_bash() {
  local raw=($(_generate_foo_completions "$COMP_CWORD" "${COMP_WORDS[@]}"))
  COMPREPLY=( "${raw[@]}" )
}

_complete_foo_zsh() {
  local -a raw
  raw=($(_generate_foo_completions "$CURRENT" "${words[@]}"))
  compadd -- $raw
}

[[ -n $ZSH_VERSION ]] && { autoload -Uz compinit; compinit; compdef _complete_foo_zsh foo; } \
                     || complete -F _complete_foo_bash foo
  • _generate_foo_completions возвращает список вариантов.
  • _complete_foo_bash и _complete_foo_zsh преобразуют результат в формат нужного шелла.
  • Скрипт добавляется в ~/.bashrc, ~/.zshrc и т.д.

Mill устанавливает дополнения командой:

$ ./mill mill.tabcomplete/install

by lihaoyi • 10 августа 2025 г. в 09:50 • 253 points

ОригиналHN

#bash

Комментарии (82)

  • Fish автоматически создаёт дополнения из man-страниц (fish_update_completions), что упрощает жизнь, если документация есть.
  • Пользователи bash и zsh жалуются на «слишком умные» дополнения, которые блокируют автодополнение имён файлов; предпочитают откат к простому поведению.
  • Инструменты вроде usage, clap_complete, claptrap и _gnu_generic позволяют быстро генерировать скрипты дополнений из --help или описаний CLI.
  • Некоторые сторонние решения (Fig, Pixi) и оболочки вроде Murex и Nushell стремятся к единому стандарту автодополнения, но разнообразие синтаксиса CLI всё ещё мешает.

GPT-5 vs. Sonnet: Complex Agentic Coding (elite-ai-assisted-coding.dev)

Задача: перенести TypeScript-утилиту Ruler на Rust, проверить идентичность через bash-тест.
Модели: GPT-5 (новый, превью) и Claude 4 Sonnet.

GPT-5

  • Сразу прочитал код, составил подробный plan.md, получил одобрение.
  • Работал почти без остановок, дважды отчитывался о статусе.
  • Сначала написал bash-скрипт, который запускает оригинал и порт во временной папке и сравнивает вывод.
  • Затем сгенерировал структуру src/, Cargo.toml, CLI-аргументы, логику apply/init/revert, обработку конфигов и MCP.
  • Итеративно правил код, пока тест не прошёл «зелёным».
  • Время: ~20 мин, 1 коммит, ветка feat/rust-port.

Claude 4 Sonnet

  • Та же инструкция.
  • Сразу начал писать Rust, но упустил bash-тест; пришлось напомнить.
  • Тест написал быстрее, но менее читаемый.
  • Порт делал «пачками»: сначала CLI, потом логика, потом MCP.
  • После 3-х итераций тест прошёл.
  • Время: ~30 мин, 3 коммита.

Вывод

  • GPT-5 агентнее: сам планирует, реже спрашивает, меньше ошибок.
  • Claude надёжнее в деталях, но требует чётких шагов.
  • Оба справились, но GPT-5 ощущается «ближе к одной команде — один результат».

by intellectronica • 08 августа 2025 г. в 15:38 • 155 points

ОригиналHN

#typescript#rust#bash#gpt-5#claude-4-sonnet#ai-assisted-coding#code-refactoring#testing#tdd#llm

Комментарии (124)

  • Пользователи сомневаются в объективности сравнений: результаты сильно зависят от системных промптов, харнесов и задач.
  • Критика выбора моделей: вместо топ-версии Claude Opus сравнивали более дешёвый Sonnet, что искажает оценку «лучшей» модели.
  • Стоимость vs качество: большинство разработчиков не готовы платить 10× за Opus, поэтому GPT-5 рассматривают как «cost-effective» вариант.
  • Опыт в продакшене: многие находят Claude Code (Sonnet/Opus) надёжнее при работе с большими кодовыми базами и TDD, тогда как GPT-5 хорош для разовых скриптов.
  • Нет единой метрики: из-за недетерминированности моделей и субъективных критериев «хорошего кода» каждый получает разные результаты.

Cursor CLI (cursor.com) 🔥 Горячее 💬 Длинная дискуссия

  • Установка: npm i -g cursor-cli
  • Команды: cursor diff, cursor commit, cursor review, cursor chat
  • Где работает: VS Code, JetBrains, Android Studio, Ghostty, Warp, Bash

Функции

  • Прямые правки кода в терминале
  • Реальное управление агентом
  • Правила через .cursorrules, AGENTS.md, MCP

Плюсы

  • Последние модели Anthropic, OpenAI, Gemini
  • Интеграция в любой IDE
  • Скрипты и автоматизация

by gonzalovargas • 07 августа 2025 г. в 20:53 • 359 points

ОригиналHN

#npm#vscode#jetbrains#android-studio#bash#anthropic#openai#gemini#github#llm

Комментарии (248)

  • Пользователи обсуждают внедрение единого стандарта AGENT.md вместо множества разных файлов.
  • CLI-агенты (Claude Code, Cursor CLI и др.) вызывают восторг: удобно держать в фоне, «чувствуешь себя хакером», но UI-IDE теряет значение.
  • Критика: непонятно, зачем платить за Cursor, если тот же функционал уже включён в подписку Anthropic/OpenAI; не хватает обратной связи, MCP, hooks и локальных моделей.
  • Сторонники Cursor верят в его будущую экосистему (CLI + IDE + GitHub-интеграции) и низкие издержки переключения между моделями.
  • Главный вопрос безопасности: доверять ли LLM полный доступ к файловой системе и устанавливать скрипты через curl | bash.