@zhin.js/agent 0.1.15 → 0.1.17

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 (205) hide show
  1. package/README.md +80 -43
  2. package/lib/builtin/activate-skill-tool.d.ts +21 -0
  3. package/lib/builtin/activate-skill-tool.d.ts.map +1 -0
  4. package/lib/builtin/activate-skill-tool.js +57 -0
  5. package/lib/builtin/activate-skill-tool.js.map +1 -0
  6. package/lib/builtin/ask-user-tool.d.ts +28 -0
  7. package/lib/builtin/ask-user-tool.d.ts.map +1 -0
  8. package/lib/builtin/ask-user-tool.js +182 -0
  9. package/lib/builtin/ask-user-tool.js.map +1 -0
  10. package/lib/builtin/bash-tool.d.ts +23 -0
  11. package/lib/builtin/bash-tool.d.ts.map +1 -0
  12. package/lib/builtin/bash-tool.js +64 -0
  13. package/lib/builtin/bash-tool.js.map +1 -0
  14. package/lib/builtin/bing-search-html.d.ts +37 -0
  15. package/lib/builtin/bing-search-html.d.ts.map +1 -0
  16. package/lib/builtin/bing-search-html.js +116 -0
  17. package/lib/builtin/bing-search-html.js.map +1 -0
  18. package/lib/builtin/builtin-base-tool.d.ts +25 -0
  19. package/lib/builtin/builtin-base-tool.d.ts.map +1 -0
  20. package/lib/builtin/builtin-base-tool.js +30 -0
  21. package/lib/builtin/builtin-base-tool.js.map +1 -0
  22. package/lib/builtin/edit-file-tool.d.ts +13 -0
  23. package/lib/builtin/edit-file-tool.d.ts.map +1 -0
  24. package/lib/builtin/edit-file-tool.js +87 -0
  25. package/lib/builtin/edit-file-tool.js.map +1 -0
  26. package/lib/builtin/file-edit-quote-utils.d.ts +24 -0
  27. package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -0
  28. package/lib/builtin/file-edit-quote-utils.js +81 -0
  29. package/lib/builtin/file-edit-quote-utils.js.map +1 -0
  30. package/lib/builtin/glob-tool.d.ts +23 -0
  31. package/lib/builtin/glob-tool.d.ts.map +1 -0
  32. package/lib/builtin/glob-tool.js +54 -0
  33. package/lib/builtin/glob-tool.js.map +1 -0
  34. package/lib/builtin/grep-tool.d.ts +23 -0
  35. package/lib/builtin/grep-tool.d.ts.map +1 -0
  36. package/lib/builtin/grep-tool.js +118 -0
  37. package/lib/builtin/grep-tool.js.map +1 -0
  38. package/lib/builtin/install-skill-tool.d.ts +24 -0
  39. package/lib/builtin/install-skill-tool.d.ts.map +1 -0
  40. package/lib/builtin/install-skill-tool.js +76 -0
  41. package/lib/builtin/install-skill-tool.js.map +1 -0
  42. package/lib/builtin/list-dir-tool.d.ts +13 -0
  43. package/lib/builtin/list-dir-tool.d.ts.map +1 -0
  44. package/lib/builtin/list-dir-tool.js +59 -0
  45. package/lib/builtin/list-dir-tool.js.map +1 -0
  46. package/lib/builtin/read-file-tool.d.ts +14 -0
  47. package/lib/builtin/read-file-tool.d.ts.map +1 -0
  48. package/lib/builtin/read-file-tool.js +77 -0
  49. package/lib/builtin/read-file-tool.js.map +1 -0
  50. package/lib/builtin/read-memory-tool.d.ts +14 -0
  51. package/lib/builtin/read-memory-tool.d.ts.map +1 -0
  52. package/lib/builtin/read-memory-tool.js +49 -0
  53. package/lib/builtin/read-memory-tool.js.map +1 -0
  54. package/lib/builtin/spawn-task-tool.d.ts +20 -0
  55. package/lib/builtin/spawn-task-tool.d.ts.map +1 -0
  56. package/lib/builtin/spawn-task-tool.js +57 -0
  57. package/lib/builtin/spawn-task-tool.js.map +1 -0
  58. package/lib/builtin/todo-read-tool.d.ts +14 -0
  59. package/lib/builtin/todo-read-tool.d.ts.map +1 -0
  60. package/lib/builtin/todo-read-tool.js +56 -0
  61. package/lib/builtin/todo-read-tool.js.map +1 -0
  62. package/lib/builtin/todo-write-tool.d.ts +14 -0
  63. package/lib/builtin/todo-write-tool.d.ts.map +1 -0
  64. package/lib/builtin/todo-write-tool.js +54 -0
  65. package/lib/builtin/todo-write-tool.js.map +1 -0
  66. package/lib/builtin/web-fetch-tool.d.ts +19 -0
  67. package/lib/builtin/web-fetch-tool.d.ts.map +1 -0
  68. package/lib/builtin/web-fetch-tool.js +89 -0
  69. package/lib/builtin/web-fetch-tool.js.map +1 -0
  70. package/lib/builtin/web-search-locale.d.ts +16 -0
  71. package/lib/builtin/web-search-locale.d.ts.map +1 -0
  72. package/lib/builtin/web-search-locale.js +73 -0
  73. package/lib/builtin/web-search-locale.js.map +1 -0
  74. package/lib/builtin/web-search-tool.d.ts +20 -0
  75. package/lib/builtin/web-search-tool.d.ts.map +1 -0
  76. package/lib/builtin/web-search-tool.js +105 -0
  77. package/lib/builtin/web-search-tool.js.map +1 -0
  78. package/lib/builtin/web-tool-utils.d.ts +4 -0
  79. package/lib/builtin/web-tool-utils.d.ts.map +1 -0
  80. package/lib/builtin/web-tool-utils.js +4 -0
  81. package/lib/builtin/web-tool-utils.js.map +1 -0
  82. package/lib/builtin/write-file-tool.d.ts +13 -0
  83. package/lib/builtin/write-file-tool.d.ts.map +1 -0
  84. package/lib/builtin/write-file-tool.js +57 -0
  85. package/lib/builtin/write-file-tool.js.map +1 -0
  86. package/lib/builtin/write-memory-tool.d.ts +14 -0
  87. package/lib/builtin/write-memory-tool.d.ts.map +1 -0
  88. package/lib/builtin/write-memory-tool.js +50 -0
  89. package/lib/builtin/write-memory-tool.js.map +1 -0
  90. package/lib/builtin-tools.d.ts +10 -11
  91. package/lib/builtin-tools.d.ts.map +1 -1
  92. package/lib/builtin-tools.js +44 -862
  93. package/lib/builtin-tools.js.map +1 -1
  94. package/lib/defaults/tools.d.ts +3 -6
  95. package/lib/defaults/tools.d.ts.map +1 -1
  96. package/lib/defaults/tools.js +3 -11
  97. package/lib/defaults/tools.js.map +1 -1
  98. package/lib/index.d.ts +28 -4
  99. package/lib/index.d.ts.map +1 -1
  100. package/lib/index.js +25 -3
  101. package/lib/index.js.map +1 -1
  102. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  103. package/lib/init/create-zhin-agent.js +4 -3
  104. package/lib/init/create-zhin-agent.js.map +1 -1
  105. package/lib/init/message-media.d.ts +8 -0
  106. package/lib/init/message-media.d.ts.map +1 -0
  107. package/lib/init/message-media.js +75 -0
  108. package/lib/init/message-media.js.map +1 -0
  109. package/lib/init/output-renderer.d.ts +3 -0
  110. package/lib/init/output-renderer.d.ts.map +1 -0
  111. package/lib/init/output-renderer.js +38 -0
  112. package/lib/init/output-renderer.js.map +1 -0
  113. package/lib/init/register-ai-trigger.d.ts +1 -1
  114. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  115. package/lib/init/register-ai-trigger.js +35 -159
  116. package/lib/init/register-ai-trigger.js.map +1 -1
  117. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  118. package/lib/init/register-builtin-tools.js +9 -5
  119. package/lib/init/register-builtin-tools.js.map +1 -1
  120. package/lib/orchestrator/index.d.ts +2 -0
  121. package/lib/orchestrator/index.d.ts.map +1 -1
  122. package/lib/orchestrator/index.js +1 -0
  123. package/lib/orchestrator/index.js.map +1 -1
  124. package/lib/orchestrator/owner-confirm-orchestration.d.ts +26 -0
  125. package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -0
  126. package/lib/orchestrator/owner-confirm-orchestration.js +87 -0
  127. package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -0
  128. package/lib/orchestrator/resource-registry.d.ts +1 -0
  129. package/lib/orchestrator/resource-registry.d.ts.map +1 -1
  130. package/lib/orchestrator/resource-registry.js +6 -0
  131. package/lib/orchestrator/resource-registry.js.map +1 -1
  132. package/lib/orchestrator/tool-registry.d.ts +5 -11
  133. package/lib/orchestrator/tool-registry.d.ts.map +1 -1
  134. package/lib/orchestrator/tool-registry.js +30 -75
  135. package/lib/orchestrator/tool-registry.js.map +1 -1
  136. package/lib/orchestrator/tool-selection.d.ts +39 -0
  137. package/lib/orchestrator/tool-selection.d.ts.map +1 -0
  138. package/lib/orchestrator/tool-selection.js +319 -0
  139. package/lib/orchestrator/tool-selection.js.map +1 -0
  140. package/lib/orchestrator/types.d.ts +2 -0
  141. package/lib/orchestrator/types.d.ts.map +1 -1
  142. package/lib/reserved-tools.d.ts +3 -0
  143. package/lib/reserved-tools.d.ts.map +1 -0
  144. package/lib/reserved-tools.js +30 -0
  145. package/lib/reserved-tools.js.map +1 -0
  146. package/lib/security/exec-policy.d.ts +1 -1
  147. package/lib/security/exec-policy.js +3 -3
  148. package/lib/security/exec-policy.js.map +1 -1
  149. package/lib/service.d.ts +9 -5
  150. package/lib/service.d.ts.map +1 -1
  151. package/lib/service.js +42 -36
  152. package/lib/service.js.map +1 -1
  153. package/lib/subagent.d.ts +6 -0
  154. package/lib/subagent.d.ts.map +1 -1
  155. package/lib/subagent.js +38 -15
  156. package/lib/subagent.js.map +1 -1
  157. package/lib/task-executor.d.ts +1 -0
  158. package/lib/task-executor.d.ts.map +1 -1
  159. package/lib/task-executor.js +15 -8
  160. package/lib/task-executor.js.map +1 -1
  161. package/lib/zhin-agent/builtin-tools.d.ts +1 -3
  162. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
  163. package/lib/zhin-agent/builtin-tools.js +4 -41
  164. package/lib/zhin-agent/builtin-tools.js.map +1 -1
  165. package/lib/zhin-agent/config.d.ts +7 -0
  166. package/lib/zhin-agent/config.d.ts.map +1 -1
  167. package/lib/zhin-agent/config.js +12 -7
  168. package/lib/zhin-agent/config.js.map +1 -1
  169. package/lib/zhin-agent/context-budget.d.ts +27 -0
  170. package/lib/zhin-agent/context-budget.d.ts.map +1 -0
  171. package/lib/zhin-agent/context-budget.js +50 -0
  172. package/lib/zhin-agent/context-budget.js.map +1 -0
  173. package/lib/zhin-agent/index.d.ts +10 -0
  174. package/lib/zhin-agent/index.d.ts.map +1 -1
  175. package/lib/zhin-agent/index.js +125 -88
  176. package/lib/zhin-agent/index.js.map +1 -1
  177. package/lib/zhin-agent/model-harness.d.ts +29 -0
  178. package/lib/zhin-agent/model-harness.d.ts.map +1 -0
  179. package/lib/zhin-agent/model-harness.js +67 -0
  180. package/lib/zhin-agent/model-harness.js.map +1 -0
  181. package/lib/zhin-agent/pre-exec.d.ts +7 -0
  182. package/lib/zhin-agent/pre-exec.d.ts.map +1 -0
  183. package/lib/zhin-agent/pre-exec.js +25 -0
  184. package/lib/zhin-agent/pre-exec.js.map +1 -0
  185. package/lib/zhin-agent/prompt.d.ts +10 -8
  186. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  187. package/lib/zhin-agent/prompt.js +38 -30
  188. package/lib/zhin-agent/prompt.js.map +1 -1
  189. package/lib/zhin-agent/text-sanitize.d.ts +8 -0
  190. package/lib/zhin-agent/text-sanitize.d.ts.map +1 -0
  191. package/lib/zhin-agent/text-sanitize.js +19 -0
  192. package/lib/zhin-agent/text-sanitize.js.map +1 -0
  193. package/lib/zhin-agent/tool-runtime.d.ts +31 -0
  194. package/lib/zhin-agent/tool-runtime.d.ts.map +1 -0
  195. package/lib/zhin-agent/tool-runtime.js +49 -0
  196. package/lib/zhin-agent/tool-runtime.js.map +1 -0
  197. package/package.json +8 -6
  198. package/lib/tools.d.ts +0 -45
  199. package/lib/tools.d.ts.map +0 -1
  200. package/lib/tools.js +0 -205
  201. package/lib/tools.js.map +0 -1
  202. package/lib/zhin-agent/tool-collector.d.ts +0 -22
  203. package/lib/zhin-agent/tool-collector.d.ts.map +0 -1
  204. package/lib/zhin-agent/tool-collector.js +0 -225
  205. package/lib/zhin-agent/tool-collector.js.map +0 -1
@@ -21,44 +21,23 @@ import { SessionManager, createMemorySessionManager } from '@zhin.js/ai';
21
21
  import { ConversationMemory } from '@zhin.js/ai';
22
22
  import { parseOutput } from '@zhin.js/ai';
23
23
  import { UserProfileStore } from '../user-profile.js';
24
+ import { WEB_SEARCH_LOCALE_EXTRA_KEY, normalizeWebSearchLocaleHint, } from '../builtin/web-search-locale.js';
24
25
  import { RateLimiter } from '@zhin.js/ai';
25
26
  import { detectTone } from '@zhin.js/ai';
26
27
  import { SubagentManager } from '../subagent.js';
27
- import { pruneHistoryForContext, DEFAULT_CONTEXT_TOKENS, } from '@zhin.js/ai';
28
28
  import { triggerAIHook, createAIHookEvent } from '../hooks.js';
29
29
  // ── Sub-modules ─────────────────────────────────────────────────────
30
- import { DEFAULT_CONFIG, KEYWORD_TRIGGERS, } from './config.js';
30
+ import { DEFAULT_CONFIG, isPhaseTraceEnabled, } from './config.js';
31
31
  import { applyExecPolicyToTools } from '../security/exec-policy.js';
32
- import { collectRelevantTools } from './tool-collector.js';
33
- import { buildEnhancedPersona, buildContextHint, buildRichSystemPrompt, buildUserMessageWithHistory, } from './prompt.js';
34
- import { createChatHistoryTool, createUserProfileTool, createSpawnTaskTool, } from './builtin-tools.js';
32
+ import { buildEnhancedPersona, buildContextHint, buildRichSystemPrompt, buildUserMessageWithHistory, FIXED_DISCIPLINE_RULES, } from './prompt.js';
33
+ import { buildPreExecFastPathPrompt, collectRuntimeTools, planToolRun, } from './tool-runtime.js';
34
+ import { stripHallucinatedToolCalls, stripThinkBlocks } from './text-sanitize.js';
35
+ import { pruneHistoryWithBudget } from './context-budget.js';
36
+ import { resolveModelHarness } from './model-harness.js';
37
+ import { RESERVED_TOOL_NAMES, RESERVED_TOOL_NAME_PREFIXES } from '../reserved-tools.js';
38
+ import { createOwnerOrchestratedToolResultTransform } from '../orchestrator/owner-confirm-orchestration.js';
35
39
  const logger = new Logger(null, 'ZhinAgent');
36
40
  const now = () => performance.now();
37
- /** Strip `<think>…</think>` blocks that some reasoning models embed in content. */
38
- function stripThinkBlocks(text) {
39
- return text.replace(/<think>[\s\S]*?<\/think>\s*/g, '').trim();
40
- }
41
- /**
42
- * Strip hallucinated tool-call markup that some models emit as plain text
43
- * (e.g. `<tool_call …/>`, `<function=xxx>…</function>`, `<|plugin|>…`).
44
- * Only removes the markup; any surrounding real text is preserved.
45
- */
46
- function stripHallucinatedToolCalls(text) {
47
- let cleaned = text;
48
- // <tool_call …/> or <tool_call …>…</tool_call>
49
- cleaned = cleaned.replace(/<tool_call\b[\s\S]*?(?:\/>|<\/tool_call>)/gi, '');
50
- // <tool_result …/> or <tool_result …>…</tool_result>
51
- cleaned = cleaned.replace(/<tool_result\b[\s\S]*?(?:\/>|<\/tool_result>)/gi, '');
52
- // <function=name>…</function>
53
- cleaned = cleaned.replace(/<function=[^>]*>[\s\S]*?<\/function>/gi, '');
54
- // {tool_result} / {tool_call} bare placeholders
55
- cleaned = cleaned.replace(/\{tool_(?:result|call)\}/gi, '');
56
- // <|plugin|>…<|/plugin|> (some Chinese models)
57
- cleaned = cleaned.replace(/<\|plugin\|>[\s\S]*?<\|\/plugin\|>/gi, '');
58
- // <<<tool_call>>> … <<<end>>> style
59
- cleaned = cleaned.replace(/<<<tool_call>>>[\s\S]*?<<<end>>>/gi, '');
60
- return cleaned.trim();
61
- }
62
41
  // ============================================================================
63
42
  // ZhinAgent
64
43
  // ============================================================================
@@ -77,9 +56,11 @@ export class ZhinAgent {
77
56
  activeSkillsContext = '';
78
57
  skillsSummaryXML = '';
79
58
  modelRegistry = null;
59
+ phaseTraceEnabled;
80
60
  constructor(provider, config) {
81
61
  this.provider = provider;
82
62
  this.config = { ...DEFAULT_CONFIG, ...config };
63
+ this.phaseTraceEnabled = isPhaseTraceEnabled(this.config);
83
64
  this.sessions = createMemorySessionManager();
84
65
  this.memory = new ConversationMemory({
85
66
  minTopicRounds: this.config.minTopicRounds,
@@ -105,6 +86,7 @@ export class ZhinAgent {
105
86
  }
106
87
  setModelRegistry(registry) {
107
88
  this.modelRegistry = registry;
89
+ this.subagentManager?.setModelRegistry(registry);
108
90
  }
109
91
  upgradeMemoryToDatabase(msgModel, sumModel) {
110
92
  this.memory.upgradeToDatabase(msgModel, sumModel);
@@ -117,8 +99,10 @@ export class ZhinAgent {
117
99
  provider: this.provider,
118
100
  workspace: process.cwd(),
119
101
  createTools,
102
+ subagentTools: this.config.subagentTools,
120
103
  maxIterations: this.config.maxSubagentIterations,
121
104
  execPolicyConfig: this.config,
105
+ modelRegistry: this.modelRegistry,
122
106
  });
123
107
  logger.debug('SubagentManager initialized');
124
108
  }
@@ -185,12 +169,19 @@ export class ZhinAgent {
185
169
  const { senderId, sceneId, platform } = context;
186
170
  const sessionId = SessionManager.generateId(platform || '', senderId || '', sceneId);
187
171
  const userId = senderId || 'unknown';
172
+ this.logPhase('turn.start', sessionId, {
173
+ mode: 'text',
174
+ provider: this.provider.name,
175
+ });
188
176
  // 0. Rate limit
189
177
  const rateCheck = this.rateLimiter.check(userId);
190
178
  if (!rateCheck.allowed) {
179
+ this.logPhase('turn.rate_limited', sessionId, { userId });
191
180
  logger.debug(`[速率限制] 用户 ${userId} 被限制: ${rateCheck.message}`);
192
181
  return parseOutput(rateCheck.message || '请稍后再试');
193
182
  }
183
+ // 0.5 工具上下文:web_search 语言(档案 preferred_language / language,否则默认中文)
184
+ const contextForTools = await this.attachWebSearchLocale(context, userId);
194
185
  triggerAIHook(createAIHookEvent('message', 'received', sessionId, {
195
186
  userId,
196
187
  content,
@@ -198,22 +189,21 @@ export class ZhinAgent {
198
189
  })).catch(() => { });
199
190
  // 1. Collect tools
200
191
  const tFilter = now();
201
- const allTools = collectRelevantTools(content, context, externalTools, {
192
+ const allTools = collectRuntimeTools({
193
+ content,
194
+ context: contextForTools,
195
+ externalTools,
202
196
  config: this.config,
203
197
  skillRegistry: this.skillRegistry,
204
198
  externalRegistered: this.externalTools,
199
+ sessionId,
200
+ userId,
201
+ memory: this.memory,
202
+ userProfiles: this.userProfiles,
203
+ subagentManager: this.subagentManager,
205
204
  });
206
- // Inject context-aware built-in tools on keyword match
207
- if (KEYWORD_TRIGGERS.chatHistory.test(content)) {
208
- allTools.push(createChatHistoryTool(sessionId, this.memory));
209
- }
210
- if (KEYWORD_TRIGGERS.userProfile.test(content)) {
211
- allTools.push(createUserProfileTool(userId, this.userProfiles));
212
- }
213
- if (this.subagentManager && KEYWORD_TRIGGERS.spawnTask.test(content)) {
214
- allTools.push(createSpawnTaskTool(context, this.subagentManager));
215
- }
216
205
  const filterMs = (now() - tFilter).toFixed(0);
206
+ this.logPhase('tools.collected', sessionId, { count: allTools.length });
217
207
  logger.info(`[工具过滤] ${allTools.length} 个工具: ${allTools.map(t => t.name).join(', ') || '(无)'}`);
218
208
  // 2. History + profile (parallel)
219
209
  const tMem = now();
@@ -221,82 +211,71 @@ export class ZhinAgent {
221
211
  this.buildHistoryMessages(sessionId),
222
212
  this.userProfiles.buildProfileSummary(userId),
223
213
  ]);
224
- const contextTokens = this.config.contextTokens ?? DEFAULT_CONTEXT_TOKENS;
225
- const maxHistoryShare = this.config.maxHistoryShare ?? 0.5;
226
- const pruneResult = pruneHistoryForContext({
214
+ const chatCandidates = this.resolveModelCandidates('chat');
215
+ const { messages: historyMessages, result: pruneResult, budget: contextBudget, } = pruneHistoryWithBudget({
227
216
  messages: rawHistoryMessages,
228
- maxContextTokens: contextTokens,
229
- maxHistoryShare,
217
+ config: this.config,
218
+ provider: this.provider,
219
+ modelRegistry: this.modelRegistry,
220
+ model: chatCandidates[0],
230
221
  });
231
- let historyMessages = pruneResult.messages;
232
222
  if (pruneResult.droppedCount > 0) {
233
223
  logger.debug(`[上下文窗口] 丢弃 ${pruneResult.droppedCount} 条历史消息 (${pruneResult.droppedTokens} tokens)`);
234
224
  }
235
225
  const memMs = (now() - tMem).toFixed(0);
226
+ this.logPhase('context.ready', sessionId, { historyCount: historyMessages.length });
236
227
  // 2.5 Tone + persona
237
228
  const toneHint = this.config.toneAwareness ? detectTone(content).hint : '';
238
229
  const personaEnhanced = buildEnhancedPersona(this.config, profileSummary, toneHint);
239
230
  // 3. No tools → chat path (prefer per-session model, then lightweight model)
240
231
  if (allTools.length === 0) {
232
+ this.logPhase('path.chat', sessionId, { toolCount: 0 });
241
233
  const liteModel = this.config.chatLiteModel || undefined;
242
- logger.info(`[System Prompt] chat-path: ${personaEnhanced.length} chars${liteModel ? `, model=${liteModel}` : ''}`);
234
+ const chatSystemPrompt = this.buildDisciplinedPrompt(personaEnhanced);
235
+ logger.info(`[System Prompt] chat-path: ${chatSystemPrompt.length} chars${liteModel ? `, model=${liteModel}` : ''}`);
243
236
  logger.debug(`[闲聊路径] 过滤=${filterMs}ms, 记忆=${memMs}ms (${historyMessages.length}条), 0 工具`);
244
237
  const tLLM = now();
245
- let reply = await this.streamChatWithHistory(content, personaEnhanced, historyMessages, onChunk, liteModel);
238
+ this.logPhase('chat.llm.start', sessionId, { model: liteModel || chatCandidates[0] || '' });
239
+ let reply = await this.streamChatWithHistory(content, chatSystemPrompt, historyMessages, onChunk, liteModel);
246
240
  reply = stripHallucinatedToolCalls(reply);
247
241
  const llmMs = (now() - tLLM).toFixed(0);
242
+ this.logPhase('chat.llm.end', sessionId, { durationMs: Number(llmMs) });
248
243
  logger.info(`[闲聊路径] 过滤=${filterMs}ms, 记忆=${memMs}ms, LLM=${llmMs}ms, 总=${(now() - t0).toFixed(0)}ms`);
249
244
  await this.saveToSession(sessionId, content, reply, sceneId);
245
+ this.logPhase('turn.end', sessionId, { path: 'chat' });
250
246
  return parseOutput(reply);
251
247
  }
252
248
  logger.debug(`[工具路径] 过滤=${filterMs}ms, 记忆=${memMs}ms, ${allTools.length} 工具 (${allTools.map(t => t.name).join(', ')})`);
253
249
  // 4. Pre-executable tools
254
- const preExecTools = [];
255
- for (const tool of allTools) {
256
- if (tool.preExecutable)
257
- preExecTools.push(tool);
250
+ const preExecCandidates = allTools.filter(tool => tool.preExecutable);
251
+ const tPre = preExecCandidates.length > 0 ? now() : 0;
252
+ if (preExecCandidates.length > 0) {
253
+ logger.debug(`预执行: ${preExecCandidates.map(t => t.name).join(', ')}`);
258
254
  }
259
- // 5. Pre-execution
260
- let preData = '';
261
- if (preExecTools.length > 0) {
262
- const tPre = now();
263
- logger.debug(`预执行: ${preExecTools.map(t => t.name).join(', ')}`);
264
- const results = await Promise.allSettled(preExecTools.map(async (tool) => {
265
- const result = await Promise.race([
266
- tool.execute({}),
267
- new Promise((_, rej) => setTimeout(() => rej(new Error('超时')), this.config.preExecTimeout)),
268
- ]);
269
- return { name: tool.name, result };
270
- }));
271
- for (const r of results) {
272
- if (r.status === 'fulfilled') {
273
- let s = typeof r.value.result === 'string' ? r.value.result : JSON.stringify(r.value.result);
274
- if (s.length > 500) {
275
- s = s.slice(0, 500) + `\n... (truncated, ${s.length} chars total)`;
276
- }
277
- preData += `\n【${r.value.name}】${s}`;
278
- }
279
- }
255
+ const toolRun = await planToolRun(allTools, this.config.preExecTimeout);
256
+ this.logPhase('preexec.done', sessionId, {
257
+ mode: toolRun.mode,
258
+ preExecutedTools: toolRun.preExecution.tools.length,
259
+ });
260
+ const preData = toolRun.preExecution.data;
261
+ if (tPre > 0) {
280
262
  logger.debug(`预执行耗时: ${(now() - tPre).toFixed(0)}ms`);
281
263
  }
282
264
  // 6. Path selection
283
265
  let reply;
284
- const hasNonPreExecTools = allTools.some(t => !t.preExecutable);
285
- if (!hasNonPreExecTools && preData) {
266
+ if (toolRun.mode === 'pre-exec-fast-path') {
267
+ this.logPhase('path.pre_exec_fast', sessionId, { toolCount: allTools.length });
286
268
  // Fast path
287
269
  const tLLM = now();
288
- const prompt = `${personaEnhanced}
289
-
290
- Pre-fetched data (from user's question):
291
- ${preData}
292
-
293
- Answer the user's question based on the data above. Be clear and concise; use emoji when appropriate.`;
270
+ const prompt = this.buildDisciplinedPrompt(buildPreExecFastPathPrompt(personaEnhanced, preData));
294
271
  logger.info(`[System Prompt] fast-path: ${prompt.length} chars`);
272
+ this.logPhase('fast.llm.start', sessionId, { model: chatCandidates[0] || '' });
295
273
  reply = await this.streamChatWithHistory(content, prompt, historyMessages, onChunk);
274
+ this.logPhase('fast.llm.end', sessionId, { durationMs: Math.round(now() - tLLM) });
296
275
  logger.info(`[快速路径] 过滤=${filterMs}ms, 记忆=${memMs}ms, LLM=${(now() - tLLM).toFixed(0)}ms, 总=${(now() - t0).toFixed(0)}ms`);
297
276
  }
298
277
  else {
299
- // Agent path
278
+ this.logPhase('path.agent', sessionId, { toolCount: allTools.length });
300
279
  const tAgent = now();
301
280
  logger.debug(`Agent 路径: ${allTools.length} 个工具`);
302
281
  const contextHint = buildContextHint(context, content);
@@ -316,10 +295,16 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
316
295
  // Adaptive maxIterations: boost when skills are active (multi-step skill flows)
317
296
  const SKILL_ITERATION_BOOST = 3;
318
297
  const hasSkillActivation = agentTools.some(t => t.name === 'activate_skill' || t.name === 'install_skill');
298
+ const harness = resolveModelHarness(this.provider.name, chatCandidates[0] || '', this.config.modelHarness);
299
+ const baseIterations = harness.maxIterations ?? this.config.maxIterations;
319
300
  const effectiveMaxIterations = hasSkillActivation
320
- ? this.config.maxIterations + SKILL_ITERATION_BOOST
321
- : this.config.maxIterations;
322
- const chatCandidates = this.resolveModelCandidates('chat');
301
+ ? baseIterations + SKILL_ITERATION_BOOST
302
+ : baseIterations;
303
+ this.logPhase('harness.resolved', sessionId, {
304
+ model: chatCandidates[0] || '',
305
+ harnessMaxIterations: harness.maxIterations ?? null,
306
+ effectiveMaxIterations,
307
+ });
323
308
  const agent = createAgent(this.provider, {
324
309
  model: chatCandidates[0],
325
310
  modelFallbacks: chatCandidates.slice(1),
@@ -327,11 +312,20 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
327
312
  tools: agentTools,
328
313
  maxIterations: effectiveMaxIterations,
329
314
  turnTimeout: this.config.timeout,
315
+ contextWindow: contextBudget.contextWindow,
316
+ reservedToolNames: RESERVED_TOOL_NAMES,
317
+ reservedToolNamePrefixes: RESERVED_TOOL_NAME_PREFIXES,
318
+ transformToolResult: createOwnerOrchestratedToolResultTransform({
319
+ toolContext: contextForTools,
320
+ disableHardOrchestration: false,
321
+ }),
330
322
  });
331
323
  const userMessageWithHistory = buildUserMessageWithHistory(historyMessages, content);
332
324
  let result;
333
325
  try {
326
+ this.logPhase('agent.run.start', sessionId, { model: chatCandidates[0] || '' });
334
327
  result = await agent.run(userMessageWithHistory, []);
328
+ this.logPhase('agent.run.end', sessionId, { iterations: result.iterations });
335
329
  }
336
330
  finally {
337
331
  agent.dispose();
@@ -345,8 +339,18 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
345
339
  content: reply,
346
340
  platform: platform || '',
347
341
  })).catch(() => { });
342
+ this.logPhase('turn.end', sessionId, { path: toolRun.mode === 'pre-exec-fast-path' ? 'fast' : 'agent' });
348
343
  return parseOutput(reply);
349
344
  }
345
+ buildDisciplinedPrompt(basePrompt) {
346
+ const discipline = `# Discipline\n${FIXED_DISCIPLINE_RULES.map(rule => `- ${rule}`).join('\n')}`;
347
+ return `${discipline}\n\n${basePrompt}`;
348
+ }
349
+ logPhase(phase, sessionId, extra = {}) {
350
+ if (!this.phaseTraceEnabled)
351
+ return;
352
+ logger.info({ phase, sessionId, ...extra }, '[AGENT_PHASE]');
353
+ }
350
354
  async processMultimodal(parts, context, onChunk) {
351
355
  const { senderId, sceneId, platform } = context;
352
356
  const sessionId = SessionManager.generateId(platform || '', senderId || '', sceneId);
@@ -355,9 +359,9 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
355
359
  if (!rateCheck.allowed) {
356
360
  return parseOutput(rateCheck.message || '请稍后再试');
357
361
  }
358
- const historyMessages = await this.buildHistoryMessages(sessionId);
362
+ const rawHistoryMessages = await this.buildHistoryMessages(sessionId);
359
363
  const profileSummary = await this.userProfiles.buildProfileSummary(userId);
360
- const personaEnhanced = buildEnhancedPersona(this.config, profileSummary, '');
364
+ const personaEnhanced = this.buildDisciplinedPrompt(buildEnhancedPersona(this.config, profileSummary, ''));
361
365
  // Build text summary describing the multimodal content
362
366
  const textFragments = [];
363
367
  const llmParts = [];
@@ -388,6 +392,16 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
388
392
  }
389
393
  const textContent = textFragments.join(' ') || '[多模态消息]';
390
394
  const visionCandidates = this.resolveModelCandidates('vision');
395
+ const { messages: historyMessages, result: pruneResult } = pruneHistoryWithBudget({
396
+ messages: rawHistoryMessages,
397
+ config: this.config,
398
+ provider: this.provider,
399
+ modelRegistry: this.modelRegistry,
400
+ model: visionCandidates[0],
401
+ });
402
+ if (pruneResult.droppedCount > 0) {
403
+ logger.debug(`[多模态上下文窗口] 丢弃 ${pruneResult.droppedCount} 条历史消息 (${pruneResult.droppedTokens} tokens)`);
404
+ }
391
405
  const messages = [
392
406
  { role: 'system', content: personaEnhanced },
393
407
  ...historyMessages,
@@ -441,6 +455,29 @@ ${preData ? `\nPre-fetched data:\n${preData}\n` : ''}`;
441
455
  return parseOutput(reply);
442
456
  }
443
457
  // ── Internal helpers ────────────────────────────────────────────────
458
+ /**
459
+ * 为内置工具注入 `extra.web_search_locale`:
460
+ * - 若调用方已在 `context.extra.web_search_locale` 中设置,则规范化后沿用;
461
+ * - 否则读取用户档案 `preferred_language` / `language`;
462
+ * - 均未设置时不在 extra 中写入,web_search 默认使用中文市场。
463
+ */
464
+ async attachWebSearchLocale(context, userId) {
465
+ const extra = { ...(context.extra ?? {}) };
466
+ const existing = extra[WEB_SEARCH_LOCALE_EXTRA_KEY];
467
+ if (typeof existing === 'string' && existing.trim()) {
468
+ extra[WEB_SEARCH_LOCALE_EXTRA_KEY] = normalizeWebSearchLocaleHint(existing);
469
+ return { ...context, extra };
470
+ }
471
+ const [preferred, language] = await Promise.all([
472
+ this.userProfiles.get(userId, 'preferred_language'),
473
+ this.userProfiles.get(userId, 'language'),
474
+ ]);
475
+ const hint = (preferred ?? language)?.trim();
476
+ if (hint) {
477
+ extra[WEB_SEARCH_LOCALE_EXTRA_KEY] = normalizeWebSearchLocaleHint(hint);
478
+ }
479
+ return { ...context, extra };
480
+ }
444
481
  async buildHistoryMessages(sessionId) {
445
482
  return this.memory.buildContext(sessionId);
446
483
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zhin-agent/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zhin-agent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface ModelHarnessRow {
2
+ provider?: string;
3
+ modelPattern: RegExp;
4
+ maxIterations?: number;
5
+ }
6
+ export interface ResolvedModelHarness {
7
+ maxIterations?: number;
8
+ }
9
+ export interface ModelHarnessConfigItem {
10
+ maxIterations?: number;
11
+ }
12
+ export interface ModelHarnessConfig {
13
+ /**
14
+ * 模型级覆盖:
15
+ * - "gpt-4o"
16
+ * - "openai:gpt-4o"(provider + model 精确覆盖)
17
+ */
18
+ models?: Record<string, ModelHarnessConfigItem>;
19
+ /**
20
+ * provider 模式覆盖(支持 * 通配符)
21
+ * - "openai"
22
+ * - "open*"
23
+ */
24
+ providerPatterns?: Record<string, ModelHarnessConfigItem>;
25
+ }
26
+ export declare const MODEL_HARNESS_DEFAULTS: ModelHarnessRow[];
27
+ export declare function mergeModelHarnessValues<T>(defaults: T, overrides: unknown): T;
28
+ export declare function resolveModelHarness(providerName: string, modelName: string, config?: ModelHarnessConfig): ResolvedModelHarness;
29
+ //# sourceMappingURL=model-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-harness.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/model-harness.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAKnD,CAAC;AAYF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAiB7E;AAkBD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,oBAAoB,CA4BtB"}
@@ -0,0 +1,67 @@
1
+ export const MODEL_HARNESS_DEFAULTS = [
2
+ { provider: 'ollama', modelPattern: /(?:^|[-_:])(0\.5b|1\.5b|3b|7b)(?:$|[-_:])/i, maxIterations: 4 },
3
+ { provider: 'ollama', modelPattern: /(?:qwen|llama|mistral).*(?:14b|32b)/i, maxIterations: 6 },
4
+ { provider: 'openai', modelPattern: /gpt-4(\.|o|$)/i, maxIterations: 7 },
5
+ { provider: 'anthropic', modelPattern: /claude-3|claude-4/i, maxIterations: 7 },
6
+ ];
7
+ function isPlainObject(value) {
8
+ const proto = value && typeof value === 'object'
9
+ ? Object.getPrototypeOf(value)
10
+ : null;
11
+ return !!value
12
+ && typeof value === 'object'
13
+ && !Array.isArray(value)
14
+ && (proto === Object.prototype || proto === null);
15
+ }
16
+ export function mergeModelHarnessValues(defaults, overrides) {
17
+ if (Array.isArray(defaults)) {
18
+ return (Array.isArray(overrides) ? overrides : defaults);
19
+ }
20
+ if (!isPlainObject(defaults)) {
21
+ return (overrides === undefined ? defaults : overrides);
22
+ }
23
+ if (!isPlainObject(overrides)) {
24
+ return defaults;
25
+ }
26
+ const result = { ...defaults };
27
+ for (const [key, value] of Object.entries(overrides)) {
28
+ result[key] = key in result
29
+ ? mergeModelHarnessValues(result[key], value)
30
+ : value;
31
+ }
32
+ return result;
33
+ }
34
+ function providerPatternToRegExp(pattern) {
35
+ const escaped = pattern
36
+ .replace(/[|\\{}()[\]^$+?.-]/g, '\\$&')
37
+ .replace(/\*/g, '.*');
38
+ return new RegExp(`^${escaped}$`, 'i');
39
+ }
40
+ function sanitizeResolvedHarness(input) {
41
+ // TODO: 如需扩展更多 harness 字段,在此白名单中显式加入。
42
+ const maxIterationsRaw = input.maxIterations;
43
+ if (typeof maxIterationsRaw === 'number' && Number.isFinite(maxIterationsRaw)) {
44
+ return { maxIterations: maxIterationsRaw };
45
+ }
46
+ return {};
47
+ }
48
+ export function resolveModelHarness(providerName, modelName, config) {
49
+ const defaultHarness = (() => {
50
+ for (const row of MODEL_HARNESS_DEFAULTS) {
51
+ if (row.provider && row.provider !== providerName)
52
+ continue;
53
+ if (!row.modelPattern.test(modelName))
54
+ continue;
55
+ return { maxIterations: row.maxIterations };
56
+ }
57
+ return {};
58
+ })();
59
+ // providerPatterns 按对象插入顺序叠加(Object.entries iteration order)
60
+ const providerOverride = Object.entries(config?.providerPatterns || {}).reduce((acc, [pattern, value]) => providerPatternToRegExp(pattern).test(providerName)
61
+ ? mergeModelHarnessValues(acc, value)
62
+ : acc, {});
63
+ const modelOverride = mergeModelHarnessValues(config?.models?.[modelName] || {}, config?.models?.[`${providerName}:${modelName}`] || {});
64
+ const merged = mergeModelHarnessValues(mergeModelHarnessValues(defaultHarness, providerOverride), modelOverride);
65
+ return sanitizeResolvedHarness(merged);
66
+ }
67
+ //# sourceMappingURL=model-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-harness.js","sourceRoot":"","sources":["../../src/zhin-agent/model-harness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AgentTool } from '@zhin.js/ai';
2
+ export interface PreExecuteResult {
3
+ tools: AgentTool[];
4
+ data: string;
5
+ }
6
+ export declare function runPreExecutableTools(tools: AgentTool[], timeoutMs: number): Promise<PreExecuteResult>;
7
+ //# sourceMappingURL=pre-exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-exec.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/pre-exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA4B3B"}
@@ -0,0 +1,25 @@
1
+ export async function runPreExecutableTools(tools, timeoutMs) {
2
+ const preExecTools = tools.filter(tool => tool.preExecutable);
3
+ let data = '';
4
+ if (preExecTools.length === 0) {
5
+ return { tools: preExecTools, data };
6
+ }
7
+ const results = await Promise.allSettled(preExecTools.map(async (tool) => {
8
+ const result = await Promise.race([
9
+ tool.execute({}),
10
+ new Promise((_, rej) => setTimeout(() => rej(new Error('超时')), timeoutMs)),
11
+ ]);
12
+ return { name: tool.name, result };
13
+ }));
14
+ for (const r of results) {
15
+ if (r.status !== 'fulfilled')
16
+ continue;
17
+ let s = typeof r.value.result === 'string' ? r.value.result : JSON.stringify(r.value.result);
18
+ if (s.length > 500) {
19
+ s = s.slice(0, 500) + `\n... (truncated, ${s.length} chars total)`;
20
+ }
21
+ data += `\n【${r.value.name}】${s}`;
22
+ }
23
+ return { tools: preExecTools, data };
24
+ }
25
+ //# sourceMappingURL=pre-exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-exec.js","sourceRoot":"","sources":["../../src/zhin-agent/pre-exec.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAkB,EAClB,SAAiB;IAEjB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;SACrD,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC,CAAC,CACH,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,SAAS;QACvC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7F,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACnB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,MAAM,eAAe,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC"}