dsh-plain-talk 0.1.2 → 0.1.4

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/dsh/rules.js CHANGED
@@ -23,6 +23,7 @@ export const RULES = `# 说人话(回复优化)
23
23
  - 代号、任务号、版本号、提交号、模块名(如 EXP-7、DEV-1K、run-3)第一次出现时写清它是什么:EXP-7(把实例校验加进推理流程的实验编号)。之后可以直接用。
24
24
  - 但用户在本对话里用过的词、项目名、常见术语(arXiv、DOI、API、GPU 等)默认读者已经懂,不要解释,也不要改写成别的说法。
25
25
  - 用户让你"调研 / 研究 / 查一下 X"时,第一遍回复默认读者还不了解 X,先把它讲清楚;这条回复交付之后,X 才进入词汇清单。
26
+ - 内部代号(EXP-7、DEV-1K、run-3 这类)不进入词汇清单:每次出现都按未知处理,第一次出现时解释。
26
27
  - 不出现会话号、子代理、父会话、工具名等内部信息。
27
28
 
28
29
  ## 引用与数字
package/dsh/vocab.js CHANGED
@@ -1,215 +1,229 @@
1
- // The user vocabulary file.
2
- //
3
- // One file for the whole profile, not per Session: "the user already knows this
4
- // word" is a property of the reader, not of one conversation. Sessions only add
5
- // observations; the checker reads the result.
6
- //
7
- // Categories, from broadest to most specific:
8
- // common 常识词汇 — built in, never needs an explanation
9
- // domain 专业词汇 — field terms the user has already met
10
- // project 项目 / 产品名 — repositories, products, workspace names
11
- // internal 内部代号 — experiment ids, task numbers, build codes
12
- // unclassified 待归类 — recorded but not yet classified
13
- //
14
- // Two-phase learning for research requests: when the user says "调研 X", X is
15
- // marked pending for that Session, so the first reply must still explain it;
16
- // the next turn end promotes it into the vocabulary.
17
-
18
- import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs'
19
- import { dirname } from 'node:path'
20
-
21
- export const CATEGORIES = {
22
- common: '常识词汇',
23
- domain: '专业词汇',
24
- project: '项目 / 产品名',
25
- internal: '内部代号',
26
- unclassified: '待归类',
27
- }
28
-
29
- const MAX_TERMS = 2000
30
- const MAX_PENDING_PER_SESSION = 20
31
-
32
- const cjkCount = (s) => (s.match(/[\u4e00-\u9fff]/g) ?? []).length
33
-
34
- /** Classify one learned term from its shape alone. */
35
- export function classify(term, cwdName) {
36
- const text = String(term ?? '').trim()
37
- if (!text) return 'unclassified'
38
- if (cwdName && text === cwdName) return 'project'
39
- if (/^[A-Za-z]{1,10}[-_.]?\d{1,6}$/.test(text)) return 'internal'
40
- if (/^[A-Za-z0-9]+(?:_[A-Za-z0-9]+)+$/.test(text) && (text.match(/[A-Z]/g) ?? []).length >= 2) return 'project'
41
- if (/^[A-Z][A-Za-z0-9]+$/.test(text) && /[A-Z]/.test(text.slice(1))) return 'project'
42
- if (cjkCount(text) >= 2) return 'domain'
43
- if (/^[A-Z]{2,8}$/.test(text)) return 'domain'
44
- return 'unclassified'
45
- }
46
-
47
- export function emptyVocab() {
48
- return { version: 1, updatedAt: new Date(0).toISOString(), terms: {}, pending: {} }
49
- }
50
-
51
- export function loadVocab(file) {
52
- try {
53
- const parsed = JSON.parse(readFileSync(file, 'utf8'))
54
- const terms = {}
55
- const raw = parsed && typeof parsed === 'object' && parsed.terms && typeof parsed.terms === 'object' ? parsed.terms : {}
56
- for (const [key, value] of Object.entries(raw)) {
57
- if (!key || key.length > 80) continue
58
- if (!value || typeof value !== 'object') continue
59
- const category = Object.prototype.hasOwnProperty.call(CATEGORIES, value.category) ? value.category : 'unclassified'
60
- terms[key] = {
61
- category,
62
- firstSeen: typeof value.firstSeen === 'string' ? value.firstSeen : new Date(0).toISOString(),
63
- lastSeen: typeof value.lastSeen === 'string' ? value.lastSeen : new Date(0).toISOString(),
64
- count: Number.isFinite(value.count) ? value.count : 1,
65
- sessions: Array.isArray(value.sessions) ? value.sessions.filter((s) => typeof s === 'string').slice(-5) : [],
66
- source: typeof value.source === 'string' ? value.source : 'user',
67
- }
68
- }
69
- const pending = {}
70
- const rawPending = parsed && typeof parsed === 'object' && parsed.pending && typeof parsed.pending === 'object' ? parsed.pending : {}
71
- for (const [sessionId, list] of Object.entries(rawPending)) {
72
- if (!Array.isArray(list)) continue
73
- pending[sessionId] = list
74
- .filter((item) => item && typeof item.term === 'string' && item.term.length > 0 && item.term.length <= 80)
75
- .slice(-MAX_PENDING_PER_SESSION)
76
- .map((item) => ({ term: item.term, at: typeof item.at === 'string' ? item.at : new Date(0).toISOString() }))
77
- }
78
- return { version: 1, updatedAt: typeof parsed.updatedAt === 'string' ? parsed.updatedAt : new Date(0).toISOString(), terms, pending }
79
- } catch {
80
- return emptyVocab()
81
- }
82
- }
83
-
84
- export function saveVocab(file, vocab) {
85
- const next = { ...vocab, version: 1, updatedAt: new Date().toISOString() }
86
- mkdirSync(dirname(file), { recursive: true })
87
- const tmp = `${file}.${process.pid}.${Date.now()}.tmp`
88
- writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
89
- renameSync(tmp, file)
90
- return next
91
- }
92
-
93
- function evict(vocab) {
94
- const keys = Object.keys(vocab.terms)
95
- if (keys.length <= MAX_TERMS) return
96
- keys
97
- .sort((a, b) => String(vocab.terms[a].lastSeen).localeCompare(String(vocab.terms[b].lastSeen)))
98
- .slice(0, keys.length - MAX_TERMS)
99
- .forEach((key) => delete vocab.terms[key])
100
- }
101
-
102
- /** Record one term as known. Existing terms keep their category. */
103
- export function addTerm(vocab, term, options = {}) {
104
- const key = String(term ?? '').trim()
105
- if (!key || key.length > 80) return vocab
106
- const now = options.now ?? new Date().toISOString()
107
- const session = typeof options.session === 'string' ? options.session : undefined
108
- const existing = vocab.terms[key]
109
- if (existing) {
110
- existing.lastSeen = now
111
- existing.count += 1
112
- if (session && !existing.sessions.includes(session)) existing.sessions = [...existing.sessions.slice(-4), session]
113
- if (options.category && CATEGORIES[options.category]) existing.category = options.category
114
- } else {
115
- vocab.terms[key] = {
116
- category: options.category && CATEGORIES[options.category] ? options.category : classify(key, options.cwdName),
117
- firstSeen: now,
118
- lastSeen: now,
119
- count: 1,
120
- sessions: session ? [session] : [],
121
- source: options.source ?? 'user',
122
- }
123
- }
124
- evict(vocab)
125
- return vocab
126
- }
127
-
128
- export function removeTerm(vocab, term) {
129
- delete vocab.terms[String(term ?? '').trim()]
130
- return vocab
131
- }
132
-
133
- export function setCategory(vocab, term, category) {
134
- const key = String(term ?? '').trim()
135
- if (!vocab.terms[key] || !CATEGORIES[category]) return vocab
136
- vocab.terms[key].category = category
137
- return vocab
138
- }
139
-
140
- /** Mark a research subject as not-yet-known for this Session. */
141
- export function markPending(vocab, sessionId, term, now = new Date().toISOString()) {
142
- const key = String(term ?? '').trim()
143
- if (!sessionId || !key || key.length > 80) return vocab
144
- const list = vocab.pending[sessionId] ?? []
145
- if (!list.some((item) => item.term === key)) list.push({ term: key, at: now })
146
- vocab.pending[sessionId] = list.slice(-MAX_PENDING_PER_SESSION)
147
- return vocab
148
- }
149
-
150
- export function pendingFor(vocab, sessionId) {
151
- return (vocab.pending?.[sessionId] ?? []).map((item) => item.term)
152
- }
153
-
154
- /** Turn end: the reply has been delivered, so the research subject is now known. */
155
- export function promotePending(vocab, sessionId, options = {}) {
156
- const list = vocab.pending?.[sessionId] ?? []
157
- if (list.length === 0) return []
158
- for (const item of list) addTerm(vocab, item.term, { ...options, session: sessionId, category: options.category ?? 'domain', source: 'research' })
159
- delete vocab.pending[sessionId]
160
- return list.map((item) => item.term)
161
- }
162
-
163
- /**
164
- * Terms the checker may treat as known for one Session.
165
- * Pending research subjects are excluded even when the profile learned them
166
- * earlier: the user asked to research them, so the first reply must not assume.
167
- */
168
- export function knownSet(vocab, sessionId) {
169
- const suspended = new Set(pendingFor(vocab, sessionId))
170
- const known = new Set()
171
- for (const key of Object.keys(vocab.terms)) {
172
- if (!suspended.has(key)) known.add(key)
173
- }
174
- return known
175
- }
176
-
177
- export function listByCategory(vocab) {
178
- const groups = {}
179
- for (const key of Object.keys(CATEGORIES)) groups[key] = []
180
- for (const [term, value] of Object.entries(vocab.terms)) {
181
- const category = CATEGORIES[value.category] ? value.category : 'unclassified'
182
- groups[category].push({ term, count: value.count, lastSeen: value.lastSeen })
183
- }
184
- for (const key of Object.keys(groups)) groups[key].sort((a, b) => b.count - a.count || a.term.localeCompare(b.term))
185
- return groups
186
- }
187
-
188
- /** Extract "research X" subjects from one user message. */
189
- export function researchTargets(text) {
190
- const found = []
191
- const input = String(text ?? '')
192
- // A captured phrase may carry a code inside it ("调研 XR-77 这个实验"):
193
- // the code is the subject, not the surrounding words.
194
- const codePattern = /\b[A-Za-z]{1,10}[-_.]?\d{1,6}[A-Za-z]?\b/g
195
- const push = (phrase) => {
196
- const codes = phrase.match(codePattern) ?? []
197
- if (codes.length > 0) {
198
- for (const code of codes) if (code.length >= 2) found.push(code)
199
- return
200
- }
201
- if (phrase.length >= 2) found.push(phrase)
202
- }
203
- const zh = /(?:调研|研究|调查|了解一下|了解下|查一下|查查|梳理一下|分析一下)\s*([^\n。!?;;]{1,40})/g
204
- let m
205
- while ((m = zh.exec(input))) {
206
- const term = m[1].trim().replace(/^(?:一下|下)\s*/, '').replace(/[,,、\s]+$/, '')
207
- push(term)
208
- }
209
- const en = /\b(?:research|investigate|look into|study)\s+([A-Za-z0-9][A-Za-z0-9 ._/-]{1,40})/gi
210
- while ((m = en.exec(input))) {
211
- const term = m[1].trim().replace(/[.,;:\s]+$/, '')
212
- push(term)
213
- }
214
- return [...new Set(found)]
215
- }
1
+ // The user vocabulary file.
2
+ //
3
+ // One file for the whole profile, not per Session: "the user already knows this
4
+ // word" is a property of the reader, not of one conversation. Sessions only add
5
+ // observations; the checker reads the result.
6
+ //
7
+ // Categories, from broadest to most specific:
8
+ // common 常识词汇 — built in, never needs an explanation
9
+ // domain 专业词汇 — field terms the user has already met
10
+ // project 项目 / 产品名 — repositories, products, workspace names
11
+ // unclassified 待归类 — recorded but not yet classified
12
+ //
13
+ // Codes (EXP-7, DEV-1K, run-3, commit hashes) are never stored: the plugin's
14
+ // job is to make the model explain them, so remembering one would hide the
15
+ // next unexplainable use.
16
+ // Two-phase learning for research requests: when the user says "调研 X", X is
17
+ // marked pending for that Session, so the first reply must still explain it;
18
+ // the next turn end promotes it into the vocabulary.
19
+
20
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs'
21
+ import { dirname } from 'node:path'
22
+
23
+ export const CATEGORIES = {
24
+ common: '常识词汇',
25
+ domain: '专业词汇',
26
+ project: '项目 / 产品名',
27
+ unclassified: '待归类',
28
+ }
29
+
30
+ const MAX_TERMS = 2000
31
+ const MAX_PENDING_PER_SESSION = 20
32
+
33
+ const cjkCount = (s) => (s.match(/[\u4e00-\u9fff]/g) ?? []).length
34
+
35
+ // Codes never enter the vocabulary: explaining them is the plugin's job, so
36
+ // remembering one would silence the next warning.
37
+ const CODE_LIKE = /^[A-Za-z]{1,10}[-_.]?\d{1,6}[A-Za-z]?$|^\d{1,4}[A-Za-z]{1,6}$|^[0-9a-f]{7,40}$/i
38
+
39
+ export function isCodeLike(term) {
40
+ return CODE_LIKE.test(String(term ?? '').trim())
41
+ }
42
+
43
+ /** Classify one learned term from its shape alone. */
44
+ export function classify(term, cwdName) {
45
+ const text = String(term ?? '').trim()
46
+ if (!text) return 'unclassified'
47
+ if (isCodeLike(text)) return null
48
+ if (cwdName && text === cwdName) return 'project'
49
+ if (/^[A-Za-z0-9]+(?:_[A-Za-z0-9]+)+$/.test(text) && (text.match(/[A-Z]/g) ?? []).length >= 2) return 'project'
50
+ if (/^[A-Z][A-Za-z0-9]+$/.test(text) && /[A-Z]/.test(text.slice(1))) return 'project'
51
+ if (cjkCount(text) >= 2) return 'domain'
52
+ if (/^[A-Z]{2,8}$/.test(text)) return 'domain'
53
+ return 'unclassified'
54
+ }
55
+
56
+ export function emptyVocab() {
57
+ return { version: 1, updatedAt: new Date(0).toISOString(), terms: {}, pending: {} }
58
+ }
59
+
60
+ export function loadVocab(file) {
61
+ try {
62
+ const parsed = JSON.parse(readFileSync(file, 'utf8'))
63
+ const terms = {}
64
+ const raw = parsed && typeof parsed === 'object' && parsed.terms && typeof parsed.terms === 'object' ? parsed.terms : {}
65
+ for (const [key, value] of Object.entries(raw)) {
66
+ if (!key || key.length > 80) continue
67
+ if (isCodeLike(key)) continue
68
+ if (!value || typeof value !== 'object') continue
69
+ if (value.category === 'internal') continue
70
+ const category = Object.prototype.hasOwnProperty.call(CATEGORIES, value.category) ? value.category : 'unclassified'
71
+ terms[key] = {
72
+ category,
73
+ firstSeen: typeof value.firstSeen === 'string' ? value.firstSeen : new Date(0).toISOString(),
74
+ lastSeen: typeof value.lastSeen === 'string' ? value.lastSeen : new Date(0).toISOString(),
75
+ count: Number.isFinite(value.count) ? value.count : 1,
76
+ sessions: Array.isArray(value.sessions) ? value.sessions.filter((s) => typeof s === 'string').slice(-5) : [],
77
+ source: typeof value.source === 'string' ? value.source : 'user',
78
+ }
79
+ }
80
+ const pending = {}
81
+ const rawPending = parsed && typeof parsed === 'object' && parsed.pending && typeof parsed.pending === 'object' ? parsed.pending : {}
82
+ for (const [sessionId, list] of Object.entries(rawPending)) {
83
+ if (!Array.isArray(list)) continue
84
+ pending[sessionId] = list
85
+ .filter((item) => item && typeof item.term === 'string' && item.term.length > 0 && item.term.length <= 80)
86
+ .slice(-MAX_PENDING_PER_SESSION)
87
+ .map((item) => ({ term: item.term, at: typeof item.at === 'string' ? item.at : new Date(0).toISOString() }))
88
+ }
89
+ return { version: 1, updatedAt: typeof parsed.updatedAt === 'string' ? parsed.updatedAt : new Date(0).toISOString(), terms, pending }
90
+ } catch {
91
+ return emptyVocab()
92
+ }
93
+ }
94
+
95
+ export function saveVocab(file, vocab) {
96
+ const next = { ...vocab, version: 1, updatedAt: new Date().toISOString() }
97
+ mkdirSync(dirname(file), { recursive: true })
98
+ const tmp = `${file}.${process.pid}.${Date.now()}.tmp`
99
+ writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
100
+ renameSync(tmp, file)
101
+ return next
102
+ }
103
+
104
+ function evict(vocab) {
105
+ const keys = Object.keys(vocab.terms)
106
+ if (keys.length <= MAX_TERMS) return
107
+ keys
108
+ .sort((a, b) => String(vocab.terms[a].lastSeen).localeCompare(String(vocab.terms[b].lastSeen)))
109
+ .slice(0, keys.length - MAX_TERMS)
110
+ .forEach((key) => delete vocab.terms[key])
111
+ }
112
+
113
+ /** Record one term as known. Existing terms keep their category. */
114
+ export function addTerm(vocab, term, options = {}) {
115
+ const key = String(term ?? '').trim()
116
+ if (!key || key.length > 80) return vocab
117
+ if (isCodeLike(key)) return vocab
118
+ const category = options.category && CATEGORIES[options.category] ? options.category : classify(key, options.cwdName)
119
+ if (category === null) return vocab
120
+ const now = options.now ?? new Date().toISOString()
121
+ const session = typeof options.session === 'string' ? options.session : undefined
122
+ const existing = vocab.terms[key]
123
+ if (existing) {
124
+ existing.lastSeen = now
125
+ existing.count += 1
126
+ if (session && !existing.sessions.includes(session)) existing.sessions = [...existing.sessions.slice(-4), session]
127
+ if (options.category && CATEGORIES[options.category]) existing.category = options.category
128
+ } else {
129
+ vocab.terms[key] = {
130
+ category,
131
+ firstSeen: now,
132
+ lastSeen: now,
133
+ count: 1,
134
+ sessions: session ? [session] : [],
135
+ source: options.source ?? 'user',
136
+ }
137
+ }
138
+ evict(vocab)
139
+ return vocab
140
+ }
141
+
142
+ export function removeTerm(vocab, term) {
143
+ delete vocab.terms[String(term ?? '').trim()]
144
+ return vocab
145
+ }
146
+
147
+ export function setCategory(vocab, term, category) {
148
+ const key = String(term ?? '').trim()
149
+ if (!vocab.terms[key] || !CATEGORIES[category] || isCodeLike(key)) return vocab
150
+ vocab.terms[key].category = category
151
+ return vocab
152
+ }
153
+
154
+ /** Mark a research subject as not-yet-known for this Session. */
155
+ export function markPending(vocab, sessionId, term, now = new Date().toISOString()) {
156
+ const key = String(term ?? '').trim()
157
+ if (!sessionId || !key || key.length > 80) return vocab
158
+ const list = vocab.pending[sessionId] ?? []
159
+ if (!list.some((item) => item.term === key)) list.push({ term: key, at: now })
160
+ vocab.pending[sessionId] = list.slice(-MAX_PENDING_PER_SESSION)
161
+ return vocab
162
+ }
163
+
164
+ export function pendingFor(vocab, sessionId) {
165
+ return (vocab.pending?.[sessionId] ?? []).map((item) => item.term)
166
+ }
167
+
168
+ /** Turn end: the reply has been delivered, so the research subject is now known. */
169
+ export function promotePending(vocab, sessionId, options = {}) {
170
+ const list = vocab.pending?.[sessionId] ?? []
171
+ if (list.length === 0) return []
172
+ for (const item of list) addTerm(vocab, item.term, { ...options, session: sessionId, category: options.category ?? 'domain', source: 'research' })
173
+ delete vocab.pending[sessionId]
174
+ return list.map((item) => item.term)
175
+ }
176
+
177
+ /**
178
+ * Terms the checker may treat as known for one Session.
179
+ * Pending research subjects are excluded even when the profile learned them
180
+ * earlier: the user asked to research them, so the first reply must not assume.
181
+ */
182
+ export function knownSet(vocab, sessionId) {
183
+ const suspended = new Set(pendingFor(vocab, sessionId))
184
+ const known = new Set()
185
+ for (const key of Object.keys(vocab.terms)) {
186
+ if (!suspended.has(key)) known.add(key)
187
+ }
188
+ return known
189
+ }
190
+
191
+ export function listByCategory(vocab) {
192
+ const groups = {}
193
+ for (const key of Object.keys(CATEGORIES)) groups[key] = []
194
+ for (const [term, value] of Object.entries(vocab.terms)) {
195
+ const category = CATEGORIES[value.category] ? value.category : 'unclassified'
196
+ groups[category].push({ term, count: value.count, lastSeen: value.lastSeen })
197
+ }
198
+ for (const key of Object.keys(groups)) groups[key].sort((a, b) => b.count - a.count || a.term.localeCompare(b.term))
199
+ return groups
200
+ }
201
+
202
+ /** Extract "research X" subjects from one user message. */
203
+ export function researchTargets(text) {
204
+ const found = []
205
+ const input = String(text ?? '')
206
+ // A captured phrase may carry a code inside it ("调研 XR-77 这个实验"):
207
+ // the code is the subject, not the surrounding words.
208
+ const codePattern = /\b[A-Za-z]{1,10}[-_.]?\d{1,6}[A-Za-z]?\b/g
209
+ const push = (phrase) => {
210
+ const codes = phrase.match(codePattern) ?? []
211
+ if (codes.length > 0) {
212
+ for (const code of codes) if (code.length >= 2) found.push(code)
213
+ return
214
+ }
215
+ if (phrase.length >= 2) found.push(phrase)
216
+ }
217
+ const zh = /(?:调研|研究|调查|了解一下|了解下|查一下|查查|梳理一下|分析一下)\s*([^\n。!?;;]{1,40})/g
218
+ let m
219
+ while ((m = zh.exec(input))) {
220
+ const term = m[1].trim().replace(/^(?:一下|下)\s*/, '').replace(/[,,、\s]+$/, '')
221
+ push(term)
222
+ }
223
+ const en = /\b(?:research|investigate|look into|study)\s+([A-Za-z0-9][A-Za-z0-9 ._/-]{1,40})/gi
224
+ while ((m = en.exec(input))) {
225
+ const term = m[1].trim().replace(/[.,;:\s]+$/, '')
226
+ push(term)
227
+ }
228
+ return [...new Set(found)]
229
+ }
package/icon.png CHANGED
Binary file
package/lib/client.js CHANGED
@@ -46,9 +46,8 @@ function writeHostState(sessionId, enabled) {
46
46
  });
47
47
  }
48
48
 
49
- var ICON_ON = 'data:image/png;base64,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';
50
- var ICON_OFF = 'data:image/png;base64,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';
51
-
49
+ var ICON_ON = 'data:image/png;base64,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';
50
+ var ICON_OFF = 'data:image/png;base64,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';
52
51
  function Glyph(props) {
53
52
  return React.createElement('img', {
54
53
  src: props.on ? ICON_ON : ICON_OFF,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plain-talk",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Composer toggle that shapes replies: conclusion first, inline quotes, no cross-turn references",
5
5
  "type": "module",
6
6
  "license": "MIT",