by jondot (community) GPT, Claude, Gemini, DeepSeek, Ollama, локальные модели через Rig, Windows, macOS, Linux
Минималистичный coding-агент на Rust, ориентированный на CI-воркфлоу и небольшие codemod'ы — аналог Claude Code.
Терминальный, локальный AI coding-агент на Rust. Использует AST-индексацию кодовой базы и ленивую загрузку skills, чтобы полностью …
Интерактивный CLI (и веб-интерфейс), использующий Claude 3.5 Sonnet для задач разработки ПО. Позволяет Claude генерировать и …
Token-эффективный AI-агент — та же плотность интеллекта при том же бюджете токенов.
Платформа для запуска и управления AI-агентами разработки — «ваша первая AI Agents Company».
# 1. Установка curl -sSfL https://raw.githubusercontent.com/jondot/picocode/main/install.sh | sh # 2. Задайте API-ключ (выберите провайдера) export ANTHROPIC_API_KEY=ваш_ключ # Для Claude # или export OPENAI_API_KEY=ваш_ключ # Для GPT-4o # или export GOOGLE_API_KEY=ваш_ключ # Для Gemini # или export DEEPSEEK_API_KEY=ваш_ключ # Для DeepSeek # 3. Начните программировать picocode "Проанализируй этот проект и предложи улучшения"
Крошечный coding-агент, говорящий на языке любой LLM.
picocode — минималистичный высокопроизводительный coding-агент на Rust. Компактный надёжный инструмент для разработчиков, которым нужен лёгкий ассистент — простой в понимании, безопасный и легко модифицируемый.
Запуск за секунды:
# 1. Установка
curl -sSfL https://raw.githubusercontent.com/jondot/picocode/main/install.sh | sh
# 2. Задайте API-ключ (выберите провайдера)
export ANTHROPIC_API_KEY=ваш_ключ # Для Claude
# или
export OPENAI_API_KEY=ваш_ключ # Для GPT-4o
# или
export GOOGLE_API_KEY=ваш_ключ # Для Gemini
# или
export DEEPSEEK_API_KEY=ваш_ключ # Для DeepSeek
# 3. Начните программировать
picocode "Проанализируй этот проект и предложи улучшения"
Или скачайте напрямую со страницы релизов
Picocode — не просто инструмент, у него есть характер. Флаг --persona меняет экспертизу и «настроение» агента:
| Персона | Описание | «Голос» |
|---|---|---|
architect |
Архитектор ПО высокого уровня. | «Этой абстракции не хватает Cowbell. Рефакторим.» |
strict |
Инженер с точностью швейцарских часов. | «Ноль терпимости к воде. Применяю оптимальную логику.» |
security |
Фанат Брюса Шнайера, параноидальный аналитик. | «Ищу уязвимости... не доверяю ничему.» |
zen |
Минималист, сфокусирован на простоте. | «Код — форма медитации. Найдём путь.» |
hacker |
Хаотично-добрый, мечтает об ассемблере. | «Нашёл оптимизацию на 2мс. Применяю.» |
guru |
Провидец-разрушитель из Кремниевой долины. | «Сдвинем стрелку и масштабируем это до бесконечности.» |
sysadmin |
Ворчливая легенда старой школы серверов. | «В моё время нам не нужны были эти модные LLM...» |
academic |
Формальный профессор, теория прежде всего. | «Согласно статье Кнута 1974 года, это неоптимально.» |
hustler |
Стартапер, выживший ради MVP. | «Отгружаем! Долг починим после раунда А.» |
craftsman |
Пурист доступности и семантического HTML. | «Семантический HTML — основа здорового веба.» |
sre |
Ниндзя надёжности и наблюдаемости. | «Но как мы будем мониторить это в проде?» |
maintainer |
Терпеливый OSS-святой, любит документацию. | «Не могли бы вы добавить тест-кейс и обновить README?» |
tester |
Искатель деструктивных edge-кейсов. | «Попробую передать сюда null и посмотрю, как всё горит.» |
[!TIP] Можно добавить локальный файл
AGENTS.md, чтобы дать агенту кастомные инструкции по конкретной кодовой базе!
Picocode поддерживает именованные рецепты (Recipes) в файле picocode.yaml для неинтерактивного выполнения (CI/CD, автоматизация).
# picocode.yaml
recipes:
review-security:
prompt: "Review the codebase for security issues."
persona: "security"
model: "claude-3-5-sonnet-latest"
review-from-file:
prompt_file: "prompts/security_review.txt"
persona: "security"
Запуск:
picocode recipe review-security
Picocode гибок — подходит и для быстрого вопроса, и для сложной задачи автоматизации.
picocode или picocode chat (по умолчанию)picocode "ваш промпт" или picocode input "ваш промпт"picocode recipe <name> (запускает предопределённую задачу из picocode.yaml)-p, --provider <PROVIDER>: переопределить провайдера LLM по умолчанию (openai, anthropic, ollama и т.д.).-m, --model <MODEL>: указать конкретную модель (claude-3-5-sonnet-latest, gpt-4o и т.д.).--yolo: отключить все запросы подтверждения. Использовать с осторожностью.-q, --quiet: минимальный вывод, полезно при пробросе в другие инструменты.--persona <NAME>: запуск с конкретной экспертной персоной.--tool-call-limit <N>: максимум вызовов инструментов за один ход (по умолчанию: 50).Picocode даёт AI полный набор инструментов для взаимодействия с окружением:
read_file, write_file, edit_file (атомарный search-replace), list_dir, make_dir, remove, move_file, copy_file.grep_text (regex-поиск), glob_files (поиск файлов по паттерну).bash (запуск любой shell-команды).agent_browser (полная автоматизация браузера через agent-browser, если установлен).Picocode построен на Rust и библиотеке Rig. Спроектирован для максимально простого расширения.
ANTHROPIC_API_KEY)# 1. Клонируем репозиторий
git clone https://github.com/jondot/picocode.git
cd picocode
# 2. Собираем и запускаем
cargo run -- "Analyze src/main.rs"
src/tools.rs.#[rig_tool] для определения функции.src/agent.rs внутри функции build_rig_agent.src/main.rs: точка входа CLI и разбор аргументов.src/agent.rs: создание агента и логика системного промпта.src/tools.rs: реализация всех доступных AI инструментов.src/output.rs: терминальный UI и индикаторы прогресса.Picocode структурирован как библиотека (lib.rs) и бинарник (main.rs).
Пример использования:
use picocode::{create_agent, AgentConfig, ConsoleOutput};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let output = Arc::new(ConsoleOutput::new());
let agent = create_agent(AgentConfig {
provider: "anthropic".into(),
model: "claude-3-5-sonnet-latest".into(),
output,
yolo: false,
tool_call_limit: 50,
system_message_extension: None,
persona_prompt: None,
persona_name: None,
bash_auto_allow: None,
agent_prompt: None,
}).await?;
let response = agent.run_once("Analyze the current project".into()).await?;
println!("Response: {}", response);
Ok(())
}
Создан ради скорости, безопасности и простоты. Лицензия MIT.