Warning
仍在开发中,当前版本并不完整...
- 🎯 任务管理 - 创建、编辑、删除定时任务
- ⏰ Cron 调度 - 支持标准 Cron 表达式,支持秒级调度
- 🐍 多语言支持 - Python、Node.js、Shell 脚本
- 📝 执行日志 - 完整的任务执行历史记录
- 🔔 通知推送 - 支持钉钉、企业微信、Webhook 通知
- 🎨 优雅界面 - 基于 Tailwind CSS 的现代化 UI
- 💾 本地存储 - JSON 文件存储,无需数据库
- 🚀 跨平台 - 支持 macOS、Windows、Linux
- Go 1.23+
- Node.js 16+
- Wails CLI v2.11+
安装 Wails CLI:
go install github.com/wailsapp/wails/v2/cmd/wails@latest# 克隆项目
cd app
# 开发模式运行
wails dev
# 构建生产版本
wails build构建完成后,可执行文件位于 build/bin/ 目录。
- 点击「创建任务」按钮
- 填写任务信息:
- 任务名称: 给任务起个名字
- 任务描述: 可选的详细说明
- 脚本类型: 选择 Python、Node.js 或 Shell
- 脚本来源: 可以选择文件路径或直接写代码
格式: 秒 分 时 日 月 周
或: 分 时 日 月 周
# 每分钟执行
* * * * *
# 每天 0 点执行
0 0 * * *
# 每周一 9:00 执行
0 9 * * 1
# 每 5 分钟执行
*/5 * * * *
# 每天 8:00、12:00、18:00 执行
0 8,12,18 * * *
#!/usr/bin/env python3
import datetime
print(f"Hello from Python! Current time: {datetime.datetime.now()}")#!/usr/bin/env node
console.log(`Hello from Node.js! Current time: ${new Date().toISOString()}`);#!/bin/bash
echo "Hello from Shell! Current time: $(date)"- 进入「通知配置」页面
- 点击「添加通知」
- 选择通知类型(飞书/钉钉/企业微信/Webhook)
- 填写对应的配置信息
- 在飞书群中添加自定义机器人
- 获取 Webhook URL
- 粘贴到 Tempo 配置中
- 在钉钉群中添加自定义机器人
- 获取 Webhook URL
- 粘贴到 Tempo 配置中
- 在企业微信群中添加机器人
- 获取 Webhook URL
- 粘贴到 Tempo 配置中
Tempo 会发送 POST 请求,JSON 格式:
{
"id": "log_xxx",
"taskId": "task_xxx",
"taskName": "我的任务",
"startTime": "2024-11-24T15:00:00Z",
"endTime": "2024-11-24T15:00:05Z",
"duration": 5000,
"output": "任务输出内容",
"error": "",
"success": true
}tempo/
├── internal/ # 核心业务逻辑
│ ├── executor/ # 脚本执行器
│ ├── models/ # 数据模型
│ ├── notifier/ # 通知系统
│ ├── scheduler/ # 任务调度器
│ └── storage/ # 数据存储
├── frontend/ # React 前端
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ └── types/ # 类型定义
│ └── wailsjs/ # Wails 生成的绑定
├── app.go # 应用主逻辑
└── main.go # 入口文件
数据存储在用户主目录的 .tempo 文件夹:
~/.tempo/
├── tasks.json # 任务配置
├── logs.json # 执行日志
├── configs.json # 通知配置
└── scripts/ # 脚本文件
- Wails v2 - Go + Web 技术的桌面应用框架
- robfig/cron - Cron 表达式解析和调度
- Go 标准库 - 文件操作、进程执行等
- React 18 - UI 框架
- TypeScript - 类型安全
- Tailwind CSS - 样式框架
- Vite - 构建工具
cd frontend
npm install
npm run dev# 重新生成绑定
wails generate module
# 热重载开发
wails dev# Go 依赖
go get github.com/example/package
# npm 依赖
cd frontend
npm install package-name编辑 main.go:
Width: 1280, // 窗口宽度
Height: 800, // 窗口高度编辑 app.go 的 startup 方法:
a.dataDir = filepath.Join(homeDir, ".tempo")确保系统 PATH 中包含 python3 和 node 命令:
# 检查
which python3
which node
# macOS/Linux 添加到 PATH
export PATH="/usr/local/bin:$PATH"脚本文件需要执行权限:
chmod +x /path/to/script.sh定期清理日志文件:
rm ~/.tempo/logs.json或在代码中限制日志数量(storage/storage.go)。
MIT License
- Wails - 优秀的 Go 桌面应用框架
- 青龙面板 - 灵感来源
- Tailwind CSS - 美观的 CSS 框架
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- Email: hi@dogxi.me
- GitHub: @dogxi
Tempo 针对 macOS 进行了特别优化:
- 无边框标题栏 - 使用 macOS 原生的 Inset 标题栏样式
- 简洁设计 - 移除了应用图标,保持界面简约
- 原生体验 - 完美集成 macOS 交通灯按钮
- 拖拽支持 - Header 区域支持窗口拖拽
⭐ 如果这个项目对你有帮助,请给个 Star!
