@taskless-app/swarm 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -16
- package/dist/cli.js +1762 -616
- package/dist/overmind.js +1022 -243
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,28 +16,99 @@ CLI, который поднимает у вас на машине **рой др
|
|
|
16
16
|
пишут код через `claude` CLI в изолированных git worktree — репозиторий, с которым
|
|
17
17
|
работаете, тоже должен быть на месте (склонирован локально).
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Три команды, одинаковые на **macOS, Linux и WSL**:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
npm i -g @taskless-app/swarm
|
|
23
|
+
swarm install # довести окружение машины до рабочего состояния
|
|
24
|
+
swarm login --workspace <slug> # войти в свой Taskless-воркспейс
|
|
25
|
+
swarm start # поднять рой: уходит в фон, терминал остаётся вам
|
|
26
|
+
swarm --help # список остальных команд (spawn/ls/questions/answer/…)
|
|
24
27
|
```
|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
Без установки — одной командой на задачу (тогда `swarm install` пропускается, и за
|
|
30
|
+
окружение отвечаете вы):
|
|
27
31
|
|
|
28
32
|
```bash
|
|
29
|
-
|
|
30
|
-
swarm
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
npx @taskless-app/swarm login --workspace <slug>
|
|
34
|
+
npx @taskless-app/swarm start
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Установка окружения: `swarm install` и `swarm doctor`
|
|
38
|
+
|
|
39
|
+
`swarm install` — не список советов, а установка: команда проверяет пункты и **делает
|
|
40
|
+
сама всё, что может**, а там, где без вас нельзя, показывает точную строку и объясняет
|
|
41
|
+
зачем. Проверяются: версия Node, `claude` и `gh` (включая вход в GitHub), глобальный
|
|
42
|
+
пакет роя и его версия против опубликованной, `playwright-core` и системные библиотеки
|
|
43
|
+
Chromium для скриншотов, Docker (**только** если он нужен найденному репозиторию),
|
|
44
|
+
клоны репозиториев и `SWARM_REPO`, живой токен и уже поднятый демон.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
swarm install # проверить и довести до рабочего состояния
|
|
48
|
+
swarm install --yes # заранее разрешить sudo-команды (неинтерактивный запуск)
|
|
49
|
+
swarm doctor # ТА ЖЕ проверка без установки: что не так и как чинить
|
|
33
50
|
```
|
|
34
51
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
Что стоит знать про поведение:
|
|
53
|
+
|
|
54
|
+
- **Разница платформ спрятана внутрь.** На macOS — Homebrew и обычно без повышения
|
|
55
|
+
прав; на Linux и в WSL — системный пакетный менеджер (apt/dnf/pacman/zypper/apk), а
|
|
56
|
+
значит `sudo`. Команда для вас одна и та же.
|
|
57
|
+
- **Про права — честно.** Там, где нужен `sudo`, команда показывает точную строку и
|
|
58
|
+
что именно она поставит, и **спрашивает согласие**. Не интерактивный запуск без
|
|
59
|
+
`--yes` — строка просто печатается, пункт остаётся красным. Молча повышать права на
|
|
60
|
+
вашей машине она не будет.
|
|
61
|
+
- **Ставится только то, чего действительно нет.** Каждый пункт сперва проверяется: на
|
|
62
|
+
маке, где Chromium и так поднимается, системные библиотеки никто ставить не полезет.
|
|
63
|
+
- **Повторный запуск безопасен.** На машине, где всё стоит, `swarm install` ничего не
|
|
64
|
+
делает и не перезапускает — просто говорит «готово». Живой токен не требует
|
|
65
|
+
повторного `swarm login`; работающий демон не глушится и второй копией на тот же
|
|
66
|
+
порт не подменяется — команда скажет, что его нужно перезапустить самому.
|
|
67
|
+
- **Не притворяется, что всё хорошо.** Если Chromium не поднимается — так и написано:
|
|
68
|
+
скриншоты недоступны, UI-задачи будут сдаваться без них. Проверка настоящая: рой
|
|
69
|
+
реально запускает headless Chromium тем же кодом, что `swarm shot`, — потому что
|
|
70
|
+
наличие файлов ничего не доказывает (в WSL пакет на месте, а `libnss3.so` нет).
|
|
71
|
+
|
|
72
|
+
`swarm doctor` печатает состояние и причину — его вывод и стоит присылать, когда
|
|
73
|
+
что-то не работает, вместо переписки «попробуй запустить, скажи что вывелось».
|
|
74
|
+
|
|
75
|
+
## Обновление: `swarm update`
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
swarm update # обновить рой до опубликованной версии
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Обновление своей же программы — её собственная работа: помнить, каким менеджером
|
|
82
|
+
поставлен пакет (`npm`/`pnpm`/`bun`/`yarn` — глобальные каталоги у них разные) и что
|
|
83
|
+
пакет называется не так, как команда, вы не обязаны. Версия уже свежая — команда так и
|
|
84
|
+
скажет и ничего не сделает.
|
|
85
|
+
|
|
86
|
+
Демон **сам говорит, что устарел**: при старте, если установленная версия отстала от
|
|
87
|
+
опубликованной, в лог уходит одна строка с точной командой обновления. И отдельно
|
|
88
|
+
помните: Node держит модуль-граф с момента старта процесса, поэтому обновление пакета
|
|
89
|
+
не переезжает в **живой** демон само — после `swarm update` нужен
|
|
90
|
+
`swarm stop && swarm start`. Команда об этом напомнит, если демон поднят.
|
|
91
|
+
|
|
92
|
+
**Пути к репозиториям указывать не нужно.** Демон спрашивает у Taskless, за какие
|
|
93
|
+
репозитории отвечает ваш рой (проекты с включённым роем), и сам находит их клоны на
|
|
94
|
+
машине: у каждого клона в `.git/config` записан origin, и по нему он сопоставляется с
|
|
95
|
+
репозиторием проекта. Смотрит в привычных местах (`~/projects`, `~/code`, `~/src`,
|
|
38
96
|
`~/work`, …) на три уровня вглубь — на типовой машине это десятки миллисекунд. Клоны
|
|
39
97
|
лежат где-то ещё — скажите один раз, `swarm start --repo <путь>`, дальше запомнится.
|
|
40
98
|
|
|
99
|
+
Что нашлось и где — печатает `swarm status`. Оттуда же видно два случая, о которых рой
|
|
100
|
+
не молчит: **клона нет** (тогда прогоны этого репозитория будут стоять — рой сам не
|
|
101
|
+
клонирует, диск ваш) и **клонов два** (рой называет обе копии и говорит, в какой
|
|
102
|
+
работает). То же самое видно в Taskless: на вкладке «Рой» проекта — отдельным пунктом
|
|
103
|
+
онбординга, а прогон, чей репозиторий не держит ни одна машина, прямо говорит, чего он
|
|
104
|
+
ждёт, вместо того чтобы молча стоять в очереди.
|
|
105
|
+
|
|
106
|
+
Свои каталоги поиска — `SWARM_SCAN_ROOTS=~/dev,/srv/repos` (порядок значим: при двух
|
|
107
|
+
копиях побеждает первый корень); выключить поиск целиком — `SWARM_SCAN_ROOTS=off`.
|
|
108
|
+
Глубина — `SWARM_SCAN_DEPTH` (по умолчанию 3), период пересборки карты —
|
|
109
|
+
`SWARM_REPO_MAP_MS` (по умолчанию 15 минут; новый swarm-проект подхватится без
|
|
110
|
+
перезапуска демона).
|
|
111
|
+
|
|
41
112
|
**Демон открепляется от терминала.** `swarm start` не занимает окно: процесс уходит
|
|
42
113
|
в фон, а весь вывод пишется в `~/.taskless-swarm/overmind.log` — тот самый файл, из
|
|
43
114
|
которого агент читает хвост лога удалённо. Посмотреть: `swarm logs -f`. Нужен вывод
|
|
@@ -55,7 +126,9 @@ swarm --help # список остальных коман
|
|
|
55
126
|
Гасить демона по имени процесса (`pkill -f overmind`) не нужно — есть штатные команды:
|
|
56
127
|
|
|
57
128
|
```bash
|
|
58
|
-
swarm status # жив ли демон, на паузе ли рой, сколько дронов в
|
|
129
|
+
swarm status # жив ли демон, на паузе ли рой, сколько дронов в работе,
|
|
130
|
+
# какие репозитории у роя и где нашлись их клоны
|
|
131
|
+
swarm doctor # окружение машины: что не так и как чинить
|
|
59
132
|
swarm pause «причина» # не брать НОВУЮ работу; живые дроны доработают
|
|
60
133
|
swarm resume # снова брать работу
|
|
61
134
|
swarm stop # погасить демона на этой машине
|
|
@@ -82,8 +155,13 @@ swarm remove --yes # отключить машину от роя цел
|
|
|
82
155
|
## Windows
|
|
83
156
|
|
|
84
157
|
Рой работает на Windows, но **рекомендуемый способ — WSL2**: там он ведёт себя ровно
|
|
85
|
-
как на macOS/Linux
|
|
86
|
-
|
|
158
|
+
как на macOS/Linux, и `swarm install` работает так же, как на Linux. На нативной
|
|
159
|
+
Windows та же команда говорит это вслух, делает свою часть (пакеты npm — они
|
|
160
|
+
кросс-платформенные; системных зависимостей Chromium там нет) и **не выдаёт
|
|
161
|
+
линуксовых советов**: `sudo apt-get` пользователю PowerShell не поможет.
|
|
162
|
+
|
|
163
|
+
Нативная Windows проверена вживую 02–03.08.2026 (Windows 11 Pro), рой поднимается и
|
|
164
|
+
доводит задачи до конца, но у неё есть особенности:
|
|
87
165
|
|
|
88
166
|
- `ps` и `lsof` на Windows нет. Демон берёт снапшот процессов через
|
|
89
167
|
`Get-CimInstance Win32_Process` (нужен PowerShell в `PATH`) и гасит дерево процессов
|
|
@@ -155,8 +233,12 @@ swarm_daemon_log(hostId, lines) # хвост лога самого демона
|
|
|
155
233
|
и запрос, и доставка скоупятся владельцем машины.
|
|
156
234
|
|
|
157
235
|
Лог самого демона заводится сам: фоновый `swarm start` пишет в
|
|
158
|
-
`~/.taskless-swarm/overmind.log
|
|
159
|
-
|
|
236
|
+
`~/.taskless-swarm/overmind.log`. Свой путь — `SWARM_DAEMON_LOG`. Ротация идёт **и при
|
|
237
|
+
старте, и на живом демоне** (он рассчитан на недели без рестарта, и раньше у такого
|
|
238
|
+
процесса ротация не срабатывала ни разу): перерос потолок — содержимое уезжает в `.1`,
|
|
239
|
+
прошлые поколения сдвигаются, старые сверх лимита удаляются. Ручки —
|
|
240
|
+
`SWARM_DAEMON_LOG_MAX_BYTES` (по умолчанию 16 МБ), `SWARM_DAEMON_LOG_KEEP` (2 поколения),
|
|
241
|
+
`SWARM_DAEMON_LOG_CHECK_MS` (как часто демон смотрит на размер, 1 мин). Смотреть на месте:
|
|
160
242
|
|
|
161
243
|
```bash
|
|
162
244
|
swarm logs # хвост лога демона (по умолчанию 200 строк)
|