agentee

Производство

Проверка проектов в CI

Запуск проверки agentee при каждом push, сбой сборки при ошибках, актуальные результаты симуляций и прикрепление пакета для производства к релизу.

Проект в виде обычного текста должен храниться в git, а проект в git можно проверять при каждом пуше, как код. agentee check завершается с кодом 0, если проект чист, 1, если есть ошибки, и 2, если файл не загружается, поэтому он легко встраивается в CI.

Задача проверки

name: check
on: [push, pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: curl -fsSL https://agentee.sh/install.sh | sh
      - run: echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      - run: sudo apt-get install -y kicad-symbols kicad-footprints
      - run: agentee check hardware/

Библиотеки KiCad нужны только если задача импортирует компоненты; проект, который уже содержит свои УГО и посадочные места, проверяется без них. Укажите check на каталог проекта или запустите его изнутри.

Закрепите версию для воспроизводимых результатов, устанавливая из тега релиза, а не последнюю:

      - run: curl -fsSL https://agentee.sh/install.sh | AGENTEE_VERSION=v0.1.0 sh

Машинно-читаемый вывод

agentee check --json
{
  "diagnostics": [
    {
      "at": "via [12.550, 11.000]",
      "file": "./lna.pcb.toml",
      "item": "lna",
      "message": "GND via sits in U1.2 0.175 mm from its edge, its 0.300 mm annulus reaches past the pad under the mask; centre it or use a smaller via",
      "rule": "via-annulus-past-pad",
      "severity": "warning"
    }
  ],
  "errors": 0,
  "ok": true,
  "warnings": 3
}

Каждый диагностический вывод содержит файл, элемент, место и уровень серьёзности, а диагностические выводы топологии платы содержат идентификатор правила. Этого достаточно, чтобы аннотировать pull request или проваливать предупреждения в проекте, где они считаются ошибками. Правило также можно повысить до ошибки в самой плате с помощью [drc] severity, что сохраняет политику в проекте, а не в скрипте CI.

Симуляции в CI

Проверка никогда не запускает симуляцию. Каждый результат записывает хеш спецификации, меди, которую он видел, и стека слоёв, и проверка предупреждает, если они больше не совпадают. На CI-раннере без GPU это полезная часть: pull request, который перемещает трассу СВЧ, получает предупреждение об устаревании для результата FDTD, и интерфейс, который измеряет этот результат, проваливается полностью.

Симуляции падения постоянного тока, тепловые и логические достаточно дёшевы, чтобы запускать их в CI, если у раннера есть GPU, а логические симуляции вообще не требуют GPU:

      - run: agentee sim counter
        working-directory: hardware

Оставляйте запуски FDTD на рабочей станции и коммитьте их результаты, чтобы CI проверял проект по симуляциям, которые действительно были запущены.

Рендеры при каждом pull request

      - run: |
          agentee render pcb:main -o main.png --canvas-only
          agentee render sch:main -o main-sch.png --canvas-only
        working-directory: hardware
      - uses: actions/upload-artifact@v4
        with:
          name: renders
          path: hardware/*.png

Рендеринг выполняется в безголовом режиме, без дисплея или GPU, поэтому рецензент изменения в железе видит плату, а не только дифф.

Пакеты для завода при релизе

on:
  push:
    tags: ["hw-v*"]

jobs:
  fab:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: curl -fsSL https://agentee.sh/install.sh | sh
      - run: echo "$HOME/.local/bin" >> "$GITHUB_PATH"
      - run: agentee fab pcb:main -o fab/
        working-directory: hardware
      - env:
          GH_TOKEN: ${{ github.token }}
        run: gh release create "$GITHUB_REF_NAME" hardware/fab/*.zip hardware/fab/*.csv hardware/fab/fab-notes.txt

fab отказывается, пока в топологии платы есть ошибки, поэтому тег на сломанном проекте проваливается, а не отправляет Gerber. Водяной знак на шелкографии содержит коммит, из которого был собран пакет; сборка из дерева с незакоммиченными изменениями указывает -dirty.

Улучшить это руководство · Markdown для агентов