chattercatcher 0.1.24 → 0.1.25
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 +43 -4
- package/dist/cli.js +10 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,8 +59,11 @@ ChatterCatcher 是一个早期 MVP。它已经具备飞书长连接接入、本
|
|
|
59
59
|
|
|
60
60
|
- **无 native 向量库依赖**:语义向量写入 SQLite,避免 LanceDB 平台包在不同 macOS/CPU 架构上安装失败。
|
|
61
61
|
- **SQLite FTS + embedding 混合 RAG**:关键词和语义检索并行召回,回答前必须先找到本地证据。
|
|
62
|
+
- **相对时间归一化**:自动将”今天””明天””今晚”等相对时间表述转换为具体日期。所有 LLM 路径(会话摘要、RAG 问答、Agent 工具循环)统一注入当前时间并强调时间推导规则,让回答中的日期始终准确。
|
|
63
|
+
- **群内定时任务**:在群里用自然语言创建 cron 定时任务,支持”每天 9 点总结昨天群聊”等日常需求。创建、查看、删除都在群里一句话搞定,任务限定当前群聊不能跨群。
|
|
64
|
+
- **工具循环智能兜底**:当 Agent 多轮工具调用达到上限时,自动用对话历史生成最终答案,不再返回含混的”操作已提交”提示。
|
|
62
65
|
- **自动识别飞书机器人身份**:可通过 App ID / App Secret 自动获取 `botOpenId`,减少手动配置错误。
|
|
63
|
-
- **会话记忆块**:把 10 分钟窗口、静默 2 分钟后的碎片聊天整理成 episode summary
|
|
66
|
+
- **会话记忆块**:把 10 分钟窗口、静默 2 分钟后的碎片聊天整理成 episode summary,让”我要发一个 API key”与后续短消息保持上下文关联。
|
|
64
67
|
- **敏感摘要保护**:会话摘要会脱敏疑似 token/API key;原始消息仍保留在本地,方便必要时追溯。
|
|
65
68
|
|
|
66
69
|
当前核心方向是:
|
|
@@ -121,7 +124,9 @@ ChatterCatcher 是一个早期 MVP。它已经具备飞书长连接接入、本
|
|
|
121
124
|
| 消息入库 | 普通文本消息写入 SQLite;`@` 提问直接回答并跳过入库 |
|
|
122
125
|
| 会话记忆块 | 默认 10 分钟窗口 + 2 分钟静默期,把碎片聊天整理成可检索 episode summary,并关联原始消息 |
|
|
123
126
|
| RAG 检索 | SQLite FTS 关键词检索、SQLite embedding 向量检索、episode summary 检索、混合重排、证据来源保留 |
|
|
124
|
-
|
|
|
127
|
+
| 时间归一化 | 自动将相对时间(今天/明天/今晚)推导为具体日期,覆盖会话摘要、RAG 问答、Agent 工具循环全部 LLM 路径 |
|
|
128
|
+
| 问答 | OpenAI-compatible chat completions、Agent 多轮工具调用、证据不足时说不知道、回答带引用、工具循环耗尽智能兜底 |
|
|
129
|
+
| 定时任务 | 群内自然语言创建 cron 定时任务(如"每天 9 点总结昨天群聊"),限定当前群聊,支持创建/查看/删除 |
|
|
125
130
|
| 引用格式 | 展示“谁在什么时候说了什么”,避免暴露 `ou_` / `oc_` 等 opaque id |
|
|
126
131
|
| 文件知识源 | 支持 txt、md、json、csv、tsv、log、docx、pdf 导入和解析 |
|
|
127
132
|
| CLI | setup、settings、doctor、gateway、process、index、files、export、restore |
|
|
@@ -250,12 +255,14 @@ http://127.0.0.1:3878
|
|
|
250
255
|
期望回答类似:
|
|
251
256
|
|
|
252
257
|
```text
|
|
253
|
-
|
|
258
|
+
最近一次编程课是 2026-04-28 13:40 [S1]。
|
|
254
259
|
|
|
255
260
|
引用:
|
|
256
|
-
[S1] 群成员在 2026-04-26 13:36
|
|
261
|
+
[S1] 群成员在 2026-04-26 13:36 说:”编程课的时间改成了后天13:40”
|
|
257
262
|
```
|
|
258
263
|
|
|
264
|
+
注意:原文说的是”后天”,但 ChatterCatcher 已根据消息时间戳自动推导为具体日期。
|
|
265
|
+
|
|
259
266
|
---
|
|
260
267
|
|
|
261
268
|
## 常用命令
|
|
@@ -275,6 +282,8 @@ http://127.0.0.1:3878
|
|
|
275
282
|
| `chattercatcher files jobs` | 查看文件解析任务 |
|
|
276
283
|
| `chattercatcher export --out <file>` | 导出本地知识库数据,不含密钥 |
|
|
277
284
|
| `chattercatcher restore <file>` | 从导出文件恢复 |
|
|
285
|
+
| `chattercatcher cron list` | 列出所有定时任务 |
|
|
286
|
+
| `chattercatcher cron run` | 手动触发到期定时任务 |
|
|
278
287
|
|
|
279
288
|
---
|
|
280
289
|
|
|
@@ -301,6 +310,28 @@ chattercatcher process episodes
|
|
|
301
310
|
|
|
302
311
|
---
|
|
303
312
|
|
|
313
|
+
## 群内定时任务
|
|
314
|
+
|
|
315
|
+
在群里用自然语言即可创建定时任务。ChatterCatcher 会把自然语言时间描述自动转换为 cron 表达式:
|
|
316
|
+
|
|
317
|
+
```text
|
|
318
|
+
@小陈 每天 9 点总结昨天群聊
|
|
319
|
+
@小陈 每周一上午 10 点提醒大家报备周末计划
|
|
320
|
+
@小陈 查看定时任务
|
|
321
|
+
@小陈 删除 job-abc123
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
定时任务限定在当前群聊内,不能跨群查看或操作其他群的任务。
|
|
325
|
+
|
|
326
|
+
CLI 管理:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
chattercatcher cron list # 查看所有定时任务
|
|
330
|
+
chattercatcher cron run # 手动触发到期任务
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
304
335
|
## 本地数据目录
|
|
305
336
|
|
|
306
337
|
默认数据目录:
|
|
@@ -391,6 +422,14 @@ npm install -g chattercatcher@latest
|
|
|
391
422
|
|
|
392
423
|
摘要层会脱敏疑似 API key、token、cookie、私钥和 URL 凭据;原始消息仍然只保存在本地数据库,用于必要时追溯证据。
|
|
393
424
|
|
|
425
|
+
### ChatterCatcher 能理解"明天""今晚"这种相对时间吗?
|
|
426
|
+
|
|
427
|
+
可以。ChatterCatcher 会自动识别消息的时间戳,将"今天""明天""今晚""下周三"等相对表述推导为具体日期写入摘要和回答。你不需要在每次提问时手工推算日期。
|
|
428
|
+
|
|
429
|
+
### 定时任务怎么用?会不会跨群操作?
|
|
430
|
+
|
|
431
|
+
在群里 @ 机器人说"每天 9 点总结昨天群聊"即可创建定时任务。用"查看定时任务"列出当前群的任务,"删除 xxx"删掉指定任务。定时任务限定在当前群聊,不会跨群查看或操作。
|
|
432
|
+
|
|
394
433
|
### Web UI 可以暴露到公网吗?
|
|
395
434
|
|
|
396
435
|
默认不建议。ChatterCatcher 面向家庭隐私数据,默认只监听 `127.0.0.1`。
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import fs14 from "fs/promises";
|
|
|
8
8
|
// package.json
|
|
9
9
|
var package_default = {
|
|
10
10
|
name: "chattercatcher",
|
|
11
|
-
version: "0.1.
|
|
11
|
+
version: "0.1.25",
|
|
12
12
|
description: "\u672C\u5730\u4F18\u5148\u7684\u98DE\u4E66/Lark \u5BB6\u5EAD\u7FA4\u77E5\u8BC6\u5E93\u673A\u5668\u4EBA",
|
|
13
13
|
type: "module",
|
|
14
14
|
main: "dist/index.js",
|
|
@@ -3843,7 +3843,15 @@ async function runFeishuToolLoop(input2) {
|
|
|
3843
3843
|
}
|
|
3844
3844
|
}
|
|
3845
3845
|
}
|
|
3846
|
-
|
|
3846
|
+
try {
|
|
3847
|
+
const salvageAnswer = await input2.model.complete([
|
|
3848
|
+
...messages,
|
|
3849
|
+
{ role: "system", content: "\u8BF7\u57FA\u4E8E\u4EE5\u4E0A\u6240\u6709\u5DE5\u5177\u8FD4\u56DE\u7684\u4FE1\u606F\uFF0C\u76F4\u63A5\u7ED9\u51FA\u6700\u7EC8\u7B54\u6848\u3002\u4E0D\u8981\u518D\u8C03\u7528\u5DE5\u5177\u3002" }
|
|
3850
|
+
]);
|
|
3851
|
+
return salvageAnswer || "\u62B1\u6B49\uFF0C\u56DE\u7B54\u751F\u6210\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002";
|
|
3852
|
+
} catch {
|
|
3853
|
+
return "\u62B1\u6B49\uFF0C\u56DE\u7B54\u751F\u6210\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002";
|
|
3854
|
+
}
|
|
3847
3855
|
}
|
|
3848
3856
|
function isMentionForBot(mention, config) {
|
|
3849
3857
|
if (!config.feishu.botOpenId) {
|