jeffusion 3937c678f3 test(llm): add backend unit tests for LLM provider feature (113 tests)
Comprehensive test coverage for the entire LLM provider backend:
- secrets.test.ts: AES-256-GCM encrypt/decrypt, master key lifecycle (14)
- tool-converter.test.ts: Cross-provider tool format conversion (10)
- gateway.test.ts: Role routing, error handling, cache invalidation (12)
- provider-repo.test.ts: Provider CRUD, filtering, timestamps (18)
- model-role-repo.test.ts: Role assignments, FK constraints (15)
- secret-repo.test.ts: Encrypted storage, CASCADE delete (13)
- llm-config.test.ts: Full REST API integration tests (31)

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
2026-03-24 12:30:13 +08:00
2026-03-01 14:14:13 +08:00
2026-03-03 10:49:09 +00:00

Gitea AI Assistant

License: MIT

AI-powered code review assistant for Gitea. Automatically reviews Pull Requests and commits using OpenAI, providing intelligent code quality analysis with both summary comments and line-level feedback.

中文文档

Features

  • 🤖 AI Code Review - Automatic review of PRs and commits using OpenAI models
  • 📝 Line-Level Comments - Precise feedback on specific code changes
  • 🔄 Dual Review Engines - Legacy (simple) or Agent-based (multi-agent) review modes
  • 🔔 Feishu Notifications - Integrated notification system for PR events
  • 🎛️ Admin Dashboard - Web UI for managing repository webhooks and configuration
  • 🔐 Secure Webhooks - HMAC-SHA256 signature verification

Architecture

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│   Gitea Server  │────▶│ Gitea Assistant  │────▶│   OpenAI API    │
│   (Webhooks)    │     │  (Hono + Bun)    │     │                 │
└─────────────────┘     └──────────────────┘     └─────────────────┘
                               │
                               ▼
                        ┌──────────────────┐
                        │  Admin Dashboard │
                        │   (React SPA)    │
                        └──────────────────┘

Review Engines

Engine Description Use Case
legacy Single-pass AI review with summary + line comments Simple, fast reviews
agent Multi-agent orchestration with specialists, reflection, and debate Deep, comprehensive analysis

Quick Start

Prerequisites

  • Bun >= 1.2.5
  • Gitea instance with API access
  • OpenAI API key

Installation

git clone https://github.com/user/gitea-ai-assistant.git
cd gitea-ai-assistant
bun install
cp .env.example .env

Configuration

Edit .env with your settings:

# Gitea
GITEA_API_URL=https://your-gitea-instance.com/api/v1
GITEA_ACCESS_TOKEN=your_gitea_token

# OpenAI
OPENAI_API_KEY=your_openai_key
OPENAI_MODEL=gpt-4o-mini

# Security
WEBHOOK_SECRET=your_webhook_secret  # openssl rand -hex 32

# Admin Dashboard
ADMIN_PASSWORD=your_admin_password

See Configuration Reference for all options.

Running

bun run dev    # Development mode
bun run start  # Production mode

Setting Up Webhooks

Option 1: Admin Dashboard (Recommended)

  1. Access http://your-server:3000
  2. Log in with ADMIN_PASSWORD
  3. Click "Enable" on repositories to auto-configure webhooks

Option 2: Manual Configuration

In Gitea repository settings, add a webhook:

  • URL: http://your-server:3000/webhook/gitea
  • Content Type: application/json
  • Secret: Same as WEBHOOK_SECRET
  • Events: "Pull Request" and "Status"

Configuration Reference

Core Settings

Variable Description Default
GITEA_API_URL Gitea API endpoint Required
GITEA_ACCESS_TOKEN Token for code review (read + comment permissions) Required
GITEA_ADMIN_TOKEN Token for webhook management (optional) -
OPENAI_BASE_URL OpenAI API base URL https://api.openai.com/v1
OPENAI_API_KEY OpenAI API key Required
OPENAI_MODEL Model to use gpt-4o-mini
PORT Server port 3000
WEBHOOK_SECRET Webhook signature secret Required

Custom Prompts

Variable Description
CUSTOM_SUMMARY_PROMPT Override the default summary review prompt
CUSTOM_LINE_COMMENT_PROMPT Override the default line comment prompt

Admin Dashboard

Variable Description Default
ADMIN_PASSWORD Dashboard login password password
JWT_SECRET JWT signing secret Auto-generated

Feishu Integration

Variable Description
FEISHU_WEBHOOK_URL Feishu bot webhook URL
FEISHU_WEBHOOK_SECRET Feishu webhook secret (optional)

Agent Review Engine

Enable with REVIEW_ENGINE=agent for advanced multi-agent reviews:

Variable Description Default
REVIEW_ENGINE Engine mode (legacy or agent) legacy
REVIEW_WORKDIR Working directory for repo clones /tmp/gitea-assistant
REVIEW_MODEL_PLANNER Planner model gpt-4o-mini
REVIEW_MODEL_SPECIALIST Specialist model gpt-4o-mini
REVIEW_MODEL_JUDGE Judge model gpt-4o-mini
REVIEW_MAX_PARALLEL_RUNS Max concurrent tasks 2
REVIEW_MAX_FILES_PER_RUN Max files per review 200
REVIEW_AUTO_PUBLISH_MIN_CONFIDENCE Min confidence for auto-publish 0.8
REVIEW_ENABLE_HUMAN_GATE Enable human approval true

Memory & Learning (Experimental)

Variable Description Default
QDRANT_URL Qdrant vector database URL -
ENABLE_MEMORY Enable memory system false
ENABLE_REFLECTION Enable self-critique false
ENABLE_DEBATE Enable multi-agent debate false

Deployment

Docker

docker build -t gitea-assistant .
docker run -d -p 3000:3000 --env-file .env gitea-assistant

Docker Compose

docker-compose up -d

Kubernetes

Kubernetes manifests are located in the k8s/ directory.

1. Configure Secrets

Encode your credentials as base64 and update k8s/gitea-assistant.yaml:

echo -n "your_gitea_token" | base64
echo -n "your_openai_key" | base64
echo -n "your_webhook_secret" | base64
echo -n "your_admin_password" | base64

2. Configure Application

Edit the ConfigMap in k8s/gitea-assistant.yaml:

  • Set GITEA_API_URL to your Gitea instance API endpoint
  • Adjust model and review engine settings as needed

3. Deploy

# Using Kustomize (recommended)
kubectl apply -k k8s/

# Or apply individually
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/qdrant.yaml
kubectl apply -f k8s/gitea-assistant.yaml

4. Verify

kubectl -n gitea-assistant get pods
kubectl -n gitea-assistant get svc

5. Expose the Service (optional)

By default, services use ClusterIP. To expose externally, use an Ingress or change the Service type:

kubectl -n gitea-assistant patch svc gitea-assistant -p '{"spec":{"type":"NodePort"}}'

License

MIT License

Description
Gitea功能增强助手,基于Bun和TypeScript开发,提供AI驱动的代码审查等增强功能。本工具通过Webhook与Gitea集成,自动对Pull Request和提交进行代码审查,并提供智能化的代码质量分析。 ⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-03-27T15:06:50.991Z
Readme 7.2 MiB
Languages
TypeScript 96.3%
CSS 1.7%
Shell 1.4%
JavaScript 0.4%
Dockerfile 0.2%