@zhin.js/core 1.0.35 → 1.0.37

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 (61) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/ai/agent.d.ts +1 -1
  3. package/lib/ai/agent.d.ts.map +1 -1
  4. package/lib/ai/agent.js +23 -5
  5. package/lib/ai/agent.js.map +1 -1
  6. package/lib/ai/index.d.ts +8 -8
  7. package/lib/ai/index.d.ts.map +1 -1
  8. package/lib/ai/index.js +6 -6
  9. package/lib/ai/index.js.map +1 -1
  10. package/lib/ai/init.js +2 -2
  11. package/lib/ai/init.js.map +1 -1
  12. package/lib/ai/subagent.d.ts +1 -1
  13. package/lib/ai/subagent.js +1 -1
  14. package/lib/ai/{zhin-agent-builtin-tools.d.ts → zhin-agent/builtin-tools.d.ts} +7 -7
  15. package/lib/ai/zhin-agent/builtin-tools.d.ts.map +1 -0
  16. package/lib/ai/{zhin-agent-builtin-tools.js → zhin-agent/builtin-tools.js} +1 -1
  17. package/lib/ai/zhin-agent/builtin-tools.js.map +1 -0
  18. package/lib/ai/{zhin-agent-config.d.ts → zhin-agent/config.d.ts} +2 -2
  19. package/lib/ai/zhin-agent/config.d.ts.map +1 -0
  20. package/lib/ai/{zhin-agent-config.js → zhin-agent/config.js} +2 -2
  21. package/lib/ai/zhin-agent/config.js.map +1 -0
  22. package/lib/ai/{zhin-agent-exec-policy.d.ts → zhin-agent/exec-policy.d.ts} +3 -3
  23. package/lib/ai/zhin-agent/exec-policy.d.ts.map +1 -0
  24. package/lib/ai/{zhin-agent-exec-policy.js → zhin-agent/exec-policy.js} +2 -2
  25. package/lib/ai/zhin-agent/exec-policy.js.map +1 -0
  26. package/lib/ai/{zhin-agent.d.ts → zhin-agent/index.d.ts} +12 -12
  27. package/lib/ai/zhin-agent/index.d.ts.map +1 -0
  28. package/lib/ai/{zhin-agent.js → zhin-agent/index.js} +22 -21
  29. package/lib/ai/zhin-agent/index.js.map +1 -0
  30. package/lib/ai/{zhin-agent-prompt.d.ts → zhin-agent/prompt.d.ts} +6 -6
  31. package/lib/ai/zhin-agent/prompt.d.ts.map +1 -0
  32. package/lib/ai/{zhin-agent-prompt.js → zhin-agent/prompt.js} +3 -3
  33. package/lib/ai/zhin-agent/prompt.js.map +1 -0
  34. package/lib/ai/{zhin-agent-tool-collector.d.ts → zhin-agent/tool-collector.d.ts} +5 -5
  35. package/lib/ai/zhin-agent/tool-collector.d.ts.map +1 -0
  36. package/lib/ai/{zhin-agent-tool-collector.js → zhin-agent/tool-collector.js} +3 -3
  37. package/lib/ai/zhin-agent/tool-collector.js.map +1 -0
  38. package/package.json +4 -4
  39. package/src/ai/agent.ts +24 -5
  40. package/src/ai/index.ts +8 -8
  41. package/src/ai/init.ts +4 -4
  42. package/src/ai/subagent.ts +2 -2
  43. package/src/ai/{zhin-agent-builtin-tools.ts → zhin-agent/builtin-tools.ts} +6 -6
  44. package/src/ai/{zhin-agent-config.ts → zhin-agent/config.ts} +2 -2
  45. package/src/ai/{zhin-agent-exec-policy.ts → zhin-agent/exec-policy.ts} +3 -3
  46. package/src/ai/{zhin-agent.ts → zhin-agent/index.ts} +27 -27
  47. package/src/ai/{zhin-agent-prompt.ts → zhin-agent/prompt.ts} +7 -7
  48. package/src/ai/{zhin-agent-tool-collector.ts → zhin-agent/tool-collector.ts} +6 -6
  49. package/tests/ai/zhin-agent.test.ts +1 -1
  50. package/lib/ai/zhin-agent-builtin-tools.d.ts.map +0 -1
  51. package/lib/ai/zhin-agent-builtin-tools.js.map +0 -1
  52. package/lib/ai/zhin-agent-config.d.ts.map +0 -1
  53. package/lib/ai/zhin-agent-config.js.map +0 -1
  54. package/lib/ai/zhin-agent-exec-policy.d.ts.map +0 -1
  55. package/lib/ai/zhin-agent-exec-policy.js.map +0 -1
  56. package/lib/ai/zhin-agent-prompt.d.ts.map +0 -1
  57. package/lib/ai/zhin-agent-prompt.js.map +0 -1
  58. package/lib/ai/zhin-agent-tool-collector.d.ts.map +0 -1
  59. package/lib/ai/zhin-agent-tool-collector.js.map +0 -1
  60. package/lib/ai/zhin-agent.d.ts.map +0 -1
  61. package/lib/ai/zhin-agent.js.map +0 -1
@@ -15,17 +15,17 @@
15
15
  * 11. 主动跟进:schedule_followup 定时回查
16
16
  * 12. 多模态输入:图片/音频直接传给视觉模型
17
17
  */
18
- import type { Tool, ToolContext } from '../types.js';
19
- import type { SkillFeature } from '../built/skill.js';
20
- import type { AIProvider, AgentTool, ContentPart } from './types.js';
21
- import { SessionManager } from './session.js';
22
- import type { ContextManager } from './context-manager.js';
23
- import type { OutputElement } from './output.js';
24
- import { UserProfileStore } from './user-profile.js';
25
- import { type FollowUpSender } from './follow-up.js';
26
- import { SubagentManager, type SubagentResultSender } from './subagent.js';
27
- import { type ZhinAgentConfig, type OnChunkCallback } from './zhin-agent-config.js';
28
- export type { ZhinAgentConfig, OnChunkCallback } from './zhin-agent-config.js';
18
+ import type { Tool, ToolContext } from '../../types.js';
19
+ import type { SkillFeature } from '../../built/skill.js';
20
+ import type { AIProvider, AgentTool, ContentPart } from '../types.js';
21
+ import { SessionManager } from '../session.js';
22
+ import type { ContextManager } from '../context-manager.js';
23
+ import type { OutputElement } from '../output.js';
24
+ import { UserProfileStore } from '../user-profile.js';
25
+ import { type FollowUpSender } from '../follow-up.js';
26
+ import { SubagentManager, type SubagentResultSender } from '../subagent.js';
27
+ import { type ZhinAgentConfig, type OnChunkCallback } from './config.js';
28
+ export type { ZhinAgentConfig, OnChunkCallback } from './config.js';
29
29
  export declare class ZhinAgent {
30
30
  private provider;
31
31
  private config;
@@ -67,4 +67,4 @@ export declare class ZhinAgent {
67
67
  isReady(): boolean;
68
68
  dispose(): void;
69
69
  }
70
- //# sourceMappingURL=zhin-agent.d.ts.map
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/zhin-agent/index.ts"],"names":[],"mappings":"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"}
@@ -16,23 +16,23 @@
16
16
  * 12. 多模态输入:图片/音频直接传给视觉模型
17
17
  */
18
18
  import { Logger } from '@zhin.js/logger';
19
- import { createAgent } from './agent.js';
20
- import { SessionManager, createMemorySessionManager } from './session.js';
21
- import { ConversationMemory } from './conversation-memory.js';
22
- import { parseOutput } from './output.js';
23
- import { UserProfileStore } from './user-profile.js';
24
- import { RateLimiter } from './rate-limiter.js';
25
- import { detectTone } from './tone-detector.js';
26
- import { FollowUpManager } from './follow-up.js';
27
- import { SubagentManager } from './subagent.js';
28
- import { pruneHistoryForContext, DEFAULT_CONTEXT_TOKENS, } from './compaction.js';
29
- import { triggerAIHook, createAIHookEvent } from './hooks.js';
30
- // ── Extracted modules ───────────────────────────────────────────────
31
- import { DEFAULT_CONFIG, } from './zhin-agent-config.js';
32
- import { applyExecPolicyToTools } from './zhin-agent-exec-policy.js';
33
- import { collectRelevantTools } from './zhin-agent-tool-collector.js';
34
- import { buildEnhancedPersona, buildContextHint, buildRichSystemPrompt, buildUserMessageWithHistory, } from './zhin-agent-prompt.js';
35
- import { createChatHistoryTool, createUserProfileTool, createScheduleFollowUpTool, createSpawnTaskTool, } from './zhin-agent-builtin-tools.js';
19
+ import { createAgent } from '../agent.js';
20
+ import { SessionManager, createMemorySessionManager } from '../session.js';
21
+ import { ConversationMemory } from '../conversation-memory.js';
22
+ import { parseOutput } from '../output.js';
23
+ import { UserProfileStore } from '../user-profile.js';
24
+ import { RateLimiter } from '../rate-limiter.js';
25
+ import { detectTone } from '../tone-detector.js';
26
+ import { FollowUpManager } from '../follow-up.js';
27
+ import { SubagentManager } from '../subagent.js';
28
+ import { pruneHistoryForContext, DEFAULT_CONTEXT_TOKENS, } from '../compaction.js';
29
+ import { triggerAIHook, createAIHookEvent } from '../hooks.js';
30
+ // ── Sub-modules ─────────────────────────────────────────────────────
31
+ import { DEFAULT_CONFIG, } from './config.js';
32
+ import { applyExecPolicyToTools } from './exec-policy.js';
33
+ import { collectRelevantTools } from './tool-collector.js';
34
+ import { buildEnhancedPersona, buildContextHint, buildRichSystemPrompt, buildUserMessageWithHistory, } from './prompt.js';
35
+ import { createChatHistoryTool, createUserProfileTool, createScheduleFollowUpTool, createSpawnTaskTool, } from './builtin-tools.js';
36
36
  const logger = new Logger(null, 'ZhinAgent');
37
37
  const now = () => performance.now();
38
38
  // ============================================================================
@@ -189,6 +189,7 @@ export class ZhinAgent {
189
189
  const personaEnhanced = buildEnhancedPersona(this.config, profileSummary, toneHint);
190
190
  // 3. No tools → chat path
191
191
  if (allTools.length === 0) {
192
+ logger.info(`[System Prompt] chat-path: ${personaEnhanced.length} chars ≈ ${Math.ceil(personaEnhanced.length / 2.5)} tokens`);
192
193
  logger.debug(`[闲聊路径] 过滤=${filterMs}ms, 记忆=${memMs}ms (${historyMessages.length}条), 0 工具`);
193
194
  const tLLM = now();
194
195
  const reply = await this.streamChatWithHistory(content, personaEnhanced, historyMessages, onChunk);
@@ -235,11 +236,11 @@ export class ZhinAgent {
235
236
  const tLLM = now();
236
237
  const prompt = `${personaEnhanced}
237
238
 
238
- Pre-fetched data for the user's question:
239
+ 以下是根据用户问题自动获取的实时数据:
239
240
  ${preData}
240
241
 
241
- Answer based on the data above. Be natural, highlight key points.`;
242
- logger.info(`[系统提示] 快速路径: ${prompt.length} 字符 ≈ ${Math.ceil(prompt.length / 2.5)} tokens`);
242
+ 请基于以上数据,用自然流畅的中文回答用户问题。突出重点,适当使用 emoji。`;
243
+ logger.info(`[System Prompt] fast-path: ${prompt.length} chars ≈ ${Math.ceil(prompt.length / 2.5)} tokens`);
243
244
  reply = await this.streamChatWithHistory(content, prompt, historyMessages, onChunk);
244
245
  logger.info(`[快速路径] 过滤=${filterMs}ms, 记忆=${memMs}ms, LLM=${(now() - tLLM).toFixed(0)}ms, 总=${(now() - t0).toFixed(0)}ms`);
245
246
  }
@@ -400,4 +401,4 @@ ${preData ? `\n已获取数据:${preData}\n` : ''}`;
400
401
  }
401
402
  }
402
403
  }
403
- //# sourceMappingURL=zhin-agent.js.map
404
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/zhin-agent/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * ZhinAgent System Prompt builder + message helpers
3
3
  */
4
- import type { ContentPart } from './types.js';
5
- import type { SkillFeature } from '../built/skill.js';
6
- import type { ZhinAgentConfig } from './zhin-agent-config.js';
7
- import type { ToolContext } from '../types.js';
8
- import type { ChatMessage } from './types.js';
4
+ import type { ContentPart } from '../types.js';
5
+ import type { SkillFeature } from '../../built/skill.js';
6
+ import type { ZhinAgentConfig } from './config.js';
7
+ import type { ToolContext } from '../../types.js';
8
+ import type { ChatMessage } from '../types.js';
9
9
  export declare function contentToText(c: string | ContentPart[]): string;
10
10
  export declare function buildUserMessageWithHistory(history: ChatMessage[], currentContent: string): string;
11
11
  export declare function buildEnhancedPersona(config: Required<ZhinAgentConfig>, profileSummary: string, toneHint: string): string;
@@ -18,4 +18,4 @@ export interface RichSystemPromptContext {
18
18
  bootstrapContext: string;
19
19
  }
20
20
  export declare function buildRichSystemPrompt(ctx: RichSystemPromptContext): string;
21
- //# sourceMappingURL=zhin-agent-prompt.d.ts.map
21
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/ai/zhin-agent/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,MAAM,CAG/D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAQlG;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,EACjC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAiE1E"}
@@ -2,8 +2,8 @@
2
2
  * ZhinAgent System Prompt builder + message helpers
3
3
  */
4
4
  import * as path from 'path';
5
- import { SECTION_SEP, HISTORY_CONTEXT_MARKER, CURRENT_MESSAGE_MARKER } from './zhin-agent-config.js';
6
- import { getFileMemoryContext } from './bootstrap.js';
5
+ import { SECTION_SEP, HISTORY_CONTEXT_MARKER, CURRENT_MESSAGE_MARKER } from './config.js';
6
+ import { getFileMemoryContext } from '../bootstrap.js';
7
7
  export function contentToText(c) {
8
8
  if (typeof c === 'string')
9
9
  return c;
@@ -108,4 +108,4 @@ export function buildRichSystemPrompt(ctx) {
108
108
  }
109
109
  return parts.filter(Boolean).join(SECTION_SEP);
110
110
  }
111
- //# sourceMappingURL=zhin-agent-prompt.js.map
111
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/ai/zhin-agent/prompt.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * ZhinAgent 工具收集 — 两级过滤 (Skill → Tool) + 技能支持工具注入
3
3
  */
4
- import type { Tool, ToolContext } from '../types.js';
5
- import type { SkillFeature } from '../built/skill.js';
6
- import type { AgentTool } from './types.js';
7
- import type { ZhinAgentConfig } from './zhin-agent-config.js';
4
+ import type { Tool, ToolContext } from '../../types.js';
5
+ import type { SkillFeature } from '../../built/skill.js';
6
+ import type { AgentTool } from '../types.js';
7
+ import type { ZhinAgentConfig } from './config.js';
8
8
  /**
9
9
  * Convert a Tool (with ToolContext) to an AgentTool, injecting context-provided parameters.
10
10
  */
@@ -19,4 +19,4 @@ export interface CollectToolsContext {
19
19
  * skill-support injection, and config-level allow/deny.
20
20
  */
21
21
  export declare function collectRelevantTools(message: string, context: ToolContext, externalTools: Tool[], ctx: CollectToolsContext): AgentTool[];
22
- //# sourceMappingURL=zhin-agent-tool-collector.d.ts.map
22
+ //# sourceMappingURL=tool-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-collector.d.ts","sourceRoot":"","sources":["../../../src/ai/zhin-agent/tool-collector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAiExE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,IAAI,EAAE,EACrB,GAAG,EAAE,mBAAmB,GACvB,SAAS,EAAE,CA+Ib"}
@@ -2,8 +2,8 @@
2
2
  * ZhinAgent 工具收集 — 两级过滤 (Skill → Tool) + 技能支持工具注入
3
3
  */
4
4
  import { Logger } from '@zhin.js/logger';
5
- import { Agent } from './agent.js';
6
- import { PERM_MAP } from './zhin-agent-config.js';
5
+ import { Agent } from '../agent.js';
6
+ import { PERM_MAP } from './config.js';
7
7
  const logger = new Logger(null, 'ZhinAgent:ToolCollector');
8
8
  /**
9
9
  * Convert a Tool (with ToolContext) to an AgentTool, injecting context-provided parameters.
@@ -215,4 +215,4 @@ export function collectRelevantTools(message, context, externalTools, ctx) {
215
215
  }
216
216
  return final;
217
217
  }
218
- //# sourceMappingURL=zhin-agent-tool-collector.js.map
218
+ //# sourceMappingURL=tool-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-collector.js","sourceRoot":"","sources":["../../../src/ai/zhin-agent/tool-collector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/core",
3
- "version": "1.0.35",
3
+ "version": "1.0.37",
4
4
  "description": "Zhin机器人核心框架",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -37,9 +37,9 @@
37
37
  "segment-matcher": "latest",
38
38
  "smol-toml": "^1.6.0",
39
39
  "yaml": "^2.3.4",
40
- "@zhin.js/database": "1.0.22",
41
- "@zhin.js/logger": "0.1.19",
42
- "@zhin.js/schema": "1.0.19"
40
+ "@zhin.js/database": "1.0.24",
41
+ "@zhin.js/logger": "0.1.21",
42
+ "@zhin.js/schema": "1.0.21"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^24.3.0",
package/src/ai/agent.ts CHANGED
@@ -161,10 +161,17 @@ export class Agent {
161
161
  }
162
162
 
163
163
  /**
164
- * 生成工具调用的去重 key
164
+ * 生成工具调用的去重 key(规范化参数以避免 "" vs "{}" 等差异)
165
165
  */
166
166
  private static toolCallKey(name: string, args: string): string {
167
- return `${name}::${args}`;
167
+ let normalized: string;
168
+ try {
169
+ const parsed = JSON.parse(args || '{}');
170
+ normalized = JSON.stringify(parsed, Object.keys(parsed).sort());
171
+ } catch {
172
+ normalized = args || '';
173
+ }
174
+ return `${name}::${normalized}`;
168
175
  }
169
176
 
170
177
  /**
@@ -472,10 +479,9 @@ export class Agent {
472
479
  );
473
480
 
474
481
  if (results.length === 0) {
475
- // 本轮全部重复
476
482
  consecutiveDuplicateRounds++;
483
+ logger.warn(`[第${state.iterations}轮] 检测到重复工具调用,已跳过执行,强制下轮文本回答`);
477
484
 
478
- // 为每个重复的 tool_call 补上 tool 消息,保持协议完整性
479
485
  for (const tc of choice.message.tool_calls) {
480
486
  const key = Agent.toolCallKey(tc.function.name, tc.function.arguments);
481
487
  const previous = state.toolCalls.find(
@@ -489,7 +495,11 @@ export class Agent {
489
495
  });
490
496
  }
491
497
 
492
- // 下一轮将 forceAnswer=true,通过不传 tools 参数来禁止工具调用
498
+ state.messages.push({
499
+ role: 'system',
500
+ content: '你已经获取了所需的全部信息,请直接用自然语言回答用户,不要再调用工具。',
501
+ });
502
+
493
503
  continue;
494
504
  }
495
505
 
@@ -507,6 +517,15 @@ export class Agent {
507
517
  });
508
518
  }
509
519
 
520
+ // 如果工具返回的是最终结果(非查询中间步骤),引导模型直接回复
521
+ const allSucceeded = results.every(r => !r.result.startsWith('{'));
522
+ if (allSucceeded && results.length > 0) {
523
+ state.messages.push({
524
+ role: 'system',
525
+ content: '工具已返回结果。如果信息足够回答用户问题,请直接用自然语言回答,不要重复调用相同工具。',
526
+ });
527
+ }
528
+
510
529
  continue;
511
530
  }
512
531
 
package/src/ai/index.ts CHANGED
@@ -50,16 +50,16 @@ export type {
50
50
  } from './context-manager.js';
51
51
 
52
52
  // ── ZhinAgent ──
53
- export { ZhinAgent } from './zhin-agent.js';
54
- export type { ZhinAgentConfig, OnChunkCallback } from './zhin-agent.js';
53
+ export { ZhinAgent } from './zhin-agent/index.js';
54
+ export type { ZhinAgentConfig, OnChunkCallback } from './zhin-agent/index.js';
55
55
 
56
56
  // ── ZhinAgent sub-modules (for advanced consumers) ──
57
- export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } from './zhin-agent-config.js';
58
- export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS } from './zhin-agent-exec-policy.js';
59
- export { collectRelevantTools, toAgentTool } from './zhin-agent-tool-collector.js';
60
- export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText } from './zhin-agent-prompt.js';
61
- export type { RichSystemPromptContext } from './zhin-agent-prompt.js';
62
- export { createChatHistoryTool, createUserProfileTool, createScheduleFollowUpTool, createSpawnTaskTool } from './zhin-agent-builtin-tools.js';
57
+ export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } from './zhin-agent/config.js';
58
+ export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS } from './zhin-agent/exec-policy.js';
59
+ export { collectRelevantTools, toAgentTool } from './zhin-agent/tool-collector.js';
60
+ export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText } from './zhin-agent/prompt.js';
61
+ export type { RichSystemPromptContext } from './zhin-agent/prompt.js';
62
+ export { createChatHistoryTool, createUserProfileTool, createScheduleFollowUpTool, createSpawnTaskTool } from './zhin-agent/builtin-tools.js';
63
63
 
64
64
  // ── Conversation Memory ──
65
65
  export {
package/src/ai/init.ts CHANGED
@@ -28,9 +28,9 @@ import {
28
28
  import type { MessageDispatcherService } from '../built/dispatcher.js';
29
29
  import type { SkillFeature } from '../built/skill.js';
30
30
  import { AIService } from './service.js';
31
- import { ZhinAgent } from './zhin-agent.js';
31
+ import { ZhinAgent } from './zhin-agent/index.js';
32
32
  import { createBuiltinTools, discoverWorkspaceSkills, loadSoulPersona, loadAlwaysSkillsContent, buildSkillsSummaryXML } from './builtin-tools.js';
33
- import { resolveSkillInstructionMaxChars, DEFAULT_CONFIG } from './zhin-agent-config.js';
33
+ import { resolveSkillInstructionMaxChars, DEFAULT_CONFIG } from './zhin-agent/config.js';
34
34
  import { loadBootstrapFiles, buildContextFiles, buildBootstrapContextSection, loadToolsGuide } from './bootstrap.js';
35
35
  import { triggerAIHook, createAIHookEvent } from './hooks.js';
36
36
  import { SessionManager, createDatabaseSessionManager } from './session.js';
@@ -209,7 +209,7 @@ export function initAIModule(): void {
209
209
  // 子任务管理器:让 AI 可以 spawn 后台子 agent 异步执行复杂任务
210
210
  agent.initSubagentManager(() => {
211
211
  const modelName = provider.models[0] || '';
212
- const fullConfig = { ...DEFAULT_CONFIG, ...agentConfig } as Required<import('./zhin-agent-config.js').ZhinAgentConfig>;
212
+ const fullConfig = { ...DEFAULT_CONFIG, ...agentConfig } as Required<import('./zhin-agent/config.js').ZhinAgentConfig>;
213
213
  const zhinTools = createBuiltinTools({ skillInstructionMaxChars: resolveSkillInstructionMaxChars(fullConfig, modelName) });
214
214
  return zhinTools.map(zt => {
215
215
  const t = zt.toTool();
@@ -595,7 +595,7 @@ export function initAIModule(): void {
595
595
 
596
596
  const provider = ai.getProvider();
597
597
  const agentCfg = ai.getAgentConfig();
598
- const fullCfg = { ...DEFAULT_CONFIG, ...agentCfg } as Required<import('./zhin-agent-config.js').ZhinAgentConfig>;
598
+ const fullCfg = { ...DEFAULT_CONFIG, ...agentCfg } as Required<import('./zhin-agent/config.js').ZhinAgentConfig>;
599
599
  const modelName = provider.models[0] || '';
600
600
  const builtinTools = createBuiltinTools({ skillInstructionMaxChars: resolveSkillInstructionMaxChars(fullCfg, modelName) });
601
601
  const disposers: (() => void)[] = [];
@@ -12,8 +12,8 @@ import { randomUUID } from 'crypto';
12
12
  import { Logger } from '@zhin.js/logger';
13
13
  import type { AIProvider, AgentTool } from './types.js';
14
14
  import { createAgent } from './agent.js';
15
- import type { ZhinAgentConfig } from './zhin-agent-config.js';
16
- import { applyExecPolicyToTools } from './zhin-agent-exec-policy.js';
15
+ import type { ZhinAgentConfig } from './zhin-agent/config.js';
16
+ import { applyExecPolicyToTools } from './zhin-agent/exec-policy.js';
17
17
 
18
18
  const logger = new Logger(null, 'Subagent');
19
19
 
@@ -5,12 +5,12 @@
5
5
  * 由 ZhinAgent.process() 按需创建并注入到工具列表中。
6
6
  */
7
7
 
8
- import type { ToolContext } from '../types.js';
9
- import type { AgentTool } from './types.js';
10
- import type { ConversationMemory } from './conversation-memory.js';
11
- import type { UserProfileStore } from './user-profile.js';
12
- import type { FollowUpManager } from './follow-up.js';
13
- import type { SubagentManager, SubagentOrigin } from './subagent.js';
8
+ import type { ToolContext } from '../../types.js';
9
+ import type { AgentTool } from '../types.js';
10
+ import type { ConversationMemory } from '../conversation-memory.js';
11
+ import type { UserProfileStore } from '../user-profile.js';
12
+ import type { FollowUpManager } from '../follow-up.js';
13
+ import type { SubagentManager, SubagentOrigin } from '../subagent.js';
14
14
 
15
15
  export function createChatHistoryTool(sessionId: string, memory: ConversationMemory): AgentTool {
16
16
  return {
@@ -2,8 +2,8 @@
2
2
  * ZhinAgent 配置、常量、类型定义
3
3
  */
4
4
 
5
- import type { RateLimitConfig } from './rate-limiter.js';
6
- import { DEFAULT_CONTEXT_TOKENS } from './compaction.js';
5
+ import type { RateLimitConfig } from '../rate-limiter.js';
6
+ import { DEFAULT_CONTEXT_TOKENS } from '../compaction.js';
7
7
 
8
8
  export type ModelSizeHint = 'small' | 'medium' | 'large';
9
9
 
@@ -2,14 +2,14 @@
2
2
  * ZhinAgent 执行策略 — bash 命令的安全检查与工具包装
3
3
  */
4
4
 
5
- import type { AgentTool } from './types.js';
6
- import type { ZhinAgentConfig } from './zhin-agent-config.js';
5
+ import type { AgentTool } from '../types.js';
6
+ import type { ZhinAgentConfig } from './config.js';
7
7
 
8
8
  // ── 预设命令白名单 ──────────────────────────────────────────────────
9
9
 
10
10
  const PRESET_READONLY = ['ls', 'cat', 'pwd', 'date', 'whoami', 'grep', 'find', 'head', 'tail', 'wc'];
11
11
  const PRESET_NETWORK = [...PRESET_READONLY, 'curl', 'wget', 'ping', 'dig'];
12
- const PRESET_DEVELOPMENT = [...PRESET_NETWORK, 'npm', 'npx', 'node', 'git', 'python', 'python3', 'pip', 'pnpm', 'yarn'];
12
+ const PRESET_DEVELOPMENT = [...PRESET_NETWORK, 'npm', 'npx', 'node', 'git', 'gh', 'python', 'python3', 'pip', 'pnpm', 'yarn'];
13
13
 
14
14
  export const EXEC_PRESETS: Record<string, string[]> = {
15
15
  readonly: PRESET_READONLY,
@@ -17,54 +17,54 @@
17
17
  */
18
18
 
19
19
  import { Logger } from '@zhin.js/logger';
20
- import type { Tool, ToolContext } from '../types.js';
21
- import type { SkillFeature } from '../built/skill.js';
20
+ import type { Tool, ToolContext } from '../../types.js';
21
+ import type { SkillFeature } from '../../built/skill.js';
22
22
  import type {
23
23
  AIProvider,
24
24
  AgentTool,
25
25
  ChatMessage,
26
26
  ContentPart,
27
- } from './types.js';
28
- import { createAgent } from './agent.js';
29
- import { SessionManager, createMemorySessionManager } from './session.js';
30
- import type { ContextManager } from './context-manager.js';
31
- import { ConversationMemory } from './conversation-memory.js';
32
- import type { OutputElement } from './output.js';
33
- import { parseOutput } from './output.js';
34
- import { UserProfileStore } from './user-profile.js';
35
- import { RateLimiter } from './rate-limiter.js';
36
- import { detectTone } from './tone-detector.js';
37
- import { FollowUpManager, type FollowUpSender } from './follow-up.js';
38
- import { SubagentManager, type SubagentResultSender } from './subagent.js';
27
+ } from '../types.js';
28
+ import { createAgent } from '../agent.js';
29
+ import { SessionManager, createMemorySessionManager } from '../session.js';
30
+ import type { ContextManager } from '../context-manager.js';
31
+ import { ConversationMemory } from '../conversation-memory.js';
32
+ import type { OutputElement } from '../output.js';
33
+ import { parseOutput } from '../output.js';
34
+ import { UserProfileStore } from '../user-profile.js';
35
+ import { RateLimiter } from '../rate-limiter.js';
36
+ import { detectTone } from '../tone-detector.js';
37
+ import { FollowUpManager, type FollowUpSender } from '../follow-up.js';
38
+ import { SubagentManager, type SubagentResultSender } from '../subagent.js';
39
39
  import {
40
40
  pruneHistoryForContext,
41
41
  DEFAULT_CONTEXT_TOKENS,
42
- } from './compaction.js';
43
- import { triggerAIHook, createAIHookEvent } from './hooks.js';
42
+ } from '../compaction.js';
43
+ import { triggerAIHook, createAIHookEvent } from '../hooks.js';
44
44
 
45
- // ── Extracted modules ───────────────────────────────────────────────
45
+ // ── Sub-modules ─────────────────────────────────────────────────────
46
46
  import {
47
47
  type ZhinAgentConfig,
48
48
  type OnChunkCallback,
49
49
  DEFAULT_CONFIG,
50
- } from './zhin-agent-config.js';
51
- import { applyExecPolicyToTools } from './zhin-agent-exec-policy.js';
52
- import { collectRelevantTools } from './zhin-agent-tool-collector.js';
50
+ } from './config.js';
51
+ import { applyExecPolicyToTools } from './exec-policy.js';
52
+ import { collectRelevantTools } from './tool-collector.js';
53
53
  import {
54
54
  buildEnhancedPersona,
55
55
  buildContextHint,
56
56
  buildRichSystemPrompt,
57
57
  buildUserMessageWithHistory,
58
- } from './zhin-agent-prompt.js';
58
+ } from './prompt.js';
59
59
  import {
60
60
  createChatHistoryTool,
61
61
  createUserProfileTool,
62
62
  createScheduleFollowUpTool,
63
63
  createSpawnTaskTool,
64
- } from './zhin-agent-builtin-tools.js';
64
+ } from './builtin-tools.js';
65
65
 
66
66
  // Re-export public types for backward compat
67
- export type { ZhinAgentConfig, OnChunkCallback } from './zhin-agent-config.js';
67
+ export type { ZhinAgentConfig, OnChunkCallback } from './config.js';
68
68
 
69
69
  const logger = new Logger(null, 'ZhinAgent');
70
70
  const now = () => performance.now();
@@ -259,6 +259,7 @@ export class ZhinAgent {
259
259
 
260
260
  // 3. No tools → chat path
261
261
  if (allTools.length === 0) {
262
+ logger.info(`[System Prompt] chat-path: ${personaEnhanced.length} chars ≈ ${Math.ceil(personaEnhanced.length / 2.5)} tokens`);
262
263
  logger.debug(`[闲聊路径] 过滤=${filterMs}ms, 记忆=${memMs}ms (${historyMessages.length}条), 0 工具`);
263
264
  const tLLM = now();
264
265
  const reply = await this.streamChatWithHistory(content, personaEnhanced, historyMessages, onChunk);
@@ -312,11 +313,11 @@ export class ZhinAgent {
312
313
  const tLLM = now();
313
314
  const prompt = `${personaEnhanced}
314
315
 
315
- Pre-fetched data for the user's question:
316
+ 以下是根据用户问题自动获取的实时数据:
316
317
  ${preData}
317
318
 
318
- Answer based on the data above. Be natural, highlight key points.`;
319
- logger.info(`[系统提示] 快速路径: ${prompt.length} 字符 ≈ ${Math.ceil(prompt.length / 2.5)} tokens`);
319
+ 请基于以上数据,用自然流畅的中文回答用户问题。突出重点,适当使用 emoji。`;
320
+ logger.info(`[System Prompt] fast-path: ${prompt.length} chars ≈ ${Math.ceil(prompt.length / 2.5)} tokens`);
320
321
  reply = await this.streamChatWithHistory(content, prompt, historyMessages, onChunk);
321
322
  logger.info(`[快速路径] 过滤=${filterMs}ms, 记忆=${memMs}ms, LLM=${(now() - tLLM).toFixed(0)}ms, 总=${(now() - t0).toFixed(0)}ms`);
322
323
  } else {
@@ -509,4 +510,3 @@ ${preData ? `\n已获取数据:${preData}\n` : ''}`;
509
510
  }
510
511
  }
511
512
  }
512
-
@@ -3,13 +3,13 @@
3
3
  */
4
4
 
5
5
  import * as path from 'path';
6
- import type { ContentPart } from './types.js';
7
- import type { SkillFeature } from '../built/skill.js';
8
- import type { ZhinAgentConfig } from './zhin-agent-config.js';
9
- import type { ToolContext } from '../types.js';
10
- import { SECTION_SEP, HISTORY_CONTEXT_MARKER, CURRENT_MESSAGE_MARKER } from './zhin-agent-config.js';
11
- import type { ChatMessage } from './types.js';
12
- import { getFileMemoryContext } from './bootstrap.js';
6
+ import type { ContentPart } from '../types.js';
7
+ import type { SkillFeature } from '../../built/skill.js';
8
+ import type { ZhinAgentConfig } from './config.js';
9
+ import type { ToolContext } from '../../types.js';
10
+ import { SECTION_SEP, HISTORY_CONTEXT_MARKER, CURRENT_MESSAGE_MARKER } from './config.js';
11
+ import type { ChatMessage } from '../types.js';
12
+ import { getFileMemoryContext } from '../bootstrap.js';
13
13
 
14
14
  export function contentToText(c: string | ContentPart[]): string {
15
15
  if (typeof c === 'string') return c;