Skip to content

写作时间统计面板 ​

⚠️ 免责声明:本文档由 GLM4.7 自动生成,内容可能存在错误或不完整之处。请以人工书写的官方文档为准。


写作时间统计面板用于跟踪你的写作时间、速度和字数增长。支持会话管理、里程碑提醒、热力图等功能。

打开方式 ​

命令面板 ​

按 Ctrl+Shift+P 打开命令面板,输入 Andrea Novel Helper: 打开写作统计仪表板。

状态栏 ​

点击状态栏中的时间统计图标。

功能概述 ​

核心功能 ​

功能说明
实时速度追踪当前速度、平均速度、峰值速度(CPM/CPH)
时间统计累计写作时间、今日写作时间
会话管理自动追踪写作会话,支持空闲检测
里程碑提醒达到字数目标时自动提醒
热力图最近 52 周的写作活动热力图
今日分析今日每小时、每15分钟的字数分布
大文件支持近似统计模式,避免阻塞

状态栏显示 ​

显示模式 ​

模式显示内容
详细 (detailed)速度/平均/峰值 CPM · 累计分钟 (mm:ss) · CJK字数 ROMA词数 总字数 🖋️
半精简 (semi)速度 CPM · 总字数 🖋️
精简 (compact)总字数 🖋️

状态指示 ​

图标说明
🖋️活跃写作状态
💤空闲状态
≈大文件近似模式(字数为估算值)

状态栏悬停信息 ​

悬停显示详细数据:

  • 当前速度(字/分钟、字/小时)
  • 平均速度、峰值速度
  • 累计用时(分钟、mm:ss 格式)
  • 当前会话持续时间
  • 中文字符、英文单词
  • 三种字数统计方式
  • 文件路径、最后活动时间
  • 会话数、状态

会话管理 ​

自动会话追踪 ​

系统自动管理写作会话:

事件效果
开始编辑自动开始新会话
空闲超时自动结束会话
切换文件结束旧会话,开始新会话
窗口失焦暂停会话计时
关闭文件结束会话并保存

空闲检测 ​

配置说明
idleThresholdMs空闲超时时间(默认 30 秒)
exitIdleOn退出空闲状态的条件

退出空闲状态选项 ​

选项触发条件
text-change只有文本变化时
window-focus窗口获得焦点或文本变化时
editor-change编辑器切换、窗口获得焦点或文本变化时

桶聚合 ​

系统将写作时间分割为固定大小的桶(默认 60 秒),用于:

  • 计算峰值速度
  • 生成速度曲线图
  • 生成热力图数据

空闲状态下不会创建新桶,节省存储空间。

速度统计 ​

三种速度类型 ​

类型说明
当前速度使用滑动窗口算法,考虑最近 3 个桶的加权平均
平均速度总字数 ÷ 总时间
峰值速度单个桶的最高速度

速度单位 ​

配置说明
speedUnit: 'cpm'字/分钟
speedUnit: 'cph'字/小时

里程碑功能 ​

里程碑目标 ​

配置字数目标,达到时自动提醒:

json
{
  "AndreaNovelHelper.timeStats.milestone.targets": [
    1000, 2000, 5000, 10000, 20000, 50000, 100000
  ]
}

提醒类型 ​

类型说明
information右下角提示(非阻塞)
modal模态对话框(阻塞)

里程碑持久化 ​

  • 已达成的里程碑会持久化保存
  • 即使关闭 VS Code 后重新打开,不会重复提醒
  • 每个文件独立记录里程碑

大文件近似模式 ​

工作原理 ​

对于大文件(默认 > 64KB),启用近似模式:

  1. 初始化:使用字符长度 × 2 快速估算初始字数
  2. 增量更新:仅跟踪字符变化量(增减)
  3. 定期校准:每隔一段时间或一定变化次数后精确校准

配置选项 ​

配置说明默认值
largeFile.thresholdBytes启用近似模式的阈值65536 (64KB)
largeFile.approximate是否启用近似模式true
largeFile.accurateEveryChanges每 N 次变化精确校准80
largeFile.accurateEveryMs每 N 毫秒精确校准60000 (60秒)

状态指示 ​

使用 ≈ 符号标识近似模式:

总计 ≈12345字(词计) 🖋️

超大文件警告 ​

超过 50MB 的文件会提示:

该大文件已启用 TimeStats 近似统计,其他高成本高亮功能已被跳过。

粘贴统计控制 ​

是否计入粘贴 ​

配置说明默认值
includePasteInSpeed粘贴是否计入速度统计false
includePasteInAddedCounters粘贴是否计入新增字数true

粘贴检测 ​

  • 单次粘贴 ≥ 32 字符(可配置)视为粘贴
  • 粘贴内容会被标记,可选择是否计入统计

.wcignore 支持 ​

忽略规则 ​

启用 respectWcignore 后:

  • 符合 .wcignore 规则的文件不计入时间统计
  • 忽略文件的字数会单独聚合

预制规则 ​

常用目录默认忽略:

  • node_modules, .git, .vscode, .idea
  • dist, build, out

写作统计仪表板 ​

仪表板视图 ​

打开仪表板显示:

区域内容
顶部统计累计用时、今日用时、今日平均/峰值速度
速度曲线图当前文件的速度随时间变化
今日柱状图今日 24 小时字数分布
热力图最近 52 周每日写作活动
今日15分钟粒度今日每 15 分钟的字数分布

热力图 ​

  • 横轴:星期(周一到周日)
  • 纵轴:时间(最近 52 周)
  • 颜色:字数越多颜色越深

今日分析 ​

  • 每小时柱状图:显示今日每个小时的字数
  • 15分钟粒度:更细粒度的今日活动分布

配置选项 ​

在 VS Code 设置中搜索 AndreaNovelHelper.timeStats:

基本设置 ​

配置项说明默认值
enabledLanguages统计的语言['markdown', 'plaintext']
idleThresholdMs空闲超时(毫秒)30000
bucketSizeMs桶大小(毫秒)60000
imeDebounceMsIME 去抖时间(毫秒)350

状态栏设置 ​

配置项说明默认值
statusBar.alignment对齐方式left
statusBar.priority优先级100

大文件设置 ​

配置项说明默认值
largeFile.thresholdBytes大文件阈值65536
largeFile.approximate启用近似模式true
largeFile.accurateEveryChanges校准间隔(变化次数)80
largeFile.accurateEveryMs校准间隔(毫秒)60000

里程碑设置 ​

配置项说明默认值
milestone.enabled启用里程碑true
milestone.targets目标字数数组[1000, 2000, 5000, ...]
milestone.notificationType提醒类型information

其他设置 ​

配置项说明默认值
respectWcignore遵循 .wcignorefalse
persistReadOnlySessions持久化纯阅读会话false
includePasteInSpeed粘贴计入速度false
includePasteInAddedCounters粘贴计入新增字数true
pasteThresholdChars粘贴阈值字符数32
debug调试模式false

数据存储 ​

存储位置 ​

写作统计数据保存在 novel-helper/.anh-fsdb/writing-stats/ 目录。

数据结构 ​

typescript
interface FileStats {
  totalMillis: number;        // 累计毫秒数
  charsAdded: number;         // 新增字符数
  charsDeleted: number;       // 删除字符数
  firstSeen: number;          // 首次看到时间
  lastSeen: number;           // 最后活动时间
  buckets: Bucket[];          // 桶数组
  sessions: Session[];        // 会话数组
  achievedMilestones?: number[]; // 已达成的里程碑
}

导出数据 ​

导出 CSV ​

使用命令 Andrea Novel Helper: 导出时间统计为 CSV:

csv
filepath,totalMillis,charsAdded,charsDeleted,lastActiveTime,sessionsCount,averageCPM
"D:\path\to\file.md",3600000,5000,100,1734567890000,5,83

导出文件保存在 novel-helper/ 目录。

常见问题 ​

统计不准确? ​

  1. 检查是否启用了大文件近似模式
  2. 确认空闲检测设置是否合适
  3. 检查 .wcignore 规则
  4. 尝试手动刷新

里程碑不提醒? ​

  1. 确认里程碑功能已启用
  2. 检查目标设置是否正确
  3. 查看已达成里程碑列表
  4. 确认提醒类型设置

仪表板不显示数据? ​

  1. 确认当前有活动文档
  2. 检查文档语言是否在启用列表中
  3. 等待数据加载

大文件卡顿? ​

  1. 启用大文件近似模式
  2. 增加校准间隔
  3. 减小桶大小
  4. 关闭调试模式

命令列表 ​

命令说明
AndreaNovelHelper.openTimeStats打开写作统计仪表板
AndreaNovelHelper.exportTimeStatsCSV导出时间统计为 CSV

相关功能 ​