weflow-cli 1.6.4 → 1.8.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/ARCHITECTURE.md +3 -2
- package/CHANGELOG.md +1966 -0
- package/OPERATIONS.md +808 -0
- package/README.en.md +93 -7
- package/README.md +31 -6
- package/bin/weflow-cli.ts +1245 -26
- package/dist/bin/weflow-cli.js +1349 -72
- package/dist/bin/weflow-cli.js.map +1 -1
- package/dist/mcp-server/index.js +39 -13
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/src/core/appMsgFormat.d.ts +37 -0
- package/dist/src/core/appMsgFormat.d.ts.map +1 -0
- package/dist/src/core/appMsgFormat.js +106 -0
- package/dist/src/core/appMsgFormat.js.map +1 -0
- package/dist/src/core/ntCore.d.ts +43 -0
- package/dist/src/core/ntCore.d.ts.map +1 -1
- package/dist/src/core/ntCore.js +31 -0
- package/dist/src/core/ntCore.js.map +1 -1
- package/dist/src/core/sqlcipherCore.d.ts +0 -12
- package/dist/src/core/sqlcipherCore.d.ts.map +1 -1
- package/dist/src/core/sqlcipherCore.js +5 -64
- package/dist/src/core/sqlcipherCore.js.map +1 -1
- package/dist/src/core/wcdbCore.d.ts +1 -1
- package/dist/src/core/wcdbCore.d.ts.map +1 -1
- package/dist/src/core/wcdbCore.js +5 -1
- package/dist/src/core/wcdbCore.js.map +1 -1
- package/dist/src/panel/client.d.ts +25 -0
- package/dist/src/panel/client.d.ts.map +1 -0
- package/dist/src/panel/client.js +34 -0
- package/dist/src/panel/client.js.map +1 -0
- package/dist/src/panel/endpoint.d.ts +45 -0
- package/dist/src/panel/endpoint.d.ts.map +1 -0
- package/dist/src/panel/endpoint.js +132 -0
- package/dist/src/panel/endpoint.js.map +1 -0
- package/dist/src/panel/launch.d.ts +50 -0
- package/dist/src/panel/launch.d.ts.map +1 -0
- package/dist/src/panel/launch.js +74 -0
- package/dist/src/panel/launch.js.map +1 -0
- package/dist/src/panel/server.d.ts +23 -0
- package/dist/src/panel/server.d.ts.map +1 -0
- package/dist/src/panel/server.js +413 -0
- package/dist/src/panel/server.js.map +1 -0
- package/dist/src/panel/userId.d.ts +37 -0
- package/dist/src/panel/userId.d.ts.map +1 -0
- package/dist/src/panel/userId.js +56 -0
- package/dist/src/panel/userId.js.map +1 -0
- package/dist/src/services/assistantDaemon.d.ts +20 -3
- package/dist/src/services/assistantDaemon.d.ts.map +1 -1
- package/dist/src/services/assistantDaemon.js +46 -9
- package/dist/src/services/assistantDaemon.js.map +1 -1
- package/dist/src/services/assistantEval.d.ts +141 -0
- package/dist/src/services/assistantEval.d.ts.map +1 -0
- package/dist/src/services/assistantEval.js +497 -0
- package/dist/src/services/assistantEval.js.map +1 -0
- package/dist/src/services/assistantMemory.d.ts +106 -4
- package/dist/src/services/assistantMemory.d.ts.map +1 -1
- package/dist/src/services/assistantMemory.js +396 -61
- package/dist/src/services/assistantMemory.js.map +1 -1
- package/dist/src/services/assistantPrivacy.d.ts +15 -2
- package/dist/src/services/assistantPrivacy.d.ts.map +1 -1
- package/dist/src/services/assistantPrivacy.js +18 -4
- package/dist/src/services/assistantPrivacy.js.map +1 -1
- package/dist/src/services/assistantRouter.d.ts +41 -0
- package/dist/src/services/assistantRouter.d.ts.map +1 -0
- package/dist/src/services/assistantRouter.js +151 -0
- package/dist/src/services/assistantRouter.js.map +1 -0
- package/dist/src/services/assistantService.d.ts +209 -3
- package/dist/src/services/assistantService.d.ts.map +1 -1
- package/dist/src/services/assistantService.js +590 -75
- package/dist/src/services/assistantService.js.map +1 -1
- package/dist/src/services/assistantTools.d.ts +205 -1
- package/dist/src/services/assistantTools.d.ts.map +1 -1
- package/dist/src/services/assistantTools.js +1089 -58
- package/dist/src/services/assistantTools.js.map +1 -1
- package/dist/src/services/assistantTrace.d.ts +47 -0
- package/dist/src/services/assistantTrace.d.ts.map +1 -0
- package/dist/src/services/assistantTrace.js +150 -0
- package/dist/src/services/assistantTrace.js.map +1 -0
- package/dist/src/services/chatService.d.ts +13 -0
- package/dist/src/services/chatService.d.ts.map +1 -1
- package/dist/src/services/chatService.js +23 -0
- package/dist/src/services/chatService.js.map +1 -1
- package/dist/src/services/configService.d.ts +9 -0
- package/dist/src/services/configService.d.ts.map +1 -1
- package/dist/src/services/configService.js +15 -8
- package/dist/src/services/configService.js.map +1 -1
- package/dist/src/services/messageQuery.d.ts +35 -0
- package/dist/src/services/messageQuery.d.ts.map +1 -1
- package/dist/src/services/messageQuery.js +61 -0
- package/dist/src/services/messageQuery.js.map +1 -1
- package/dist/src/services/pythonBridge.d.ts +41 -0
- package/dist/src/services/pythonBridge.d.ts.map +1 -0
- package/dist/src/services/pythonBridge.js +119 -0
- package/dist/src/services/pythonBridge.js.map +1 -0
- package/dist/src/services/syncService.d.ts +127 -0
- package/dist/src/services/syncService.d.ts.map +1 -0
- package/dist/src/services/syncService.js +263 -0
- package/dist/src/services/syncService.js.map +1 -0
- package/dist/src/services/syncState.d.ts +113 -0
- package/dist/src/services/syncState.d.ts.map +1 -0
- package/dist/src/services/syncState.js +214 -0
- package/dist/src/services/syncState.js.map +1 -0
- package/dist/src/services/wechatMessageService.d.ts +25 -0
- package/dist/src/services/wechatMessageService.d.ts.map +1 -1
- package/dist/src/services/wechatMessageService.js +69 -7
- package/dist/src/services/wechatMessageService.js.map +1 -1
- package/dist/src/utils/atomicWrite.d.ts +4 -0
- package/dist/src/utils/atomicWrite.d.ts.map +1 -0
- package/dist/src/utils/atomicWrite.js +60 -0
- package/dist/src/utils/atomicWrite.js.map +1 -0
- package/dist/src/utils/dateRange.d.ts +15 -0
- package/dist/src/utils/dateRange.d.ts.map +1 -1
- package/dist/src/utils/dateRange.js +47 -0
- package/dist/src/utils/dateRange.js.map +1 -1
- package/dist/src/utils/text.d.ts +18 -0
- package/dist/src/utils/text.d.ts.map +1 -0
- package/dist/src/utils/text.js +20 -0
- package/dist/src/utils/text.js.map +1 -0
- package/docs/AI_INTERFACE.md +2 -0
- package/docs/DECISIONS.md +1484 -20
- package/docs/EXTENDING.md +187 -0
- package/docs/FUNCTIONAL-IMPROVEMENT-SPEC.md +338 -0
- package/docs/JEV/345/272/224/347/224/250/346/226/275/345/267/245/346/226/207/346/241/243.md +310 -0
- package/docs/MCP.md +23 -4
- package/docs/PROJECT_STATE.md +299 -96
- package/docs/SETUP.md +22 -0
- package/docs/SYNC_CONTRACT.md +180 -0
- package/mcp-server/index.ts +681 -657
- package/package.json +84 -83
- package/resources/panel/ball-position.cjs +153 -0
- package/resources/panel/index.html +46 -0
- package/resources/panel/main.cjs +447 -0
- package/resources/panel/mascot-focus.png +0 -0
- package/resources/panel/mascot-happy.png +0 -0
- package/resources/panel/mascot-sorry.png +0 -0
- package/resources/panel/mascot-tired.png +0 -0
- package/resources/panel/mascot.png +0 -0
- package/resources/panel/package.json +7 -0
- package/resources/panel/panel.css +407 -0
- package/resources/panel/preload.cjs +72 -0
- package/resources/panel/quick-menu.cjs +197 -0
- package/resources/panel/renderer.js +441 -0
- package/resources/panel/tray-menu.cjs +40 -0
- package/resources/panel/tray.png +0 -0
- package/scripts/_utils.py +403 -54
- package/scripts/annual_report.py +4 -2
- package/scripts/article_notes.py +423 -0
- package/scripts/backfill_articles.py +438 -0
- package/scripts/biz_daily.py +590 -105
- package/scripts/chat_notes.py +470 -0
- package/scripts/classify_daily.py +10 -18
- package/scripts/compile_wiki.py +1059 -46
- package/scripts/create_reading_notes.py +199 -14
- package/scripts/decide.py +253 -0
- package/scripts/draft_reply.py +671 -0
- package/scripts/export_chat_html.py +212 -46
- package/scripts/extract_todos.py +31 -5
- package/scripts/fav_notes.py +318 -0
- package/scripts/fix_topics.py +2 -1
- package/scripts/generate_ai_report.py +214 -9
- package/scripts/generate_html.py +18 -3
- package/scripts/generate_review.py +2 -2
- package/scripts/jev_client.py +294 -0
- package/scripts/jev_probe.py +440 -0
- package/scripts/nt_common.py +82 -0
- package/scripts/nt_decrypt.py +1755 -1352
- package/scripts/pipeline.py +27 -2
- package/scripts/promote_ideas.py +19 -4
- package/scripts/quality_eval.py +707 -0
- package/scripts/rag_chat.py +4 -4
- package/scripts/read_image.py +187 -0
- package/scripts/reply_debt.py +488 -0
- package/scripts/route_cards.py +453 -0
- package/scripts/semantic_search.py +208 -49
- package/scripts/user_notes.py +315 -0
- package/scripts/vault_rag.py +13 -7
- package/scripts/vault_search.py +21 -4
- package/scripts/wiki_lint.py +397 -0
- package/src/core/appMsgFormat.ts +117 -0
- package/src/core/ntCore.ts +67 -0
- package/src/core/sqlcipherCore.ts +5 -61
- package/src/core/wcdbCore.ts +6 -2
- package/src/panel/client.ts +49 -0
- package/src/panel/endpoint.ts +144 -0
- package/src/panel/launch.ts +101 -0
- package/src/panel/server.ts +424 -0
- package/src/panel/userId.ts +72 -0
- package/src/services/assistantDaemon.ts +57 -9
- package/src/services/assistantEval.ts +611 -0
- package/src/services/assistantMemory.ts +413 -57
- package/src/services/assistantPrivacy.ts +18 -4
- package/src/services/assistantRouter.ts +191 -0
- package/src/services/assistantService.ts +671 -74
- package/src/services/assistantTools.ts +1118 -57
- package/src/services/assistantTrace.ts +175 -0
- package/src/services/chatService.ts +30 -0
- package/src/services/configService.ts +403 -385
- package/src/services/messageQuery.ts +97 -0
- package/src/services/pythonBridge.ts +139 -0
- package/src/services/syncService.ts +363 -0
- package/src/services/syncState.ts +275 -0
- package/src/services/wechatMessageService.ts +73 -7
- package/src/utils/atomicWrite.ts +56 -0
- package/src/utils/dateRange.ts +46 -0
- package/src/utils/text.ts +20 -0
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
export declare const MEMORY_FORMAT_VERSION = 1;
|
|
2
|
+
/** 输入预算(字符)。中文约 1 token/字,按 24k 字留足余量给系统提示与工具结果 */
|
|
3
|
+
export declare const CONTEXT_BUDGET_CHARS = 24000;
|
|
4
|
+
/** 窗口占用达预算这个比例就压缩 */
|
|
5
|
+
export declare const WORKING_TRIGGER_RATIO = 0.8;
|
|
6
|
+
/** 压完最多保留预算的这个比例(按字符) */
|
|
7
|
+
export declare const WORKING_RETAIN_RATIO = 0.16;
|
|
8
|
+
/** 保留的条数下限:预算算出来太少时按这个来,别把小窗口压空 */
|
|
9
|
+
export declare const WORKING_MIN_TURNS = 6;
|
|
10
|
+
/** 条数上限:与预算闸并行,谁先到谁生效 */
|
|
11
|
+
export declare const WORKING_MAX = 16;
|
|
12
|
+
export declare const SUMMARY_MAX = 800;
|
|
13
|
+
export declare const FACTS_MAX = 30;
|
|
14
|
+
export declare const FACT_EXTRACT_EVERY = 6;
|
|
15
|
+
/** 每次注入事实的字符预算:30 条 × 72 字 ≈ 2.1KB 全塞进去是纯噪声,按相关度取一部分 */
|
|
16
|
+
export declare const FACTS_INJECT_BUDGET_CHARS = 1200;
|
|
17
|
+
/** 相关度低于这个值就不进上下文:**预算空着也不填无关事实** */
|
|
18
|
+
export declare const FACT_RELEVANCE_FLOOR = 0.2;
|
|
19
|
+
/** 一条都不相关时至少给最近这么多条——「记忆」本身也是上下文 */
|
|
20
|
+
export declare const FACTS_INJECT_MIN_RECENT = 8;
|
|
1
21
|
export interface ChatTurn {
|
|
2
22
|
role: 'user' | 'assistant';
|
|
3
23
|
content: string;
|
|
@@ -5,15 +25,33 @@ export interface ChatTurn {
|
|
|
5
25
|
export interface Fact {
|
|
6
26
|
content: string;
|
|
7
27
|
ts: number;
|
|
28
|
+
/** 从第几个用户轮抽出来的;与 `sourceQuote` 一起,为"这条记忆对不对"留核对依据 */
|
|
29
|
+
sourceTurn?: number;
|
|
30
|
+
/** 触发这条事实的那句用户话(截断) */
|
|
31
|
+
sourceQuote?: string;
|
|
32
|
+
/** 最近一次被检索/注入的时间。用来排序与识别陈旧——只增不减的记忆最容易在这上面腐化 */
|
|
33
|
+
usedAt?: number;
|
|
8
34
|
}
|
|
9
35
|
/** LLM 调用器抽象 (由 assistantService 注入, 避免循环依赖) */
|
|
10
36
|
export type LlmCaller = (messages: ChatTurn[], maxTokens?: number) => Promise<string>;
|
|
37
|
+
/** 事实的归一化形式:去掉空白与常见标点,再小写。只用于**比较**,不用于存储 */
|
|
38
|
+
export declare function normalizeFact(text: string): string;
|
|
11
39
|
export declare class AssistantMemory {
|
|
12
40
|
private states;
|
|
13
41
|
/** 本进程修改过的用户 (save 时只回写这些用户, 其余保留磁盘最新值) */
|
|
14
42
|
private dirtyUsers;
|
|
43
|
+
/** 加载时出了什么值得说出来的事(版本不认识 → 已留档;文件坏了 → 已留档)。空串=没事 */
|
|
44
|
+
private loadIssue;
|
|
45
|
+
/** 上一次落盘失败的原因;成功一次就清空。见 `save()` 里那段注释 */
|
|
46
|
+
private saveIssue;
|
|
15
47
|
constructor();
|
|
16
|
-
|
|
48
|
+
/** 加载期的问题。调用方(服务启动时)应当把它**打出来**,而不是让用户面对一份空记忆 */
|
|
49
|
+
get problem(): string;
|
|
50
|
+
/** 上一次落盘失败的原因(成功过就是 null)。存在不等于"这次没存上"——错误是累积前的最后一次 */
|
|
51
|
+
get lastSaveError(): string | null;
|
|
52
|
+
private normalizeUser;
|
|
53
|
+
/** 把读不出来的文件改名留档——**不许静默丢弃** */
|
|
54
|
+
private quarantine;
|
|
17
55
|
private load;
|
|
18
56
|
save(): void;
|
|
19
57
|
private state;
|
|
@@ -24,13 +62,77 @@ export declare class AssistantMemory {
|
|
|
24
62
|
summary(userId: string): string;
|
|
25
63
|
facts(userId: string): Fact[];
|
|
26
64
|
userCount(): number;
|
|
27
|
-
/**
|
|
65
|
+
/** 是哪道闸要压:条数(短轮次堆多了)还是预算(长轮次把窗口撑爆了) */
|
|
66
|
+
compressionGate(userId: string): 'count' | 'budget' | 'both' | null;
|
|
67
|
+
needsCompression(userId: string): boolean;
|
|
68
|
+
/** 压完保留多少条。**两道闸的保留规则不同,这是有意的**:
|
|
69
|
+
*
|
|
70
|
+
* - 条数闸(一堆短轮次堆到 16 条):保留最近的一半,下限 `WORKING_MIN_TURNS`——这里条数才是
|
|
71
|
+
* 问题所在,留一半正好把窗口减半;
|
|
72
|
+
* - 预算闸(几条长轮次就把预算撑爆):按**字符**保留预算的 16%,条数只保底 1 条。
|
|
73
|
+
* 这两条约束会互斥——6000 字的轮次保 6 条就是 36000 字,远超 24k 预算。**字符上限优先**,
|
|
74
|
+
* 因为它是硬预算;条数下限在小窗口下才有意义。
|
|
75
|
+
* - 两道同时触发:取两者中**更小的**(更保守)。
|
|
76
|
+
*
|
|
77
|
+
* 无论哪条,都卡在 `[1, 窗口长度-1]`:算出"保留 6 条"而窗口只有 5 条时,`slice(-1)` 会只留
|
|
78
|
+
* 1 条,下限形同虚设(实测撞出来的);也至少要压出去一条,否则"压了"却没动。
|
|
79
|
+
*/
|
|
80
|
+
private retainCount;
|
|
81
|
+
/** L2: 窗口该压时,把最旧的那些压进摘要 */
|
|
28
82
|
compressIfNeeded(userId: string, llm: LlmCaller): Promise<boolean>;
|
|
29
83
|
/** L3: 定期从最近对话提取持久事实 */
|
|
30
84
|
extractFactsIfNeeded(userId: string, llm: LlmCaller): Promise<number>;
|
|
31
|
-
/** L3 检索:
|
|
85
|
+
/** L3 检索: 关键词命中;命中即记 `usedAt`(谁被用过是排序与"陈旧"判断的依据) */
|
|
32
86
|
searchFacts(userId: string, keyword: string): Fact[];
|
|
33
87
|
/** L3 写入 (save_memory 工具用, 立即生效) */
|
|
34
|
-
addFact(userId: string, content: string
|
|
88
|
+
addFact(userId: string, content: string, source?: {
|
|
89
|
+
sourceTurn?: number;
|
|
90
|
+
sourceQuote?: string;
|
|
91
|
+
}): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* 记忆一条事实,返回**是否新增或更新**。三种判定:
|
|
94
|
+
*
|
|
95
|
+
* - 归一化后相同 → 重复,什么都不做;
|
|
96
|
+
* - 一条包含另一条 → 取**更长的那条**(更具体),短的那条被顶掉;
|
|
97
|
+
* - 其它 → 新增。
|
|
98
|
+
*
|
|
99
|
+
* 包含式去重的固有模糊写在测试里:两个恰好互为前缀的短事实(`事实1` 与 `事实10`),
|
|
100
|
+
* 长的那条会顶掉短的。真实事实极少这样,而"更具体的胜出"在真实场景里是对的。
|
|
101
|
+
*/
|
|
102
|
+
private rememberFact;
|
|
35
103
|
}
|
|
104
|
+
/** L2 的压缩提示词。**固定节骨架 + 合并律**:空节写 `(none)`,永不删节。
|
|
105
|
+
*
|
|
106
|
+
* 为什么固定成节:自由摘要最容易在压缩时悄悄丢信息(丢了自己也不知道)。固定节至少让
|
|
107
|
+
* 每一次压缩都必须回答"待办有没有、错误有没有、下一步有没有"。
|
|
108
|
+
* 为什么写合并律:滚动摘要腐化的正解是"保留仍然成立的、丢掉过期的、合成一份",并明确
|
|
109
|
+
* **禁止逐字复制前任**——否则摘要会一层层掺水。
|
|
110
|
+
*/
|
|
111
|
+
export declare function buildSummaryPrompt(previous: string, turnsOut: ChatTurn[]): string;
|
|
112
|
+
/** L3 的抽取提示词。要求可核对:每条事实都能在对话里指出来源 */
|
|
113
|
+
export declare function buildFactPrompt(recent: ChatTurn[]): string;
|
|
114
|
+
/**
|
|
115
|
+
* 该把哪几条事实放进这次请求:**先相关、再近期用过、最后按时间**,总量受字符预算约束。
|
|
116
|
+
*
|
|
117
|
+
* 为什么不全量注入:30 条 × ~72 字 ≈ 2.1KB **每轮**都发,而且与当前问题无关的那些是纯噪声——
|
|
118
|
+
* 噪声不只是花钱,它是"模型被无关信息带偏"的来源之一。
|
|
119
|
+
*
|
|
120
|
+
* **相关度决定"谁进",展示保持时序**:入选的按时间先后排列(读起来像一份清单,而不是一堆碎片),
|
|
121
|
+
* 没进的按相关度+近期用过来决定顺序。
|
|
122
|
+
*
|
|
123
|
+
* 返回未被选中的条数,调用方要**如实说出来**(`另有 N 条未列出`)。谎报"全部记忆如下"比少给
|
|
124
|
+
* 几条更糟:模型会以为自己看到了全部。
|
|
125
|
+
*/
|
|
126
|
+
export declare function selectFactsForInjection(facts: Fact[], question: string, budgetChars?: number): {
|
|
127
|
+
selected: Fact[];
|
|
128
|
+
withheld: number;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* 把一段**本地数据**包进框里再进提示词,并转义内容里出现的框标签。
|
|
132
|
+
*
|
|
133
|
+
* 防的是"框欺骗":聊天正文、文章正文、事实里完全可能写着 `</weflow-local-data>` 再跟一段
|
|
134
|
+
* 像系统指令的话——不转义就等于让数据自己把框关上、直接以系统身份说话。转义后它只能是数据。
|
|
135
|
+
* (这不等于防住提示词注入本身:数据里仍可以有指令性文字;我们只保证它**关不掉这个框**。)
|
|
136
|
+
*/
|
|
137
|
+
export declare function frameLocalData(label: string, body: string): string;
|
|
36
138
|
//# sourceMappingURL=assistantMemory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistantMemory.d.ts","sourceRoot":"","sources":["../../../src/services/assistantMemory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assistantMemory.d.ts","sourceRoot":"","sources":["../../../src/services/assistantMemory.ts"],"names":[],"mappings":"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"}
|