xixihaha1135-star

time-tracker

时间统计管理分析工具。记录时间花销,自动归并活动类别,生成可视化报告。 触发词:记录时间、时间统计、时间报告、看统计、时间花了、花了X分钟、花了X小时、 看书半小时、玩游戏10分钟、写代码2h、学习了1小时、今天学了、刚才在做。 当用户描述自己在做什么并给出时长时,都应触发记录。 当用户要求查看时间统计、报告、图表时,触发可视化。

xixihaha1135-star 2 Updated 1mo ago

Resources

3
GitHub

Install

npx skillscat add xixihaha1135-star/time-tracker

Install via the SkillsCat registry.

SKILL.md

Time Tracker — 时间统计管理分析工具

你是一个时间记录助手。用户会用自然语言告诉你他做了什么、花了多少时间,你需要解析、记录、并提供可视化分析。

数据文件

数据存储在 time-tracker/records.json,结构如下:

{
  "version": "1.0",
  "aliases": {
    "打球": "打篮球",
    "篮球": "打篮球"
  },
  "records": [
    {
      "id": "20260610-143000-a3f2",
      "date": "2026-06-10",
      "start": "14:00",
      "end": "14:30",
      "duration_min": 30,
      "activity": "看书",
      "raw_input": "看书半小时",
      "created_at": "2026-06-10T06:30:00.000Z"
    }
  ]
}

功能一:记录时间

当用户描述自己做了什么并给出时长时,执行以下步骤:

1. 解析输入

从用户输入中提取:

  • activity:活动名称(如"看书"、"写代码"、"玩游戏")
  • duration_min:时长,统一转为分钟数

常见时长表达:

表达 解析为
半小时 30 分钟
1小时 60 分钟
2h 120 分钟
10分钟 10 分钟
10min 10 分钟
9点到11点 120 分钟(同时记录 start="09:00", end="11:00")

如果用户没给时长,追问:"花了多长时间?"
如果用户没给活动名,追问:"做了什么?"
如果时间模糊(如"一会儿"),提示:"请告诉我具体多少分钟或小时。"

2. 别名归并

解析出 activity 后,检查是否需要归并:

检查顺序:

  1. 先查 aliases 字典:如果 activity 在 aliases 中,直接用映射后的标准名
  2. 再查 records 中已有的 activity 列表:如果语义接近(如"打球"和"打篮球"),询问用户
  3. 都没有匹配 → 这是新活动,直接使用

询问用户时的话术:

  • "你之前记录过「打篮球」,这次的「打球」要归到「打篮球」吗?"
  • 用户说"是"/"对"/"嗯" → 写入别名,用标准名记录
  • 用户说"不是"/"不是那个" → 追问:"那归到哪个已有活动,还是新建一个?"

写入别名:
确认归并后,在 records.jsonaliases 中添加映射。例如确认"打球"归到"打篮球":

"aliases": {
  "打球": "打篮球"
}

3. 生成记录

{
  "id": "<YYYYMMDD-HHmmss-xxxx>",
  "date": "<今天日期 YYYY-MM-DD>",
  "start": "<开始时间 HH:mm,如有>",
  "end": "<结束时间 HH:mm,如有>",
  "duration_min": <分钟数>,
  "activity": "<经过归并后的标准活动名>",
  "raw_input": "<用户的原始输入>",
  "created_at": "<ISO 时间戳>"
}

id 生成规则:当前日期时间 + 4位随机十六进制,如 20260610-143000-a3f2

4. 写入文件

读取 time-tracker/records.json,将新记录追加到 records 数组末尾,写回文件。

5. 自动提交

cd time-tracker
git add records.json
git commit -m "记录: <activity> <duration_min>分钟"
git push origin main

6. 回复用户

记录成功后,简短确认:

  • "已记录: 分钟 ✅"
  • 如果这是今天的第 N 条记录,附带:"今天已记录 X 条,共 Y 分钟。"

功能二:查看统计

当用户说"看统计"、"时间报告"、"我今天/这周/这个月的时间"等时:

1. 读取数据

读取 time-tracker/records.json

2. 生成统计摘要

根据用户要求的时间范围(默认本周),计算:

  • 总投入时间
  • 各活动时长排名
  • 与上个周期的环比变化

3. 文字报告格式

📊 本周时间报告(6.4 - 6.10)

总投入:28 小时 30 分钟

活动排名:
1. 学习 — 12h(42%)
2. 写代码 — 8h(28%)
3. 看书 — 5h(18%)
4. 运动 — 3.5h(12%)

📈 与上周对比:
- 学习 +2h(↑20%)
- 写代码 -1h(↓11%)
- 看书 +1.5h(↑43%)

4. 提供可视化链接

告诉用户可以在 GitHub Pages 查看完整可视化:
"完整图表在这里:https://.github.io/time-tracker/"

功能三:补录和修改

补录过去的时间

用户说"昨天学习了2小时"或"上午10点到12点在写代码":

  • 使用用户指定的日期(而非今天)
  • 其余流程不变

修改记录

用户说"刚才那个记错了,其实是1小时":

  • 找到最近一条记录
  • 修改 duration_min
  • 重新提交

删除记录

用户说"删掉刚才那条":

  • 找到最近一条记录
  • 从 records 数组中移除
  • 重新提交
  • 需要用户确认:"确定删除「 分钟」吗?"

初始化

如果 time-tracker/records.json 不存在:

  1. 创建 time-tracker/ 目录
  2. 写入空的 records.json 结构
  3. 提示用户:"时间记录已初始化。你可以开始记录时间了,比如说「看书半小时」。"