@oatelauser/crosschat 1.5.3 → 1.5.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.
@@ -9,6 +9,8 @@ import { homedir } from 'node:os';
9
9
  import { randomBytes } from 'node:crypto';
10
10
  import { dirname, join } from 'node:path';
11
11
  import { MultichatError } from '../errors.js';
12
+ /** E0:星名字符集(禁冒号——`tcp:<选择器>:` 限定词语法保留字)。 */
13
+ const STAR_NAME_RE = /^[A-Za-z0-9._-]{1,32}$/;
12
14
  /**
13
15
  * B2.1:节点自报名的净化(显示用)——剥控制符、截 32 字符;空则 undefined。
14
16
  * 寻址权威是 machine-id 前缀,名字脏了也不影响路由。
@@ -50,6 +52,7 @@ export function readRegistry(file) {
50
52
  return {
51
53
  port: typeof parsed.port === 'number' ? parsed.port : undefined,
52
54
  starId: typeof parsed.starId === 'string' ? parsed.starId : undefined,
55
+ name: typeof parsed.name === 'string' ? parsed.name : undefined,
53
56
  nodes: parsed.nodes,
54
57
  };
55
58
  }
@@ -98,10 +101,42 @@ export function ensureStarId(file) {
98
101
  writeRegistry(file, registry);
99
102
  return registry.starId;
100
103
  }
104
+ /**
105
+ * E0 星名(显式):校验并持久化(与 --port 同语义——给一次记住)。
106
+ * 坏值 USAGE 带规则说明(禁冒号是限定词语法保留字)。
107
+ */
108
+ export function setName(file, name) {
109
+ if (!STAR_NAME_RE.test(name)) {
110
+ throw new MultichatError('USAGE', `--name 星名须为 1-32 个字母/数字/./_/-(禁冒号——tcp 限定词语法保留字),收到:${name}`);
111
+ }
112
+ const registry = readRegistry(file);
113
+ registry.name = name;
114
+ writeRegistry(file, registry);
115
+ }
116
+ /** E0 星名(缺省清洗):hostname 剥出星名字符集内的字符、截 32;全剥空 → undefined。 */
117
+ export function sanitizeStarName(raw) {
118
+ const cleaned = raw.replace(/[^A-Za-z0-9._-]/g, '').slice(0, 32);
119
+ return cleaned === '' ? undefined : cleaned;
120
+ }
121
+ /**
122
+ * E0 星名(缺省轨道):注册表已有星名直接用;否则取清洗后的 hostname 持久化
123
+ * (首次 serve 落定,与 starId 同款幂等 ensure)。清洗后为空 → 不设名。
124
+ */
125
+ export function ensureStarName(file, fallbackHostname) {
126
+ const registry = readRegistry(file);
127
+ if (registry.name !== undefined)
128
+ return registry.name;
129
+ const name = sanitizeStarName(fallbackHostname);
130
+ if (name === undefined)
131
+ return undefined;
132
+ registry.name = name;
133
+ writeRegistry(file, registry);
134
+ return name;
135
+ }
101
136
  /**
102
137
  * 生成 n 份钥匙并登记进注册表。label 从现有最大 node-N 编号顺延;上限 10
103
- * (超限 USAGE)。nodeJsonContent 为 2 空格缩进完整 node.json(B2 起带
104
- * broker.alias,节点 status 展示"tcp:<别名>"用)。
138
+ * (超限 USAGE)。nodeJsonContent 为 2 空格缩进完整 node.json(E0 词表:
139
+ * 条目 name=星名 broker 权威、顶层 showName=贴配置机器的自报名)。
105
140
  */
106
141
  export function genKeys(file, n, opts) {
107
142
  if (!Number.isInteger(n) || n < 1 || n > 10) {
@@ -119,7 +154,10 @@ export function genKeys(file, n, opts) {
119
154
  results.push({
120
155
  label,
121
156
  key,
122
- nodeJsonContent: `${JSON.stringify({ brokers: [{ host: opts.host, port: opts.port, alias: opts.alias, starId: opts.starId, key }], name: '改成「贴这份配置的机器」的名字' }, null, 2)}\n`,
157
+ nodeJsonContent: `${JSON.stringify({
158
+ brokers: [{ host: opts.host, port: opts.port, ...(opts.name === undefined ? {} : { name: opts.name }), ...(opts.starId === undefined ? {} : { starId: opts.starId }), key }],
159
+ showName: '改成「贴这份配置的机器」的名字',
160
+ }, null, 2)}\n`,
123
161
  });
124
162
  registry.nodes.push({ label, key, addedAt: new Date().toISOString() });
125
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/serve/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/serve/registry.ts"],"names":[],"mappings":"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"}
@@ -5,17 +5,20 @@
5
5
  * 分支同款。文件走 file-begin/chunk/end 分块流(256KiB/块,64MiB 上限)。
6
6
  */
7
7
  import { randomUUID } from 'node:crypto';
8
- import { hostname as osHostname } from 'node:os';
8
+ import { hostname as osHostname, tmpdir as osTmpdir } from 'node:os';
9
9
  import { join } from 'node:path';
10
+ import { rmSync, writeFileSync } from 'node:fs';
11
+ import { Buffer } from 'node:buffer';
10
12
  import { WebSocket } from 'ws';
11
13
  import { MultichatError } from '../errors.js';
12
14
  import { encodeOrigin, originDisplayName } from '../federation.js';
13
15
  import { identityKey, resolveCallerIdentity } from '../identity.js';
14
16
  import { recordConversation } from '../conversations.js';
15
17
  import { decodeRef } from '../ref.js';
18
+ import { CODEX_ENDPOINT_MAX_BODY_BYTES } from '../limits.js';
16
19
  import { encodeFrame, ERR, MAX_PAYLOAD_BYTES, parseFrame, PROTOCOL_VERSION } from './protocol.js';
17
20
  import { defaultBaseDir, tcpDir } from './registry.js';
18
- import { readNodeConfig } from './node.js';
21
+ import { formatBrokerEntry, readNodeConfig } from './node.js';
19
22
  import { FILE_CHUNK_BYTES, FILE_MAX_BYTES, readFileForSend } from './file-channel.js';
20
23
  /** 发起侧记账:与 runViaSend(ssh 腿)同款字段——tcp/ssh 两形态共用此 helper。 */
21
24
  export function makeViaLogger(deps, caller) {
@@ -146,24 +149,24 @@ class SenderConn {
146
149
  }
147
150
  /**
148
151
  * B1 多星条目选择(纯函数,send 与 --file 共用一条 conn,在此一次选定):
149
- * a. `tcp:<选择器>:<目标>`:选择器先按条目 alias 精确匹配,无命中再按
150
- * starId 前缀唯一匹配(多命中教加长,零命中列全部条目);
152
+ * a. `tcp:<选择器>:<目标>`:选择器先按条目星名(name)精确匹配,无命中再按
153
+ * starId 前缀唯一匹配(多命中教加长,零命中列全部条目 cloud(6b76e1) 式);
151
154
  * b. 裸 `tcp:<目标>` 且带 --conversation:按 ref.starId 精确匹配(无匹配教
152
155
  * 核对配置/索取);ref 无 starId 或解不开则落到 c/d(单条目行为不变);
153
156
  * c. 裸且仅 1 条 → 用它(B0 前的今日行为);
154
- * d. 裸且多条 → 教学报错:列出 alias+starId,示例 `--via tcp:<alias>:<目标>`。
157
+ * d. 裸且多条 → 教学报错:列出 星名(starId前缀),示例 `--via tcp:<星名>:<目标>`。
155
158
  */
156
159
  export function selectBrokerEntry(entries, selector, conversation) {
157
- const listEntries = () => entries.map((e) => `${e.alias ?? '(无别名)'}(starId ${e.starId ?? '未登记'})`).join('、');
160
+ const listEntries = () => entries.map(formatBrokerEntry).join('、');
158
161
  if (selector !== undefined) {
159
- const byAlias = entries.find((e) => e.alias === selector);
160
- if (byAlias !== undefined)
161
- return byAlias;
162
+ const byName = entries.find((e) => e.name === selector);
163
+ if (byName !== undefined)
164
+ return byName;
162
165
  const byPrefix = entries.filter((e) => e.starId !== undefined && e.starId.startsWith(selector));
163
166
  if (byPrefix.length === 1)
164
167
  return byPrefix[0];
165
168
  if (byPrefix.length > 1) {
166
- throw new MultichatError('USAGE', `--via 选择器 ${selector} 的 starId 前缀命中多个星(${byPrefix.map((e) => e.alias ?? e.starId).join('、')})——加长前缀使其唯一`);
169
+ throw new MultichatError('USAGE', `--via 选择器 ${selector} 的 starId 前缀命中多个星(${byPrefix.map(formatBrokerEntry).join('、')})——加长前缀使其唯一`);
167
170
  }
168
171
  throw new MultichatError('USAGE', `--via 选择器 ${selector} 不匹配任何条目——本机 node.json 现有:${listEntries()}`);
169
172
  }
@@ -185,17 +188,23 @@ export function selectBrokerEntry(entries, selector, conversation) {
185
188
  }
186
189
  if (entries.length === 1)
187
190
  return entries[0];
188
- throw new MultichatError('USAGE', `本机 node.json 有 ${entries.length} 个 broker 条目,裸 tcp:<目标> 无法选择——现有:${listEntries()};示例:--via tcp:${entries[0].alias ?? entries[0].starId}:<目标>`);
191
+ throw new MultichatError('USAGE', `本机 node.json 有 ${entries.length} 个 broker 条目,裸 tcp:<目标> 无法选择——现有:${listEntries()};示例:--via tcp:${entries[0].name ?? entries[0].starId}:<目标>`);
192
+ }
193
+ /** B1 `tcp:<选择器>:<目标>` 拆解(send 与 status --via tcp: 同一函数族共用)。 */
194
+ export function parseTcpViaSpec(via) {
195
+ const viaRest = via.slice(4);
196
+ const sep = viaRest.indexOf(':');
197
+ return {
198
+ selector: sep > 0 ? viaRest.slice(0, sep) : undefined,
199
+ target: sep > 0 ? viaRest.slice(sep + 1) : viaRest,
200
+ };
189
201
  }
190
202
  /** via 分支入口(send.ts 在 ssh 分流前调用)。body 在 --file 无 --body 时可为 undefined。 */
191
203
  export async function runViaTcpSend(args, body, deps) {
192
- // B1:`tcp:<选择器>:<目标>`——第一个':'前是选择器(alias/starId 前缀),其余是目标
193
- const viaRest = args.via.slice(4);
194
- const sep = viaRest.indexOf(':');
195
- const selector = sep > 0 ? viaRest.slice(0, sep) : undefined;
196
- const target = sep > 0 ? viaRest.slice(sep + 1) : viaRest;
204
+ // B1:`tcp:<选择器>:<目标>`——第一个':'前是选择器(星名/starId 前缀),其余是目标
205
+ const { selector, target } = parseTcpViaSpec(args.via);
197
206
  if (target === '') {
198
- throw new MultichatError('USAGE', '--via tcp:<机器名>:机器名不能为空(broker 机上 crosschat serve --list 可查;多星机可 --via tcp:<别名>:<机器名> 指定)');
207
+ throw new MultichatError('USAGE', '--via tcp:<机器名>:机器名不能为空(broker 机上 crosschat serve --list 可查;多星机可 --via tcp:<星名>:<机器名> 指定)');
199
208
  }
200
209
  const config = readNodeConfig(join(tcpDir(deps.tcpBaseDir ?? defaultBaseDir()), 'node.json'));
201
210
  const timeoutMs = tcpTimeoutMs(deps.env);
@@ -214,16 +223,49 @@ export async function runViaTcpSend(args, body, deps) {
214
223
  const entry = selectBrokerEntry(config.entries, selector, args.conversation);
215
224
  const url = `ws://${entry.host}:${entry.port}`;
216
225
  const conn = await SenderConn.open(url, entry.key, deps.machineId?.(), Math.min(timeoutMs, 15_000));
226
+ // D0 自动降级:正文超 1MiB tcp 预检线不再报 MESSAGE_TOO_LARGE,改落
227
+ // os.tmpdir 唯一临时文件走既有 --file 分块流(≤64MiB 一次成功)。成功删
228
+ // 临时文件并注明对端落地路径;任何失败保留原文、本机路径进教学。显式
229
+ // --file 的行为一个字节不变(降级只在无 --file 时发生)。
230
+ let tmpFile;
217
231
  try {
232
+ if (args.fileArg === undefined && body !== undefined && Buffer.byteLength(body, 'utf8') > CODEX_ENDPOINT_MAX_BODY_BYTES) {
233
+ tmpFile = join(osTmpdir(), `crosschat-msg-${randomUUID().slice(0, 8)}.txt`);
234
+ writeFileSync(tmpFile, body, 'utf8');
235
+ }
218
236
  let finalBody = body;
219
- if (args.fileArg !== undefined) {
220
- const path = await sendFile(conn, args.fileArg, target, timeoutMs, transportFailure);
221
- finalBody = body ?? `文件 ${fileNameOf(args.fileArg)} 已送达:${path}`;
237
+ let landedPath;
238
+ const filePath = args.fileArg ?? tmpFile;
239
+ if (filePath !== undefined) {
240
+ const path = await sendFile(conn, filePath, target, timeoutMs, transportFailure);
241
+ landedPath = path;
242
+ finalBody =
243
+ tmpFile !== undefined
244
+ ? `文件 ${fileNameOf(tmpFile)} 已送达:${path}`
245
+ : body ?? `文件 ${fileNameOf(filePath)} 已送达:${path}`;
222
246
  }
223
247
  if (finalBody === undefined || finalBody === '') {
224
248
  throw new MultichatError('BODY_REQUIRED', 'Message body is required: pass --body "<text>" or pipe the message on stdin.');
225
249
  }
226
- return await sendBody(conn, args, finalBody, origin, target, timeoutMs, deps, caller, logNow, logTo, transportFailure);
250
+ const out = await sendBody(conn, args, finalBody, origin, target, timeoutMs, deps, caller, logNow, logTo, transportFailure);
251
+ if (tmpFile === undefined)
252
+ return out;
253
+ rmSync(tmpFile, { force: true });
254
+ if (args.json === true) {
255
+ try {
256
+ return JSON.stringify({ ...JSON.parse(out), file: landedPath });
257
+ }
258
+ catch {
259
+ return out;
260
+ }
261
+ }
262
+ return `${out}\n正文超限已自动转文件通道:${landedPath}`;
263
+ }
264
+ catch (err) {
265
+ if (tmpFile !== undefined && err instanceof Error) {
266
+ err.message += `\n正文原文已保留: ${tmpFile}`;
267
+ }
268
+ throw err;
227
269
  }
228
270
  finally {
229
271
  conn.close();
@@ -375,4 +417,47 @@ export async function fetchRosterFor(tcpBaseDir, entry, timeoutMs = 2_000) {
375
417
  export function fetchRoster(tcpBaseDir, timeoutMs = 2_000) {
376
418
  return fetchRosterFor(tcpBaseDir, undefined, timeoutMs);
377
419
  }
420
+ /**
421
+ * E1 远程会话枚举发送腿(票012):与 send 同款瞬态 sender 连接——握手 →
422
+ * status-query → 等 status-result/error → 关。超时教学覆盖版本偏差(旧
423
+ * broker 对未知 op 静默无行为 → 请求方在此超时)。
424
+ */
425
+ export async function runViaTcpStatus(via, deps) {
426
+ const { selector, target } = parseTcpViaSpec(via);
427
+ if (target === '') {
428
+ throw new MultichatError('USAGE', '--via tcp:<机器名>:机器名不能为空(broker 机上 crosschat serve --list 可查;多星机可 --via tcp:<星名>:<机器名> 指定)');
429
+ }
430
+ const config = readNodeConfig(join(tcpDir(deps.tcpBaseDir ?? defaultBaseDir()), 'node.json'));
431
+ const timeoutMs = tcpTimeoutMs(deps.env);
432
+ const entry = selectBrokerEntry(config.entries, selector, undefined);
433
+ const conn = await SenderConn.open(`ws://${entry.host}:${entry.port}`, entry.key, deps.machineId?.(), Math.min(timeoutMs, 15_000));
434
+ try {
435
+ const id = randomUUID();
436
+ await conn.send({ op: 'status-query', id, targetMachine: target });
437
+ const frame = await conn.waitFor((f) => (f.op === 'status-result' || f.op === 'error') && f.id === id, timeoutMs);
438
+ if (frame.op === 'error') {
439
+ const { code, message } = frame;
440
+ if (code === ERR.PEER_OFFLINE) {
441
+ throw new MultichatError(code, `[via tcp:${target}] ${message}——对端离线,稍后重试;ssh 形态可 ssh <对端> crosschat status`);
442
+ }
443
+ if (code === ERR.UNKNOWN_MACHINE) {
444
+ throw new MultichatError(code, `[via tcp:${target}] ${message}——核对机器名:在 broker 机跑 crosschat serve --list 查看`);
445
+ }
446
+ throw new MultichatError(code, `[via tcp:${target}] ${message}`);
447
+ }
448
+ const result = frame;
449
+ if (!result.ok || result.payload === undefined) {
450
+ throw new MultichatError('REMOTE_FAILED', `[via tcp:${target}] 对端扫描失败:${result.error ?? '无详情'}`);
451
+ }
452
+ return { target, payload: result.payload };
453
+ }
454
+ catch (err) {
455
+ if (err instanceof MultichatError)
456
+ throw err;
457
+ throw new MultichatError('TCP_TRANSPORT_FAILED', `对端未应答(${err instanceof Error ? err.message : String(err)})——目标机的节点客户端在跑吗(crosschat serve --connect)?两端 crosschat 都需升级到支持 status --via 的版本`);
458
+ }
459
+ finally {
460
+ conn.close();
461
+ }
462
+ }
378
463
  //# sourceMappingURL=via-tcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"via-tcp.js","sourceRoot":"","sources":["../../src/serve/via-tcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"via-tcp.js","sourceRoot":"","sources":["../../src/serve/via-tcp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oatelauser/crosschat",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "type": "module",
5
5
  "description": "Let Claude Code and Codex CLI talk to each other on your machine: native delivery via named pipe and app-server, stateless CLI, no daemon.",
6
6
  "repository": {
@@ -15,7 +15,7 @@ description: 跨会话消息协议。收到 <cross-session-message> 信封、需
15
15
 
16
16
  ```
17
17
  <cross-session-message from-name="alpha" turn="2">
18
- <crosschat-reply-hint conversation="mc1_XXXX" reply-as="beta">回复请运行: crosschat send --conversation mc1_XXXX --body "<你的回复>"</crosschat-reply-hint>
18
+ <crosschat-reply-hint reply-as="beta">回复请运行: crosschat send --conversation mc1_XXXX --body "<你的回复>"</crosschat-reply-hint>
19
19
  ...
20
20
  正文
21
21
  </cross-session-message>
@@ -36,25 +36,32 @@ crosschat send --conversation mc1_XXXX --body "正文"
36
36
 
37
37
  ## 主动发起新消息
38
38
 
39
- 先用 status 查名字,再发送:
39
+ 名字或关键词在手就直接发——`--to` 由 CLI 自己解析(全名精确命中;或大小写不敏感的唯一前缀;多候选会在报错里列名单,挑完整名重发一次即可):
40
+
41
+ ```
42
+ crosschat send --to <名字或前缀> --body "正文"
43
+ ```
44
+
45
+ 实在不知道对端叫什么,才用 status 查名单(可加 `--claude` / `--codex` / `--name <关键词>` 过滤):
40
46
 
41
47
  ```
42
48
  crosschat status
43
- crosschat send --to <名字> --body "正文"
44
49
  ```
45
50
 
46
- - 名字 = claude 会话名或 codex 线程名(status 列出全部可路由对象);未命名 codex 线程可用 id8 或完整 id 寻址(`crosschat status` 里可见)。
51
+ - 名字 = claude 会话名或 codex 线程名(status 列出全部可路由对象);未命名 codex 线程可用 id8 或完整 id 寻址(`crosschat status --all` 里可见——默认视图藏未命名,加 `--all` 带出)。
47
52
  - 查会话往来(双方、最近活跃、轮次、最近投递状态、滞留条数):`crosschat status --conversations`;`queued` / `parked` 的终态也在这里确认。
48
53
  - 长正文或正文含 `$`、反引号、引号等 shell 敏感字符时,省略 `--body` 改用管道(stdin 整段读入,免引号转义):`cat <文件> | crosschat send --to <名字>`。
49
54
  - 投给 codex 的消息:**开窗、关窗、忙时均可投**(daemon 0.160+)。对方正在跑 turn 也不阻塞——消息直接**入队**(输出 `queued`),当前轮结束即进入对话被处理;TUI 窗口会实时刷出。输出 `delivered`(已送达)/ `queued`(已入队,轮末处理)/ `parked`(仅旧 daemon 异常态,已暂存),三者都**无需重发**。`queued` 的消费确认免费搭载在业务流量上——对端的下一条来信带更高 turn 号即证明已消费,无需轮询、无显式回执。
50
55
  - **跨机发送**:`crosschat send --via ssh:<对端hostname> --to <名/id8> --body "…"`——对端是另一台机器上安装了 crosschat 的会话(hostname = `~/.ssh/config` 里的 Host 别名,推荐直接用对端系统 hostname);名字在目标机上解析,回执带 `@<host>` 后缀,错误同码透传(前缀 `[via <host>]`)。
51
- - **tcp 形态同构**:`crosschat send --via tcp:<机器名或mid8> …` 与 ssh 形态用法相同(tcp 网络需该机 `~/.crosschat/tcp/node.json` 在场)——**照抄来信 reply-hint 即回**:tcp 来信的回复命令自带 `--via tcp:<发送方mid8>`,与 `--conversation` 引用一样逐字照抄、只换回复占位符,不截断不改写。
52
- - 跨机的对端**不在本机 status 里**——`ssh <对端> crosschat status` 查它机器上的会话,或由题词直接告知对端名字。
56
+ - **tcp 形态同构**:`crosschat send --via tcp:<机器名或mid8> …` 与 ssh 形态用法相同(tcp 网络需该机 `~/.crosschat/tcp/node.json` 在场)。**回复永远不用管形态**:信封的回复命令不带 `--via`,照抄执行即自动选路——单机/ssh/tcp 两式合一,引用里已带两端机器指纹(tcp 会话另带星标识,按它选本机 node.json 条目)。仅主动发起跨机新消息(`--to`)时才需要手写 `--via`。
57
+ - 跨机的对端**不在本机 status 里**——tcp 星查远机会话用 `crosschat status --via tcp:<机器>`(过滤参数 `--claude`/`--codex`/`--name` 同本地),ssh 形态对端仍用 `ssh <对端> crosschat status`;查到名字再发,**别赌名字发送**。
53
58
  - 跨机对话的轮次纪律更要遵守:防乒乓限流器是单机记账的,**turn 计数是跨机唯一防线**——接近预算即总结收尾。
59
+ - **跨机正文别堆本机细节**(hostname/端口/注册表/配置摘要)——对端会话的数据外发防护可能拦截;被拦就精简为"双方已知信息"重发,别换通道硬闯。
54
60
 
55
61
  ## 报错自纠(读错误码,不要即兴发明命令)
56
62
 
57
- - `MESSAGE_TOO_LARGE`:正文超过当前上限(默认 16KiB)。或用 `--max-body-kb <KiB>` / 环境变量 `CROSSCHAT_MAX_BODY_KIB` 提额(claude 端点硬顶 64KiB、codex 端点 1MiB,到顶只能落盘)。单机:把完整内容**写入一个文件,只发文件路径**(接收方会按需读取,这也是长内容的标准做法)。跨机(`--via ssh:<别名>`):**先 `scp <文件> <别名>:/tmp/` 落到对端**,再 send 发**对端本地**的路径(scp 与 `--via` 共用同一份 ssh 配置);tcp 形态(`--via tcp:`)改用 `--file <路径>` 走文件通道(上限 64MiB,正文只发说明——对端收到的正文自动带文件在对端的落地路径)。
63
+ - `MESSAGE_TOO_LARGE`:大小地图——单机默认 16KiB(`--max-body-kb <KiB>` / 环境变量 `CROSSCHAT_MAX_BODY_KIB` 可提额,端点另有封顶);ssh/tcp 跨机正文 1MiB;tcp 超限**自动转文件通道**(≤64MiB 一次成功,无需改命令);ssh 大内容走 scp 旁路(先 `scp <文件> <别名>:/tmp/`,再发对端本地路径)。
64
+ - 超长处理的场景指引听报错的:报错按你当前通道只给那一条,照做即可——**准确数字以报错为准**(报错才是权威,本文件只给地图)。
58
65
  - `TCP_TRANSPORT_FAILED`(tcp 形态):连不上 broker 或等回执超时——**远端状态不明,勿盲目重发**(可能与首次投递叠加)。先在对端查 send-log 或 `status --conversations` 核实后再决定。
59
66
  - `PEER_OFFLINE`(tcp 形态):对端机器当前不在线——稍后重试;若两端另配了 ssh 也可走 ssh 形态。
60
67
  - 收到"文件 … 已送达"但那个路径不存在:附件超过 5 天被回收——回对端"**附件已过期,请重发 --file**"。