@seandong/seno 0.1.7 → 0.2.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.
Files changed (84) hide show
  1. package/dist/agent/conversation.d.ts +19 -3
  2. package/dist/agent/conversation.js +40 -9
  3. package/dist/agent/conversation.js.map +1 -1
  4. package/dist/agent/loop.d.ts +3 -0
  5. package/dist/agent/loop.js +27 -15
  6. package/dist/agent/loop.js.map +1 -1
  7. package/dist/agent/session.js +1 -7
  8. package/dist/agent/session.js.map +1 -1
  9. package/dist/cli/commands.d.ts +2 -0
  10. package/dist/cli/commands.js +33 -353
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/cli/logger.d.ts +55 -7
  13. package/dist/cli/logger.js +152 -16
  14. package/dist/cli/logger.js.map +1 -1
  15. package/dist/cli/output.d.ts +1 -5
  16. package/dist/cli/output.js +29 -59
  17. package/dist/cli/output.js.map +1 -1
  18. package/dist/cli/prompt.js +7 -5
  19. package/dist/cli/prompt.js.map +1 -1
  20. package/dist/cli/readline-wrapper.d.ts +44 -0
  21. package/dist/cli/readline-wrapper.js +80 -0
  22. package/dist/cli/readline-wrapper.js.map +1 -0
  23. package/dist/cli/repl.js +23 -47
  24. package/dist/cli/repl.js.map +1 -1
  25. package/dist/commands/init.js +8 -2
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/model.js +8 -2
  28. package/dist/commands/model.js.map +1 -1
  29. package/dist/commands/plugin-init.d.ts +24 -0
  30. package/dist/commands/plugin-init.js +313 -0
  31. package/dist/commands/plugin-init.js.map +1 -0
  32. package/dist/commands/server.d.ts +39 -0
  33. package/dist/commands/server.js +102 -0
  34. package/dist/commands/server.js.map +1 -0
  35. package/dist/config/manager.d.ts +14 -0
  36. package/dist/config/manager.js +151 -13
  37. package/dist/config/manager.js.map +1 -1
  38. package/dist/config/types.d.ts +15 -0
  39. package/dist/errors.d.ts +20 -3
  40. package/dist/errors.js +20 -5
  41. package/dist/errors.js.map +1 -1
  42. package/dist/i18n/strings.d.ts +44 -0
  43. package/dist/i18n/strings.js +46 -0
  44. package/dist/i18n/strings.js.map +1 -0
  45. package/dist/index.js +52 -18
  46. package/dist/index.js.map +1 -1
  47. package/dist/llm/anthropic.d.ts +0 -9
  48. package/dist/llm/anthropic.js +9 -62
  49. package/dist/llm/anthropic.js.map +1 -1
  50. package/dist/llm/error-handler.d.ts +28 -0
  51. package/dist/llm/error-handler.js +93 -0
  52. package/dist/llm/error-handler.js.map +1 -0
  53. package/dist/llm/openai-codex.js +15 -61
  54. package/dist/llm/openai-codex.js.map +1 -1
  55. package/dist/llm/openai.js +10 -57
  56. package/dist/llm/openai.js.map +1 -1
  57. package/dist/mcp/bridge.js.map +1 -1
  58. package/dist/mcp/manager.d.ts +4 -2
  59. package/dist/mcp/manager.js +36 -12
  60. package/dist/mcp/manager.js.map +1 -1
  61. package/dist/prompts/system.js +2 -1
  62. package/dist/prompts/system.js.map +1 -1
  63. package/dist/skills/registry.js.map +1 -1
  64. package/dist/skills/sync.js +3 -1
  65. package/dist/skills/sync.js.map +1 -1
  66. package/dist/tools/plugin-init.d.ts +6 -0
  67. package/dist/tools/plugin-init.js +46 -0
  68. package/dist/tools/plugin-init.js.map +1 -0
  69. package/dist/tools/registry.js +11 -2
  70. package/dist/tools/registry.js.map +1 -1
  71. package/dist/tools/server.d.ts +13 -0
  72. package/dist/tools/server.js +151 -0
  73. package/dist/tools/server.js.map +1 -0
  74. package/dist/tools/shell.js +1 -3
  75. package/dist/tools/shell.js.map +1 -1
  76. package/dist/tools/skills-sync.d.ts +6 -0
  77. package/dist/tools/skills-sync.js +39 -0
  78. package/dist/tools/skills-sync.js.map +1 -0
  79. package/dist/tools/ssh.js.map +1 -1
  80. package/dist/utils/retry.js.map +1 -1
  81. package/dist/utils/text.d.ts +45 -0
  82. package/dist/utils/text.js +95 -0
  83. package/dist/utils/text.js.map +1 -0
  84. package/package.json +23 -5
@@ -27,13 +27,29 @@ export declare class Conversation {
27
27
  */
28
28
  getMessages(): Message[];
29
29
  /**
30
- * 截断历史消息,保留最近 keepRecent
31
- * 用于 context length exceeded 时自动恢复
30
+ * 截断历史消息,按轮次边界保留最近 keepRecentTurns 个完整轮次
31
+ * 一个完整轮次 = 纯文本 user 消息 + assistant 消息 + (可选的) tool_result user 消息链
32
+ * 确保 tool_use 和 tool_result 不会被拆开,避免 Anthropic API 400 错误
33
+ *
34
+ * @param keepRecentTurns 保留的最近轮次数(默认 3)
32
35
  * @returns true 表示成功截断,false 表示已无法再截断
33
36
  */
34
- truncate(keepRecent?: number): boolean;
37
+ truncate(keepRecentTurns?: number): boolean;
35
38
  /**
36
39
  * 清空历史
37
40
  */
38
41
  clear(): void;
42
+ /**
43
+ * 查找轮次边界
44
+ * 一个轮次从纯文本 user 消息(非 tool_result)开始,
45
+ * 包含后续的 assistant 消息和可能的 tool_result user 消息链
46
+ *
47
+ * @returns 每个轮次起始消息的索引数组
48
+ */
49
+ private findTurnBoundaries;
50
+ /**
51
+ * 判断消息是否为工具结果消息
52
+ * tool_result 消息的 content 是 ToolResultBlock 数组
53
+ */
54
+ private isToolResultMessage;
39
55
  }
@@ -36,18 +36,21 @@ export class Conversation {
36
36
  return [...this.messages];
37
37
  }
38
38
  /**
39
- * 截断历史消息,保留最近 keepRecent
40
- * 用于 context length exceeded 时自动恢复
39
+ * 截断历史消息,按轮次边界保留最近 keepRecentTurns 个完整轮次
40
+ * 一个完整轮次 = 纯文本 user 消息 + assistant 消息 + (可选的) tool_result user 消息链
41
+ * 确保 tool_use 和 tool_result 不会被拆开,避免 Anthropic API 400 错误
42
+ *
43
+ * @param keepRecentTurns 保留的最近轮次数(默认 3)
41
44
  * @returns true 表示成功截断,false 表示已无法再截断
42
45
  */
43
- truncate(keepRecent = 6) {
44
- if (this.messages.length <= keepRecent)
46
+ truncate(keepRecentTurns = 3) {
47
+ const boundaries = this.findTurnBoundaries();
48
+ // 轮次数不超过 keepRecentTurns,无需截断
49
+ if (boundaries.length <= keepRecentTurns)
45
50
  return false;
46
- this.messages = this.messages.slice(-keepRecent);
47
- // 确保首条消息是 user 角色(Anthropic API 要求)
48
- while (this.messages.length > 0 && this.messages[0].role !== 'user') {
49
- this.messages.shift();
50
- }
51
+ // 从倒数第 keepRecentTurns 个轮次的起始索引处截断
52
+ const cutIndex = boundaries[boundaries.length - keepRecentTurns];
53
+ this.messages = this.messages.slice(cutIndex);
51
54
  return this.messages.length > 0;
52
55
  }
53
56
  /**
@@ -56,5 +59,33 @@ export class Conversation {
56
59
  clear() {
57
60
  this.messages = [];
58
61
  }
62
+ /**
63
+ * 查找轮次边界
64
+ * 一个轮次从纯文本 user 消息(非 tool_result)开始,
65
+ * 包含后续的 assistant 消息和可能的 tool_result user 消息链
66
+ *
67
+ * @returns 每个轮次起始消息的索引数组
68
+ */
69
+ findTurnBoundaries() {
70
+ const boundaries = [];
71
+ for (let i = 0; i < this.messages.length; i++) {
72
+ const msg = this.messages[i];
73
+ if (msg.role === 'user' && !this.isToolResultMessage(msg)) {
74
+ boundaries.push(i);
75
+ }
76
+ }
77
+ return boundaries;
78
+ }
79
+ /**
80
+ * 判断消息是否为工具结果消息
81
+ * tool_result 消息的 content 是 ToolResultBlock 数组
82
+ */
83
+ isToolResultMessage(msg) {
84
+ if (typeof msg.content === 'string')
85
+ return false;
86
+ if (!Array.isArray(msg.content) || msg.content.length === 0)
87
+ return false;
88
+ return msg.content.every((block) => block.type === 'tool_result');
89
+ }
59
90
  }
60
91
  //# sourceMappingURL=conversation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,GAAc,EAAE,CAAC;IAEjC;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAuB;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,OAIE;QAEF,MAAM,gBAAgB,GAAsB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,aAAsB;YAC5B,WAAW,EAAE,CAAC,CAAC,SAAS;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,OAAO;SACpB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,aAAqB,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,UAAU;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;QACjD,oCAAoC;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/agent/conversation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,GAAc,EAAE,CAAC;IAEjC;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAuB;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,OAIE;QAEF,MAAM,gBAAgB,GAAsB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,aAAsB;YAC5B,WAAW,EAAE,CAAC,CAAC,SAAS;YACxB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,QAAQ,EAAE,CAAC,CAAC,OAAO;SACpB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAA0B,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE7C,8BAA8B;QAC9B,IAAI,UAAU,CAAC,MAAM,IAAI,eAAe;YAAE,OAAO,KAAK,CAAC;QAEvD,mCAAmC;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB;QACxB,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,GAAY;QACtC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import type { LLMProvider } from '../llm/provider.js';
2
2
  import type { StreamEvent, ChatOptions } from '../llm/types.js';
3
3
  import type { ToolRegistry } from '../tools/registry.js';
4
+ import type { AgentLoopConfig } from '../config/types.js';
4
5
  import type { SessionState } from './session.js';
5
6
  /**
6
7
  * Agent 核心循环(ReAct 模式)
@@ -14,12 +15,14 @@ export declare class AgentLoop {
14
15
  private baseSystemPrompt;
15
16
  private chatOptions;
16
17
  private session;
18
+ private config;
17
19
  constructor(params: {
18
20
  llmProvider: LLMProvider;
19
21
  toolRegistry: ToolRegistry;
20
22
  systemPrompt?: string;
21
23
  chatOptions?: ChatOptions;
22
24
  session?: SessionState;
25
+ agentConfig?: AgentLoopConfig;
23
26
  });
24
27
  /**
25
28
  * 动态构建 system prompt
@@ -1,7 +1,14 @@
1
1
  import { Conversation } from './conversation.js';
2
2
  import { logger } from '../cli/logger.js';
3
3
  import { LLMError } from '../errors.js';
4
- const MAX_ITERATIONS = 20;
4
+ import { STRINGS } from '../i18n/strings.js';
5
+ /** Agent Loop 参数默认值 */
6
+ const DEFAULTS = {
7
+ maxIterations: 20,
8
+ maxToolResultDisplay: 500,
9
+ maxToolResultStore: 10000,
10
+ truncateKeepRecentTurns: 3,
11
+ };
5
12
  /**
6
13
  * Agent 核心循环(ReAct 模式)
7
14
  *
@@ -14,6 +21,7 @@ export class AgentLoop {
14
21
  baseSystemPrompt;
15
22
  chatOptions;
16
23
  session;
24
+ config;
17
25
  constructor(params) {
18
26
  this.conversation = new Conversation();
19
27
  this.toolRegistry = params.toolRegistry;
@@ -21,6 +29,7 @@ export class AgentLoop {
21
29
  this.baseSystemPrompt = params.systemPrompt || '';
22
30
  this.chatOptions = params.chatOptions || {};
23
31
  this.session = params.session || null;
32
+ this.config = { ...DEFAULTS, ...params.agentConfig };
24
33
  }
25
34
  /**
26
35
  * 动态构建 system prompt
@@ -53,7 +62,7 @@ export class AgentLoop {
53
62
  this.session?.incrementTurn();
54
63
  this.session?.checkUserInput(userInput);
55
64
  this.conversation.addUserMessage(userInput);
56
- for (let iteration = 0; iteration < MAX_ITERATIONS; iteration++) {
65
+ for (let iteration = 0; iteration < this.config.maxIterations; iteration++) {
57
66
  // 通知 REPL:新一轮 LLM 调用开始
58
67
  yield { type: 'turn_start' };
59
68
  // 累积文本和工具调用,用于重建助手消息
@@ -96,18 +105,22 @@ export class AgentLoop {
96
105
  break;
97
106
  case 'error': {
98
107
  // Context length exceeded → 截断历史并重试
99
- if (event.error instanceof LLMError &&
100
- event.error.statusCode === 400 &&
101
- (event.error.message.includes('context') ||
102
- event.error.message.includes('too long') ||
103
- event.error.message.includes('max tokens') ||
104
- event.error.message.includes('too many'))) {
105
- const truncated = this.conversation.truncate();
108
+ // 优先使用结构化错误码判断;字符串匹配作为 UNKNOWN 错误码的 fallback
109
+ const isContextLengthExceeded = event.error instanceof LLMError &&
110
+ (event.error.llmErrorCode === 'CONTEXT_LENGTH_EXCEEDED' ||
111
+ (event.error.llmErrorCode === 'UNKNOWN' &&
112
+ event.error.statusCode === 400 &&
113
+ (event.error.message.includes('context') ||
114
+ event.error.message.includes('too long') ||
115
+ event.error.message.includes('max tokens') ||
116
+ event.error.message.includes('too many'))));
117
+ if (isContextLengthExceeded) {
118
+ const truncated = this.conversation.truncate(this.config.truncateKeepRecentTurns);
106
119
  if (truncated) {
107
120
  logger.debug('agent', 'Context length exceeded, truncated conversation history, retrying...');
108
121
  yield {
109
122
  type: 'text_delta',
110
- text: '\n[对话历史过长,已自动截断,正在重试...]\n',
123
+ text: STRINGS.agent.contextTruncated,
111
124
  };
112
125
  shouldRetryWithTruncation = true;
113
126
  break;
@@ -160,7 +173,7 @@ export class AgentLoop {
160
173
  catch {
161
174
  toolResults.push({
162
175
  toolUseId: call.id,
163
- content: `工具参数解析失败: ${call.inputJson}`,
176
+ content: STRINGS.agent.toolArgsParseFailed(call.inputJson),
164
177
  isError: true,
165
178
  });
166
179
  continue;
@@ -172,9 +185,8 @@ export class AgentLoop {
172
185
  logger.debug('tool', `${call.name} completed in ${toolDuration}ms`);
173
186
  // 观察工具执行结果,更新会话状态
174
187
  this.session?.observe(call.name, args, result);
175
- const maxResultLen = 500;
176
- const resultSummary = result.content.length > maxResultLen
177
- ? result.content.slice(0, maxResultLen) + '…'
188
+ const resultSummary = result.content.length > this.config.maxToolResultDisplay
189
+ ? result.content.slice(0, this.config.maxToolResultDisplay) + '…'
178
190
  : result.content;
179
191
  yield {
180
192
  type: 'tool_execute_end',
@@ -195,7 +207,7 @@ export class AgentLoop {
195
207
  // 达到最大循环次数
196
208
  yield {
197
209
  type: 'text_delta',
198
- text: '\n[已达到最大工具调用轮次,停止处理]',
210
+ text: STRINGS.agent.maxIterationsReached,
199
211
  };
200
212
  yield { type: 'message_end', stop_reason: 'end_turn' };
201
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -37,13 +37,7 @@ export class SessionState {
37
37
  this.lastActivity = new Date();
38
38
  }
39
39
  /** SSH 相关关键词,匹配到任一即注入服务器列表 */
40
- static SSH_KEYWORDS = [
41
- '连接',
42
- '服务器',
43
- 'ssh',
44
- '远程',
45
- '登录',
46
- ];
40
+ static SSH_KEYWORDS = ['连接', '服务器', 'ssh', '远程', '登录'];
47
41
  /**
48
42
  * 检查用户输入是否涉及 SSH 操作
49
43
  * 匹配服务器名称或 SSH 关键词时,注入服务器列表到 system prompt
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,8 @@ export interface CommandContext {
43
43
  }
44
44
  /**
45
45
  * 判断输入是否为斜杠命令
46
+ * 仅当 "/" 后的第一个词匹配已知命令名时才返回 true,
47
+ * 避免将文件路径(如 /tmp/...)误判为斜杠命令。
46
48
  */
47
49
  export declare function isSlashCommand(input: string): boolean;
48
50
  /**