Files
Netcatty/.github/ai
bincxz 2ae15834d3 fix(ci): drop draft/2020-12 $schema so Claude can classify issues
Claude Code Ajv does not load that dialect, so every triage died before
the model ran: no issue reply and no diagnosis. Strip $schema/$id before
--json-schema.
2026-08-28 17:32:23 +08:00
..

AI automation

GitHub Actions orchestration that uses Claude Code with an Ollama Cloud Anthropic-compatible backend for issue triage and implementation of high-confidence bugs / small features. Isolated research uses the Brave Search API. Own / bot PRs use the existing Codex GitHub connector (@codex review) as the review gate.

Default mode is full. Set repo variable AI_AUTOMATION_MODE=triage_only to classify issues without implement or the Codex fix loop.

Third-party / fork PRs are not reviewed by this agent. Their initial Codex review is assumed to be auto-configured on the repo; this workflow only re-comments @codex review after the author pushes more commits (pull_request synchronize).

Required secrets

Secret Purpose
ANTHROPIC_AUTH_TOKEN Ollama Cloud API key, sent as Authorization: Bearer
BRAVE_API_KEY Brave Search API key for the isolated research pass

Optional:

  • TRIAGE_GITHUB_TOKEN — bot PAT (netcatty-bot) for opening PRs, labels, triage replies.
  • CODEX_REQUEST_GITHUB_TOKEN — maintainer PAT used only for @codex review.
  • SLACK_WEBHOOK_URL — status pings.

Do not put keys in the repository. Set them with gh secret set.

Variables

Variable Default Purpose
AI_AUTOMATION_MODE full full or triage_only
AI_MODEL glm-5.3-flash:cloud Ollama Cloud model id for Claude Code
AI_ANTHROPIC_BASE_URL https://ollama.com Anthropic-compatible API host
AI_CODEX_FIX_MAX_ROUNDS 40 Max fix ↔ @codex review loops on own/bot PRs
AI_TRIAGE_DAILY_LIMIT 10 Daily auto triage for non-collaborators
AI_FOLLOWUP_DAILY_LIMIT 20 Daily automatic follow-up runs per admitted issue

Manual retry

Actions → AI automation → Run workflow → provide an issue or PR number.

Safety

  • External / fork PRs: only re-trigger Codex; no agent review and no commits.
  • Automation never publishes changes under .github/ or automation scripts.
  • Issue text is sanitized before prompts.
  • Agent steps run without a GitHub token. Provider keys are staged to a file and injected only into the Claude Code launcher.
  • Isolated research runs in an empty temp workspace and can only call the Brave web-search / web-fetch helpers. Classify/implement deny those tools.
  • Research output must include real HTTPS sources from the helper log.

Existing HTML comment markers that still say cursor-* are still recognized so in-flight issues and PRs are not reprocessed. New comments write ai-* markers.