@tznthou/ccrecall 0.6.0 → 0.7.1
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/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +5 -1
- package/dist/api/routes.js.map +1 -1
- package/dist/core/database.d.ts +15 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +54 -0
- package/dist/core/database.js.map +1 -1
- package/dist/core/project-id.d.ts +19 -0
- package/dist/core/project-id.d.ts.map +1 -0
- package/dist/core/project-id.js +24 -0
- package/dist/core/project-id.js.map +1 -0
- package/dist/core/topic-extractor.d.ts +4 -0
- package/dist/core/topic-extractor.d.ts.map +1 -1
- package/dist/core/topic-extractor.js +110 -2
- package/dist/core/topic-extractor.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +38 -9
- package/dist/mcp/tools.js.map +1 -1
- package/hooks/lib/project-id.mjs +22 -0
- package/hooks/session-start.mjs +6 -4
- package/hooks/user-prompt-submit.mjs +6 -4
- package/package.json +1 -1
- package/scripts/backfill-memory-topics.ts +65 -8
- package/scripts/post-session-extract.sh +111 -12
- package/scripts/usefulness-report.sql +27 -2
|
@@ -11,14 +11,110 @@ const STOPWORDS = new Set([
|
|
|
11
11
|
'node_modules', 'tmp', 'temp', 'mock', 'mocks', 'fixture', 'fixtures',
|
|
12
12
|
'config', 'constants', 'const', 'let', 'var', 'function', 'return', 'error',
|
|
13
13
|
'data', 'value', 'result',
|
|
14
|
+
// #84 — the English half of the list was ~21 words while the CJK half had 56,
|
|
15
|
+
// so English function words dominated the index: `when` was the single most
|
|
16
|
+
// frequent key in the whole table (244 memories). 133 distinct stopwords
|
|
17
|
+
// covered 2,224 of 24,047 topic rows (9.2%). Every topic-driven path matches
|
|
18
|
+
// on this table — Tier 0 startup selection, recall_context, and L1 recall —
|
|
19
|
+
// so a key this frequent creates spurious matches everywhere.
|
|
20
|
+
//
|
|
21
|
+
// Same discipline as the CJK pass: pure function words only. Terms that carry
|
|
22
|
+
// meaning in this domain stay out even when they read as generic — `code`,
|
|
23
|
+
// `session`, `memory`, `files`, `state`, `pattern`, `check`, `run` and `zero`
|
|
24
|
+
// are all high-frequency here and all deliberately absent.
|
|
25
|
+
//
|
|
26
|
+
// Verified before landing: adding these leaves **zero** memories without any
|
|
27
|
+
// topic (567 lose some but none go empty), so nothing drops out of
|
|
28
|
+
// knowledge_map or becomes unreachable by topic-driven selection.
|
|
29
|
+
'about', 'above', 'across', 'after', 'again', 'against', 'also', 'always', 'among',
|
|
30
|
+
'another', 'because', 'been', 'before', 'being', 'below', 'beside', 'best', 'better',
|
|
31
|
+
'both', 'cannot', 'could', 'did', 'does', 'doing', 'done', 'down', 'during',
|
|
32
|
+
'each', 'either', 'else', 'enough', 'even', 'ever', 'every', 'few', 'first',
|
|
33
|
+
'further', 'get', 'gets', 'getting', 'give', 'given', 'goes', 'going', 'gone',
|
|
34
|
+
'got', 'have', 'having', 'here', 'hers', 'him', 'his', 'how', 'however',
|
|
35
|
+
'into', 'itself', 'just', 'keep', 'kept', 'last', 'least', 'less', 'let',
|
|
36
|
+
'like', 'likely', 'made', 'make', 'makes', 'making', 'many', 'may', 'maybe',
|
|
37
|
+
'mean', 'means', 'might', 'more', 'most', 'much', 'must', 'need', 'needs',
|
|
38
|
+
'neither', 'never', 'next', 'non', 'nor', 'now', 'off', 'often', 'once',
|
|
39
|
+
'one', 'only', 'onto', 'other', 'others', 'ought', 'ours', 'out', 'over',
|
|
40
|
+
'own', 'per', 'perhaps', 'put', 'quite', 'rather', 'really', 'said', 'same',
|
|
41
|
+
'say', 'says', 'see', 'seen', 'shall', 'she', 'should', 'since', 'some',
|
|
42
|
+
'soon', 'still', 'such', 'take', 'taken', 'than', 'their', 'them', 'then',
|
|
43
|
+
'there', 'these', 'they', 'thing', 'things', 'those', 'though', 'three', 'through',
|
|
44
|
+
'thus', 'too', 'two', 'under', 'until', 'upon', 'use', 'used', 'uses',
|
|
45
|
+
'using', 'very', 'via', 'want', 'way', 'well', 'were', 'what', 'when',
|
|
46
|
+
'where', 'whether', 'which', 'while', 'who', 'whom', 'whose', 'why', 'within',
|
|
47
|
+
'without', 'would', 'yet', 'your',
|
|
14
48
|
]);
|
|
15
49
|
const CJK_STOPWORDS = new Set([
|
|
16
50
|
'這個', '我們', '那個', '可以', '什麼', '然後', '因為', '所以',
|
|
17
51
|
'但是', '已經', '沒有', '不是', '一個', '為什麼', '怎麼', '現在',
|
|
18
52
|
'或者', '如果', '雖然', '還是', '他們', '自己', '這些', '那些',
|
|
19
53
|
'而且', '只有', '之後', '以後', '以前', '應該', '需要', '可能',
|
|
54
|
+
// #80 — particles and function words now arrive as their own tokens from the
|
|
55
|
+
// segmenter instead of being deleted mid-word by a character substitution.
|
|
56
|
+
// Deliberately conservative: only pure function words. Terms that carry
|
|
57
|
+
// project meaning (一手/三路/修法…) stay out even when they look generic.
|
|
58
|
+
'是否', '新的', '出來', '掉了', '下個', '任何', '多個', '同一',
|
|
59
|
+
'不會', '不要', '不只', '詳見', '以及', '或是', '還有', '然而',
|
|
60
|
+
'因此', '於是', '目前', '剛才', '後來', '接著', '這樣', '那樣',
|
|
20
61
|
]);
|
|
21
62
|
const HAN_RE = /\p{Script=Han}/u;
|
|
63
|
+
const HAN_ONLY_RE = /^\p{Script=Han}+$/u;
|
|
64
|
+
/** #80 — ICU word segmentation for Han runs. Latin is deliberately NOT routed
|
|
65
|
+
through the segmenter: it splits `better-sqlite3` into `better`/`sqlite3`,
|
|
66
|
+
which would invalidate the ~97% of the index that is Latin.
|
|
67
|
+
|
|
68
|
+
Constructed lazily behind hasIcuData() because calling segment() on a
|
|
69
|
+
small-icu build without runtime ICU data is a SIGSEGV, not an exception —
|
|
70
|
+
see nodejs/node#51752 (still open). A try/catch cannot save us there, and
|
|
71
|
+
this module is imported by the daemon and the MCP server, so the crash
|
|
72
|
+
would take down the whole process at import time. Fedora's `nodejs`
|
|
73
|
+
package without `nodejs-full-i18n` is exactly this build. */
|
|
74
|
+
function hasIcuData() {
|
|
75
|
+
// icu_small === true means the build ships only the English locale stub.
|
|
76
|
+
// Bail out even when NODE_ICU_DATA might supply real data: degrading to the
|
|
77
|
+
// legacy splitter is safe, probing to find out is not.
|
|
78
|
+
const vars = process.config?.variables;
|
|
79
|
+
if (vars?.icu_small === true)
|
|
80
|
+
return false;
|
|
81
|
+
return typeof Intl !== 'undefined' && typeof Intl.Segmenter === 'function';
|
|
82
|
+
}
|
|
83
|
+
const hanSegmenter = hasIcuData()
|
|
84
|
+
? new Intl.Segmenter('zh-TW', { granularity: 'word' })
|
|
85
|
+
: null;
|
|
86
|
+
/** Confirms the runtime does dictionary-based CJK segmentation rather than
|
|
87
|
+
falling back to per-character breaks. Only ever runs once hasIcuData() has
|
|
88
|
+
ruled out the build that would crash. */
|
|
89
|
+
function probeSegmenter() {
|
|
90
|
+
if (!hanSegmenter)
|
|
91
|
+
return false;
|
|
92
|
+
try {
|
|
93
|
+
const out = [...hanSegmenter.segment('確認更新')]
|
|
94
|
+
.filter(s => s.isWordLike)
|
|
95
|
+
.map(s => s.segment);
|
|
96
|
+
return out.length === 2 && out[0] === '確認' && out[1] === '更新';
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const SEGMENTER_OK = probeSegmenter();
|
|
103
|
+
/** Exposed so CI can assert the runtime actually segments rather than silently
|
|
104
|
+
falling back. Without this a small-icu build would degrade quietly and the
|
|
105
|
+
CJK assertions would fail for a reason no one could read off the output. */
|
|
106
|
+
export function isSegmenterAvailable() {
|
|
107
|
+
return SEGMENTER_OK;
|
|
108
|
+
}
|
|
109
|
+
/** Splits one all-Han run into words. Returns the run unchanged when the
|
|
110
|
+
runtime cannot segment, preserving the legacy MAX_HAN_RUN discard upstream. */
|
|
111
|
+
function segmentHanRun(run) {
|
|
112
|
+
if (!SEGMENTER_OK || !hanSegmenter)
|
|
113
|
+
return [run];
|
|
114
|
+
return [...hanSegmenter.segment(run)]
|
|
115
|
+
.filter(s => s.isWordLike)
|
|
116
|
+
.map(s => s.segment);
|
|
117
|
+
}
|
|
22
118
|
/** 將原始字串正規化為 topic_key:以 / \ . 拆 segment 後各自 normalize、過濾 stopword/太短,再組合 */
|
|
23
119
|
export function normalizeTopicKey(raw) {
|
|
24
120
|
if (!raw)
|
|
@@ -48,15 +144,27 @@ export function extractTopicsFromContent(content) {
|
|
|
48
144
|
if (!content)
|
|
49
145
|
return [];
|
|
50
146
|
const topics = new Set();
|
|
147
|
+
// #80 — the particle substitution `.replace(/[的了是在]/g, ' ')` used to live
|
|
148
|
+
// here. It deleted characters mid-word (是 out of 是否 → the `否開始作用`
|
|
149
|
+
// fragment in #79) and is now handled by segmentation + CJK_STOPWORDS.
|
|
51
150
|
const processed = content
|
|
52
151
|
.replace(/[,。、;:「」()【】!?…·—]+/g, ' ')
|
|
53
|
-
.replace(/[的了是在]/g, ' ')
|
|
54
152
|
.replace(/([\p{Script=Han}])([^\p{Script=Han}\s])/gu, '$1 $2')
|
|
55
153
|
.replace(/([^\p{Script=Han}\s])([\p{Script=Han}])/gu, '$1 $2');
|
|
56
154
|
const words = processed.split(/[\s,;:()[\]{}"'`|/\\]+/).filter(Boolean);
|
|
57
155
|
for (const w of words) {
|
|
58
|
-
if (
|
|
156
|
+
if (HAN_ONLY_RE.test(w)) {
|
|
157
|
+
// Han runs go through ICU. Without a working segmenter this yields the
|
|
158
|
+
// run itself, so the legacy length guard still applies.
|
|
159
|
+
for (const piece of segmentHanRun(w)) {
|
|
160
|
+
if (!SEGMENTER_OK && piece.length > MAX_HAN_RUN)
|
|
161
|
+
continue;
|
|
162
|
+
const k = normalizeTopicKey(piece);
|
|
163
|
+
if (k)
|
|
164
|
+
topics.add(k);
|
|
165
|
+
}
|
|
59
166
|
continue;
|
|
167
|
+
}
|
|
60
168
|
const k = normalizeTopicKey(w);
|
|
61
169
|
if (k)
|
|
62
170
|
topics.add(k);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic-extractor.js","sourceRoot":"","sources":["../../src/core/topic-extractor.ts"],"names":[],"mappings":"AAOA,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAC9B,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,OAAO;IACP,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC/E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACrE,2BAA2B;IAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACnF,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO;IACtE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;IACrE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"topic-extractor.js","sourceRoot":"","sources":["../../src/core/topic-extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAiB1E,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,IAAI,CAAA;CACf,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAiB1E,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,IAAI,CAAA;CACf,CAAA;AAmDD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAA2B,GACrC,eAAe,CAMjB;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,EACZ,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,aAAa,CAsBf;AAgBD,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,cAAc,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EAAE,EACxB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,EACjC,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,GAAE,MAA2B,GACrC,eAAe,CAmDjB;AAiBD,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,EACZ,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACxF,aAAa,CA2Df;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GACA,aAAa,CAqCf;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CA4InE"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -18,7 +18,11 @@ function textError(prefix, err) {
|
|
|
18
18
|
}
|
|
19
19
|
const recallQueryInput = {
|
|
20
20
|
query: z.string().min(1).describe('FTS5 search query (keywords or phrase)'),
|
|
21
|
-
projectId: z.string().min(1).describe('Project ID
|
|
21
|
+
projectId: z.string().min(1).describe('Project ID: the cwd with EVERY character outside [A-Za-z0-9] replaced by "-", ' +
|
|
22
|
+
'one dash per character. Spaces, dots, underscores and CJK all become dashes, ' +
|
|
23
|
+
'not just slashes: "/Users/foo/my project" -> "-Users-foo-my-project". ' +
|
|
24
|
+
'This is how Claude Code names the folders under ~/.claude/projects/; ' +
|
|
25
|
+
'an id derived any other way silently matches nothing.'),
|
|
22
26
|
limit: z.number().int().positive().max(50).optional().describe('Max results (default 10, max 50)'),
|
|
23
27
|
maxTokens: z.number().int().positive().max(2000).optional().describe(`Approximate total output token budget (default ${DEFAULT_MAX_TOKENS}). Results are truncated with per-row ellipsis and a trailer so clipping is always visible.`),
|
|
24
28
|
};
|
|
@@ -139,7 +143,11 @@ export function formatContextResult(clusters, unmatchedKeywords, fallbackMemorie
|
|
|
139
143
|
return { text: parts.join('\n').trimEnd(), emittedIds };
|
|
140
144
|
}
|
|
141
145
|
const recallContextInput = {
|
|
142
|
-
projectId: z.string().min(1).describe('Project ID
|
|
146
|
+
projectId: z.string().min(1).describe('Project ID: the cwd with EVERY character outside [A-Za-z0-9] replaced by "-", ' +
|
|
147
|
+
'one dash per character. Spaces, dots, underscores and CJK all become dashes, ' +
|
|
148
|
+
'not just slashes: "/Users/foo/my project" -> "-Users-foo-my-project". ' +
|
|
149
|
+
'This is how Claude Code names the folders under ~/.claude/projects/; ' +
|
|
150
|
+
'an id derived any other way silently matches nothing.'),
|
|
143
151
|
keywords: z.array(z.string().min(1)).min(1).describe('Candidate topic keywords (e.g. ["typescript", "mcp"])'),
|
|
144
152
|
memoryLimit: z.number().int().positive().max(20).optional().describe('Max memories per topic (default 5)'),
|
|
145
153
|
maxTokens: z.number().int().positive().max(2000).optional().describe(`Approximate total output token budget (default ${DEFAULT_MAX_TOKENS}). Results are truncated with per-row ellipsis and a trailer so clipping is always visible.`),
|
|
@@ -243,11 +251,17 @@ export function registerTools(server, db) {
|
|
|
243
251
|
description: [
|
|
244
252
|
'Search ccRecall memories by keyword (FTS5 full-text search).',
|
|
245
253
|
'',
|
|
246
|
-
'ccRecall is a user-scoped memory store
|
|
247
|
-
'
|
|
248
|
-
'
|
|
249
|
-
'
|
|
250
|
-
'
|
|
254
|
+
'ccRecall is a user-scoped memory store. It complements the curated',
|
|
255
|
+
'MEMORY.md index that loads at session start: MEMORY.md carries a',
|
|
256
|
+
'small hand-picked set; ccRecall carries the rest — decisions,',
|
|
257
|
+
'discoveries, patterns, and corrections from past sessions.',
|
|
258
|
+
'',
|
|
259
|
+
'SCOPE — read this before interpreting an empty result:',
|
|
260
|
+
'Results are restricted to the CURRENT project. This is a hard filter,',
|
|
261
|
+
'not a ranking preference: memories from your other projects are not in',
|
|
262
|
+
'the result set at all. "No memories found" therefore means "nothing in',
|
|
263
|
+
'this project", NOT "this knowledge does not exist". A principle learned',
|
|
264
|
+
'in another project will never appear here, however relevant it is.',
|
|
251
265
|
'',
|
|
252
266
|
'USE THIS WHEN:',
|
|
253
267
|
'- The user references past work ("what did we decide", "last time",',
|
|
@@ -258,8 +272,23 @@ export function registerTools(server, db) {
|
|
|
258
272
|
'- You want a specific keyword match (use recall_context for theme',
|
|
259
273
|
' exploration with depth signals)',
|
|
260
274
|
'',
|
|
261
|
-
'
|
|
262
|
-
'
|
|
275
|
+
'ALSO USE THIS WHEN NOBODY ASKED — the cases above all require someone',
|
|
276
|
+
'to bring up the past, which is exactly when a forgotten constraint',
|
|
277
|
+
'does NOT get mentioned:',
|
|
278
|
+
'- Before committing to an architectural pattern, a new dependency, or',
|
|
279
|
+
' a security boundary — check whether a past decision constrains it',
|
|
280
|
+
'- Before concluding "X does not work" or "we should do Y instead"',
|
|
281
|
+
'',
|
|
282
|
+
'HOW TO PHRASE THE QUERY:',
|
|
283
|
+
'- Give MORE terms rather than fewer. The index is trigram-based and',
|
|
284
|
+
' ranked by BM25, which discriminates by how many query terms a',
|
|
285
|
+
' document matches — a broad OR query ranks better than a narrow one.',
|
|
286
|
+
' Do not use AND; it collapses the result set.',
|
|
287
|
+
'- Use English technical terms. Memory content is predominantly',
|
|
288
|
+
' English and the tokenizer is trigram, so CJK queries return nothing.',
|
|
289
|
+
' Translate the concept before searching.',
|
|
290
|
+
'- Search the GENERAL name of a pattern, not this project\'s own names.',
|
|
291
|
+
' Project nouns pull local results to the top and bury the rest.',
|
|
263
292
|
'',
|
|
264
293
|
'Returns: formatted list of matching memories with type and confidence.',
|
|
265
294
|
].join('\n'),
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Encode a working directory the way Claude Code names its project folders
|
|
5
|
+
* under `~/.claude/projects/`: every character outside `[A-Za-z0-9]` becomes
|
|
6
|
+
* a single `-`.
|
|
7
|
+
*
|
|
8
|
+
* Deliberate duplicate of `src/core/project-id.ts`. The hooks ship as
|
|
9
|
+
* standalone .mjs installed straight from the npm package — they are never
|
|
10
|
+
* bundled through `dist/`, so they cannot import the TypeScript module.
|
|
11
|
+
* `tests/project-id-encoding.test.ts` asserts both copies against the same
|
|
12
|
+
* fixtures, which is what keeps them from drifting apart.
|
|
13
|
+
*
|
|
14
|
+
* See #89 for what the previous slash-only rule cost.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} cwd
|
|
17
|
+
* @returns {string}
|
|
18
|
+
*/
|
|
19
|
+
export function resolveProjectId(cwd) {
|
|
20
|
+
if (!cwd || typeof cwd !== 'string') return ''
|
|
21
|
+
return cwd.replace(/[^A-Za-z0-9]/g, '-')
|
|
22
|
+
}
|
package/hooks/session-start.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import http from 'node:http'
|
|
|
12
12
|
import fs from 'node:fs'
|
|
13
13
|
import path from 'node:path'
|
|
14
14
|
import os from 'node:os'
|
|
15
|
+
import { resolveProjectId } from './lib/project-id.mjs'
|
|
15
16
|
|
|
16
17
|
const PORT = Number(process.env.CCRECALL_PORT ?? 7749)
|
|
17
18
|
const HOST = '127.0.0.1'
|
|
@@ -114,10 +115,11 @@ function projectNameFromCwd(cwd) {
|
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
// Matches Claude Code's project-directory encoding under ~/.claude/projects/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
// — see hooks/lib/project-id.mjs. Until #89 this claimed to match but only
|
|
119
|
+
// replaced '/', so any cwd with a space, dot, underscore or CJK addressed a
|
|
120
|
+
// project that does not exist. Every hook firing under such a cwd failed
|
|
121
|
+
// silently: no error, no counter, just an empty recall.
|
|
122
|
+
const projectIdFromCwd = resolveProjectId
|
|
121
123
|
|
|
122
124
|
function formatMemories(memories, query) {
|
|
123
125
|
if (memories.length === 0) return ''
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
// both for this event, and the JSON form errors on the first message of a new
|
|
23
23
|
// session (anthropics/claude-code#17550).
|
|
24
24
|
import http from 'node:http'
|
|
25
|
+
import { resolveProjectId } from './lib/project-id.mjs'
|
|
25
26
|
|
|
26
27
|
const PORT = Number(process.env.CCRECALL_PORT ?? 7749)
|
|
27
28
|
const HOST = '127.0.0.1'
|
|
@@ -96,10 +97,11 @@ function httpGet(pathWithQuery) {
|
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
// Matches Claude Code's project-directory encoding under ~/.claude/projects/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
// — see hooks/lib/project-id.mjs. Until #89 this claimed to match but only
|
|
101
|
+
// replaced '/', so any cwd with a space, dot, underscore or CJK addressed a
|
|
102
|
+
// project that does not exist. Every hook firing under such a cwd failed
|
|
103
|
+
// silently: no error, no counter, just an empty recall.
|
|
104
|
+
const projectIdFromCwd = resolveProjectId
|
|
103
105
|
|
|
104
106
|
function formatRecall(memories) {
|
|
105
107
|
if (!Array.isArray(memories) || memories.length === 0) return ''
|
package/package.json
CHANGED
|
@@ -1,29 +1,86 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
3
|
+
// Maintenance script for memory_topics.
|
|
4
|
+
//
|
|
5
|
+
// Two modes:
|
|
6
|
+
// backfill (default) — topics for memories that have none. Phase 3.0
|
|
7
|
+
// prerequisite: Tier 0 cross-project queries need memory_topics.
|
|
8
|
+
// --rebuild — recompute topics for EVERY memory. Required whenever
|
|
9
|
+
// extractTopicsFromContent changes (e.g. #80's Intl.Segmenter switch),
|
|
10
|
+
// because backfill skips any memory that already has rows and therefore
|
|
11
|
+
// leaves stale topics in place.
|
|
5
12
|
//
|
|
6
13
|
// Usage:
|
|
7
14
|
// pnpm tsx scripts/backfill-memory-topics.ts
|
|
15
|
+
// pnpm tsx scripts/backfill-memory-topics.ts --rebuild --dry-run
|
|
16
|
+
// pnpm tsx scripts/backfill-memory-topics.ts --rebuild
|
|
8
17
|
// pnpm tsx scripts/backfill-memory-topics.ts --db <path>
|
|
18
|
+
//
|
|
19
|
+
// After a --rebuild, run rebuildKnowledgeMap for each affected project so the
|
|
20
|
+
// knowledge_map aggregate reflects the new topic keys.
|
|
9
21
|
|
|
10
22
|
import path from 'node:path'
|
|
11
23
|
import os from 'node:os'
|
|
12
24
|
import { Database } from '../src/core/database.js'
|
|
13
25
|
import { extractTopicsFromContent } from '../src/core/topic-extractor.js'
|
|
14
26
|
|
|
15
|
-
const
|
|
16
|
-
|
|
27
|
+
const argv = process.argv
|
|
28
|
+
const dbPath = argv.includes('--db')
|
|
29
|
+
? argv[argv.indexOf('--db') + 1]
|
|
17
30
|
: path.join(os.homedir(), '.ccrecall', 'ccrecall.db')
|
|
31
|
+
const rebuild = argv.includes('--rebuild')
|
|
32
|
+
const dryRun = argv.includes('--dry-run')
|
|
33
|
+
|
|
34
|
+
// backfillMemoryTopics has no dry-run path, so the flag cannot be honoured in
|
|
35
|
+
// default mode. Refuse rather than write while the user believes nothing is
|
|
36
|
+
// being written.
|
|
37
|
+
if (dryRun && !rebuild) {
|
|
38
|
+
console.error('--dry-run is only supported with --rebuild.')
|
|
39
|
+
console.error('Backfill mode has no preview path; re-run with --rebuild --dry-run,')
|
|
40
|
+
console.error('or drop --dry-run to backfill topic-less memories for real.')
|
|
41
|
+
process.exit(1)
|
|
42
|
+
}
|
|
18
43
|
|
|
19
44
|
console.log(`DB: ${dbPath}`)
|
|
45
|
+
console.log(`Mode: ${rebuild ? 'rebuild (all memories)' : 'backfill (topic-less only)'}${dryRun ? ' [dry run]' : ''}`)
|
|
20
46
|
|
|
21
47
|
const db = new Database(dbPath)
|
|
22
48
|
|
|
23
|
-
const orphansRemoved = db.cleanOrphanedMemoryTopics()
|
|
24
|
-
console.log(`Orphaned memory_topics removed: ${orphansRemoved}`)
|
|
49
|
+
const orphansRemoved = dryRun ? 0 : db.cleanOrphanedMemoryTopics()
|
|
50
|
+
if (!dryRun) console.log(`Orphaned memory_topics removed: ${orphansRemoved}`)
|
|
51
|
+
|
|
52
|
+
if (rebuild) {
|
|
53
|
+
const cjkBefore = db.rawAll<{ c: number }>(
|
|
54
|
+
"SELECT COUNT(*) AS c FROM memory_topics WHERE topic_key GLOB '*[一-龥]*'",
|
|
55
|
+
)[0].c
|
|
56
|
+
|
|
57
|
+
const r = db.rebuildMemoryTopics(extractTopicsFromContent, { dryRun })
|
|
58
|
+
|
|
59
|
+
console.log(`Memories scanned : ${r.scanned}`)
|
|
60
|
+
console.log(`Memories with changed topics: ${r.changed}`)
|
|
61
|
+
console.log(`memory_topics rows before : ${r.topicsBefore}`)
|
|
62
|
+
console.log(`memory_topics rows after : ${r.topicsAfter}`)
|
|
63
|
+
console.log(` ...of which CJK before : ${cjkBefore}`)
|
|
25
64
|
|
|
26
|
-
|
|
27
|
-
|
|
65
|
+
if (!dryRun) {
|
|
66
|
+
const cjkAfter = db.rawAll<{ c: number }>(
|
|
67
|
+
"SELECT COUNT(*) AS c FROM memory_topics WHERE topic_key GLOB '*[一-龥]*'",
|
|
68
|
+
)[0].c
|
|
69
|
+
console.log(` ...of which CJK after : ${cjkAfter}`)
|
|
70
|
+
console.log('')
|
|
71
|
+
console.log('Next: rebuild knowledge_map for affected projects.')
|
|
72
|
+
} else {
|
|
73
|
+
console.log('')
|
|
74
|
+
console.log('Dry run — nothing written.')
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
const backfilled = db.backfillMemoryTopics(extractTopicsFromContent)
|
|
78
|
+
console.log(`Memories backfilled with topics: ${backfilled}`)
|
|
79
|
+
if (backfilled === 0) {
|
|
80
|
+
console.log('')
|
|
81
|
+
console.log('0 processed. If the extractor changed, this mode cannot help —')
|
|
82
|
+
console.log('it only sees memories with no topics at all. Use --rebuild.')
|
|
83
|
+
}
|
|
84
|
+
}
|
|
28
85
|
|
|
29
86
|
db.close()
|