mcpField
W
Wdttg   Where Did The Time Go?

Wdttg Where Did The Time Go?

本地服务
github.com/plattnum生产力225 周前更新

关于 Wdttg Where Did The Time Go?

wdttg 是面向自由职业者的本地终端时间追踪器,提供 TUI 和 Markdown 存储。其 MCP 服务让 Agent 创建、查询并校验工时记录,包括检测时间重叠。

主要功能

  1. 01终端时间线界面
  2. 02按月存储 GFM Markdown
  3. 03客户、项目与活动层级
  4. 04检测冲突并生成报告
  5. 05导出 CSV 和 JSON

适用场景

  1. 01用自然语言记录工作时段
  2. 02按客户汇总可计费工时
  3. 03查找指定时段的空闲时间

MCP 相关

MCP 服务向客户端提供时间条目、客户与项目管理、重叠检查及报告工具。它会验证记录并执行排序和原子文件写入。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

wdttg - 时间都去哪儿了?

一款使用 Rust 构建、面向自由职业者的终端时间追踪工具。没有云服务、没有订阅,也不用排队等待应用商店审核。只有 Markdown 文件、TUI,以及一个 MCP 服务——毕竟人生苦短,没必要填写工时表单。

请我喝杯咖啡

时间线视图
更多截图 报告视图 管理视图

为什么要做这个

我第一次想解决这个问题时,做了 where-did-the-time-go Obsidian 插件。它很好用,但我厌倦了被绑定到特定应用平台上。Obsidian 的插件审核要等很久,而且归根结底,数据格式本来就只是 Markdown 表格。

如今 Markdown 无处不在——每个 IDE 都能读取,每个 AI Agent 都能很好地使用它。因此,我没有继续折腾审核流程,而是把这个概念独立出来:一个用于可视化的轻量 TUI,以及一个 MCP 服务,让 AI Agent 承担繁重的工作。

核心理念非常简单:我在 A 到 B 之间做了 X。给它分类,这样我就能据此生成报告和开具账单。

这不是任务管理器。我的任务存在工单、临时日志条目、看板里——当时觉得合适的地方都行。这个工具只关心你做了什么以及什么时候做的。和客户开会、进行两小时的开发、一次超时的简短通话。记录下来、添加标签,然后继续。

它如何与 AI 配合使用

这里真正发挥作用的是 MCP 服务。我不用再逐个点击表单,只要告诉 Claude 我做了什么:

“今天早上 9 点到 10 点半,我和 Acme 开了一个冲刺规划会”

Claude 会调用 MCP 工具、验证条目、检查时间是否重叠,然后记录下来。如果我说得太含糊,它会询问缺失的信息。

为什么使用 MCP,而不是让 AI 直接编辑 Markdown?

没有 MCP 服务的话,AI 必须将原始 Markdown 读入上下文、解析表格、在脑中比较时间戳以检查是否重叠、正确格式化新行,再把整个文件写回去。这些步骤中的任何一步都可能出错——大模型可能算错时间、弄坏表格格式,或者错误地认为某个时间段空闲。每条记录还会消耗上下文令牌,只为读取并重写文件。

有了 MCP 服务,create_entry 会以程序化方式处理所有这些工作——解析、验证、重叠检测、按时间顺序排序,以及原子化写入文件。AI 只需说“创建这个条目”,就能收到明确的成功结果或结构化错误。无需猜测、不浪费令牌,也不会有损坏文件的风险。

TUI 和 MCP 服务共用相同的数据文件,因此 AI 创建的条目会在约 200 毫秒内显示在时间线上。

功能

  • 无限垂直时间线——使用键盘和鼠标,无限向过去或未来滚动
  • 支持 AI Agent 集成的 MCP 服务(Claude Code、Cursor 等)
  • 使用 GFM Markdown 存储——每月一个文件,便于阅读和编辑
  • 客户/项目/活动层级结构,支持计费费率
  • 重叠检测和时间吸附
  • 生成包含可计费金额的报告
  • 监视文件,实现 TUI 与 MCP 之间的实时同步

安装

仅支持 macOS 和 Linux。 暂不支持 Windows。

从 GitHub Releases 安装(推荐)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/plattnum/wdttg-tui/releases/latest/download/wdttg-tui-installer.sh | sh
从源代码构建

需要 Rust 1.85+(2024 edition)。

git clone https://github.com/plattnum/wdttg-tui.git
cd wdttg-tui
cargo install --path crates/wdttg-tui

开始使用

1. 初始化
wdttg init

交互式设置向导——询问时间格式(12 小时制/24 小时制)、一周的起始日、数据目录以及你的首个客户。每一步都可以按 Enter 接受默认值。

Welcome to wdttg! Let's set things up.

Time format [24h/12h] (24h): 
Week start [monday/sunday] (monday): 
Data directory (/Users/you/.local/share/wdttg/data): 

Set up your first client:
  Client name (Personal): Acme Corp
  Hourly rate (0): 150
  Currency (USD): 

✓ Config saved to ~/.config/wdttg/config.toml
✓ Client data saved to ~/.local/share/wdttg/data/clients.toml
2. 启动 TUI
wdttg
3. 设置 AI 集成(可选)

MCP 服务由 AI 客户端自动启动——无需手动运行 wdttg serve。只需添加配置,AI 就能为你创建和查询时间记录。

请参阅下方的 MCP 服务设置。

导出报告
wdttg export --format csv --preset this-month          # CSV to stdout
wdttg export --format json --preset last-week           # JSON to stdout
wdttg export --format csv --start 2026-03-01 --end 2026-03-31 --client acme > report.csv

也可以在「Reports」选项卡中按 x,将当前视图导出为 CSV 文件到你的数据目录。

重新初始化
wdttg init --force    # resets preferences and client data (keeps time entries)
升级

安装新版本后,请重启所有运行 MCP 服务的 AI 客户端(Claude Desktop、Claude Code、Cursor 等)。它们会缓存旧的二进制文件——只有重启 AI 客户端并重新启动 wdttg serve,MCP 服务才会加载更改。

cargo install --path crates/wdttg-tui   # or download new release
# Then restart Claude Desktop / reload Claude Code

MCP 服务设置

Claude Code

将以下内容添加到项目的 .mcp.json(全局访问则添加到 ~/.claude/mcp.json):

{
  "mcpServers": {
    "wdttg": {
      "command": "wdttg",
      "args": ["serve"]
    }
  }
}

如果从源代码运行,而不是使用已安装的二进制文件:

{
  "mcpServers": {
    "wdttg": {
      "command": "cargo",
      "args": ["run", "-p", "wdttg-tui", "--", "serve"],
      "cwd": "/path/to/wdttg-tui"
    }
  }
}
可用的 MCP 工具
工具描述
时间记录
list_entries按日期范围、预设和筛选条件列出时间记录
get_entry按 ID 或开始/结束时间戳获取单条记录
create_entry创建新的时间记录,并进行验证和重叠检查
update_entry更新记录(支持部分更新)
delete_entry按 ID 或时间戳删除记录
check_overlaps检查拟定的时间范围是否与现有记录冲突
available_slots查找日期时间范围内的空闲时段
报告
generate_report按客户/项目/活动汇总报告,并显示可计费金额
get_status今日/本周总计、记录数量和配置摘要
客户与项目
list_clients列出客户及其项目和活动
create_client添加新客户
update_client更新客户字段
archive_client归档/取消归档客户(级联应用于项目和活动)
create_project在客户下添加项目
update_project更新项目字段
archive_project归档/取消归档项目
create_activity在客户下添加活动
update_activity更新活动字段
archive_activity归档/取消归档活动
使用 MCP Inspector 测试

使用 MCP Inspector 交互式测试和调试服务:

# From source
npx -y @modelcontextprotocol/inspector cargo run -p wdttg-tui -- serve

# Or using the installed binary
npx -y @modelcontextprotocol/inspector wdttg serve

这会打开一个 Web UI(通常为 http://localhost:6274),你可以在其中浏览可用工具、使用自定义输入调用工具并检查结果。

配置

配置分为两个文件:

偏好设置 — ~/.config/wdttg/config.toml

仅限本机的设置。由 wdttg init 创建。

[preferences]
time_format = "24h"
week_start = "monday"
day_start_hour = 6
day_end_hour = 22
snap_minutes = 15
tag_style = "flat"            # "flat" | "powerline" | "triangle"
# data_dir = "/custom/path"   # optional, overrides default data location

tag_style 控制时间线记录中标签色块的分隔方式。flat 是默认样式,可在任何终端中使用。powerline 使用 Powerline 尖括号字形(U+E0B0)融合色块颜色——终端中需要 Powerline/Nerd Font。triangle 使用 U+25B6,可在任何 Unicode 终端中使用,但融合效果不如前者流畅。在 TUI 中按 T 可在运行时切换样式;所选样式会保存到此文件。

客户端数据 — <data_dir>/clients.toml

客户、项目、活动和计费信息。与时间记录保存在一起,因此整个数据目录都可移植和同步(git、Dropbox 等)。

[bill_from]
name = "Jane Freelancer"
email = "[email protected]"

[[clients]]
id = "acme"
name = "Acme Corp"
color = "#FF6B6B"
rate = 150.0
currency = "USD"

[[clients.projects]]
id = "webapp"
name = "Web App"
color = "#4ECDC4"

[[clients.activities]]
id = "dev"
name = "Development"
color = "#45B7D1"

数据格式

时间记录以 GFM 表格的形式存储在 ~/.local/share/wdttg/data/YYYY-MM.md 中:

# 2026-03

| Start | End | Description | Client | Project | Activity | Notes |
|-------|-----|-------------|--------|---------|----------|-------|
| 2026-03-15 09:00 | 2026-03-15 10:30 | Sprint planning | acme | webapp | meeting | |
| 2026-03-15 11:00 | 2026-03-15 13:00 | API auth refactor | acme | webapp | dev | ticket ACME-412 |
| 2026-03-15 14:00 | 2026-03-15 14:30 | Quick sync with design team | acme | webapp | meeting | |
| 2026-03-15 14:30 | 2026-03-15 17:00 | Frontend dashboard work | acme | webapp | dev | |

开发

cargo build                    # Build everything
cargo test                     # Run all tests
cargo test -p wdttg-core       # Core library tests
cargo test -p wdttg-mcp        # MCP integration tests
cargo run -p wdttg-tui         # Run the TUI
cargo clippy --all-targets     # Lint
cargo fmt --check              # Check formatting
工作区
Crate用途
wdttg-core库:解析、验证、存储、报告
wdttg-tui二进制程序:终端 UI(ratatui + crossterm)
wdttg-mcp库:MCP 服务工具实现

配套工具:bulletd

wdttg 与 bulletd 搭配使用效果很好——它是一款基于相同原则构建的终端子弹笔记工具:本地优先、纯 Markdown、支持 MCP。两者结合,覆盖日常工作流:bulletd 记录你需要做什么,wdttg 记录花了多长时间。两者都以 MCP 服务的形式运行,因此你的 AI Agent 可以在同一段对话中管理任务日志和时间记录。

Jira、Linear、Asana 等组织级跟踪系统是为计划内的工作打造的,而不是为了应对日常中临时发生的情况。你不会为了“查看 Google Play Console 上的发布状态”或“帮忙调试预发布环境”而创建工单。而且,这些系统的 MCP 集成要么不存在,要么不被允许,要么慢得令人难以忍受。这些工具让你可以在本地记录实际发生的事情,并在需要时再与官方系统核对。

支持

如果你觉得这个工具有用,可以考虑请我喝杯咖啡。

请我喝杯咖啡

许可证

MIT——随你怎么用。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。