MCP-сервер для ИИ-агента

Совсем недавно я рассказывал о том, как создать ИИ-агента и дать ему в руки инструменты, чтобы взаимодействовать с реальным миром. Сегодня я покажу пример, как сделать шаг вперед - создать MCP-сервер, который будет предоставлять инструменты для LLM в согласии с современными стандартами отрасли. О том, что это такое и откуда у него растут ножки, можно почитать в интернетах, или вот вам собранная Perplexity статья.

[Далее]

Obsidian плагин Shell commands

Если вы хотели расширить возможности Obsidian, подходящих готовых плагинов не нашли, писать на Typescript морально не готовы, а писать консольные утилиты любите умеете и практикуете, то этот пост для вас. Не так давно натолкнулся у какого-то блогера упоминание о плагине Shell commans, с помощью которого можно вызвать консольную команду. Взглянув на него повнимательнее я понял - это неограненный алмаз, недооцененный артефакт, и даже удивительно, почему так мало о нем говорят.

[Далее]

Создание ИИ-агента на Python

ИИ шагает по планете с такой скоростью, что это пугает. Но лучше не пугаться, а постараться вспрыгнуть на эту волну и прокатиться на ней. Самое популярное, с чем мы сталкиваемся каждый день - это LLM (Large Language Model), говорящие ИИ-боты. Они много что могут нам рассказать, но вот ручек и ножек им не завезли. Другое дело - ИИ-агенты, это по сути те-же LLM, но с ручками и ножками. То есть с инструментами. Имея доступ к LLM (публичной или локальной) можно своими руками приделать им недостающие конечности и соорудить маленького, но своего Джарвиса. Я продемонстрирую, как это сделать с помощью Python и библиотеки LangChain.

[Далее]

Превращаем заметки Obsidian в посты Telegraph

Чтобы писать посты в Obsidian и постить в Telegraph прям с таблицами, Dataview и прочими плюшками, достаточно копировать заметку в HTML с помощью плагина Copy Document as HTML

Ставим плагин и настраиваем как хочется:

  • убираем front-matter (Remove properties)
  • вшиваем картинки (Embed external images)
  • вики-ссылки делаем просто текстом (Link handling: Don’t link)
  • убираем лишние добавки к заметке (Footnote handling: Remove everything)

Чтобы запустить вызываем команду (Cmd-P): Copy document as HTML: Copy selection or document to clipboard. Это отправит в буфер обмена или выделенный фрагмент (если выделено что-то) или весь документ.

[Далее]

Скрипт конвертации Perplexity ссылок

К сожалению, когда копируешь (кнопкой “Копировать”) исследования Perplexity он генерирует документы, которые не совсем Markdown - ссылки на источники он помещает в конце документа, а в тексте остаются только некликабельные указатели типа [10]. Это неудобно, если хочешь поместить исследование например в Obsidian. Нагенерил скрипт, который это исправляет. Не сильно фонтан, но может кому сэкономит немного времени.

[Далее]

Превращаем заметки Obsidian в посты Hugo

Когда решил вернуться к написанию постов в блог, решил перевести его на генерацию статических сайтов Hugo. А так как к тому моменту я успел полюбить Obsidian, то стал решать, как бы так сделать, чтобы писать статьи в нем, а в Hugo транслировать с нужными модификациями. Готовые решения меня не устроили (то одно не так то другое не то), решил сделать что-то свое. Плагин для Obsidian не осилил (никогда не писал на TypeScript), поэтому с помощью ИИ накидал варианты на Python и Go. Скачать можно с моего GitHub.

[Далее]

Консольный ИИ-агент Gemini CLI

Gemini CLI - консольный ИИ-агент от Google. Работает с моделью gemini-2.5-pro. Позволяет делать бесплатно 1000 запросов в день и дает контекстное окно в миллион токенов. Умеет работать с файловой системой на компьютере, делать запросы в интернете и пользоваться поисковиком Google.

Что немаловажно: работает в России.

[Далее]
ai 

Использование цикла в PostgreSQL с выводом в консоль

Небольшая заметка на полях на будущее. Иногда в PostgreSQL нужно выполнить ряд повторяющихся действий с выводом результатов в лог. Одним примером покажу, как это сделать легко и просто.

-- Делаем вывод сообщений в лог видимым
SET client_min_messages TO notice;

CREATE TEMP TABLE tmp(id SERIAL, name TEXT);

-- Анонимный блок DO
DO $$
BEGIN
    -- Цикл LOOP
    LOOP
        INSERT INTO tmp(name) VALUES(gen_random_uuid()::TEXT);
        -- Условный оператор IF
        IF (SELECT MAX(id) FROM tmp) > 100 THEN
            RAISE NOTICE 'max id == %', (SELECT COUNT(*) FROM tmp);
            EXIT;
        END IF;
    END LOOP;
END $$;

Intellij IDEA - сброс триального периода

Аж в 2016 году я тут писал о том, как удалить Idea полностью, чтобы начать все с начала. Но времена меняются, и что работало раньше - не работает сейчас. Вот обновленный алгоритм для MacOS. Обратите внимание на версию Idea.

Удаляем файлы и каталоги:

[Далее]

Создание валидной цепочки SSL сертификатов

Для написания тестов на валидность загружаемых сертификатов мне потребовалось создать несколько вариантов цепочек и приватных ключей. Прошерстив некоторый объем интернета, я собрал всю необходимую информацию о том, как локально сгенерировать корректную цепочку SSL сертификатов, которая будет проходить проверку стандартными средствами.

Чтобы не писать кучу команд всякий раз, напишем bash-скрипт. Для начала, зададим несколько настроечных констант:

[Далее]