一个用于监视本地 Git 提交和推送活动的工具,通过全局 Git hook 捕获所有操作,并提供 Web 界面展示统计数据。
- 🎀 可爱甜美风: 二次元萌妹风格设计,粉色系配色,丰富的动画效果
- 💖 精致体验: 心跳标题、弹跳按钮、飘浮卡片等丰富交互
- ✅ 自动扫描: 一键扫描系统中所有 Git 仓库,自动安装监控 hook
- ✅ 仓库管理: Web 界面管理所有监控仓库,支持批量操作
- ✅ 全局监视: 通过 Git hook 自动捕获所有仓库的 commit 和 push 操作
- post-commit hook - 在提交后捕获提交事件
- pre-push hook - 在推送前捕获推送事件
- ✅ 数据可视化: 使用图表展示提交趋势、仓库分布、分支活跃度
- ✅ 详细记录: 记录每次操作的详细信息(时间、仓库、分支、消息、作者等)
- ✅ 双存储: SQLite + JSON 双模式存储,数据更安全
- ✅ 统计分析: 提供多维度统计数据(按日期、仓库、分支)
- ✅ 数据导出: 支持 CSV 和 JSON 格式导出
- ✅ Web 界面: 二次元萌妹风格的可爱仪表盘界面
- ✅ GitHub 集成: 直接访问 GitHub 仓库
- 后端: Python 3.7+ + Flask
- 前端: HTML + CSS + JavaScript + Chart.js
- 采用可爱甜美风二次元萌妹设计
- 粉色系渐变配色 (#FFB6C1, #FF69B4, #FF1493)
- 丰富的 CSS 动画效果(心跳、弹跳、旋转等)
- 完全响应式设计,支持移动端
- 数据库: SQLite
- 存储: JSON + SQLite 双模式
- Python: 3.7 或更高版本(推荐 3.8+)
- Git: 任意版本(用于 hook 功能)
- 操作系统: Windows、Linux 或 macOS
在安装前,请确认您的 Python 版本:
Windows:
python --versionLinux/Mac:
python3 --version如果版本低于 3.7,请先升级 Python:
- Windows: 访问 https://www.python.org/downloads/ 下载安装
- macOS: 使用 Homebrew:
brew install python3 - Linux: 使用系统包管理器或 pyenv
cd C:\Users\Liang\Desktop\Work\gitSeeWindows:
python setup.pyLinux/Mac:
python3 setup.py安装脚本将自动:
- ✓ 检查 Python 版本是否符合要求
- ✓ 创建必要的目录结构
- ✓ 初始化 SQLite 数据库
- ✓ 配置 Git 全局模板目录
- ✓ 复制 hook 脚本
- ✓ 安装 Python 依赖
注意: 如果 Python 版本不符合要求(低于 3.7),安装脚本会提示您并中止安装。请先升级 Python 后再运行安装脚本。
cd your-existing-repo
git init # 重新初始化,应用全局模板Windows:
start_server.batLinux/Mac:
chmod +x start_server.sh
./start_server.sh或手动启动:
python backend/app.py打开浏览器访问: http://localhost:5000
PEEP GIT 提供三个主要页面:
- 主页 (
/) - 查看整体统计和图表 - 详细记录 (
/details) - 查看所有 Git 操作记录 - 仓库小屋 (
/repositories) - 管理监控的仓库
所有页面均采用可爱甜美风设计,提供愉悦的使用体验~
PEEP GIT 提供了强大的仓库管理功能,让您可以轻松管理所有 Git 仓库的监控。
- 访问
http://localhost:5000/repositories - 点击 "🔍 扫描仓库" 按钮
- 选择扫描选项:
- 扫描目录: 留空则扫描常见目录(用户主目录、桌面、文档等),或手动指定目录(用分号分隔)
- 扫描深度: 控制递归扫描的深度(默认 4 层)
- 点击 "开始扫描"
- 扫描完成后,选择要添加的仓库
扫描会自动发现:
- 用户主目录下的所有 Git 仓库
- 桌面、文档、项目目录中的仓库
- 自动排除系统目录和虚拟环境
- 在仓库管理页面,找到 "✏️ 手动添加" 表单
- 输入 Git 仓库的完整路径
- 点击 "➕ 添加" 按钮
例如:
- Windows:
C:\Users\YourName\projects\my-repo - Linux/Mac:
/home/username/projects/my-repo
在仓库管理页面,您可以:
-
查看仓库列表: 所有被监控的仓库以卡片形式展示
-
查看仓库信息:
- 仓库名称和路径
- 监控状态(已监控/未监控)
- 提交数和推送数统计
- 最后活动时间
- 当前分支
- 远程仓库 URL
-
安装/卸载监控:
- 点击 "✓ 安装监控" 为仓库启用监控
- 点击 "✗ 卸载监控" 停止监控仓库
-
删除仓库: 从监控列表中移除仓库(不会删除实际文件)
安装完成后,所有 Git 操作(commit/push)将自动被捕获并记录,无需手动干预。
只需正常使用 Git:
git add .
git commit -m "your commit message"
git push这些操作都会被自动记录到 GitSee 数据库中。
peep-git/
├── backend/ # 后端核心代码
│ ├── models/ # 数据模型
│ │ ├── database.py # 数据库操作
│ │ └── storage_manager.py # 双存储管理
│ ├── routes/ # 路由
│ │ ├── api.py # 统计 API 端点
│ │ ├── repo_management.py # 仓库管理 API
│ │ └── web.py # Web 页面路由
│ ├── services/ # 服务
│ │ └── statistics.py # 统计服务
│ ├── utils/ # 工具模块
│ │ ├── repo_scanner.py # 仓库扫描工具
│ │ └── hook_installer.py # Hook 安装工具
│ └── app.py # Flask 应用入口
│
├── frontend/ # 前端资源
│ ├── static/
│ │ ├── css/ # 样式文件(可爱甜美风)
│ │ │ ├── main.css # 全局样式
│ │ │ ├── dashboard.css # 仪表盘样式
│ │ │ └── animations.css # 动画库
│ │ ├── js/ # JavaScript 文件
│ │ ├── images/ # 图片资源
│ │ │ └── characters/ # 角色图片文件夹
│ │ └── lib/ # 第三方库
│ └── templates/ # HTML 模板
│ ├── base.html # 基础模板
│ ├── dashboard.html # 主页
│ ├── details.html # 详细记录页面
│ └── repositories.html # 仓库小屋页面
│
├── hooks_global/ # 全局 hook 脚本
│ ├── templates/hooks/ # Hook 模板
│ └── scripts/ # 捕获脚本
│ ├── capture_commit.py # 捕获 commit 事件
│ └── capture_push.py # 捕获 push 事件
│
├── utils/ # 工具脚本
│ └── check_python.py # Python 环境检查
│
├── data/ # 数据存储目录
│ ├── peep_git.db # SQLite 数据库
│ └── records.json # JSON 备份
│
├── logs/ # 日志目录
│ └── app.log # 应用日志
│
├── setup.py # 安装脚本
├── config.json # 配置文件
├── start_server.bat # Windows 启动脚本
├── start_server.sh # Linux/Mac 启动脚本
├── requirements.txt # Python 依赖
└── README.md # 项目文档
GET /api/v1/statistics
参数:
start_date: 开始日期 (YYYY-MM-DD)end_date: 结束日期 (YYYY-MM-DD)repo_path: 仓库路径筛选
GET /api/v1/activities
参数:
page: 页码(从 1 开始)page_size: 每页记录数activity_type: 活动类型(commit/push)repo_path: 仓库路径筛选
GET /api/v1/trends
参数:
period: 时间周期(day/week/month)repo_path: 仓库路径筛选days: 返回最近几天的数据
GET /api/v1/export
参数:
format: 导出格式(json/csv)start_date: 开始日期end_date: 结束日期
POST /api/v1/sync
触发 SQLite 和 JSON 数据同步。
POST /api/v1/repos/scan
请求体:
{
"directories": ["路径1", "路径2"], // 可选
"max_depth": 5 // 可选,默认 4
}POST /api/v1/repos/add
请求体:
{
"repo_path": "仓库路径",
"install_hook": true // 是否安装 hook
}GET /api/v1/repos/list?monitored_only=false
POST /api/v1/repos/<仓库路径>/install-hook
POST /api/v1/repos/<仓库路径>/uninstall-hook
DELETE /api/v1/repos/<仓库路径>
POST /api/v1/repos/batch-add
请求体:
{
"repo_paths": ["路径1", "路径2"],
"install_hooks": true
}配置文件位于项目根目录的 config.json。首次使用时,请复制 config.example.json 并根据需要修改配置。
# 复制配置模板
cp config.example.json config.json{
"app": {
"host": "0.0.0.0",
"port": 5000,
"debug": false
},
"database": {
"path": "data/gitsee.db",
"backup_enabled": true,
"backup_interval": 86400
},
"json_storage": {
"path": "data/records.json",
"auto_sync": true,
"sync_interval": 300
},
"logging": {
"level": "INFO",
"file": "logs/app.log",
"max_size": "10MB"
},
"features": {
"auto_refresh": true,
"refresh_interval": 30,
"enable_trends": true,
"enable_export": true,
"enable_ai_evaluation": true
},
"ai": {
"enabled": true,
"api_key": "your-api-key-here",
"api_url": "https://api.openai.com/v1/chat/completions",
"model": "gpt-4o-mini",
"max_tokens": 500,
"temperature": 0.8,
"system_prompt": "你是一个可爱、温暖、充满鼓励的二次元萌妹助手。"
}
}host: 监听地址,默认0.0.0.0(监听所有网络接口)port: Web 服务端口,默认5000debug: 调试模式,生产环境建议设为false
path: SQLite 数据库文件路径backup_enabled: 是否启用自动备份backup_interval: 备份间隔(秒),默认86400(24小时)
path: JSON 备份文件路径auto_sync: 是否自动同步数据库到 JSONsync_interval: 同步间隔(秒)
level: 日志级别(DEBUG/INFO/WARNING/ERROR)file: 日志文件路径max_size: 日志文件最大大小
auto_refresh: 是否启用自动刷新refresh_interval: 刷新间隔(秒)enable_trends: 是否启用趋势图表enable_export: 是否启用数据导出enable_ai_evaluation: 是否启用 AI 评价功能
enabled: 是否启用 AI 评价(需要features.enable_ai_evaluation同时为true)api_key: AI 服务 API 密钥api_url: AI API 端点 URLmodel: 使用的模型名称max_tokens: 最大生成令牌数temperature: 生成温度(0.0-1.0,越高越随机)system_prompt: AI 助手的系统提示词,用于定义 AI 的性格和回复风格(可选,未配置时使用默认值)
"ai": {
"enabled": true,
"api_key": "sk-your-openai-api-key",
"api_url": "https://api.openai.com/v1/chat/completions",
"model": "gpt-4o-mini",
"max_tokens": 500,
"temperature": 0.8,
"system_prompt": "你是一个可爱、温暖、充满鼓励的二次元萌妹助手。"
}"ai": {
"enabled": true,
"api_key": "sk-your-deepseek-api-key",
"api_url": "https://api.deepseek.com/v1/chat/completions",
"model": "deepseek-chat",
"max_tokens": 500,
"temperature": 0.8,
"system_prompt": "你是一个可爱、温暖、充满鼓励,活泼,具有少女感的二次元萌妹助手。你必须用幽默的比喻或者段子,温暖的语言鼓励和赞赏他人。"
}只要服务兼容 OpenAI API 格式,都可以配置使用:
"ai": {
"enabled": true,
"api_key": "your-api-key",
"api_url": "https://your-api-endpoint/v1/chat/completions",
"model": "your-model-name",
"max_tokens": 500,
"temperature": 0.8,
"system_prompt": "你想要的系统提示词内容"
}通过修改 system_prompt 配置项,你可以完全自定义 AI 助手的性格和回复风格:
"ai": {
"system_prompt": "你是一个专业的代码审查助手,语气严谨但友善。"
}提示: 修改 system_prompt 后需重启服务器才能生效。点击清除缓存按钮(🗑️)可以立即看到效果。
为了优化性能和减少 API 调用,系统实现了智能缓存机制:
- 首次请求: 打开网页时,如果没有缓存,会调用 AI API 生成评价
- 缓存命中: 后续访问会直接使用缓存,不会重复调用 API
- 数量变化: 当提交或推送数量变化时,缓存自动失效,重新生成评价
- 日期过期: 缓存有效期至当天 23:59,第二天自动失效
- 手动刷新: 点击刷新按钮(🔄)会强制重新生成评价
- 清除缓存: 点击清除缓存按钮(🗑️)会删除缓存文件,下次访问时重新生成
config.json包含敏感信息(API 密钥),请勿提交到 Git 仓库config.json已添加到.gitignore,不会被 Git 跟踪- 团队协作时,请使用
config.example.json作为模板,各自创建本地配置 - 建议定期更换 API 密钥,确保账户安全
PEEP GIT 支持自定义二次元萌妹角色图片:
- 前往
frontend/static/images/characters/文件夹 - 替换以下文件:
mascot.png- 主角形象 (建议 300x400px)banner-bg.png- 横幅背景 (建议 1200x200px)loading.gif- 加载动画 (建议 100x100px)dashboard-bg.png- 仪表盘背景 (建议 1400x800px)
- 刷新浏览器查看效果
详细说明请参考 frontend/static/images/README.md
确认已安装 hook:
- 为仓库安装监控后,会同时安装
post-commit和pre-push两个 hook - 检查仓库的
.git/hooks/目录,应该能看到这两个文件
确认全局模板目录已正确配置:
- 全局模板目录主要用于新创建的仓库
- 对于已有仓库,需要通过 Web 界面手动安装监控
查看 hook 文件:
# 检查 hook 是否存在
ls .git/hooks/post-commit
ls .git/hooks/pre-push
# 查看 hook 内容
cat .git/hooks/post-commit
cat .git/hooks/pre-push- 检查端口 5000 是否被占用
- 在
config.json中修改端口配置 - 确认 Python 依赖已安装
pre-pushhook 会在推送之前触发,这是正常的- 即使推送失败,事件也会被记录
- 确认
pre-pushhook 已正确安装:cat .git/hooks/pre-push
- 检查 hook 脚本是否有执行权限(Linux/Mac):
chmod +x .git/hooks/pre-push
- 确认数据库文件存在:
data/peep_git.db - 检查 Git hook 脚本是否有执行权限
- 查看日志文件:
logs/app.log
git config --global --unset init.templatedir# 删除项目目录
rm -rf peep-gitPEEP GIT 采用可爱甜美风的二次元萌妹设计风格,为开发工作增添一份温馨与愉悦:
- 配色方案: 温柔的粉色渐变 (#FFB6C1 → #FFC0CB → #FFE4E1)
- 装饰元素: 星星、花朵、爱心等可爱符号点缀
- 动画效果: 心跳、弹跳、旋转等丰富交互
- 圆角设计: 所有元素采用圆润边角,营造柔和视觉
- 响应式布局: 完美适配桌面、平板、手机各种设备
欢迎提交 Issue 和 Pull Request!
如有问题,请提交 Issue 或访问 GitHub 仓库。
Made with ♡ by csmht