HowProgrammingWorks - JavaScript and Node.js Programming
Ir al canal en Telegram
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/How_Programming_Works 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Mostrar más6 583
Suscriptores
-424 horas
+177 días
+6430 días
Archivo de publicaciones
Waiting for your feature request
https://github.com/tshemsedinov/reslop
+1
Инструмент для ревью нейрослопа уже позволяет генерировать md-файлы с задачами для агентов, это похоже на план выполнения, по которому агент идет, читает комментарии и TODO, ставит галочки, что сделано. А вы принимаете или не принимаете каждый фрагмент кода и режете код на отдельные коммиты в гите. https://github.com/tshemsedinov/metadiff
🧠 VSCode, Claude Code, Cursor, Codex: внутри у них один и тот же цикл. Он умещается в пару сотен строк.
Сделал вам прототип: рабочий кодинг-агент на Node.js, целиком читаемый за один вечер.
На агента 700 строк, инструменты 600 строк, остальной код terminal UI IDE конечно (~5k строк), его можно не читать вообще, никаких фреймворков. Внутри:
- цикл модель - вызов инструмента - результат - снова модель
- минимальная IDE прямо в терминале: дерево файлов, редактор с подсветкой, шелл и чат с агентом
- 11 инструментов: read, write, edit, bash, grep, glob, patch, fetch, todo, check, delete
В начале я дал ему 3 инструмента: read, write, bash, а остальные он сам себе написал себе на несчастном gemini-3.5-flash-lite.
Поддерживет любой OpenAI-совместимый провайдер: меняете BASE_URL в конфиге и работаете хоть на локальной модели.
⭐️ https://github.com/HowProgrammingWorks/Agent
- Вы код руками пишите?
- Нет, на клавиатуре набираю
Как это звучало в XX веке и сейчас )))
Программисты почти перестали спорить про языки и фреймворки.
Теперь у каждого свои суеверия про AI, как правильно настроить окружение и формат работы вокруг агентов, каким инструментам можно доверять и каким нет, как чистить контекст...
Часть - полезная, а часть - просто суеверия. Но спорить о них можно вечно.
Свято место холивара пусто не бывает.
- Следующий шаг - сделать человека частью харнеса: ему пишут задачу, и он выполняет
- Это тебе кто-то сгенерировал или ты до сих пор сам посты пишешь?
Prototyping IDE with harness, terminal, execution sandbox, test runner, parallel execution and scheduling
Which AI coding agent harnesses do you actually use?
What IDEs / code editors do you actively use in 2026?
С самых простых вещей, язык не особо важно какой, но лучше сразу 2 параллельно учить, они сейчас все развитые, а вот важное:
- как делать промежуточные переменные вместо сложных выражений
- разделять сложное на части и объединять части в целое
- давать всему семантически полезные имена, строить читаемые управляющие конструкции, избегать комментариев
- избегать accidental complexity, из нескольких решений выбирать попроще
- сначала думать о данных, как они представлены в памяти и связаны, а уже потом писать алгоритмы обработки
- привыкать думать об ограничениях и контрактах, какие входные данные можно изменять, какие нет
- больше думать не о вычислительной сложности, а о семантической сложности и как ее можно изолировать
Ownership and Resource Lifetime
Pure JavaScript examples of deterministic resource lifetime, ownership, move, borrow, lease, shared ownership, weak references, and RAII-inspired abstractions built on modern JavaScript.
const timers = require('node:timers/promises');
class AbortScope {
#controller = new AbortController();
signal = this.#controller.signal;
[Symbol.dispose]() {
this.#controller.abort(new Error('Scope disposed'));
}
}
const main = async () => {
let operation;
{
using scope = new AbortScope();
operation = timers.setTimeout(1000, 'done', {
signal: scope.signal,
});
}
try {
await operation;
} catch (error) {
console.log(error.name);
}
};
main();
Sources: https://github.com/HowProgrammingWorks/OwnershipВ JavaScript уже есть половина того, что нужно для реализации ownership-like, как в Rust, просто она разбросана по разным API:
- using / Symbol.dispose
- DisposableStack.move()
- ArrayBuffer.transfer()
- Proxy.revocable()
- AbortSignal, WeakRef
Поверх этого можно собрать runtime-прототип. Делаю. Без borrow checker и compile-time гарантий, но с вполне полезными affine semantics в рантайме. Ownership в JS появляется не как одна фича языка, а как композиция нескольких независимых механизмов.
А что если никакого вайбкодинга не существует, весь нейрослоп, как и раньше, генерирует население Индии, а истерия - это просто ребрендинг?
Добавляем пункты 0 и 11-14 в список
0. Управляй структурой и архитектурой приложения через спецификацию, а не через промпты. Архитектурные решения должны быть явными и проверяемыми артефактами в репозитории, а AI должен подтягивать их в нужные контексты, а не хранить в истории диалога.
11. Изоляция становится еще важнее, потому, что контекст — это тоже архитектурный ресурс. Чем больше модели нужно прочитать, чтобы сделать локальное изменение, тем хуже устроены архитектурные границы. Хорошая архитектура уменьшает необходимый контекст через изоляцию модулей и слоев.
12. Проверяемость! Нужно иметь возможность дешево проверять результат: линтерами, типами, тестами, схемами, контрактами. AI резко снижает стоимость добавления кода, но подымает стоимость владения кодом.
13. Обратимость! Чем дороже ошибка, тем больше нужно уделять внимания возможности отката. Миграция, изменение публичного API, характеристик кода, парадигмы, или архитектурного контракта должны быть под пристальным контролем.
14. AI должен быть ограничен с своих фантазиях: пространство допустимых решений, NFR, constraints, invariants, forbidden dependencies, acceptance criteria, вообще система запретов и красных линий.
