{"adoption": {"forks": 403, "observed_at": "2026-08-28T04:05:41.318196+00:00", "stars": 1826}, "canonical_url": "https://ross.abutalabs.com/products/ai-codereview-gitlab", "card": {"archived": false, "artifact_type": "application", "description": "基于大模型(DeepSeek,OpenAI等)的 GitLab 自动代码审查工具；支持钉钉/企业微信/飞书推送消息和生成日报；支持Docker部署；可视化 Dashboard。", "domain": ["developer-tools", "version-control", "large-language-models"], "enriched": true, "function": ["code-review", "llm-inference", "webhook", "agent-framework", "analytics"], "health_score": 95, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["sunmh207/AI-Codereview-Gitlab"], "name": "sunmh207/AI-Codereview-Gitlab", "platform": ["python", "self-hosted"], "pushed_at": "2026-07-23T05:45:52+00:00", "repo": "sunmh207/AI-Codereview-Gitlab", "stars": 1826, "tags": ["gitlab", "code-review", "llm", "deepseek", "dingtalk", "wechat-work", "feishu", "daily-report", "dashboard", "streamlit", "automation", "docker", "web-server"], "topics": ["ai", "codereview", "gitlab", "gpt", "llm", "deepseek"], "urls": [], "use_cases": ["automate code review on gitlab merge requests", "ai code review with deepseek or openai", "send code review results to dingtalk or feishu", "generate daily development reports from git commits", "self-host an llm code review bot with docker", "track code review statistics across developers and projects"], "what_it_is": "A self-hosted automated code review application that uses large language models (DeepSeek, OpenAI, Anthropic, ZhipuAI, Qwen, Ollama) to review GitLab merge requests and pushes via webhooks. It posts review comments back to GitLab, pushes results to DingTalk/WeCom/Feishu, generates daily commit reports, and includes a Streamlit dashboard with review statistics.", "when_to_avoid": ["you need deep static analysis or security scanning rather than LLM-generated review comments", "you use a platform other than GitLab/GitHub/Gitea", "you cannot send code to third-party LLM providers due to privacy constraints"], "when_to_choose": ["your team uses GitLab (or GitHub/Gitea) and wants automated LLM-based review on every MR or push", "you want review notifications in DingTalk, WeCom, or Feishu plus daily reports", "you prefer a self-hosted Docker deployment with a visual dashboard"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ai-codereview-gitlab", "repo": "sunmh207/AI-Codereview-Gitlab", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.318196+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:19:35.079978+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e4c14e5422eecbd23d91a0a72bef1ac9423d852f08a29f30795d1103c900e5c", "fetched_at": "2026-08-28T04:05:41.318196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sunmh207/AI-Codereview-Gitlab"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 46, "rhythm": 90}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 657, "days_push": 41, "days_rel": 66, "gap_med": 26, "n_releases_24m": 12}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}