@zaofan/dsh-qqbot 1.7.2 → 1.7.3
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/client/qqbot-settings.js +12 -5
- package/client/qqbot-settings.js.bak-diaglog +5866 -0
- package/dist/channel-tools.d.ts.map +1 -1
- package/dist/channel-tools.js +4 -16
- package/dist/channel-tools.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/features/contextless-store.d.ts.map +1 -1
- package/dist/features/contextless-store.js +6 -45
- package/dist/features/contextless-store.js.map +1 -1
- package/dist/features/qq-approval.d.ts.map +1 -1
- package/dist/features/qq-approval.js +2 -6
- package/dist/features/qq-approval.js.map +1 -1
- package/dist/gateway/bootstrap.d.ts.map +1 -1
- package/dist/gateway/bootstrap.js +9 -3
- package/dist/gateway/bootstrap.js.map +1 -1
- package/dist/session/workspace-attach.d.ts.map +1 -1
- package/dist/session/workspace-attach.js +2 -8
- package/dist/session/workspace-attach.js.map +1 -1
- package/dist/shared/diag.d.ts +43 -0
- package/dist/shared/diag.d.ts.map +1 -0
- package/dist/shared/diag.js +175 -0
- package/dist/shared/diag.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-attach.js","sourceRoot":"","sources":["../../src/session/workspace-attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"workspace-attach.js","sourceRoot":"","sources":["../../src/session/workspace-attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置诊断日志。**每次插件启动(每个实例)调用一次即可**。
|
|
3
|
+
*
|
|
4
|
+
* @param opts.enabled - 总开关;不传 = 保持当前值(默认 false)
|
|
5
|
+
* @param opts.maxBytes - 单文件上限字节数(默认 2 MB)
|
|
6
|
+
* @param opts.home - 输出根目录(默认 `DSH_HOME` 或 `~/.dsh`)
|
|
7
|
+
*/
|
|
8
|
+
export declare function configureDiag(opts: {
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
maxBytes?: number;
|
|
11
|
+
home?: string;
|
|
12
|
+
}): void;
|
|
13
|
+
/** 诊断日志现在是开着的吗? */
|
|
14
|
+
export declare function diagEnabled(): boolean;
|
|
15
|
+
/** 某个诊断文件的绝对路径(**不看开关**,面板展示用) */
|
|
16
|
+
export declare function diagPathFor(name: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* 写一行诊断日志(**全插件唯一入口**)。
|
|
19
|
+
*
|
|
20
|
+
* - 开关关着 ⇒ 立刻返回,**零 I/O**。
|
|
21
|
+
* - 写失败(磁盘满/被占用)⇒ 静默吞掉,**绝不抛**。
|
|
22
|
+
*
|
|
23
|
+
* @param name - 日志名(不含 `.log`),如 `qqbot-ext-diag` / `botplay-diag`
|
|
24
|
+
* @param line - 内容(会自动补时间戳与换行)
|
|
25
|
+
*/
|
|
26
|
+
export declare function diagWrite(name: string, line: string): void;
|
|
27
|
+
/** 诊断状态(面板/端点展示:开关、上限、各文件当前大小) */
|
|
28
|
+
export declare function diagStatus(): {
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
maxBytes: number;
|
|
31
|
+
root: string;
|
|
32
|
+
files: Array<{
|
|
33
|
+
name: string;
|
|
34
|
+
path: string;
|
|
35
|
+
bytes: number;
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 给「排查完就删」的调用方一条清理捷径(只删我们自己的诊断日志)。
|
|
40
|
+
* @param names - 要删的日志名(不含 `.log`);不传 = 删 sizes 里已知的全部
|
|
41
|
+
*/
|
|
42
|
+
export declare function diagClean(names?: string[]): number;
|
|
43
|
+
//# sourceMappingURL=diag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diag.d.ts","sourceRoot":"","sources":["../../src/shared/diag.ts"],"names":[],"mappings":"AA0DA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUjG;AAED,mBAAmB;AACnB,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,kCAAkC;AAClC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAW1D;AAED,kCAAkC;AAClC,wBAAgB,UAAU,IAAI;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D,CAOA;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAYlD"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* diag.ts — 诊断日志的**唯一底座**(2026-10-06,还债)
|
|
3
|
+
*
|
|
4
|
+
* ── 为什么要收口 ──────────────────────────────────────────────────
|
|
5
|
+
* 以前每个功能都自己写一份诊断日志,于是:
|
|
6
|
+
* · `contextless-trace.log` **没有任何上限**,一路涨到 **25 MB**;
|
|
7
|
+
* · 同一条 trace 被写到**三个地方**(`~/.dsh/`、系统 tmp、数据根);
|
|
8
|
+
* · 还有**两处代码写同一个文件**(`contextless-store.ts` 与 `channel-tools.ts`);
|
|
9
|
+
* · 有些每行还往终端 `console.error` —— 控制台刷屏。
|
|
10
|
+
*
|
|
11
|
+
* ⇒ 本模块把「**开关 / 上限 / 位置 / 轮转**」四件事收成一处,所有诊断日志都必须走它:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* diagWrite('qqbot-ext-diag', line); // 默认不写;开了才写;超 2MB 自动轮转
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* ── 保证 ────────────────────────────────────────────────────────
|
|
18
|
+
* 1. **默认关**(用户机器上零开销、零垃圾);由配置项 `diagLog` 或环境变量
|
|
19
|
+
* `DSH_QQBOT_DIAG=1` 打开。
|
|
20
|
+
* 2. **单文件上限**(默认 2 MB)+ **轮转 1 份**(`xxx.log` → `xxx.log.1`),**只进不出成为历史**。
|
|
21
|
+
* 3. **只写一个位置**:`{DSH_HOME|~/.dsh}/<name>.log`,不再往 tmp / 数据根各撒一份。
|
|
22
|
+
* 4. **绝不影响主链**:任何写失败都静默吞掉(诊断日志不该拖垮业务)。
|
|
23
|
+
* 5. **尺寸用内存计数**,不每次 `statSync`(只有首次取基线)。
|
|
24
|
+
*/
|
|
25
|
+
import { appendFileSync, existsSync, mkdirSync, renameSync, rmSync, statSync } from 'node:fs';
|
|
26
|
+
import { homedir } from 'node:os';
|
|
27
|
+
import { dirname, join } from 'node:path';
|
|
28
|
+
const DEFAULT_MAX_BYTES = 2 * 1024 * 1024; // 2 MB
|
|
29
|
+
const state = {
|
|
30
|
+
enabled: false,
|
|
31
|
+
maxBytes: DEFAULT_MAX_BYTES,
|
|
32
|
+
root: resolveRoot(),
|
|
33
|
+
};
|
|
34
|
+
/** 各文件当前已知大小(避免每次写都 statSync) */
|
|
35
|
+
const sizes = new Map();
|
|
36
|
+
function resolveRoot() {
|
|
37
|
+
try {
|
|
38
|
+
const env = (process.env.DSH_HOME ?? '').trim();
|
|
39
|
+
if (env)
|
|
40
|
+
return env;
|
|
41
|
+
return join(homedir(), '.dsh');
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return '.';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 配置诊断日志。**每次插件启动(每个实例)调用一次即可**。
|
|
49
|
+
*
|
|
50
|
+
* @param opts.enabled - 总开关;不传 = 保持当前值(默认 false)
|
|
51
|
+
* @param opts.maxBytes - 单文件上限字节数(默认 2 MB)
|
|
52
|
+
* @param opts.home - 输出根目录(默认 `DSH_HOME` 或 `~/.dsh`)
|
|
53
|
+
*/
|
|
54
|
+
export function configureDiag(opts) {
|
|
55
|
+
try {
|
|
56
|
+
if (opts.home)
|
|
57
|
+
state.root = opts.home;
|
|
58
|
+
else if (!state.root)
|
|
59
|
+
state.root = resolveRoot();
|
|
60
|
+
if (typeof opts.maxBytes === 'number' && opts.maxBytes > 0)
|
|
61
|
+
state.maxBytes = Math.floor(opts.maxBytes);
|
|
62
|
+
if (typeof opts.enabled === 'boolean')
|
|
63
|
+
state.enabled = opts.enabled;
|
|
64
|
+
// 环境变量优先(排查时不想改配置就 `set DSH_QQBOT_DIAG=1` 重启)
|
|
65
|
+
const env = (process.env.DSH_QQBOT_DIAG ?? '').trim();
|
|
66
|
+
if (env === '1' || env.toLowerCase() === 'true')
|
|
67
|
+
state.enabled = true;
|
|
68
|
+
}
|
|
69
|
+
catch { /* 配置失败保持默认(关) */ }
|
|
70
|
+
}
|
|
71
|
+
/** 诊断日志现在是开着的吗? */
|
|
72
|
+
export function diagEnabled() {
|
|
73
|
+
return state.enabled === true;
|
|
74
|
+
}
|
|
75
|
+
/** 某个诊断文件的绝对路径(**不看开关**,面板展示用) */
|
|
76
|
+
export function diagPathFor(name) {
|
|
77
|
+
return join(state.root, `${safeName(name)}.log`);
|
|
78
|
+
}
|
|
79
|
+
/** 文件名消毒:只允许字母/数字/`._-`,防路径逃逸 */
|
|
80
|
+
function safeName(name) {
|
|
81
|
+
const n = String(name ?? '').trim();
|
|
82
|
+
if (!n || !/^[A-Za-z0-9._-]+$/.test(n))
|
|
83
|
+
return 'qqbot-diag';
|
|
84
|
+
return n;
|
|
85
|
+
}
|
|
86
|
+
/** 首次写时取一次基线大小(之后靠内存计数) */
|
|
87
|
+
function knownSize(file) {
|
|
88
|
+
const hit = sizes.get(file);
|
|
89
|
+
if (hit !== undefined)
|
|
90
|
+
return hit;
|
|
91
|
+
let n = 0;
|
|
92
|
+
try {
|
|
93
|
+
n = existsSync(file) ? statSync(file).size : 0;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
n = 0;
|
|
97
|
+
}
|
|
98
|
+
sizes.set(file, n);
|
|
99
|
+
return n;
|
|
100
|
+
}
|
|
101
|
+
/** 超上限就轮转:`xxx.log` → `xxx.log.1`(只留 1 份旧档) */
|
|
102
|
+
function rotateIfNeeded(file, incoming) {
|
|
103
|
+
try {
|
|
104
|
+
if (knownSize(file) + incoming <= state.maxBytes)
|
|
105
|
+
return;
|
|
106
|
+
const bak = `${file}.1`;
|
|
107
|
+
try {
|
|
108
|
+
rmSync(bak, { force: true });
|
|
109
|
+
}
|
|
110
|
+
catch { /* ignore */ }
|
|
111
|
+
try {
|
|
112
|
+
renameSync(file, bak);
|
|
113
|
+
}
|
|
114
|
+
catch { /* 文件可能不存在/被占,忽略 */ }
|
|
115
|
+
sizes.set(file, 0);
|
|
116
|
+
}
|
|
117
|
+
catch { /* ignore */ }
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 写一行诊断日志(**全插件唯一入口**)。
|
|
121
|
+
*
|
|
122
|
+
* - 开关关着 ⇒ 立刻返回,**零 I/O**。
|
|
123
|
+
* - 写失败(磁盘满/被占用)⇒ 静默吞掉,**绝不抛**。
|
|
124
|
+
*
|
|
125
|
+
* @param name - 日志名(不含 `.log`),如 `qqbot-ext-diag` / `botplay-diag`
|
|
126
|
+
* @param line - 内容(会自动补时间戳与换行)
|
|
127
|
+
*/
|
|
128
|
+
export function diagWrite(name, line) {
|
|
129
|
+
if (!state.enabled)
|
|
130
|
+
return;
|
|
131
|
+
try {
|
|
132
|
+
const file = diagPathFor(name);
|
|
133
|
+
const row = `${new Date().toISOString()} ${String(line ?? '')}\n`;
|
|
134
|
+
const bytes = Buffer.byteLength(row, 'utf8');
|
|
135
|
+
try {
|
|
136
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
137
|
+
}
|
|
138
|
+
catch { /* ignore */ }
|
|
139
|
+
rotateIfNeeded(file, bytes);
|
|
140
|
+
appendFileSync(file, row, 'utf8');
|
|
141
|
+
sizes.set(file, knownSize(file) + bytes);
|
|
142
|
+
}
|
|
143
|
+
catch { /* 诊断日志失败绝不影响主链 */ }
|
|
144
|
+
}
|
|
145
|
+
/** 诊断状态(面板/端点展示:开关、上限、各文件当前大小) */
|
|
146
|
+
export function diagStatus() {
|
|
147
|
+
const files = [...sizes.entries()].map(([path, bytes]) => ({
|
|
148
|
+
name: path.split(/[\\/]/).pop() ?? path,
|
|
149
|
+
path,
|
|
150
|
+
bytes,
|
|
151
|
+
}));
|
|
152
|
+
return { enabled: state.enabled, maxBytes: state.maxBytes, root: state.root, files };
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 给「排查完就删」的调用方一条清理捷径(只删我们自己的诊断日志)。
|
|
156
|
+
* @param names - 要删的日志名(不含 `.log`);不传 = 删 sizes 里已知的全部
|
|
157
|
+
*/
|
|
158
|
+
export function diagClean(names) {
|
|
159
|
+
let removed = 0;
|
|
160
|
+
const targets = names && names.length ? names.map((n) => diagPathFor(n)) : [...sizes.keys()];
|
|
161
|
+
for (const file of targets) {
|
|
162
|
+
try {
|
|
163
|
+
for (const p of [file, `${file}.1`]) {
|
|
164
|
+
if (existsSync(p)) {
|
|
165
|
+
rmSync(p, { force: true });
|
|
166
|
+
removed += 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
sizes.set(file, 0);
|
|
170
|
+
}
|
|
171
|
+
catch { /* ignore */ }
|
|
172
|
+
}
|
|
173
|
+
return removed;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=diag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diag.js","sourceRoot":"","sources":["../../src/shared/diag.ts"],"names":[],"mappings":"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"}
|