@zsc-glitch/habit-tracker 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,44 +8,164 @@
8
8
  npm install @zsc-glitch/habit-tracker
9
9
  ```
10
10
 
11
+ ## 功能
12
+
13
+ ### 核心功能
14
+ - ✅ **习惯记录** - 快速打卡,记录完成情况
15
+ - ✅ **连续追踪** - 自动计算 streak,激励坚持
16
+ - ✅ **目标设置** - 设置每周目标次数
17
+ - ✅ **统计报告** - 习惯完成率、趋势分析
18
+ - ✅ **打卡历史** - 日历视图,一目了然
19
+
20
+ ### 新增功能 (v2.0)
21
+ - ✏️ **编辑习惯** - 修改名称、类别、频率、目标、图标、颜色
22
+ - 📦 **归档功能** - 暂停追踪但保留数据,随时恢复
23
+ - 🎨 **自定义外观** - 支持自定义颜色和图标
24
+ - 📅 **历史日历** - 可视化查看月度打卡记录
25
+ - 🔥 **改进的 Streak 算法** - 更准确地计算连续天数
26
+
11
27
  ## 使用
12
28
 
13
29
  ### 添加习惯
14
- - "添加习惯:每天运动"
15
- - "新习惯:阅读30分钟"
30
+ ```
31
+ habit_add(name: string, category?: string, frequency?: string, goal?: number, emoji?: string, color?: string)
32
+ ```
33
+
34
+ 示例:
35
+ - `habit_add({ name: "每天运动" })`
36
+ - `habit_add({ name: "阅读", category: "learning", emoji: "📖", color: "#3498db" })`
37
+ - `habit_add({ name: "冥想", frequency: "daily", goal: 7 })`
16
38
 
17
39
  ### 打卡
18
- - "打卡运动"
19
- - "完成了阅读"
40
+ ```
41
+ habit_checkin(name: string, note?: string)
42
+ ```
43
+
44
+ 示例:
45
+ - `habit_checkin({ name: "运动" })`
46
+ - `habit_checkin({ name: "阅读", note: "读了30页" })`
20
47
 
21
48
  ### 查看状态
22
- - "习惯状态"
23
- - "我的streak"
49
+ ```
50
+ habit_status(name?: string, includeArchived?: boolean)
51
+ ```
24
52
 
25
- ## 功能
53
+ 示例:
54
+ - `habit_status({})` - 查看所有活跃习惯
55
+ - `habit_status({ name: "运动" })` - 查看单个习惯
56
+ - `habit_status({ includeArchived: true })` - 包含已归档习惯
57
+
58
+ ### 编辑习惯
59
+ ```
60
+ habit_edit(name: string, newName?: string, category?: string, frequency?: string, goal?: number, emoji?: string, color?: string)
61
+ ```
26
62
 
27
- - ✅ 习惯记录
28
- - Streak 追踪
29
- - 统计报告
30
- - ✅ 目标设置
63
+ 示例:
64
+ - `habit_edit({ name: "运动", newName: "健身" })`
65
+ - `habit_edit({ name: "阅读", goal: 5, emoji: "📚" })`
31
66
 
32
- ## 工具
67
+ ### 查看历史
68
+ ```
69
+ habit_history(name: string, year?: number, month?: number)
70
+ ```
71
+
72
+ 示例:
73
+ - `habit_history({ name: "运动" })` - 本月历史
74
+ - `habit_history({ name: "运动", year: 2026, month: 2 })` - 指定月份
75
+
76
+ ### 归档/恢复
77
+ ```
78
+ habit_archive(name: string)
79
+ habit_unarchive(name: string)
80
+ ```
81
+
82
+ 示例:
83
+ - `habit_archive({ name: "运动" })` - 归档习惯
84
+ - `habit_unarchive({ name: "运动" })` - 恢复追踪
85
+
86
+ ### 生成报告
87
+ ```
88
+ habit_report(period: "week" | "month" | "year")
89
+ ```
90
+
91
+ 示例:
92
+ - `habit_report({ period: "week" })` - 本周报告
93
+ - `habit_report({ period: "month" })` - 本月报告
94
+
95
+ ### 删除习惯
96
+ ```
97
+ habit_delete(name: string, confirm?: boolean)
98
+ ```
33
99
 
34
- - `habit_add` - 添加习惯
35
- - `habit_checkin` - 打卡
36
- - `habit_status` - 查看状态
37
- - `habit_report` - 生成报告
38
- - `habit_delete` - 删除习惯
100
+ 示例:
101
+ - `habit_delete({ name: "运动" })` - 预览删除
102
+ - `habit_delete({ name: "运动", confirm: true })` - 确认删除
103
+
104
+ ## 工具列表
105
+
106
+ | 工具 | 描述 |
107
+ |------|------|
108
+ | `habit_add` | 添加新习惯 |
109
+ | `habit_checkin` | 习惯打卡 |
110
+ | `habit_status` | 查看状态 |
111
+ | `habit_edit` | 编辑习惯 |
112
+ | `habit_history` | 查看打卡历史日历 |
113
+ | `habit_archive` | 归档习惯 |
114
+ | `habit_unarchive` | 恢复习惯 |
115
+ | `habit_report` | 生成报告 |
116
+ | `habit_delete` | 删除习惯 |
117
+
118
+ ## 类别
119
+
120
+ | 类别 | ID | 默认图标 | 默认颜色 |
121
+ |------|-----|---------|---------|
122
+ | 健康 | health | 💪 | #4CAF50 |
123
+ | 学习 | learning | 📚 | #2196F3 |
124
+ | 心理 | mindfulness | 🧘 | #9C27B0 |
125
+ | 生活 | life | 🏠 | #FF9800 |
126
+ | 自定义 | custom | ⭐ | #607D8B |
39
127
 
40
128
  ## 数据存储
41
129
 
130
+ 习惯数据存储在 `~/.habit-tracker/` 目录:
131
+
42
132
  ```
43
133
  ~/.habit-tracker/
44
134
  ├── habits.json # 习惯配置
45
135
  ├── checkins/ # 打卡记录
136
+ │ ├── 2026-03-30.json
137
+ │ └── ...
46
138
  └── stats.json # 统计数据
47
139
  ```
48
140
 
141
+ ## Streak 计算规则
142
+
143
+ ### 每日习惯
144
+ - 最近一次打卡必须是今天或昨天
145
+ - 从最近一次打卡往前计算连续天数
146
+ - 断开一天,streak 重置为 0
147
+
148
+ ### 每周习惯
149
+ - 最近一次打卡必须在最近 7 天内
150
+ - 每次打卡间隔不超过 7 天即视为连续
151
+
152
+ ## 更新日志
153
+
154
+ ### v2.0.0
155
+ - ✨ 新增 `habit_edit` 编辑习惯功能
156
+ - ✨ 新增 `habit_history` 查看打卡历史日历
157
+ - ✨ 新增 `habit_archive` / `habit_unarchive` 归档功能
158
+ - 🎨 支持自定义颜色和图标
159
+ - 🔥 改进 streak 计算算法,处理边界情况
160
+ - 📊 报告增加日均打卡数据
161
+ - 🐛 修复 streak 计算错误
162
+ - 🐛 修复归档习惯仍可打卡的问题
163
+
164
+ ### v1.0.0
165
+ - 🎉 初始版本
166
+ - 基础习惯追踪功能
167
+ - streak 计算和报告生成
168
+
49
169
  ## License
50
170
 
51
171
  MIT
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Habit Tracker Plugin
2
+ * Habit Tracker Plugin v2.0.0
3
3
  * 习惯追踪器 - 记录习惯、追踪连续天数、养成好习惯
4
4
  */
5
5
  declare const _default: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;AA0OH,wBAkZG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;AAuWH,wBA2xBG"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Habit Tracker Plugin
2
+ * Habit Tracker Plugin v2.0.0
3
3
  * 习惯追踪器 - 记录习惯、追踪连续天数、养成好习惯
4
4
  */
5
5
  import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
@@ -7,23 +7,47 @@ import { Type } from "@sinclair/typebox";
7
7
  import * as fs from "fs/promises";
8
8
  import * as path from "path";
9
9
  import * as os from "os";
10
+ // 预定义颜色
11
+ const PRESET_COLORS = {
12
+ health: "#4CAF50", // 绿色
13
+ learning: "#2196F3", // 蓝色
14
+ mindfulness: "#9C27B0", // 紫色
15
+ life: "#FF9800", // 橙色
16
+ custom: "#607D8B", // 灰色
17
+ };
18
+ // 预定义 emoji
19
+ const CATEGORY_EMOJIS = {
20
+ health: "💪",
21
+ learning: "📚",
22
+ mindfulness: "🧘",
23
+ life: "🏠",
24
+ custom: "⭐",
25
+ };
10
26
  // 获取数据目录
11
27
  function getDataDir(config) {
12
28
  const dir = config?.dataDir || process.env.HABIT_TRACKER_DIR || "~/.habit-tracker";
13
29
  return dir.replace("~", os.homedir());
14
30
  }
15
- // 获取今天的日期字符串
31
+ // 获取今天的日期字符串 (YYYY-MM-DD)
16
32
  function getTodayDate() {
17
33
  return new Date().toISOString().slice(0, 10);
18
34
  }
19
- // 获取昨天的日期字符串
20
- function getYesterdayDate() {
21
- const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);
22
- return yesterday.toISOString().slice(0, 10);
35
+ // 获取指定偏移天数的日期字符串
36
+ function getDateByOffset(offset) {
37
+ const date = new Date(Date.now() + offset * 24 * 60 * 60 * 1000);
38
+ return date.toISOString().slice(0, 10);
39
+ }
40
+ // 获取本周一的日期
41
+ function getWeekStart(date = new Date()) {
42
+ const d = new Date(date);
43
+ const day = d.getDay();
44
+ const diff = d.getDate() - day + (day === 0 ? -6 : 1); // 调整到周一
45
+ d.setDate(diff);
46
+ return d.toISOString().slice(0, 10);
23
47
  }
24
48
  // 生成习惯 ID
25
49
  function generateId() {
26
- return `habit-${Math.random().toString(36).slice(2, 6)}`;
50
+ return `habit-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
27
51
  }
28
52
  // 确保目录存在
29
53
  async function ensureDir(dir) {
@@ -88,64 +112,145 @@ async function saveStats(dataDir, stats) {
88
112
  await ensureDir(dataDir);
89
113
  await writeJsonFile(getStatsFilePath(dataDir), stats);
90
114
  }
91
- // 计算 streak
92
- async function calculateStreak(dataDir, habitId) {
115
+ // 获取习惯在某日期范围内的所有打卡日期
116
+ async function getCheckinDates(dataDir, habitId, startDate, endDate) {
93
117
  const checkinsDir = path.join(dataDir, "checkins");
94
- let currentStreak = 0;
95
- let longestStreak = 0;
96
- let tempStreak = 0;
118
+ const dates = [];
97
119
  try {
98
120
  const files = await fs.readdir(checkinsDir);
99
- const dates = files
100
- .filter(f => f.endsWith(".json"))
101
- .map(f => f.replace(".json", ""))
102
- .sort()
103
- .reverse();
104
- // 检查今天或昨天是否打卡
105
- const today = getTodayDate();
106
- const yesterday = getYesterdayDate();
107
- let hasRecentCheckin = false;
108
- for (const date of dates) {
121
+ const jsonFiles = files.filter(f => f.endsWith(".json")).map(f => f.replace(".json", ""));
122
+ for (const date of jsonFiles) {
123
+ // 应用日期过滤
124
+ if (startDate && date < startDate)
125
+ continue;
126
+ if (endDate && date > endDate)
127
+ continue;
109
128
  const checkins = await loadCheckins(dataDir, date);
110
- const hasCheckin = checkins.some(c => c.habitId === habitId);
111
- if (hasCheckin) {
112
- if (date === today || date === yesterday) {
113
- hasRecentCheckin = true;
114
- }
129
+ if (checkins.some(c => c.habitId === habitId)) {
130
+ dates.push(date);
131
+ }
132
+ }
133
+ }
134
+ catch {
135
+ // 目录不存在
136
+ }
137
+ return dates.sort();
138
+ }
139
+ // 改进的 streak 计算
140
+ async function calculateStreak(dataDir, habitId, frequency) {
141
+ const checkinDates = await getCheckinDates(dataDir, habitId);
142
+ if (checkinDates.length === 0) {
143
+ return { current: 0, longest: 0 };
144
+ }
145
+ // 最长连续
146
+ let longestStreak = 1;
147
+ let tempStreak = 1;
148
+ for (let i = 1; i < checkinDates.length; i++) {
149
+ const prevDate = new Date(checkinDates[i - 1]);
150
+ const currDate = new Date(checkinDates[i]);
151
+ const diffDays = Math.round((currDate.getTime() - prevDate.getTime()) / (24 * 60 * 60 * 1000));
152
+ if (frequency === "daily") {
153
+ // 每日习惯:允许最多1天间隔
154
+ if (diffDays <= 1) {
155
+ tempStreak++;
156
+ }
157
+ else {
158
+ longestStreak = Math.max(longestStreak, tempStreak);
159
+ tempStreak = 1;
160
+ }
161
+ }
162
+ else {
163
+ // 每周习惯:允许最多7天间隔
164
+ if (diffDays <= 7) {
115
165
  tempStreak++;
116
- if (tempStreak > longestStreak) {
117
- longestStreak = tempStreak;
118
- }
119
166
  }
120
167
  else {
121
- // 断了,重置临时 streak
122
- if (tempStreak > 0 && !hasRecentCheckin) {
123
- // 如果已经断开了,停止计算当前 streak
168
+ longestStreak = Math.max(longestStreak, tempStreak);
169
+ tempStreak = 1;
170
+ }
171
+ }
172
+ }
173
+ longestStreak = Math.max(longestStreak, tempStreak);
174
+ // 当前连续 - 从最近一次打卡往前计算
175
+ const today = getTodayDate();
176
+ const yesterday = getDateByOffset(-1);
177
+ // 检查最近打卡是否是今天或昨天(每日习惯)或最近7天内(每周习惯)
178
+ const lastCheckin = checkinDates[checkinDates.length - 1];
179
+ let currentStreak = 0;
180
+ if (frequency === "daily") {
181
+ // 每日习惯:最近一次打卡必须是今天或昨天
182
+ if (lastCheckin === today || lastCheckin === yesterday) {
183
+ // 从最近开始往前数连续天数
184
+ currentStreak = 1;
185
+ for (let i = checkinDates.length - 2; i >= 0; i--) {
186
+ const prevDate = new Date(checkinDates[i]);
187
+ const currDate = new Date(checkinDates[i + 1]);
188
+ const diffDays = Math.round((currDate.getTime() - prevDate.getTime()) / (24 * 60 * 60 * 1000));
189
+ if (diffDays <= 1) {
190
+ currentStreak++;
191
+ }
192
+ else {
124
193
  break;
125
194
  }
126
- tempStreak = 0;
127
195
  }
128
196
  }
129
- // 当前 streak 从今天/昨天开始计算
130
- if (hasRecentCheckin) {
131
- currentStreak = tempStreak;
132
- }
133
197
  }
134
- catch {
135
- // 目录不存在
198
+ else {
199
+ // 每周习惯:最近一次打卡必须在最近7天内
200
+ const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString().slice(0, 10);
201
+ if (lastCheckin >= sevenDaysAgo) {
202
+ // 从最近开始往前数连续周数
203
+ currentStreak = 1;
204
+ for (let i = checkinDates.length - 2; i >= 0; i--) {
205
+ const prevDate = new Date(checkinDates[i]);
206
+ const currDate = new Date(checkinDates[i + 1]);
207
+ const diffDays = Math.round((currDate.getTime() - prevDate.getTime()) / (24 * 60 * 60 * 1000));
208
+ if (diffDays <= 7) {
209
+ currentStreak++;
210
+ }
211
+ else {
212
+ break;
213
+ }
214
+ }
215
+ }
136
216
  }
137
217
  return { current: currentStreak, longest: longestStreak };
138
218
  }
139
- // 获取习惯的 emoji
140
- function getCategoryEmoji(category) {
141
- const emojis = {
142
- health: "💪",
143
- learning: "📚",
144
- mindfulness: "🧘",
145
- life: "🏠",
146
- custom: "⭐",
147
- };
148
- return emojis[category];
219
+ // 生成历史日历字符串
220
+ function generateCalendar(year, month, checkinDates) {
221
+ const monthNames = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
222
+ const weekDays = ["", "一", "二", "三", "四", "五", "六"];
223
+ const firstDay = new Date(year, month - 1, 1);
224
+ const lastDay = new Date(year, month, 0);
225
+ const daysInMonth = lastDay.getDate();
226
+ const startWeekday = firstDay.getDay();
227
+ let calendar = `\n📅 ${year}年${monthNames[month - 1]}\n\n`;
228
+ calendar += weekDays.map(d => ` ${d} `).join("") + "\n";
229
+ calendar += "─".repeat(21) + "\n";
230
+ // 填充第一周空白
231
+ let line = " ".repeat(startWeekday);
232
+ for (let day = 1; day <= daysInMonth; day++) {
233
+ const dateStr = `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
234
+ const hasCheckin = checkinDates.has(dateStr);
235
+ const isToday = dateStr === getTodayDate();
236
+ let cell = String(day).padStart(2, " ");
237
+ if (hasCheckin) {
238
+ cell = "✓" + String(day).padStart(2, " ").slice(-1);
239
+ }
240
+ if (isToday) {
241
+ cell = `[${cell}]`;
242
+ }
243
+ else {
244
+ cell = ` ${cell} `;
245
+ }
246
+ line += cell;
247
+ // 换行
248
+ if ((startWeekday + day) % 7 === 0 || day === daysInMonth) {
249
+ calendar += line + "\n";
250
+ line = "";
251
+ }
252
+ }
253
+ return calendar;
149
254
  }
150
255
  // 频率 Schema
151
256
  const FrequencySchema = Type.Union([
@@ -166,6 +271,11 @@ const ReportPeriodSchema = Type.Union([
166
271
  Type.Literal("month"),
167
272
  Type.Literal("year"),
168
273
  ]);
274
+ // 有效颜色 Schema
275
+ const ColorSchema = Type.Optional(Type.String({
276
+ pattern: "^(#[0-9A-Fa-f]{6}|[a-zA-Z]+)$",
277
+ description: "颜色 (hex 格式如 #FF5733 或颜色名如 red, blue)",
278
+ }));
169
279
  // 插件入口
170
280
  export default definePluginEntry({
171
281
  id: "habit-tracker",
@@ -179,17 +289,18 @@ export default definePluginEntry({
179
289
  label: "添加习惯",
180
290
  description: "添加一个新习惯进行追踪",
181
291
  parameters: Type.Object({
182
- name: Type.String(),
292
+ name: Type.String({ description: "习惯名称" }),
183
293
  category: Type.Optional(CategorySchema),
184
294
  frequency: Type.Optional(FrequencySchema),
185
- goal: Type.Optional(Type.Number()),
186
- emoji: Type.Optional(Type.String()),
295
+ goal: Type.Optional(Type.Number({ description: "目标次数(每周)" })),
296
+ emoji: Type.Optional(Type.String({ description: "自定义图标" })),
297
+ color: ColorSchema,
187
298
  }),
188
299
  async execute(toolCallId, params) {
189
300
  try {
190
301
  const dataDir = getDataDir(config);
191
302
  const habits = await loadHabits(dataDir);
192
- // 检查是否已存在同名习惯
303
+ // 检查是否已存在同名习惯(包括归档的)
193
304
  if (habits.some(h => h.name.toLowerCase() === params.name.toLowerCase())) {
194
305
  return {
195
306
  content: [
@@ -201,14 +312,17 @@ export default definePluginEntry({
201
312
  details: { exists: true },
202
313
  };
203
314
  }
315
+ const category = params.category || "custom";
204
316
  const habit = {
205
317
  id: generateId(),
206
318
  name: params.name,
207
- category: params.category || "custom",
319
+ category,
208
320
  frequency: params.frequency || "daily",
209
321
  goal: params.goal,
210
322
  createdAt: new Date().toISOString(),
211
- emoji: params.emoji || getCategoryEmoji(params.category || "custom"),
323
+ emoji: params.emoji || CATEGORY_EMOJIS[category],
324
+ color: params.color || PRESET_COLORS[category],
325
+ archived: false,
212
326
  };
213
327
  habits.push(habit);
214
328
  await saveHabits(dataDir, habits);
@@ -219,16 +333,19 @@ export default definePluginEntry({
219
333
  currentStreak: 0,
220
334
  longestStreak: 0,
221
335
  totalCheckins: 0,
336
+ weeklyCount: 0,
222
337
  };
223
338
  await saveStats(dataDir, stats);
339
+ const colorInfo = habit.color ? `颜色: ${habit.color}\n` : "";
340
+ const goalInfo = habit.goal ? `目标: ${habit.goal}次/周\n` : "";
224
341
  return {
225
342
  content: [
226
343
  {
227
344
  type: "text",
228
- text: `✅ 已添加习惯\n\n${habit.emoji} **${habit.name}**\n类别: ${habit.category}\n频率: ${habit.frequency === "daily" ? "每日" : "每周"}${habit.goal ? `\n目标: ${habit.goal}次/${habit.frequency === "daily" ? "周" : "月"}` : ""}`,
345
+ text: `✅ 已添加习惯\n\n${habit.emoji} **${habit.name}**\n类别: ${habit.category}\n频率: ${habit.frequency === "daily" ? "每日" : "每周"}\n${colorInfo}${goalInfo}ID: ${habit.id}`,
229
346
  },
230
347
  ],
231
- details: { id: habit.id },
348
+ details: { id: habit.id, habit },
232
349
  };
233
350
  }
234
351
  catch (error) {
@@ -250,21 +367,34 @@ export default definePluginEntry({
250
367
  label: "习惯打卡",
251
368
  description: "完成习惯打卡",
252
369
  parameters: Type.Object({
253
- name: Type.String(),
254
- note: Type.Optional(Type.String()),
370
+ name: Type.String({ description: "习惯名称" }),
371
+ note: Type.Optional(Type.String({ description: "打卡备注" })),
255
372
  }),
256
373
  async execute(toolCallId, params) {
257
374
  try {
258
375
  const dataDir = getDataDir(config);
259
376
  const habits = await loadHabits(dataDir);
260
- // 查找习惯
261
- const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase());
377
+ // 查找习惯(排除归档的)
378
+ const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase() && !h.archived);
262
379
  if (!habit) {
380
+ // 检查是否存在但已归档
381
+ const archivedHabit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase() && h.archived);
382
+ if (archivedHabit) {
383
+ return {
384
+ content: [
385
+ {
386
+ type: "text",
387
+ text: `⚠️ 习惯 "${params.name}" 已归档\n\n使用 \`habit_unarchive\` 恢复追踪`,
388
+ },
389
+ ],
390
+ details: { archived: true },
391
+ };
392
+ }
263
393
  return {
264
394
  content: [
265
395
  {
266
396
  type: "text",
267
- text: `❌ 未找到习惯 "${params.name}"\n\n使用 "habit_add" 添加新习惯`,
397
+ text: `❌ 未找到习惯 "${params.name}"\n\n使用 \`habit_add\` 添加新习惯`,
268
398
  },
269
399
  ],
270
400
  details: { notFound: true },
@@ -300,23 +430,42 @@ export default definePluginEntry({
300
430
  currentStreak: 0,
301
431
  longestStreak: 0,
302
432
  totalCheckins: 0,
433
+ weeklyCount: 0,
303
434
  };
304
435
  habitStats.totalCheckins++;
305
436
  habitStats.lastCheckin = today;
437
+ // 更新本周打卡次数
438
+ const weekStart = getWeekStart();
439
+ const checkinDatesThisWeek = await getCheckinDates(dataDir, habit.id, weekStart, today);
440
+ habitStats.weeklyCount = checkinDatesThisWeek.length;
306
441
  // 重新计算 streak
307
- const { current, longest } = await calculateStreak(dataDir, habit.id);
442
+ const { current, longest } = await calculateStreak(dataDir, habit.id, habit.frequency);
308
443
  habitStats.currentStreak = current;
309
444
  habitStats.longestStreak = Math.max(longest, habitStats.longestStreak);
310
445
  stats[habit.id] = habitStats;
311
446
  await saveStats(dataDir, stats);
447
+ // 生成激励消息
448
+ let streakMsg = "";
449
+ if (habitStats.currentStreak === 7) {
450
+ streakMsg = "🎉 一周啦!继续保持!";
451
+ }
452
+ else if (habitStats.currentStreak === 30) {
453
+ streakMsg = "🏆 一个月!太厉害了!";
454
+ }
455
+ else if (habitStats.currentStreak === 100) {
456
+ streakMsg = "🌟 百日成就!你是习惯大师!";
457
+ }
458
+ else if (habitStats.currentStreak >= 3) {
459
+ streakMsg = `🔥 已连续 ${habitStats.currentStreak} 天!`;
460
+ }
312
461
  return {
313
462
  content: [
314
463
  {
315
464
  type: "text",
316
- text: `🔥 打卡成功!\n\n${habit.emoji} **${habit.name}**\n当前连续: ${habitStats.currentStreak} 天\n最长连续: ${habitStats.longestStreak} 天\n总打卡: ${habitStats.totalCheckins} 次`,
465
+ text: `✅ 打卡成功!\n\n${habit.emoji} **${habit.name}**\n当前连续: ${habitStats.currentStreak} 天\n最长连续: ${habitStats.longestStreak} 天\n总打卡: ${habitStats.totalCheckins} 次${streakMsg ? `\n\n${streakMsg}` : ""}${params.note ? `\n\n📝 ${params.note}` : ""}`,
317
466
  },
318
467
  ],
319
- details: { streak: habitStats.currentStreak },
468
+ details: { streak: habitStats.currentStreak, total: habitStats.totalCheckins },
320
469
  };
321
470
  }
322
471
  catch (error) {
@@ -338,7 +487,8 @@ export default definePluginEntry({
338
487
  label: "习惯状态",
339
488
  description: "查看习惯状态和连续打卡天数",
340
489
  parameters: Type.Object({
341
- name: Type.Optional(Type.String()),
490
+ name: Type.Optional(Type.String({ description: "习惯名称(不填则显示全部)" })),
491
+ includeArchived: Type.Optional(Type.Boolean({ description: "是否包含已归档的习惯" })),
342
492
  }),
343
493
  async execute(toolCallId, params) {
344
494
  try {
@@ -358,41 +508,58 @@ export default definePluginEntry({
358
508
  details: { notFound: true },
359
509
  };
360
510
  }
361
- const habitStats = stats[habit.id] || { currentStreak: 0, longestStreak: 0, totalCheckins: 0 };
511
+ const habitStats = stats[habit.id] || { currentStreak: 0, longestStreak: 0, totalCheckins: 0, weeklyCount: 0 };
362
512
  const checkedToday = todayCheckins.some(c => c.habitId === habit.id);
513
+ const archivedTag = habit.archived ? " (已归档)" : "";
514
+ const colorInfo = habit.color ? `\n颜色: ${habit.color}` : "";
515
+ const goalInfo = habit.goal ? `\n目标: ${habitStats.weeklyCount || 0}/${habit.goal} 次/周` : "";
363
516
  return {
364
517
  content: [
365
518
  {
366
519
  type: "text",
367
- text: `${habit.emoji} **${habit.name}**\n\n今日: ${checkedToday ? "✅ 已打卡" : "⬜ 未打卡"}\n当前连续: ${habitStats.currentStreak} 天 🔥\n最长连续: ${habitStats.longestStreak} 天\n总打卡: ${habitStats.totalCheckins} 次`,
520
+ text: `${habit.emoji} **${habit.name}**${archivedTag}\n\n今日: ${checkedToday ? "✅ 已打卡" : "⬜ 未打卡"}\n当前连续: ${habitStats.currentStreak} 天 🔥\n最长连续: ${habitStats.longestStreak} 天\n总打卡: ${habitStats.totalCheckins} 次${colorInfo}${goalInfo}\n类别: ${habit.category}\n频率: ${habit.frequency === "daily" ? "每日" : "每周"}`,
368
521
  },
369
522
  ],
370
- details: { stats: habitStats },
523
+ details: { stats: habitStats, habit },
371
524
  };
372
525
  }
373
526
  // 查看所有习惯
374
- if (habits.length === 0) {
527
+ let activeHabits = habits;
528
+ if (!params.includeArchived) {
529
+ activeHabits = habits.filter(h => !h.archived);
530
+ }
531
+ if (activeHabits.length === 0) {
532
+ const archivedCount = habits.filter(h => h.archived).length;
533
+ let msg = "📭 暂无习惯记录\n\n使用 \"添加习惯: xxx\" 开始追踪";
534
+ if (archivedCount > 0) {
535
+ msg += `\n\n💡 有 ${archivedCount} 个已归档的习惯,使用 includeArchived: true 查看`;
536
+ }
375
537
  return {
376
- content: [
377
- { type: "text", text: "📭 暂无习惯记录\n\n使用 \"添加习惯: xxx\" 开始追踪" },
378
- ],
379
- details: { count: 0 },
538
+ content: [{ type: "text", text: msg }],
539
+ details: { count: 0, archived: archivedCount },
380
540
  };
381
541
  }
382
- const habitList = habits.map(h => {
542
+ const habitList = activeHabits.map(h => {
383
543
  const s = stats[h.id] || { currentStreak: 0, longestStreak: 0, totalCheckins: 0 };
384
544
  const checked = todayCheckins.some(c => c.habitId === h.id);
385
- return `${checked ? "" : ""} ${h.emoji} ${h.name} - 🔥${s.currentStreak}天`;
545
+ const archivedTag = h.archived ? " 📦" : "";
546
+ const streakDisplay = s.currentStreak > 0 ? ` 🔥${s.currentStreak}天` : "";
547
+ return `${checked ? "✅" : "⬜"} ${h.emoji} ${h.name}${streakDisplay}${archivedTag}`;
386
548
  }).join("\n");
387
- const checkedCount = habits.filter(h => todayCheckins.some(c => c.habitId === h.id)).length;
549
+ const checkedCount = activeHabits.filter(h => todayCheckins.some(c => c.habitId === h.id)).length;
550
+ const archivedCount = habits.filter(h => h.archived).length;
551
+ let footer = "";
552
+ if (archivedCount > 0) {
553
+ footer = `\n\n📦 ${archivedCount} 个已归档`;
554
+ }
388
555
  return {
389
556
  content: [
390
557
  {
391
558
  type: "text",
392
- text: `📊 习惯状态 (${checkedCount}/${habits.length} 今日已完成)\n\n${habitList}`,
559
+ text: `📊 习惯状态 (${checkedCount}/${activeHabits.length} 今日已完成)\n\n${habitList}${footer}`,
393
560
  },
394
561
  ],
395
- details: { count: habits.length, checkedToday: checkedCount },
562
+ details: { count: activeHabits.length, checkedToday: checkedCount, archived: archivedCount },
396
563
  };
397
564
  }
398
565
  catch (error) {
@@ -408,6 +575,289 @@ export default definePluginEntry({
408
575
  }
409
576
  },
410
577
  }, { optional: true });
578
+ // 编辑习惯
579
+ api.registerTool({
580
+ name: "habit_edit",
581
+ label: "编辑习惯",
582
+ description: "编辑习惯的名称和属性",
583
+ parameters: Type.Object({
584
+ name: Type.String({ description: "当前习惯名称" }),
585
+ newName: Type.Optional(Type.String({ description: "新名称" })),
586
+ category: Type.Optional(CategorySchema),
587
+ frequency: Type.Optional(FrequencySchema),
588
+ goal: Type.Optional(Type.Number({ description: "目标次数(每周)" })),
589
+ emoji: Type.Optional(Type.String({ description: "自定义图标" })),
590
+ color: ColorSchema,
591
+ }),
592
+ async execute(toolCallId, params) {
593
+ try {
594
+ const dataDir = getDataDir(config);
595
+ const habits = await loadHabits(dataDir);
596
+ const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase());
597
+ if (!habit) {
598
+ return {
599
+ content: [
600
+ { type: "text", text: `❌ 未找到习惯 "${params.name}"` },
601
+ ],
602
+ details: { notFound: true },
603
+ };
604
+ }
605
+ // 检查新名称是否冲突
606
+ if (params.newName && params.newName.toLowerCase() !== params.name.toLowerCase()) {
607
+ if (habits.some(h => h.name.toLowerCase() === params.newName.toLowerCase())) {
608
+ return {
609
+ content: [
610
+ { type: "text", text: `⚠️ 习惯名称 "${params.newName}" 已存在` },
611
+ ],
612
+ details: { nameConflict: true },
613
+ };
614
+ }
615
+ }
616
+ // 更新属性
617
+ const changes = [];
618
+ if (params.newName) {
619
+ habit.name = params.newName;
620
+ changes.push(`名称: ${params.newName}`);
621
+ }
622
+ if (params.category) {
623
+ habit.category = params.category;
624
+ if (!params.emoji)
625
+ habit.emoji = CATEGORY_EMOJIS[params.category];
626
+ if (!params.color)
627
+ habit.color = PRESET_COLORS[params.category];
628
+ changes.push(`类别: ${params.category}`);
629
+ }
630
+ if (params.frequency) {
631
+ habit.frequency = params.frequency;
632
+ changes.push(`频率: ${params.frequency === "daily" ? "每日" : "每周"}`);
633
+ }
634
+ if (params.goal !== undefined) {
635
+ habit.goal = params.goal;
636
+ changes.push(`目标: ${params.goal}次/周`);
637
+ }
638
+ if (params.emoji) {
639
+ habit.emoji = params.emoji;
640
+ changes.push(`图标: ${params.emoji}`);
641
+ }
642
+ if (params.color) {
643
+ habit.color = params.color;
644
+ changes.push(`颜色: ${params.color}`);
645
+ }
646
+ if (changes.length === 0) {
647
+ return {
648
+ content: [
649
+ { type: "text", text: "⚠️ 没有指定要修改的属性" },
650
+ ],
651
+ details: { noChanges: true },
652
+ };
653
+ }
654
+ await saveHabits(dataDir, habits);
655
+ return {
656
+ content: [
657
+ {
658
+ type: "text",
659
+ text: `✏️ 已更新习惯 ${habit.emoji} **${habit.name}**\n\n${changes.join("\n")}`,
660
+ },
661
+ ],
662
+ details: { habit },
663
+ };
664
+ }
665
+ catch (error) {
666
+ return {
667
+ content: [
668
+ {
669
+ type: "text",
670
+ text: `❌ 编辑失败: ${error instanceof Error ? error.message : String(error)}`,
671
+ },
672
+ ],
673
+ details: { error: true },
674
+ };
675
+ }
676
+ },
677
+ }, { optional: true });
678
+ // 查看打卡历史
679
+ api.registerTool({
680
+ name: "habit_history",
681
+ label: "打卡历史",
682
+ description: "查看习惯的打卡历史日历",
683
+ parameters: Type.Object({
684
+ name: Type.String({ description: "习惯名称" }),
685
+ year: Type.Optional(Type.Number({ description: "年份(默认当前年)" })),
686
+ month: Type.Optional(Type.Number({ description: "月份(默认当前月)" })),
687
+ }),
688
+ async execute(toolCallId, params) {
689
+ try {
690
+ const dataDir = getDataDir(config);
691
+ const habits = await loadHabits(dataDir);
692
+ const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase());
693
+ if (!habit) {
694
+ return {
695
+ content: [
696
+ { type: "text", text: `❌ 未找到习惯 "${params.name}"` },
697
+ ],
698
+ details: { notFound: true },
699
+ };
700
+ }
701
+ const now = new Date();
702
+ const year = params.year || now.getFullYear();
703
+ const month = params.month || (now.getMonth() + 1);
704
+ // 获取该月的打卡日期
705
+ const startDate = `${year}-${String(month).padStart(2, "0")}-01`;
706
+ const lastDay = new Date(year, month, 0).getDate();
707
+ const endDate = `${year}-${String(month).padStart(2, "0")}-${String(lastDay).padStart(2, "0")}`;
708
+ const checkinDates = await getCheckinDates(dataDir, habit.id, startDate, endDate);
709
+ const checkinSet = new Set(checkinDates);
710
+ // 生成日历
711
+ const calendar = generateCalendar(year, month, checkinSet);
712
+ const stats = await loadStats(dataDir);
713
+ const habitStats = stats[habit.id] || { currentStreak: 0, longestStreak: 0, totalCheckins: 0 };
714
+ return {
715
+ content: [
716
+ {
717
+ type: "text",
718
+ text: `${habit.emoji} **${habit.name}** 打卡历史\n本月打卡: ${checkinDates.length} 天\n当前连续: ${habitStats.currentStreak} 天 | 最长: ${habitStats.longestStreak} 天${calendar}`,
719
+ },
720
+ ],
721
+ details: {
722
+ habitId: habit.id,
723
+ year,
724
+ month,
725
+ checkins: checkinDates.length,
726
+ stats: habitStats
727
+ },
728
+ };
729
+ }
730
+ catch (error) {
731
+ return {
732
+ content: [
733
+ {
734
+ type: "text",
735
+ text: `❌ 获取历史失败: ${error instanceof Error ? error.message : String(error)}`,
736
+ },
737
+ ],
738
+ details: { error: true },
739
+ };
740
+ }
741
+ },
742
+ }, { optional: true });
743
+ // 归档习惯
744
+ api.registerTool({
745
+ name: "habit_archive",
746
+ label: "归档习惯",
747
+ description: "归档习惯(暂停追踪但保留数据)",
748
+ parameters: Type.Object({
749
+ name: Type.String({ description: "习惯名称" }),
750
+ }),
751
+ async execute(toolCallId, params) {
752
+ try {
753
+ const dataDir = getDataDir(config);
754
+ const habits = await loadHabits(dataDir);
755
+ const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase());
756
+ if (!habit) {
757
+ return {
758
+ content: [
759
+ { type: "text", text: `❌ 未找到习惯 "${params.name}"` },
760
+ ],
761
+ details: { notFound: true },
762
+ };
763
+ }
764
+ if (habit.archived) {
765
+ return {
766
+ content: [
767
+ { type: "text", text: `⚠️ 习惯 "${params.name}" 已经是归档状态` },
768
+ ],
769
+ details: { alreadyArchived: true },
770
+ };
771
+ }
772
+ habit.archived = true;
773
+ habit.archivedAt = new Date().toISOString();
774
+ await saveHabits(dataDir, habits);
775
+ return {
776
+ content: [
777
+ {
778
+ type: "text",
779
+ text: `📦 已归档习惯 ${habit.emoji} **${habit.name}**\n\n历史数据已保留,使用 \`habit_unarchive\` 可恢复追踪`,
780
+ },
781
+ ],
782
+ details: { habit },
783
+ };
784
+ }
785
+ catch (error) {
786
+ return {
787
+ content: [
788
+ {
789
+ type: "text",
790
+ text: `❌ 归档失败: ${error instanceof Error ? error.message : String(error)}`,
791
+ },
792
+ ],
793
+ details: { error: true },
794
+ };
795
+ }
796
+ },
797
+ }, { optional: true });
798
+ // 取消归档
799
+ api.registerTool({
800
+ name: "habit_unarchive",
801
+ label: "恢复习惯",
802
+ description: "恢复已归档的习惯(继续追踪)",
803
+ parameters: Type.Object({
804
+ name: Type.String({ description: "习惯名称" }),
805
+ }),
806
+ async execute(toolCallId, params) {
807
+ try {
808
+ const dataDir = getDataDir(config);
809
+ const habits = await loadHabits(dataDir);
810
+ const habit = habits.find(h => h.name.toLowerCase() === params.name.toLowerCase());
811
+ if (!habit) {
812
+ return {
813
+ content: [
814
+ { type: "text", text: `❌ 未找到习惯 "${params.name}"` },
815
+ ],
816
+ details: { notFound: true },
817
+ };
818
+ }
819
+ if (!habit.archived) {
820
+ return {
821
+ content: [
822
+ { type: "text", text: `⚠️ 习惯 "${params.name}" 未归档,无需恢复` },
823
+ ],
824
+ details: { notArchived: true },
825
+ };
826
+ }
827
+ habit.archived = false;
828
+ habit.archivedAt = undefined;
829
+ await saveHabits(dataDir, habits);
830
+ // 重新计算 streak
831
+ const stats = await loadStats(dataDir);
832
+ const { current, longest } = await calculateStreak(dataDir, habit.id, habit.frequency);
833
+ if (stats[habit.id]) {
834
+ stats[habit.id].currentStreak = current;
835
+ stats[habit.id].longestStreak = Math.max(longest, stats[habit.id].longestStreak);
836
+ await saveStats(dataDir, stats);
837
+ }
838
+ return {
839
+ content: [
840
+ {
841
+ type: "text",
842
+ text: `▶️ 已恢复习惯 ${habit.emoji} **${habit.name}**\n\n继续追踪你的进度!`,
843
+ },
844
+ ],
845
+ details: { habit },
846
+ };
847
+ }
848
+ catch (error) {
849
+ return {
850
+ content: [
851
+ {
852
+ type: "text",
853
+ text: `❌ 恢复失败: ${error instanceof Error ? error.message : String(error)}`,
854
+ },
855
+ ],
856
+ details: { error: true },
857
+ };
858
+ }
859
+ },
860
+ }, { optional: true });
411
861
  // 生成报告
412
862
  api.registerTool({
413
863
  name: "habit_report",
@@ -421,10 +871,12 @@ export default definePluginEntry({
421
871
  const dataDir = getDataDir(config);
422
872
  const habits = await loadHabits(dataDir);
423
873
  const stats = await loadStats(dataDir);
424
- if (habits.length === 0) {
874
+ // 只统计活跃习惯
875
+ const activeHabits = habits.filter(h => !h.archived);
876
+ if (activeHabits.length === 0) {
425
877
  return {
426
878
  content: [
427
- { type: "text", text: "📭 暂无习惯记录" },
879
+ { type: "text", text: "📭 暂无活跃习惯记录" },
428
880
  ],
429
881
  details: { count: 0 },
430
882
  };
@@ -443,9 +895,11 @@ export default definePluginEntry({
443
895
  const date = file.replace(".json", "");
444
896
  if (date >= cutoffDate) {
445
897
  const checkins = await loadCheckins(dataDir, date);
446
- totalCheckins += checkins.length;
447
898
  for (const c of checkins) {
448
- habitCheckins[c.habitId] = (habitCheckins[c.habitId] || 0) + 1;
899
+ if (activeHabits.some(h => h.id === c.habitId)) {
900
+ totalCheckins++;
901
+ habitCheckins[c.habitId] = (habitCheckins[c.habitId] || 0) + 1;
902
+ }
449
903
  }
450
904
  }
451
905
  }
@@ -454,7 +908,7 @@ export default definePluginEntry({
454
908
  // 目录不存在
455
909
  }
456
910
  // 排序习惯按打卡次数
457
- const sortedHabits = [...habits].sort((a, b) => {
911
+ const sortedHabits = [...activeHabits].sort((a, b) => {
458
912
  const aCount = habitCheckins[a.id] || 0;
459
913
  const bCount = habitCheckins[b.id] || 0;
460
914
  return bCount - aCount;
@@ -462,19 +916,22 @@ export default definePluginEntry({
462
916
  const habitReport = sortedHabits.map(h => {
463
917
  const count = habitCheckins[h.id] || 0;
464
918
  const s = stats[h.id] || { currentStreak: 0, longestStreak: 0 };
465
- return `${h.emoji} ${h.name}: ${count}次 | 🔥${s.currentStreak}天`;
919
+ const avgPerDay = days > 0 ? (count / days).toFixed(1) : "0";
920
+ return `${h.emoji} ${h.name}: ${count}次 (日均${avgPerDay}) | 🔥${s.currentStreak}天`;
466
921
  }).join("\n");
467
922
  // 计算完成率
468
- const expectedCheckins = habits.length * days;
923
+ const expectedCheckins = activeHabits.length * days;
469
924
  const completionRate = expectedCheckins > 0 ? Math.round((totalCheckins / expectedCheckins) * 100) : 0;
925
+ // 计算每日平均
926
+ const avgDaily = days > 0 ? (totalCheckins / days).toFixed(1) : "0";
470
927
  return {
471
928
  content: [
472
929
  {
473
930
  type: "text",
474
- text: `📊 ${periodLabel}习惯报告\n\n总打卡: ${totalCheckins} 次\n完成率: ${completionRate}%\n习惯数: ${habits.length}\n\n详细:\n${habitReport}`,
931
+ text: `📊 ${periodLabel}习惯报告\n\n总打卡: ${totalCheckins} 次\n日均: ${avgDaily} 次\n完成率: ${completionRate}%\n活跃习惯: ${activeHabits.length}\n\n详细:\n${habitReport}`,
475
932
  },
476
933
  ],
477
- details: { totalCheckins, completionRate, period: params.period },
934
+ details: { totalCheckins, completionRate, period: params.period, avgDaily },
478
935
  };
479
936
  }
480
937
  catch (error) {
@@ -496,7 +953,8 @@ export default definePluginEntry({
496
953
  label: "删除习惯",
497
954
  description: "删除一个习惯(不会删除历史打卡记录)",
498
955
  parameters: Type.Object({
499
- name: Type.String(),
956
+ name: Type.String({ description: "习惯名称" }),
957
+ confirm: Type.Optional(Type.Boolean({ description: "确认删除" })),
500
958
  }),
501
959
  async execute(toolCallId, params) {
502
960
  try {
@@ -511,7 +969,20 @@ export default definePluginEntry({
511
969
  details: { notFound: true },
512
970
  };
513
971
  }
514
- const deleted = habits.splice(index, 1)[0];
972
+ const deleted = habits[index];
973
+ // 提示确认(除非已确认)
974
+ if (!params.confirm) {
975
+ return {
976
+ content: [
977
+ {
978
+ type: "text",
979
+ text: `⚠️ 确认删除习惯 ${deleted.emoji} **${deleted.name}**?\n\n历史打卡记录将保留,但习惯将不再显示。\n\n使用 confirm: true 确认删除,或考虑使用 habit_archive 归档。`,
980
+ },
981
+ ],
982
+ details: { needConfirm: true, habit: deleted },
983
+ };
984
+ }
985
+ habits.splice(index, 1);
515
986
  await saveHabits(dataDir, habits);
516
987
  return {
517
988
  content: [
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "id": "habit-tracker",
3
3
  "name": "Habit Tracker",
4
4
  "description": "习惯追踪器 - 记录习惯、追踪连续天数、养成好习惯",
5
- "version": "1.0.0",
5
+ "version": "2.0.0",
6
6
  "author": "zsc-glitch",
7
7
  "homepage": "https://github.com/zsc-glitch/habit-tracker",
8
8
  "skills": ["./SKILL.md"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zsc-glitch/habit-tracker",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "description": "习惯追踪器 - 记录习惯、追踪连续天数、养成好习惯",
6
6
  "main": "dist/index.js",