# onehub-git **Repository Path**: onehubcode/onehub-git ## Basic Information - **Project Name**: onehub-git - **Description**: No description available - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-30 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OneHub Git · 更新优化说明 基于 Gitea main 分支(commit `f0f53a7`)的功能性改造:品牌重塑为 **OneHub Git**(改名 + 自动生成 Logo + 现代风格界面),并增加 AI 大模型接入、AI 工单工作流、AI 代码审查、效能分析、文档管理与一系列 AI 增强能力。 - 源码目录:`gitea-src/` - 补丁文件:`gitea-ai-features.patch`(75 个文件,+11058 行,相对上游完整 diff) - 构建产物:`gitea-src/gitea.exe`(SQLite 内嵌,纯 Go,无 CGO) - 数据库迁移:354(document 表)、355(ai_task_draft 表)、356(驳回字段)、357(project_requirement 表)、358(project_requirement.stage 列),启动时自动执行 ## 品牌重塑 - **改名**:`APP_NAME = OneHub Git`(app.ini),页脚、locale(57/61 处用户可见文案)全部替换 - **Logo**:AI 化的「智慧枢纽」标记——居中大号四芒星(AI 星芒)主导视觉,两颗卫星节点粗辐条托底,深藏青→紫→青深渐变(`gitea-src/contrib/onehub/make_logo.py` 一键生成 SVG + PNG + favicon,16px 下依然清晰) - **现代界面**(`web_src/css/onehub.css`,vite 打包进 index.css): - 亮色盘重新定调:靛蓝主色、暖中性灰、柔和边框 - 圆角体系:卡片/段 14px、按钮 10px、下拉/消息 14px、模态 16px、标签胶囊化 - 主按钮渐变 + 柔和投影、输入框聚焦光环、下拉浮层阴影、键盘 focus 光环 - 导航条玻璃拟态(半透明 + 毛玻璃模糊),胶囊搜索框、激活项高亮;页面环境光渐变背景(科技感) - **重新布局**:宽屏(≥1400px)内容容器扩至 1320px;登录页居中品牌卡片(大 Logo + 渐变标题);次级菜单/列表加大呼吸间距;卡片 hover 轻浮起、全局过渡动效、字号/行高优化(舒适感) ## 应用补丁 ```bash cd git apply gitea-ai-features.patch ``` ## 编译运行 ```bash # 工具链已内置 export PATH="/d/projectwork/aicode/gitea/tools/go/bin:$PATH" export GOPROXY="https://goproxy.cn,direct" CGO_ENABLED=0 cd gitea-src pnpm install --frozen-lockfile && pnpm exec vite build # 前端(改过模板 tw- 类时) go generate -tags '' ./... # 首次 go build -tags '' -ldflags "-X main.Version=1.25.0+onehub -X 'main.Tags=bindata sqlite sqlite_unlock_notify'" -o gitea.exe ./ # 运行(工作目录独立,templates/options/public 以 junction 指向源码目录) mkdir -p run && cd run export GITEA_WORK_DIR="$PWD" ../gitea-src/gitea.exe web # http://localhost:3000 ``` 模板新增 tailwind 类后需执行:`pnpm exec vite build`(前端构建产物不入补丁)。 ## 界面截图 ### AI 接入配置(站点管理 → 配置 → AI 接入) 供应商预设(DeepSeek/qwen/zhipu/custom)、参数调节与 Token 节省策略: ![AI 接入配置](docs/screenshots/admin-ai.png) ### 效能分析(顶部导航 `/efficiency`) 四维度 KPI 看板(概览/按项目/按人员/趋势)+ AI 工单专项统计,支持导出自包含 HTML 报告与按组织打包 ZIP: ![效能分析](docs/screenshots/efficiency.png) ### 项目中心(顶部导航 → 项目 `/projects`) 可见仓库卡片列表,顶部组织下拉过滤;单仓库工作区以「需求 → 研发 → 测试 → 发版 → 总结」五阶段闭环管理,需求可勾选一键「转 AI 工单」: ![项目列表](docs/screenshots/projects.png) ![项目工作区](docs/screenshots/project-workspace.png) ### AI 工单(组织 → AI 工单) 自动抓取仓库 README+文件树+提交+open issues → AI 自动拆解 → 草稿落库 → 评审(编辑/驳回/重新提交)→ 审批发布为 Issue: ![组织 AI 工单](docs/screenshots/org-ai-tasks.png) ### AI 代码审查(组织 → AI 代码审查) 默认分支最近提交 diff → LLM 按严重级别输出结论(防幻觉校验)→ 人工勾选后可生成工单草稿、批量审批发布: ![组织 AI 代码审查](docs/screenshots/org-ai-review.png) ### 组织效能周报(组织 → 效能周报) 本周/上周/环比指标 + AI 四段式中文周报,一键复制、导出 Markdown: ![组织效能周报](docs/screenshots/weekly-report.png) ### 仓库智能问答(仓库 → AI 问答) 多轮对话 + 文件名检索增强: ![仓库智能问答](docs/screenshots/ai-chat.png) ### 个人工作成果(顶部导航 → 工作成果) 本周/上周指标、近 12 周趋势 + AI 个人成果总结: ![个人工作成果](docs/screenshots/work-summary.png) ### 项目文档(项目工作区 → 文档) 复用仓库 Documents:pdf/doc/docx/ppt/pptx 上传、PDF 内联预览、AI 中文摘要: ![项目文档](docs/screenshots/documents.png) ## 功能总览 ### 基础能力 | 功能 | 入口 | 说明 | | --- | --- | --- | | AI 接入配置 | 站点管理 → 配置 → AI 接入 | 供应商预设(DeepSeek/qwen/zhipu/custom),`system_setting` KV 存储 | | 组织/仓库文档 + AI 摘要 | 组织/仓库 Documents | pdf/doc/docx/ppt/pptx 上传、PDF 预览、AI 中文摘要 | | 仓库智能问答 | 仓库 → AI 问答 | 多轮对话 + 文件名检索增强 | | Issue AI 建议 | Issue 页侧边栏 | 分诊建议(标签/处理人,服务端二次校验后采纳)+ 重复工单检测(语义比对,防幻觉编号过滤) | | PR 变更摘要 | PR 页侧边栏 | 基于 `git diff -p`(merge-base..head,30K 上限)生成摘要,可一键追加到 PR 描述 | ### AI 工单(组织 → AI 工单) 选项目 → 自动抓取 README+文件树+提交+open issues → AI 自动拆解 → **草稿落库** → 评审(编辑/驳回+原因/重新提交/作废)→ **审批发布**(仓库 Admin+,事务创建,全成功才提交)。发布即工单,进效能统计。 - 进入页面默认选中第一个可写仓库,内容与草稿直接呈现 - 分析内容标注"自动生成、可修改"提示 ### AI 代码审查 | 场景 | 入口 | 产出 | | --- | --- | --- | | PR 审查 | PR 页侧边栏「AI 代码审查」 | 结论确认后逐条发布为 PR 评论 | | 组织审查 | 组织 → AI 代码审查 | 默认分支最近 5~30 次提交的 diff → 结论可勾选**生成工单草稿**,草稿页单个/批量审批发布为工单 | - 共用底座 `services/ai/review.go`:严格 JSON 解析、级别白名单(非法降级「建议」)、**引用文件必须在变更列表中(防幻觉)**、≤20 条按级别排序 ### 效能分析(顶部导航 `/efficiency`) 四维度切换(全部组织/单组织通用):**概览 / 按项目 / 按人员 / 趋势** - 按项目:每仓库 Issue/PR/近30天/AI 工单表格,按工单量排序 - 按人员:每成员创建/关闭 Issue、发起/合并 PR,跨组织去重聚合 - 趋势:近 12 周新建/关闭/合并 PR 柱状图 + **工单完成率趋势**(当周关闭 ÷ 当周新建) - **导出报告**:自包含 HTML(KPI + 趋势表 + 项目/人员明细 + 口径说明),支持按组织打包 ZIP;私有组织权限与页面一致 - 口径:仅统计组织公开仓库;成员 PR 合并数经 `pull_request JOIN issue` 按作者统计 ### 组织效能周报(组织 → 效能周报) 本周/上周/环比指标 + AI 四段式中文周报(Markdown 渲染)。 - 生成按钮防重复提交;报告支持**一键复制**与**导出 Markdown**(Blob 下载当前展示原文,文件名 `{org}-weekly-report-{日期}.md`) ### 个人工作成果(顶部导航 → 工作成果) - 本周/上周新建与关闭 Issue、合并 PR、累计发起/合并、近 12 周个人趋势柱状图 + AI 个人成果总结(一键复制) - 入口:顶部导航栏「工作成果」(`/user/work-summary`,仅本人可见,数据按 poster 统计无越权;当前页高亮) - 实现:`services/efficiency/personal.go`、`routers/web/user/work_summary.go` ### 项目中心(顶部导航 → 项目 `/projects`) 以「**需求 → 研发 → 测试 → 发版 → 总结**」五阶段闭环管理项目(仓库只是存代码的地方): - **项目列表** `/projects`:当前用户可见仓库卡片(owner/name、描述、star、open issue 数),顶部组织下拉过滤(`?org=`) - **项目工作区** `/projects/{owner}/{repo}`(`?tab=` 切换,tab 顺序即流水线:需求/研发/测试/发版/周报/概览/文档/成员,默认需求): - **需求**:录入(标题/内容/优先级)→ 列表(仅 stage=requirement)带状态/优先级/阶段徽标;勾选多条「转 AI 工单」生成 `ai_task_draft` 草稿并**自动进入研发阶段**(组织仓库跳草稿详情,个人仓库跳仓库级 ai-tasks 页);支持关闭 - **研发 / 测试**:该阶段需求列表 + 展开关联工单链接(DraftID → 草稿 items 的 issue_id/index → `/{repo}/issues/{n}`)+「推进」按钮(逐阶段流转,服务端校验只许前进一格) - **发版**:既有最近 10 个 release 与发布管理入口 + stage=released 需求列表(「推进到总结」) - **周报(总结)**:顶部五阶段分布统计卡 + 已转工单数/占比 + AI 中文项目周报(Markdown 渲染、一键复制、防重复提交) - 概览/文档/成员:原功能保留(克隆地址复制、统计小卡、复用仓库 Documents、成员与权限) - 实现:`routers/web/projects/projects.go`、`models/repo/project_requirement.go`(迁移 357 建表 + **358 加 stage 列**)、`templates/projectcenter/*`、`POST /projects/{u}/{r}/requirements/stage` ### AI 编辑器(全局 Markdown 编辑器 AI 辅助) - 编辑器工具栏「AI 辅助」按钮 + **右键菜单**(剪切/复制/粘贴/全选 + 五种 AI 动作)双入口,纯文本模式与 EasyMDE 模式均可用;有选中文字时替换选区,否则在光标处追加;右键菜单跟随光标定位、防出屏、Esc/点击外部关闭 - 后端 `POST /-/ai/assist` + `GET /-/ai/assist/providers` 完全复用统一「AI 接入」配置:菜单内嵌供应商下拉(多供应商时出现),未指定时取第一个已启用供应商;文本上限 1 万字符 - 实现:`routers/web/aiassist/aiassist.go`、`web_src/js/features/comp/AiAssist.ts` - 选型结论:未整体替换编辑器引擎——Gitea 的 EasyMDE 已深度集成所有 Markdown 字段(评论/维基/发布/项目),整体替换为 Milkdown/Vditor 成本高且破坏面大;以最小侵入为现有双模式编辑器加 AI 能力是性价比最优解 ### AI 代码审查(团队项目 → 代码审查页签) - 一键全面分析项目代码结构、模块划分与潜在缺陷:输入为文件树 + 主要源码文件内容(12 个文件 × 2.5K 字符,28K 上限),输出整体结论、模块健康度、问题清单(复用严重级别 + 文件幻觉过滤)、改进建议 - 结果页**左图谱右结论**:左侧结构图谱(中心项目节点 + 模块卫星节点按健康度着色,SVG 纯手绘)+ 问题严重度分布条;右侧整体结论、问题卡片、建议列表 - 实现:`services/ai/codeanalysis.go`、`routers/web/projects/code_analysis.go`、`templates/projectcenter/code_analysis.tmpl` ### AI 接入 Token 节省(按供应商配置) - 站点管理 → AI 接入 每个供应商新增「Token 节省」区:**压缩输入**(合并多余空行、清理行尾空白,不动代码语义,默认开)、**精简输出**(系统提示要求模型简洁回答)、**输入长度上限**(按字符计:先丢弃最早的历史消息、再截断当前输入,0=不限制) - 在 `services/ai` 的 `compressMessages` 统一应用,全站 AI 功能(工单/审查/问答/周报/编辑器…)自动生效;截断按 rune 安全处理中文 ## 架构要点 ``` services/ai/ # 公共底座:供应商配置、ChatCompletion(单轮/多轮)、任务解析、 # 仓库内容构建(BuildDefaultContent)、文档文本提取、代码审查(ReviewFinding/校验) services/document/ # 文档上传/删除 services/efficiency/ # 效能统计(含 AI 工单) models/repo/ # Document、AITaskDraft、ProjectRequirement(含迁移 354/355/357) routers/web/ # admin/ai、org/{ai_tasks,weekly_report,documents}、 # repo/{ai_tasks,ai_chat,issue_ai,pull_ai,pull_ai_review,documents}、efficiency、aitasks、 # projects(项目中心:项目列表 + 仓库工作区) ``` 其他入口:仓库内 AI 工单两步式 `/{repo}/ai-tasks`;跨项目页 `/ai-tasks`(未挂导航)。 ## 本轮更新记录 0. **项目中心**:顶部导航「项目」→ `/projects` 项目列表 + 单仓库工作区(需求/研发/测试/发版/周报/概览/文档/成员),需求可一键转 AI 工单草稿(迁移 357 `project_requirement` 表) 0.5. **项目五阶段闭环**:需求 → 研发 → 测试 → 发版 → 总结 流水线(迁移 358 加 `stage` 列),逐阶段「推进」流转、关联工单链接、周报顶部阶段分布统计 1. **PR AI 代码审查**:按严重级别输出严格 JSON 结论,人工勾选后发布为 PR 评论(`pull_ai_review.go`) 2. **效能分析按人/按项目维度**:`services/efficiency/dimension.go`,`?view=repos|members` 3. **效能趋势统计**:近 12 周三序列周分桶柱状图(`trend.go`),修复既有 `tw-h-2` 未构建问题(已重跑 vite build) 4. **工单完成率趋势**:当周关闭 ÷ 当周新建,第二组绿色柱状图 5. **效能报告导出**:`GET /efficiency/export`、`/efficiency/{org}/export`、`/efficiency/export/orgs`(ZIP 按组织) 6. **组织 AI 代码审查 + 转工单**:`org/ai_review.go`,审查结论 → 工单草稿 → 既有草稿流程单个/批量发布 7. **三页面易用性优化**:AI 工单/AI 审查默认选中首个可写仓库;工单内容来源提示;周报防重复提交 8. **效能周报导出**:Markdown 一键下载(所见即所得,不重新生成) ## 设计原则 - 所有 AI 写操作走「AI 产出 → 人工确认/审批」两步,AI 不直接改业务数据 - 供应商配置统一走 `system_setting` KV,业务零配置 - 权限收敛在 handler;服务端二次校验所有 LLM 输出(级别、文件幻觉、编号) - 已发布的 AI 工单自动进入效能分析与周报统计,形成闭环 ## 已知限制 - 前端 tailwind 类为构建期生成:模板新增 `tw-` 类需重跑 `pnpm exec vite build` - PDF 摘要依赖文本层(扫描件不支持);docx/pptx 提取丢表格/图片 - AI 问答检索为文件名子串匹配(非向量检索),大仓库效果有限 - 组织级统计口径为公开仓库;AI 代码审查结论发布为文件级评论/工单,非行内 review comment - LLM 返回解析要求严格 JSON,个别模型需调 prompt(按 DeepSeek/qwen/glm 验证) - 测试环境观察:curl 脚本跨命令会话偶发失效(浏览器端因 WebSocket 心跳不受影响) ## 致谢 - [Gitea](https://gitea.com/):本项目基于 Gitea main 分支(commit `f0f53a7`)改造,感谢 Gitea 团队及社区的优秀开源工作 - [DeepSeek](https://www.deepseek.com/)、[通义千问](https://www.aliyun.com/product/tongyi)、[智谱 GLM](https://www.zhipuai.cn/):AI 功能开发与验证所用的多模型支持