task(antigravity): выгрузка репозиториев и структура agents/ на второй машине
Задание переписано: требуется не разбор диска, а развёртывание рабочего пространства — клоны 17 репозиториев в C:\Users\Ochenstarik\Agent_projects и проверка, что структура agents/ на месте. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
e96343882e
commit
8f4cf4f4a3
1 changed files with 60 additions and 129 deletions
|
|
@ -1,170 +1,101 @@
|
|||
# Консолидация проектов в единое рабочее пространство
|
||||
# Развернуть рабочее пространство Agent_projects на этой машине
|
||||
|
||||
- **Кому:** antigravity
|
||||
- **Дата:** 2026-08-18
|
||||
- **От кого:** владелец проекта (через Claude)
|
||||
- **Ветка:** `antigravity/workspace-consolidation`
|
||||
- **Ветка:** ветка не нужна, работа идёт только на диске
|
||||
- **Файл отчёта:** `../done/2026-08-18-консолидация-рабочего-пространства.md`
|
||||
|
||||
## Зачем это делается
|
||||
|
||||
На машине владельца проекты расползлись: десятки клонов одного репозитория в
|
||||
разных папках, задания и отчёты агентов вперемешку с бинарниками, и часть
|
||||
работы существовала только на диске — ни в одном репозитории её не было.
|
||||
Найти, кто что сделал, было нельзя.
|
||||
|
||||
На основной машине разбор уже выполнен. Нужно сделать то же самое на этой.
|
||||
Результат: один каталог `Agent_projects` с клонами всех репозиториев, единая
|
||||
структура `agents/` внутри каждого, и ничего ценного за пределами git.
|
||||
|
||||
## Что нужно сделать
|
||||
|
||||
Порядок обязателен: сначала опись, потом спасение, и только потом уборка.
|
||||
Обратный порядок уничтожает данные.
|
||||
Собрать в `C:\Users\Ochenstarik\Agent_projects` клоны всех проектов и
|
||||
убедиться, что в каждом есть папка `agents/`. Ничего разбирать, переносить и
|
||||
удалять не нужно — только выгрузка из git и проверка структуры.
|
||||
|
||||
### 1. Опись
|
||||
### 1. Каталог
|
||||
|
||||
Найти все папки проектов: домашний каталог пользователя, `~/projects`,
|
||||
рабочий стол, и любые другие места, где агенты создавали клоны. Для каждой
|
||||
папки записать: git это или нет, remote, текущая ветка, число незакоммиченных
|
||||
изменений, число файлов.
|
||||
Создать `C:\Users\Ochenstarik\Agent_projects`, если его нет. Все проекты
|
||||
живут здесь и только здесь.
|
||||
|
||||
Опись сохранить в отчёт целиком. Она — доказательство, что ничего не пропущено.
|
||||
### 2. Выгрузить репозитории
|
||||
|
||||
### 2. Проверка, что работа есть на GitHub
|
||||
|
||||
Для **каждой** папки с git проверить **все локальные ветки**, а не только
|
||||
текущую. Одной проверки HEAD недостаточно: в брошенных клонах лежат ветки,
|
||||
которых нет ни на GitHub, ни в других копиях.
|
||||
|
||||
Метод, который работает:
|
||||
Владелец — `ochenstarik-ui`. Проверить, что `gh auth status` показывает
|
||||
именно его, и склонировать 17 репозиториев:
|
||||
|
||||
```bash
|
||||
# один свежий клон репозитория как эталон
|
||||
git fetch origin '+refs/heads/*:refs/remotes/origin/*'
|
||||
git rev-list --remotes | sort -u > /tmp/remote-shas.txt
|
||||
|
||||
# в каждой проверяемой папке
|
||||
git for-each-ref refs/heads --format='%(objectname) %(refname:short)'
|
||||
cd "C:/Users/Ochenstarik/Agent_projects"
|
||||
for r in business-platform kagent hermes-config-backup server-monitor-manager \
|
||||
randomayzer trade-signal-platform trading-knowledge-base \
|
||||
finance-telegram-bot agent-control-center agent-control-center-server \
|
||||
lightweight-server safetest-platform agent-engineering-quality-system \
|
||||
hermes-lossless-context-layer hermes-task-inbox singbox-ai-router \
|
||||
trade-signal-bot-legacy; do
|
||||
gh repo clone "ochenstarik-ui/$r" "$r"
|
||||
done
|
||||
```
|
||||
|
||||
Тип ветки, чей tip отсутствует в списке, проверить вторым способом — ветка
|
||||
могла быть удалена на GitHub после мержа, но коммит в репозитории остаётся:
|
||||
Часть репозиториев приватные — без авторизованного `gh` они не склонируются.
|
||||
Если какой-то не выгрузился, это в отчёт, а не «пропустил и пошёл дальше».
|
||||
|
||||
### 3. Структура agents/
|
||||
|
||||
Структура уже лежит в самих репозиториях, отдельно её создавать не надо.
|
||||
На 2026-08-18 она находится в ветке `chore/agents-workspace` и ждёт приёмки в
|
||||
открытом PR. Поэтому в каждом клоне:
|
||||
|
||||
```bash
|
||||
gh api "repos/<owner>/<repo>/commits/<sha>" --jq .sha
|
||||
git fetch origin
|
||||
git checkout chore/agents-workspace 2>/dev/null || git checkout main
|
||||
```
|
||||
|
||||
Если оба способа говорят «нет» — работа существует только на этом диске.
|
||||
Если к моменту выполнения PR уже смержены — структура будет в `main`, и
|
||||
переключаться никуда не нужно.
|
||||
|
||||
Отдельно проверить, что удалённый репозиторий вообще существует:
|
||||
`gh api repos/<owner>/<repo>`. На основной машине нашлась папка с 163 файлами,
|
||||
чей remote отвечал 404 — репозитория не было вовсе.
|
||||
|
||||
### 3. Спасение
|
||||
|
||||
- **Незапушенные ветки** — запушить под их собственными именами.
|
||||
В `main` не пушить: приёмку делает главный агент.
|
||||
- **Код без существующего репозитория** — создать приватный репозиторий
|
||||
(`gh repo create <owner>/<name> --private`) и залить туда все ветки.
|
||||
Перед заливкой проверить на секреты: `.env`, `*.pem`, `*.key`, присвоения
|
||||
вида `TOKEN=...`, и убедиться, что `.gitignore` закрывает `.venv` и `.env`.
|
||||
- **Незакоммиченные правки** — сохранить патчем `git diff HEAD > имя.patch`
|
||||
в `agents/<агент>/notes/salvage-<дата>/` того проекта, к которому они
|
||||
относятся. Неотслеживаемые файлы скопировать туда же, кроме мусора
|
||||
(`.venv`, `node_modules`, `*.exe`, `*.zip`).
|
||||
- Прежде чем считать правки ценными, посмотреть на них. На основной машине
|
||||
папка с 3870 «изменениями» оказалась сломанным индексом: `git rm` без
|
||||
коммита, содержимое совпадает с GitHub. Спасать там было нечего.
|
||||
|
||||
### 4. Клоны и структура agents/
|
||||
|
||||
Склонировать все репозитории владельца в `Agent_projects` (список —
|
||||
`gh repo list <owner> --limit 100`). В каждом создать:
|
||||
Проверить, что в каждом проекте есть:
|
||||
|
||||
```
|
||||
agents/
|
||||
README.md TASK-TEMPLATE.md REPORT-TEMPLATE.md
|
||||
claude/ codex/ antigravity/ hermes/ grok/ opencode/
|
||||
inbox/ done/ notes/ (в каждой .gitkeep)
|
||||
inbox/ done/ notes/
|
||||
_accepted/
|
||||
```
|
||||
|
||||
Тексты `README.md` и шаблонов взять из любого уже разобранного репозитория —
|
||||
они одинаковы во всех. В `AGENTS.md` дописать раздел со ссылкой на
|
||||
`agents/README.md`; если `AGENTS.md` нет — создать.
|
||||
Если в каком-то репозитории `agents/` не оказалось ни в `main`, ни в
|
||||
`chore/agents-workspace` — не выдумывать структуру самому: записать в отчёт,
|
||||
какой это репозиторий.
|
||||
|
||||
### 5. Раскладка заданий и отчётов
|
||||
### 4. Как здесь работать дальше
|
||||
|
||||
Папки с заданиями и отчётами агентов разложить по `agents/` нужного проекта.
|
||||
Агента определять по имени файла или пути: `antigravity`, `codex`, `hermes`,
|
||||
`claude`/`клод`, `grok`, `opencode`. Файлы со словом `task`/`задач` — в
|
||||
`inbox/`, остальные — в `done/`. Что не опознаётся — в
|
||||
`agents/_salvage-<дата>/`, разбирается вручную потом.
|
||||
|
||||
Тяжёлое в git не класть. Архивы, инсталляторы, бинарники и файлы больше 5 МБ —
|
||||
в `Agent_projects/_archive/<дата>/`, наборы данных — в `Agent_projects/_data/`.
|
||||
Обе папки вне репозиториев.
|
||||
|
||||
### 6. Уборка
|
||||
|
||||
Папки, чьё содержимое доказано лежит на GitHub, переместить в
|
||||
`_trash_<дата>/` рядом с домашним каталогом. **Не удалять.** Удаление —
|
||||
решение владельца, он сотрёт карантин сам, когда проверит.
|
||||
|
||||
### 7. Публикация
|
||||
|
||||
В каждом репозитории — ветка `chore/agents-workspace`, один коммит структуры,
|
||||
второй коммит разбора, PR. В `main` не мержить.
|
||||
Коротко, полные правила — в `agents/README.md` внутри любого проекта:
|
||||
задание — в `agents/antigravity/inbox/`, черновики — в `notes/`, результат —
|
||||
в `done/`. Задание, пришедшее в чате, сначала записывается в `inbox/`, и
|
||||
только потом начинается работа. Своих папок за пределами
|
||||
`agents/antigravity/` не заводить — из-за этого всё и разъехалось.
|
||||
|
||||
## Границы
|
||||
|
||||
- Ничего не удалять безвозвратно. Только карантин.
|
||||
- Не пушить в `main` и не мержить PR.
|
||||
- Не трогать клоны чужих репозиториев (владелец != владелец проектов), даже
|
||||
если в них есть локальные правки. Записать их в отчёт и оставить на месте.
|
||||
- Не трогать пользовательские файлы: фотографии, книги, документы, бэкапы.
|
||||
- Не менять глобальный `git config`. Подпись ставить локально в репозитории,
|
||||
ту же, что в истории коммитов (`git log --format='%an <%ae>'`).
|
||||
- Ничего не удалять и не переносить с диска. Эта задача — только выгрузка.
|
||||
- В `main` не пушить, PR не мержить.
|
||||
- Существующие папки с проектами вне `Agent_projects` не трогать: что с ними
|
||||
делать, решается отдельной задачей.
|
||||
|
||||
## Что здесь ломается
|
||||
|
||||
Проверено на основной машине, повторится и тут:
|
||||
|
||||
- **Длинные пути Windows.** Cherry-pick и checkout падают с `Filename too
|
||||
long`. Лечится `git config core.longpaths true` и коротким путём рабочей
|
||||
копии.
|
||||
- **Занятые файлы.** Часть папок не переместится: их держит работающий
|
||||
процесс другого агента. Это не ошибка — записать в отчёт и оставить.
|
||||
- **Чужая работа в той же копии.** В клоне может параллельно работать другой
|
||||
агент: проверять `git branch --show-current` перед каждым коммитом, иначе
|
||||
свой коммит ляжет на чужую ветку. Если это уже случилось — переносить
|
||||
коммит через `git worktree`, а не переключать ветку под чужой работой.
|
||||
- **CRLF.** При `core.autocrlf=true` рабочая копия получает CRLF, в git
|
||||
уходит LF. Проверять надо содержимое коммита, а не файл на диске.
|
||||
- **Валидаторы документации.** В `business-platform` есть
|
||||
`node scripts/check-docs.mjs`: он считает все `.md` в репозитории и
|
||||
требует обновления статистики после добавления файлов
|
||||
(`node scripts/check-docs.mjs --write-stats`). Прогнать до коммита.
|
||||
- **Ветка по умолчанию.** Не везде `main`; у части репозиториев `master`.
|
||||
PR создавать с явным `--base`.
|
||||
- **Длинные пути Windows.** Часть репозиториев имеет глубокую вложенность и
|
||||
падает с `Filename too long`. Лечится `git config --global core.longpaths true`
|
||||
до клонирования.
|
||||
- **Ветка по умолчанию.** У `agent-control-center-server` это `master`, а не
|
||||
`main`. Не считать `main` данностью.
|
||||
- **Занятые файлы.** Если клон не создаётся из-за занятого файла — значит, в
|
||||
этой папке работает другой процесс. Не ломать, записать в отчёт.
|
||||
|
||||
## Как проверить результат
|
||||
|
||||
Считается сделанным, когда одновременно:
|
||||
Считается сделанным, когда:
|
||||
|
||||
1. `Agent_projects` содержит клоны всех репозиториев владельца, у каждого
|
||||
`agents/` с полным набором папок;
|
||||
2. для каждой папки из описи в отчёте сказано, что с ней стало: перенесена,
|
||||
в карантине, оставлена и почему;
|
||||
3. ни одна ветка ни в одной папке не осталась незапушенной — доказать
|
||||
повторным прогоном проверки из пункта 2 и приложить её вывод;
|
||||
4. в каждом репозитории открыт PR, `main` не тронут;
|
||||
5. карантин на месте, ничего не удалено.
|
||||
|
||||
## Контекст
|
||||
|
||||
Как выглядит результат на основной машине — в этом же репозитории:
|
||||
`agents/README.md` описывает схему, `Agent_projects/README.md` (у владельца)
|
||||
— карту рабочего пространства. Если структура папок на этой машине окажется
|
||||
принципиально другой — не подгонять её под описание, а сообщить в отчёте.
|
||||
1. в `Agent_projects` лежат все 17 клонов;
|
||||
2. в каждом есть `agents/` с полным набором папок;
|
||||
3. в отчёте приведён вывод проверки — по строке на репозиторий: имя, текущая
|
||||
ветка, наличие `agents/`;
|
||||
4. на диске за пределами `Agent_projects` ничего не изменилось.
|
||||
|
|
|
|||
Loading…
Reference in a new issue