| 1 | # Agent Forge: тонкий self-hosted forge на .NET — issues и MR из чата через MCP |
| 2 | |
| 3 | **Альтернативный заголовок:** Когда GitLab слишком тяжёлый: .NET forge для агентов и keyboard-first UI |
| 4 | |
| 5 | ## Аннотация |
| 6 | |
| 7 | Команды с AI-агентами упираются в self-hosted GitLab как «единственный нормальный forge». На практике агент готов создать issue или merge request — и обрывается на UI: логин, проект, шаблон, labels, pipeline gates. REST есть, но happy path агента — не chat-first. |
| 8 | |
| 9 | **Agent Forge** — отдельный forge на .NET, не форк GitLab: bare git repos, метаданные в WitDatabase, ingress через **Forge MCP**, тонкий web для человека (keyboard-first / human view). Ядро — MIT spine; расширения — **MEF plugins** (org catalog, releases, grouping, CI bridge). |
| 10 | |
| 11 | В докладе — зачем монолитный forge плохой ingress для human–agent dyad; как устроено ядро (host, capabilities, invoke); как писать domain plugin и extension plugin; что агент реально может из Cursor без браузера; где граница «минимальный протокол» vs «зоопарк фич». |
| 12 | |
| 13 | **Live demo:** из IDE — создать issue, открыть MR, посмотреть результат в human view. |
| 14 | |
| 15 | ## Тезисы |
| 16 | |
| 17 | 1. Friction не в модели, а в среде — агент ломается на границе UI forge. |
| 18 | 2. Thin core на .NET — git (LibGit2Sharp) + WitDB + ASP.NET Core; не Rails/Gitaly zoo. |
| 19 | 3. MCP как first-class ingress — server-driven capabilities, invoke из Cursor. |
| 20 | 4. Plugin model — domain plugin + extension plugin (grouping family). |
| 21 | 5. Human view без Jira² — keyboard-first для approve/review. |
| 22 | 6. Self-hosted / on-prem — свой контур без обязательного SaaS. |
| 23 | 7. Live demo end-to-end — utterance → MCP → artifact → browser. |
| 24 | |
| 25 | ## Takeaways |
| 26 | |
| 27 | - Когда **не** поднимать ещё один GitLab. |
| 28 | - Скелет agent-native forge на .NET. |
| 29 | - Паттерн base plugin + grouping extension. |
| 30 | - Осознанные non-goals forge core. |
| 31 | |