@zhin.js/core 1.0.32 → 1.0.34

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 (113) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/ai/agent.d.ts.map +1 -1
  3. package/lib/ai/agent.js +15 -2
  4. package/lib/ai/agent.js.map +1 -1
  5. package/lib/ai/bootstrap.d.ts +11 -2
  6. package/lib/ai/bootstrap.d.ts.map +1 -1
  7. package/lib/ai/bootstrap.js +46 -2
  8. package/lib/ai/bootstrap.js.map +1 -1
  9. package/lib/ai/builtin-tools.d.ts +28 -6
  10. package/lib/ai/builtin-tools.d.ts.map +1 -1
  11. package/lib/ai/builtin-tools.js +265 -76
  12. package/lib/ai/builtin-tools.js.map +1 -1
  13. package/lib/ai/index.d.ts +9 -1
  14. package/lib/ai/index.d.ts.map +1 -1
  15. package/lib/ai/index.js +8 -0
  16. package/lib/ai/index.js.map +1 -1
  17. package/lib/ai/init.d.ts.map +1 -1
  18. package/lib/ai/init.js +84 -3
  19. package/lib/ai/init.js.map +1 -1
  20. package/lib/ai/providers/anthropic.d.ts +7 -0
  21. package/lib/ai/providers/anthropic.d.ts.map +1 -1
  22. package/lib/ai/providers/anthropic.js +3 -0
  23. package/lib/ai/providers/anthropic.js.map +1 -1
  24. package/lib/ai/providers/ollama.d.ts +10 -0
  25. package/lib/ai/providers/ollama.d.ts.map +1 -1
  26. package/lib/ai/providers/ollama.js +11 -3
  27. package/lib/ai/providers/ollama.js.map +1 -1
  28. package/lib/ai/providers/openai.d.ts +7 -0
  29. package/lib/ai/providers/openai.d.ts.map +1 -1
  30. package/lib/ai/providers/openai.js +3 -0
  31. package/lib/ai/providers/openai.js.map +1 -1
  32. package/lib/ai/service.d.ts +4 -0
  33. package/lib/ai/service.d.ts.map +1 -1
  34. package/lib/ai/service.js +7 -0
  35. package/lib/ai/service.js.map +1 -1
  36. package/lib/ai/subagent.d.ts +50 -0
  37. package/lib/ai/subagent.d.ts.map +1 -0
  38. package/lib/ai/subagent.js +144 -0
  39. package/lib/ai/subagent.js.map +1 -0
  40. package/lib/ai/types.d.ts +25 -5
  41. package/lib/ai/types.d.ts.map +1 -1
  42. package/lib/ai/zhin-agent-builtin-tools.d.ts +17 -0
  43. package/lib/ai/zhin-agent-builtin-tools.d.ts.map +1 -0
  44. package/lib/ai/zhin-agent-builtin-tools.js +220 -0
  45. package/lib/ai/zhin-agent-builtin-tools.js.map +1 -0
  46. package/lib/ai/zhin-agent-config.d.ts +54 -0
  47. package/lib/ai/zhin-agent-config.d.ts.map +1 -0
  48. package/lib/ai/zhin-agent-config.js +76 -0
  49. package/lib/ai/zhin-agent-config.js.map +1 -0
  50. package/lib/ai/zhin-agent-exec-policy.d.ts +20 -0
  51. package/lib/ai/zhin-agent-exec-policy.d.ts.map +1 -0
  52. package/lib/ai/zhin-agent-exec-policy.js +71 -0
  53. package/lib/ai/zhin-agent-exec-policy.js.map +1 -0
  54. package/lib/ai/zhin-agent-prompt.d.ts +21 -0
  55. package/lib/ai/zhin-agent-prompt.d.ts.map +1 -0
  56. package/lib/ai/zhin-agent-prompt.js +116 -0
  57. package/lib/ai/zhin-agent-prompt.js.map +1 -0
  58. package/lib/ai/zhin-agent-tool-collector.d.ts +22 -0
  59. package/lib/ai/zhin-agent-tool-collector.d.ts.map +1 -0
  60. package/lib/ai/zhin-agent-tool-collector.js +218 -0
  61. package/lib/ai/zhin-agent-tool-collector.js.map +1 -0
  62. package/lib/ai/zhin-agent.d.ts +11 -155
  63. package/lib/ai/zhin-agent.d.ts.map +1 -1
  64. package/lib/ai/zhin-agent.js +84 -684
  65. package/lib/ai/zhin-agent.js.map +1 -1
  66. package/lib/component.d.ts.map +1 -1
  67. package/lib/component.js +19 -19
  68. package/lib/component.js.map +1 -1
  69. package/lib/index.d.ts +1 -0
  70. package/lib/index.d.ts.map +1 -1
  71. package/lib/index.js +1 -0
  72. package/lib/index.js.map +1 -1
  73. package/lib/scheduler/index.d.ts +10 -0
  74. package/lib/scheduler/index.d.ts.map +1 -0
  75. package/lib/scheduler/index.js +12 -0
  76. package/lib/scheduler/index.js.map +1 -0
  77. package/lib/scheduler/scheduler.d.ts +49 -0
  78. package/lib/scheduler/scheduler.d.ts.map +1 -0
  79. package/lib/scheduler/scheduler.js +352 -0
  80. package/lib/scheduler/scheduler.js.map +1 -0
  81. package/lib/scheduler/types.d.ts +71 -0
  82. package/lib/scheduler/types.d.ts.map +1 -0
  83. package/lib/scheduler/types.js +8 -0
  84. package/lib/scheduler/types.js.map +1 -0
  85. package/lib/tool-zod.d.ts +28 -0
  86. package/lib/tool-zod.d.ts.map +1 -0
  87. package/lib/tool-zod.js +98 -0
  88. package/lib/tool-zod.js.map +1 -0
  89. package/package.json +9 -4
  90. package/src/ai/agent.ts +15 -2
  91. package/src/ai/bootstrap.ts +48 -2
  92. package/src/ai/builtin-tools.ts +283 -75
  93. package/src/ai/index.ts +19 -1
  94. package/src/ai/init.ts +85 -3
  95. package/src/ai/providers/anthropic.ts +3 -0
  96. package/src/ai/providers/ollama.ts +13 -3
  97. package/src/ai/providers/openai.ts +3 -0
  98. package/src/ai/service.ts +8 -0
  99. package/src/ai/subagent.ts +209 -0
  100. package/src/ai/types.ts +29 -2
  101. package/src/ai/zhin-agent-builtin-tools.ts +247 -0
  102. package/src/ai/zhin-agent-config.ts +113 -0
  103. package/src/ai/zhin-agent-exec-policy.ts +78 -0
  104. package/src/ai/zhin-agent-prompt.ts +136 -0
  105. package/src/ai/zhin-agent-tool-collector.ts +243 -0
  106. package/src/ai/zhin-agent.ts +113 -791
  107. package/src/component.ts +29 -28
  108. package/src/index.ts +1 -0
  109. package/src/scheduler/index.ts +28 -0
  110. package/src/scheduler/scheduler.ts +372 -0
  111. package/src/scheduler/types.ts +74 -0
  112. package/src/tool-zod.ts +115 -0
  113. package/tests/ai/subagent.test.ts +270 -0
@@ -0,0 +1,218 @@
1
+ /**
2
+ * ZhinAgent 工具收集 — 两级过滤 (Skill → Tool) + 技能支持工具注入
3
+ */
4
+ import { Logger } from '@zhin.js/logger';
5
+ import { Agent } from './agent.js';
6
+ import { PERM_MAP } from './zhin-agent-config.js';
7
+ const logger = new Logger(null, 'ZhinAgent:ToolCollector');
8
+ /**
9
+ * Convert a Tool (with ToolContext) to an AgentTool, injecting context-provided parameters.
10
+ */
11
+ export function toAgentTool(tool, context) {
12
+ const originalExecute = tool.execute;
13
+ const contextInjections = [];
14
+ let cleanParameters = tool.parameters;
15
+ if (context && tool.parameters?.properties) {
16
+ const props = tool.parameters.properties;
17
+ const filteredProps = {};
18
+ const filteredRequired = [];
19
+ for (const [key, schema] of Object.entries(props)) {
20
+ if (schema.contextKey && context[schema.contextKey] != null) {
21
+ contextInjections.push({
22
+ paramName: key,
23
+ contextKey: schema.contextKey,
24
+ paramType: schema.type || 'string',
25
+ });
26
+ }
27
+ else {
28
+ filteredProps[key] = schema;
29
+ if (tool.parameters.required?.includes(key)) {
30
+ filteredRequired.push(key);
31
+ }
32
+ }
33
+ }
34
+ if (contextInjections.length > 0) {
35
+ cleanParameters = {
36
+ ...tool.parameters,
37
+ properties: filteredProps,
38
+ required: filteredRequired.length > 0 ? filteredRequired : undefined,
39
+ };
40
+ }
41
+ }
42
+ const at = {
43
+ name: tool.name,
44
+ description: tool.description,
45
+ parameters: cleanParameters,
46
+ execute: context
47
+ ? (args) => {
48
+ const enrichedArgs = { ...args };
49
+ for (const { paramName, contextKey, paramType } of contextInjections) {
50
+ let value = context[contextKey];
51
+ if (paramType === 'number' && typeof value === 'string') {
52
+ value = Number(value);
53
+ }
54
+ else if (paramType === 'string' && typeof value !== 'string') {
55
+ value = String(value);
56
+ }
57
+ enrichedArgs[paramName] = value;
58
+ }
59
+ return originalExecute(enrichedArgs, context);
60
+ }
61
+ : originalExecute,
62
+ };
63
+ if (tool.tags?.length)
64
+ at.tags = tool.tags;
65
+ if (tool.keywords?.length)
66
+ at.keywords = tool.keywords;
67
+ if (tool.permissionLevel)
68
+ at.permissionLevel = PERM_MAP[tool.permissionLevel] ?? 0;
69
+ if (tool.preExecutable)
70
+ at.preExecutable = true;
71
+ if (tool.kind)
72
+ at.kind = tool.kind;
73
+ return at;
74
+ }
75
+ /**
76
+ * Two-level tool collection: Skill → Tool filtering, dedup, relevance ranking,
77
+ * skill-support injection, and config-level allow/deny.
78
+ */
79
+ export function collectRelevantTools(message, context, externalTools, ctx) {
80
+ const { config, skillRegistry, externalRegistered } = ctx;
81
+ const callerPerm = context.senderPermissionLevel
82
+ ? (PERM_MAP[context.senderPermissionLevel] ?? 0)
83
+ : (context.isOwner ? 4 : context.isBotAdmin ? 3 : context.isGroupOwner ? 2 : context.isGroupAdmin ? 1 : 0);
84
+ const collected = [];
85
+ const collectedNames = new Set();
86
+ // 0. Detect if user mentions a known skill name
87
+ let mentionedSkill = null;
88
+ if (skillRegistry && skillRegistry.size > 0) {
89
+ const msgLower = message.toLowerCase();
90
+ for (const skill of skillRegistry.getAll()) {
91
+ if (msgLower.includes(skill.name.toLowerCase())) {
92
+ mentionedSkill = skill.name;
93
+ logger.debug(`[技能检测] 用户提到技能: ${mentionedSkill}`);
94
+ break;
95
+ }
96
+ }
97
+ }
98
+ if (mentionedSkill) {
99
+ const activateSkillTool = externalTools.find(t => t.name === 'activate_skill');
100
+ if (activateSkillTool) {
101
+ const toolPerm = activateSkillTool.permissionLevel ? (PERM_MAP[activateSkillTool.permissionLevel] ?? 0) : 0;
102
+ if (toolPerm <= callerPerm) {
103
+ collected.push(toAgentTool(activateSkillTool, context));
104
+ collectedNames.add('activate_skill');
105
+ logger.debug(`[技能激活] 已提前加入 activate_skill 工具(优先级最高)`);
106
+ }
107
+ }
108
+ }
109
+ // 1. SkillRegistry two-level filter
110
+ if (skillRegistry) {
111
+ const skills = skillRegistry.search(message, { maxResults: config.maxSkills });
112
+ const skillStr = skills.length > 0
113
+ ? skills.map(s => `${s.name}(${s.tools?.length || 0}工具)`).join(', ')
114
+ : '(无匹配技能)';
115
+ logger.debug(`[Skill 匹配] ${skillStr}`);
116
+ for (const skill of skills) {
117
+ for (const tool of skill.tools) {
118
+ if (tool.platforms?.length && context.platform && !tool.platforms.includes(context.platform))
119
+ continue;
120
+ if (tool.scopes?.length && context.scope && !tool.scopes.includes(context.scope))
121
+ continue;
122
+ const toolPerm = tool.permissionLevel ? (PERM_MAP[tool.permissionLevel] ?? 0) : 0;
123
+ if (toolPerm > callerPerm)
124
+ continue;
125
+ if (collectedNames.has(tool.name))
126
+ continue;
127
+ collected.push(toAgentTool(tool, context));
128
+ collectedNames.add(tool.name);
129
+ }
130
+ }
131
+ }
132
+ // 2. External tools
133
+ let deduped = 0;
134
+ for (const tool of externalTools) {
135
+ if (tool.name.startsWith('cmd_') || tool.name.startsWith('process_'))
136
+ continue;
137
+ const toolPerm = tool.permissionLevel ? (PERM_MAP[tool.permissionLevel] ?? 0) : 0;
138
+ if (toolPerm > callerPerm)
139
+ continue;
140
+ if (collectedNames.has(tool.name)) {
141
+ deduped++;
142
+ continue;
143
+ }
144
+ collected.push(toAgentTool(tool, context));
145
+ collectedNames.add(tool.name);
146
+ }
147
+ if (deduped > 0) {
148
+ logger.debug(`externalTools 去重: 跳过 ${deduped} 个已由 Skill 提供的工具`);
149
+ }
150
+ // 3. Externally registered tools
151
+ for (const tool of externalRegistered.values()) {
152
+ if (tool.permissionLevel != null && tool.permissionLevel > callerPerm)
153
+ continue;
154
+ if (collectedNames.has(tool.name))
155
+ continue;
156
+ collected.push(tool);
157
+ collectedNames.add(tool.name);
158
+ }
159
+ // 4. Relevance filtering
160
+ const filtered = Agent.filterTools(message, collected, {
161
+ callerPermissionLevel: callerPerm,
162
+ maxTools: config.maxTools,
163
+ minScore: 0.3,
164
+ });
165
+ // Prioritize activate_skill when a skill name was detected
166
+ if (mentionedSkill && filtered.length > 0) {
167
+ const activateSkillIdx = filtered.findIndex(t => t.name === 'activate_skill');
168
+ if (activateSkillIdx > 0) {
169
+ const activateSkillTool = filtered[activateSkillIdx];
170
+ filtered.splice(activateSkillIdx, 1);
171
+ filtered.unshift(activateSkillTool);
172
+ logger.debug(`[工具排序] activate_skill 提升至首位(因检测到技能: ${mentionedSkill})`);
173
+ }
174
+ }
175
+ // Skill support tools injection
176
+ const SKILL_SUPPORT_TOOLS = ['bash', 'web_fetch', 'web_search', 'write_file', 'read_file'];
177
+ const hasSkillTool = filtered.some(t => t.name === 'activate_skill' || t.name === 'install_skill');
178
+ if (hasSkillTool) {
179
+ const filteredNames = new Set(filtered.map(t => t.name));
180
+ for (const supportName of SKILL_SUPPORT_TOOLS) {
181
+ if (filteredNames.has(supportName))
182
+ continue;
183
+ const supportTool = collected.find(t => t.name === supportName);
184
+ if (supportTool) {
185
+ filtered.push(supportTool);
186
+ filteredNames.add(supportName);
187
+ }
188
+ }
189
+ logger.debug(`[技能支持] 已补充工具: ${SKILL_SUPPORT_TOOLS.filter(n => filteredNames.has(n)).join(', ')}`);
190
+ }
191
+ // 5. Config-level allow/deny
192
+ let final = filtered;
193
+ const allowed = config.allowedTools;
194
+ const disabled = config.disabledTools ?? [];
195
+ if (allowed && allowed.length > 0) {
196
+ const allowSet = new Set(allowed.map(n => n.toLowerCase()));
197
+ final = final.filter(t => allowSet.has(t.name.toLowerCase()));
198
+ if (final.length < filtered.length) {
199
+ logger.debug(`[工具开关] allowedTools 限制: ${filtered.length} -> ${final.length}`);
200
+ }
201
+ }
202
+ else if (disabled.length > 0) {
203
+ const disabledSet = new Set(disabled.map(n => n.toLowerCase()));
204
+ final = final.filter(t => !disabledSet.has(t.name.toLowerCase()));
205
+ if (final.length < filtered.length) {
206
+ logger.debug(`[工具开关] disabledTools 过滤: ${filtered.length} -> ${final.length}`);
207
+ }
208
+ }
209
+ if (final.length > 0) {
210
+ logger.debug(`[工具收集] 收集了 ${collected.length} 个工具,过滤后 ${final.length} 个,` +
211
+ `用户消息相关性最高的: ${final.slice(0, 3).map(t => t.name).join(', ')}`);
212
+ }
213
+ else {
214
+ logger.debug(`[工具收集] 收集了 ${collected.length} 个工具,但过滤后 0 个(没有超过相关性阈值的)`);
215
+ }
216
+ return final;
217
+ }
218
+ //# sourceMappingURL=zhin-agent-tool-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zhin-agent-tool-collector.js","sourceRoot":"","sources":["../../src/ai/zhin-agent-tool-collector.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * ZhinAgent — 全局持久 AI 大脑
3
3
  *
4
- * 取代旧的 AIService.process() 临时创建 Agent 的方式。
5
- *
6
4
  * 核心能力:
7
5
  * 1. 全局单例,应用生命周期内常驻
8
6
  * 2. Skill 感知:两级过滤 Skill → Tool
@@ -24,55 +22,10 @@ import { SessionManager } from './session.js';
24
22
  import type { ContextManager } from './context-manager.js';
25
23
  import type { OutputElement } from './output.js';
26
24
  import { UserProfileStore } from './user-profile.js';
27
- import { type RateLimitConfig } from './rate-limiter.js';
28
25
  import { type FollowUpSender } from './follow-up.js';
29
- export interface ZhinAgentConfig {
30
- /** 默认系统人格 */
31
- persona?: string;
32
- /** 最大工具调用轮数 */
33
- maxIterations?: number;
34
- /** 单次请求超时 (ms) */
35
- timeout?: number;
36
- /** 预执行超时 (ms) */
37
- preExecTimeout?: number;
38
- /** Skill 选择最大数量 */
39
- maxSkills?: number;
40
- /** Tool 选择最大数量 */
41
- maxTools?: number;
42
- /** 一个话题至少持续多少轮才触发摘要(默认 5) */
43
- minTopicRounds?: number;
44
- /** 滑动窗口大小:最近 N 轮消息(默认 5) */
45
- slidingWindowSize?: number;
46
- /** 话题切换检测阈值(0-1,值越低越敏感,默认 0.15) */
47
- topicChangeThreshold?: number;
48
- /** 速率限制配置 */
49
- rateLimit?: RateLimitConfig;
50
- /** 是否启用情绪感知(默认 true) */
51
- toneAwareness?: boolean;
52
- /** 视觉模型名称(如 llava, bakllava),留空则不启用视觉 */
53
- visionModel?: string;
54
- /** 上下文窗口 token 数(默认 128000) */
55
- contextTokens?: number;
56
- /** 历史记录最大占比(默认 0.5 = 50%) */
57
- maxHistoryShare?: number;
58
- /** 禁用的工具名列表(来自配置,这些工具不会下发给 AI) */
59
- disabledTools?: string[];
60
- /** 仅允许的工具名列表;若设置则只下发列表中的工具(与 disabledTools 二选一,allowedTools 优先) */
61
- allowedTools?: string[];
62
- /** bash 执行策略:deny=禁止,allowlist=仅允许列表内,full=不限制 */
63
- execSecurity?: 'deny' | 'allowlist' | 'full';
64
- /** allowlist 模式下允许的命令(正则字符串) */
65
- execAllowlist?: string[];
66
- /** allowlist 未命中时 true=需审批(当前为拒绝并提示),false=直接拒绝 */
67
- execAsk?: boolean;
68
- }
69
- /**
70
- * 流式输出回调 — 适配器可通过此回调实时更新消息
71
- *
72
- * @param chunk 增量文本片段
73
- * @param full 到目前为止的完整文本
74
- */
75
- export type OnChunkCallback = (chunk: string, full: string) => void;
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';
76
29
  export declare class ZhinAgent {
77
30
  private provider;
78
31
  private config;
@@ -84,127 +37,30 @@ export declare class ZhinAgent {
84
37
  private userProfiles;
85
38
  private rateLimiter;
86
39
  private followUps;
87
- /** 引导文件上下文(SOUL.md + TOOLS.md + AGENTS.md) */
40
+ private subagentManager;
88
41
  private bootstrapContext;
42
+ private activeSkillsContext;
43
+ private skillsSummaryXML;
89
44
  constructor(provider: AIProvider, config?: ZhinAgentConfig);
90
45
  setSkillRegistry(registry: SkillFeature): void;
91
46
  setSessionManager(manager: SessionManager): void;
92
47
  setContextManager(manager: ContextManager): void;
93
- /** 将 ConversationMemory 升级为数据库存储 */
94
48
  upgradeMemoryToDatabase(msgModel: any, sumModel: any): void;
95
- /** 将 UserProfileStore 升级为数据库存储 */
96
49
  upgradeProfilesToDatabase(model: any): void;
97
- /** 将 FollowUpManager 升级为数据库存储 */
98
50
  upgradeFollowUpsToDatabase(model: any): void;
99
- /** 注入提醒消息发送回调(由 init.ts 在适配器就绪后调用) */
100
51
  setFollowUpSender(sender: FollowUpSender): void;
101
- /**
102
- * 从数据库恢复未完成的跟进任务(启动时调用)
103
- * @returns 恢复的任务数量
104
- */
105
52
  restoreFollowUps(): Promise<number>;
106
- /** 获取 UserProfileStore(用于外部注册) */
53
+ initSubagentManager(createTools: () => AgentTool[]): void;
54
+ setSubagentSender(sender: SubagentResultSender): void;
55
+ getSubagentManager(): SubagentManager | null;
107
56
  getUserProfiles(): UserProfileStore;
108
57
  registerTool(tool: AgentTool): () => void;
109
- /**
110
- * 注入引导文件上下文(SOUL.md + TOOLS.md + AGENTS.md 的合并内容)
111
- * 由 init.ts 在加载引导文件后调用
112
- */
113
58
  setBootstrapContext(context: string): void;
114
- /**
115
- * 处理用户消息 — 唯一的公开入口
116
- *
117
- * @param content 用户消息文本
118
- * @param context 工具上下文(平台、发送者、权限等)
119
- * @param externalTools 外部传入的工具列表
120
- * @param onChunk 流式输出回调(可选,适配器支持时传入)
121
- *
122
- * 路径选择策略(按开销从低到高):
123
- *
124
- * ┌─ 闲聊路径(最快)────────────────────────────────────────────┐
125
- * │ 工具过滤 = 0 → 仅 persona prompt → 流式 1 次 LLM 调用 │
126
- * └──────────────────────────────────────────────────────────────┘
127
- * ┌─ 快速路径(1 轮 LLM)───────────────────────────────────────┐
128
- * │ 全部命中无参数工具 → 预执行 → 数据注入 prompt → 1 次 LLM │
129
- * └──────────────────────────────────────────────────────────────┘
130
- * ┌─ Agent 路径(多轮 LLM)─────────────────────────────────────┐
131
- * │ 存在需参数工具 → Agent tool-calling → 多轮 LLM │
132
- * └──────────────────────────────────────────────────────────────┘
133
- */
59
+ setActiveSkillsContext(content: string): void;
60
+ setSkillsSummaryXML(xml: string): void;
134
61
  process(content: string, context: ToolContext, externalTools?: Tool[], onChunk?: OnChunkCallback): Promise<OutputElement[]>;
135
- /**
136
- * 处理多模态消息(图片+文字)
137
- *
138
- * 当用户发送图片时,走视觉模型路径。
139
- */
140
62
  processMultimodal(parts: ContentPart[], context: ToolContext, onChunk?: OnChunkCallback): Promise<OutputElement[]>;
141
- private buildEnhancedPersona;
142
- /**
143
- * 构建上下文提示 — 告诉 AI 当前身份和场景,帮助工具参数填充
144
- */
145
- private buildContextHint;
146
- private collectTools;
147
- /**
148
- * bash 执行策略检查:未通过时抛出 Error(供上层返回给用户)。
149
- */
150
- private checkExecPolicy;
151
- /**
152
- * 对传入的 Agent 工具列表应用 bash 执行策略(仅包装 bash 工具)。
153
- */
154
- private applyExecPolicyToTools;
155
- /**
156
- * 将 Tool 转为 AgentTool,注入 ToolContext 以确保执行时鉴权生效。
157
- *
158
- * 当参数定义了 contextKey 时:
159
- * 1. 从 AI 可见的 parameters 中移除该参数(减少 token、避免填错)
160
- * 2. 执行时自动从 ToolContext 注入对应值,并按声明类型做类型转换
161
- */
162
- private toAgentTool;
163
- /**
164
- * 构建结构化 System Prompt(借鉴 OpenClaw 的分段式设计)
165
- *
166
- * 段落结构:
167
- * 1. 身份 + 人格
168
- * 2. 安全准则
169
- * 3. 工具调用风格
170
- * 4. 技能列表(XML 格式)
171
- * 5. 当前时间
172
- * 6. 引导文件上下文(SOUL.md, TOOLS.md, AGENTS.md)
173
- */
174
- /**
175
- * 构建精简的 System Prompt — 专为小模型(8B/14B 级)优化
176
- *
177
- * 设计原则:
178
- * - 控制在 300-500 token 内,为工具定义和历史留足空间
179
- * - 规则用短句,不用段落
180
- * - 不重复,不举例(模型能从工具定义中推断用法)
181
- */
182
- private buildRichSystemPrompt;
183
- /**
184
- * 创建 chat_history 工具 — 让 AI 能主动搜索历史聊天记录
185
- */
186
- private createChatHistoryTool;
187
- /**
188
- * 创建 user_profile 工具 — 让 AI 读写用户画像
189
- */
190
- private createUserProfileTool;
191
- /**
192
- * 创建 schedule_followup 工具 — 让 AI 主动安排跟进
193
- *
194
- * 任务持久化到数据库,机器人重启后自动恢复。
195
- * 同一会话创建新提醒时,旧的 pending 提醒会被自动取消。
196
- */
197
- private createScheduleFollowUpTool;
198
- /**
199
- * 从 ConversationMemory 构建上下文
200
- */
201
63
  private buildHistoryMessages;
202
- /**
203
- * 流式聊天(带历史记忆) — 利用 chatStream 减少 TTFT
204
- *
205
- * 新增 onChunk 回调:每收到一个 token 立即通知调用方,
206
- * 支持适配器(Telegram/Discord/Kook)实时编辑消息。
207
- */
208
64
  private streamChatWithHistory;
209
65
  private saveToSession;
210
66
  private fallbackFormat;
@@ -1 +1 @@
1
- {"version":3,"file":"zhin-agent.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EAET,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAuCtE,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa;IACb,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,wBAAwB;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC7C,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4BD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAkBpE,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,8CAA8C;IAC9C,OAAO,CAAC,gBAAgB,CAAc;gBAE1B,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,eAAe;IAiB1D,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAK9C,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKhD,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKhD,oCAAoC;IACpC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI3D,kCAAkC;IAClC,yBAAyB,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAI3C,iCAAiC;IACjC,0BAA0B,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAI5C,sCAAsC;IACtC,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI/C;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzC,kCAAkC;IAClC,eAAe,IAAI,gBAAgB;IAInC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,IAAI;IAKzC;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO1C;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,aAAa,GAAE,IAAI,EAAO,EAC1B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC;IAqK3B;;;;OAIG;IACG,iBAAiB,CACrB,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC;IAsD3B,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,YAAY;IA2IpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAwEnB;;;;;;;;;;OAUG;IACH;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IA8C7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+E7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IA8DlC;;OAEG;YACW,oBAAoB;IAIlC;;;;;OAKG;YACW,qBAAqB;YAoCrB,aAAa;IAmB3B,OAAO,CAAC,cAAc;IAgBtB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;CAQhB"}
1
+ {"version":3,"file":"zhin-agent.d.ts","sourceRoot":"","sources":["../../src/ai/zhin-agent.ts"],"names":[],"mappings":"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"}