5.8 KiB
title, updated, source, type, ingested_at, ingested_by, source_project
| title | updated | source | type | ingested_at | ingested_by | source_project |
|---|---|---|---|---|---|---|
| Factory — инфраструктура как продукт | 2026-06-11 | .workshop/.brainstorm/infra-as-product.md (rounds 1-5) | concept | 2026-06-11T07:29:08.884Z | OpeItcLoc03@DESKTOP-NSEF0UK | OpeItcLoc03/workshop |
Контекст
Factory — дистрибутив инфраструктуры OpeItcLoc03 для внешних пользователей. Первый потребитель — Алексей (собственный Gitea). Цель: отделить разработку инфраструктуры от её эксплуатации через машинную границу.
Рамка: «ОС для AI-native цеха»
Наша инфраструктура — не набор утилит, а операционная система для AI-native цеха. Шесть слоёв:
| Слой | Компонент | Статус |
|---|---|---|
| 1 Физический | VDS + NAS | 🟢 |
| 2 Control plane | projects-meta-mcp | 🟢 (Gitea-coupled) |
| 3 Знание | wiki-graph, wiki-pattern | 🟢 доказано, контрарианское |
| 4 Рабочая сила | interns 🟢 · coworkers 🔵 | 🟡 |
| 5 Оркестрация | agents-task-runner v0.6.1 | 🟢 spawn-баг починен |
| 6 Методология | claude-skills (31 скил) | 🟢 |
Дифференциатор — слой 3 (знание без RAG). Весь рынок болтает vector-DB; мы доказали что для курируемого корпуса linked-plaintext + graph-traversal бьёт RAG по recall и auditable.
Factory v1 — архитектура дистрибутива
Один публичный репо на git.kzntsv.site (позже GitHub). Не flip видимости .common, не много отдельных репо — один курированный артефакт.
Состав репо
factory/
├── bootstrap.ps1 ← L1 (Go-бинарь не нужен для v1)
├── factory.yaml ← манифест компонентов с версиями
├── lib/
│ ├── projects-meta-mcp/ ← источник (собирается bootstrap'ом)
│ ├── wiki-graph/
│ └── interns-mcp/
└── skills/ ← минимальный набор setup-*/using-*
Конфигурация (два файла)
factory.yaml— ЧТО ставить (компоненты, версии). Шипит с репо.~/.config/factory/home.toml— машинный конфиг (projects_dir, git_host). Генерится при установке.~/.config/factory/secrets.toml— все API-ключи единым файлом. Git-кредентиалы в GCM.
Модульная система
Bootstrap спрашивает при установке какие модули включить:
- Ядро (всегда):
.factory(инструменты) + skills +~/.claude.jsonс MCP-серверами - tasks (опционально): projects-meta + per-project
.tasks/ - wiki (опционально): общая
.wiki/+ per-project.wiki/ - workshop (опционально): boss-zone для дизайна
- admin (опционально): ops-зона
Файловая структура у пользователя после установки
projects\
├── .factory\ ← tools (наш Gitea)
├── [.wiki\] ← опц.: общая вики (его Gitea, bootstrap создаёт)
├── [.workshop\] ← опц.: boss-zone
├── [.admin\] ← опц.: ops-зона
└── my-project\
├── [.tasks\]
└── [.wiki\]
~/.config/factory/
├── home.toml ← его git_host, projects_dir
└── secrets.toml ← его PAT, API-ключи
~/.claude/skills/ ← скопировано из .factory/skills/ bootstrap'ом
~/.claude.json ← mcpServers → .factory/lib/*
.wiki/ — данные пользователя (его Gitea, его remote). Bootstrap создаёт wiki-репо на его Gitea и клонирует локально. Не является частью .factory/.
Dev/prod разделение
- Dev-машина: работаем по живому в
.common, принимаем боль, разрабатываем - Prod-машина (ноут): ставим из factory, получаем чистый стабильный опыт
- Машинная граница = dev/prod граница — никакого двойного конфига на одной машине
main ветка публичного factory = всегда releasable. Dev-работа в приватном .common на ветках; в factory попадает только протестированное.
Версионирование и обновления
Версия = git-тег factory-репо. Обновление:
git -C ~/.factory pull --ff-only
pwsh ~/.factory/bootstrap.ps1 --update
Скрипт идемпотентен. home.toml и secrets.toml при --update не трогаются никогда.
Checklist до первого пользователя (Алексей)
- Создать публичный репо
factoryна git.kzntsv.site - Перенести MCP-серверы из
.common/lib/вfactory/lib/ - Перенести минимальный набор скилов в
factory/skills/ - Написать
factory.yaml - Дописать
bootstrap.ps1(закрыть gaps изL0/install-log.md) - Параметризовать git_host
- Протестировать на ноуте (field-test 2026-05-06 как чеклист)