Niubi Guard

# Niubi Guard

Protected by Niubi Guard

一个免费开源的 GitHub 仓库防御系统,保护维护者免受垃圾信息、骚扰和协同攻击的侵扰。 [Apache-2.0 License](./LICENSE) · [Homepage](#web-ui) · [GitHub](https://github.com/Albert-Weasker/niubi_guard) · [English](./README.md) · [简体中文](./README.zh-CN.md) [能力](#能力) · [安装](#安装) · [Web UI](#web-ui) · [AI 侦测](#ai-侦测) · [配置](#配置) · [防护徽章](docs/protected-by-niubi-guard.zh-CN.md) · [CLI](#cli) · [贡献](#贡献) 最新攻击报告:[GitHub Issue 第四轮滥用攻击报告](docs/fourth-wave-attack-report.zh-CN.md) · [攻击语料库](docs/attack-corpus.zh-CN.md) Niubi Guard 帮助维护者防护仓库,同时保持策略透明。检测信号、用户名、放行规则、模型、提示词、置信度阈值和响应动作都由你配置。默认是 dry-run。只有当你启用动作并进入 apply mode,强动作才会执行。 我们做它,是因为维护者遭遇了协同攻击:恶意 Issue、重复的复制粘贴指控和声誉施压。越来越多维护者遇到同样的问题。正常项目推广是权利,协同骚扰不是。 > **正在被恶意 Issues 骚扰?** 任何维护者都可以为自己的仓库部署 Niubi Guard,也可以直接使用 [niubistar.com/guard](https://www.niubistar.com/guard) 的免费托管版本,或通过 [support@niubistar.com](mailto:support@niubistar.com) 联系我们,一起判断和处理正在发生的攻击。 ## 能力 **透明。** 每条检测都会包含标签、命中的关键词或用户名、AI 置信度、理由、证据和计划动作。 **用户控制。** 删除、关闭、锁定、拉黑和限制互动默认关闭,只有维护者明确启用才会进入计划。 **AI 驱动。** 使用你自己的 OpenAI-compatible 模型。你可以配置 base URL、API key、model、prompt 和 confidence threshold。 **开源。** 防护逻辑、UI、CLI、配置 schema 和占位品牌资产都可以被维护者检查和改进。 **多语言。** 首版 Web UI 和文档支持 English 和 简体中文。 ## 安装 从 npm 安装 CLI: ```bash npm install -g niubi-guard niubi-guard init niubi-guard scan --config guard.config.json ``` 或从源码运行: ```bash git clone https://github.com/Albert-Weasker/niubi_guard.git cd niubi_guard pnpm install ``` 启动 Web UI: ```bash pnpm dev:web ``` 然后打开 `http://localhost:3000`。如果端口被占用,Next.js 会自动选择其他端口。 CLI dry-run: ```bash export GITHUB_TOKEN=github_pat_xxx pnpm dev -- init pnpm scan -- --config guard.config.json ``` 使用 Docker 运行: ```bash docker build -t niubi-guard . docker run --rm -p 3000:3000 niubi-guard ``` ## Web UI UI 是产品控制台和策略配置器: - GitHub token 和仓库列表 - 检测信号和用户名防御 - 放行短语和放行用户 - OpenAI-compatible AI 侦测 - 置信度阈值和提示词编辑 - 仅复核或自动生成动作计划 - dry-run 或 apply mode - 展示检测标签、理由、AI 置信度和计划动作 - **文档按钮**内置完整操作手册(中英文双语) API key 不会被应用保存。浏览器只会在本次扫描请求中发送它。 ## AI 侦测 Niubi Guard 可以使用 OpenAI-compatible 模型扫描你自己的 Issues 和评论。它用于识别不一定包含明显关键词的语义型攻击: - 恶意 Issue - 机器人式举报 - 协同骚扰 - 垃圾信息传播 - 大规模提及滥用 - 模板化复制粘贴攻击 适配器调用: ```text POST {baseUrl}/chat/completions ``` 模型必须返回严格 JSON: ```json { "malicious": true, "confidence": 0.91, "label": "fake_star_accusation", "reason": "该 Issue 重复指控模板,缺少项目相关证据。", "evidence": ["重复指控模式", "没有技术细节"] } ``` 默认情况下,LLM 命中是 `review_only`。只有当你希望高置信 AI 命中按照已启用策略生成计划动作时,才切换到 `auto_plan`。 ## 配置 创建 `guard.config.json`: ```json { "repositories": ["owner/repo"], "rules": { "keywords": ["spam template", "copy-paste", "mass mention", "repeated link"], "denyUsers": ["suspicious-login"], "allowPhrases": ["good-faith report", "security disclosure"], "allowUsers": ["trusted-maintainer"], "coldStartAccounts": { "enabled": false, "maxAccountAgeDays": 30, "requireEmptyBio": true, "requireMissingAvatar": false, "minimumSignals": 2 } }, "scan": { "includeIssues": true, "includeComments": true, "state": "open", "since": null, "maxPages": 5 }, "llm": { "enabled": false, "baseUrl": "https://api.openai.com/v1", "apiKey": "", "model": "gpt-4o-mini", "temperature": 0.1, "confidenceThreshold": 0.8, "reviewMode": "review_only", "systemPrompt": "You are Niubi Guard, a GitHub repository abuse detection classifier. Detect spam, harassment, coordinated attacks, and template-based abuse. Do not flag good-faith criticism or valid reports.", "userPromptTemplate": "Repository: {{repoFullName}}\nType: {{sourceType}}\nAuthor: {{actorLogin}}\nTitle: {{title}}\nBody:\n{{body}}" }, "actions": { "deleteComments": false, "closeIssues": false, "lockIssues": false, "deleteIssues": false, "blockUsers": false, "setInteractionLimits": false }, "interactionLimits": { "limit": "existing_users", "expiry": "one_month" } } ``` 破坏性动作默认关闭。维护者可以按仓库策略自行开启。 `rules.coldStartAccounts` 是可选配置,默认关闭。开启后,Niubi Guard 会补充读取互动账号资料,并可标记新注册、Bio 为空、以及可选的无头像 URL 等冷启动特征。`minimumSignals` 控制至少命中多少个启用信号后才标记为 `cold_start_account`。 ## CLI 创建初始配置: ```bash niubi-guard init ``` Dry-run: ```bash niubi-guard scan --config guard.config.json ``` 执行已启用动作: ```bash niubi-guard scan --config guard.config.json --apply ``` 没有 `--apply` 时,Niubi Guard 只输出检测和计划动作。 ## 开发 ```bash pnpm install pnpm check pnpm build npm pack --dry-run ``` npm 包发布 `dist/` 中的 CLI/库入口。Next.js Web UI 通过 `pnpm build`、`pnpm start:web` 或内置 Dockerfile 单独构建部署。 ## 贡献 我们欢迎: - 攻击样本 - 误报样本 - 提示词改进 - 模型适配改进 - 语言翻译 - UI 和可访问性改进 - GitHub App、GitHub Action 和自托管部署建议 提交 Issue 或 Pull Request 前,请阅读 [CONTRIBUTING.md](./CONTRIBUTING.md)、[SECURITY.md](./SECURITY.md) 和 [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)。 Niubi Guard 是防御型项目。它不提供增长服务,不操纵指标,也不输出官方定性。它提供的是维护者可控制的透明风险检测与响应系统。 ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=Albert-Weasker/niubi_guard&type=Date)](https://www.star-history.com/#Albert-Weasker/niubi_guard&Date) ## 路线图 - `v0.1`:规则检测、AI 侦测、Web UI、审计输出、手动响应 - `v0.2`:复核队列、标签、误报管理 - `v0.3`:威胁指纹和社区 threat feed - `v1.0`:GitHub App、GitHub Action 和自托管部署