@zhin.js/agent 0.1.15 → 0.1.16
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.
- package/README.md +80 -43
- package/lib/builtin/activate-skill-tool.d.ts +21 -0
- package/lib/builtin/activate-skill-tool.d.ts.map +1 -0
- package/lib/builtin/activate-skill-tool.js +57 -0
- package/lib/builtin/activate-skill-tool.js.map +1 -0
- package/lib/builtin/ask-user-tool.d.ts +28 -0
- package/lib/builtin/ask-user-tool.d.ts.map +1 -0
- package/lib/builtin/ask-user-tool.js +182 -0
- package/lib/builtin/ask-user-tool.js.map +1 -0
- package/lib/builtin/bash-tool.d.ts +23 -0
- package/lib/builtin/bash-tool.d.ts.map +1 -0
- package/lib/builtin/bash-tool.js +64 -0
- package/lib/builtin/bash-tool.js.map +1 -0
- package/lib/builtin/bing-search-html.d.ts +37 -0
- package/lib/builtin/bing-search-html.d.ts.map +1 -0
- package/lib/builtin/bing-search-html.js +116 -0
- package/lib/builtin/bing-search-html.js.map +1 -0
- package/lib/builtin/builtin-base-tool.d.ts +25 -0
- package/lib/builtin/builtin-base-tool.d.ts.map +1 -0
- package/lib/builtin/builtin-base-tool.js +30 -0
- package/lib/builtin/builtin-base-tool.js.map +1 -0
- package/lib/builtin/edit-file-tool.d.ts +13 -0
- package/lib/builtin/edit-file-tool.d.ts.map +1 -0
- package/lib/builtin/edit-file-tool.js +81 -0
- package/lib/builtin/edit-file-tool.js.map +1 -0
- package/lib/builtin/file-edit-quote-utils.d.ts +24 -0
- package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -0
- package/lib/builtin/file-edit-quote-utils.js +81 -0
- package/lib/builtin/file-edit-quote-utils.js.map +1 -0
- package/lib/builtin/glob-tool.d.ts +23 -0
- package/lib/builtin/glob-tool.d.ts.map +1 -0
- package/lib/builtin/glob-tool.js +54 -0
- package/lib/builtin/glob-tool.js.map +1 -0
- package/lib/builtin/grep-tool.d.ts +23 -0
- package/lib/builtin/grep-tool.d.ts.map +1 -0
- package/lib/builtin/grep-tool.js +118 -0
- package/lib/builtin/grep-tool.js.map +1 -0
- package/lib/builtin/install-skill-tool.d.ts +24 -0
- package/lib/builtin/install-skill-tool.d.ts.map +1 -0
- package/lib/builtin/install-skill-tool.js +76 -0
- package/lib/builtin/install-skill-tool.js.map +1 -0
- package/lib/builtin/list-dir-tool.d.ts +13 -0
- package/lib/builtin/list-dir-tool.d.ts.map +1 -0
- package/lib/builtin/list-dir-tool.js +59 -0
- package/lib/builtin/list-dir-tool.js.map +1 -0
- package/lib/builtin/read-file-tool.d.ts +14 -0
- package/lib/builtin/read-file-tool.d.ts.map +1 -0
- package/lib/builtin/read-file-tool.js +77 -0
- package/lib/builtin/read-file-tool.js.map +1 -0
- package/lib/builtin/read-memory-tool.d.ts +14 -0
- package/lib/builtin/read-memory-tool.d.ts.map +1 -0
- package/lib/builtin/read-memory-tool.js +49 -0
- package/lib/builtin/read-memory-tool.js.map +1 -0
- package/lib/builtin/spawn-task-tool.d.ts +20 -0
- package/lib/builtin/spawn-task-tool.d.ts.map +1 -0
- package/lib/builtin/spawn-task-tool.js +57 -0
- package/lib/builtin/spawn-task-tool.js.map +1 -0
- package/lib/builtin/todo-read-tool.d.ts +14 -0
- package/lib/builtin/todo-read-tool.d.ts.map +1 -0
- package/lib/builtin/todo-read-tool.js +56 -0
- package/lib/builtin/todo-read-tool.js.map +1 -0
- package/lib/builtin/todo-write-tool.d.ts +14 -0
- package/lib/builtin/todo-write-tool.d.ts.map +1 -0
- package/lib/builtin/todo-write-tool.js +54 -0
- package/lib/builtin/todo-write-tool.js.map +1 -0
- package/lib/builtin/web-fetch-tool.d.ts +19 -0
- package/lib/builtin/web-fetch-tool.d.ts.map +1 -0
- package/lib/builtin/web-fetch-tool.js +89 -0
- package/lib/builtin/web-fetch-tool.js.map +1 -0
- package/lib/builtin/web-search-locale.d.ts +16 -0
- package/lib/builtin/web-search-locale.d.ts.map +1 -0
- package/lib/builtin/web-search-locale.js +73 -0
- package/lib/builtin/web-search-locale.js.map +1 -0
- package/lib/builtin/web-search-tool.d.ts +20 -0
- package/lib/builtin/web-search-tool.d.ts.map +1 -0
- package/lib/builtin/web-search-tool.js +105 -0
- package/lib/builtin/web-search-tool.js.map +1 -0
- package/lib/builtin/web-tool-utils.d.ts +4 -0
- package/lib/builtin/web-tool-utils.d.ts.map +1 -0
- package/lib/builtin/web-tool-utils.js +4 -0
- package/lib/builtin/web-tool-utils.js.map +1 -0
- package/lib/builtin/write-file-tool.d.ts +13 -0
- package/lib/builtin/write-file-tool.d.ts.map +1 -0
- package/lib/builtin/write-file-tool.js +51 -0
- package/lib/builtin/write-file-tool.js.map +1 -0
- package/lib/builtin/write-memory-tool.d.ts +14 -0
- package/lib/builtin/write-memory-tool.d.ts.map +1 -0
- package/lib/builtin/write-memory-tool.js +50 -0
- package/lib/builtin/write-memory-tool.js.map +1 -0
- package/lib/builtin-tools.d.ts +10 -11
- package/lib/builtin-tools.d.ts.map +1 -1
- package/lib/builtin-tools.js +44 -862
- package/lib/builtin-tools.js.map +1 -1
- package/lib/defaults/tools.d.ts +3 -6
- package/lib/defaults/tools.d.ts.map +1 -1
- package/lib/defaults/tools.js +3 -11
- package/lib/defaults/tools.js.map +1 -1
- package/lib/index.d.ts +25 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +24 -3
- package/lib/index.js.map +1 -1
- package/lib/init/create-zhin-agent.d.ts.map +1 -1
- package/lib/init/create-zhin-agent.js +4 -3
- package/lib/init/create-zhin-agent.js.map +1 -1
- package/lib/init/message-media.d.ts +8 -0
- package/lib/init/message-media.d.ts.map +1 -0
- package/lib/init/message-media.js +75 -0
- package/lib/init/message-media.js.map +1 -0
- package/lib/init/output-renderer.d.ts +3 -0
- package/lib/init/output-renderer.d.ts.map +1 -0
- package/lib/init/output-renderer.js +38 -0
- package/lib/init/output-renderer.js.map +1 -0
- package/lib/init/register-ai-trigger.d.ts +1 -1
- package/lib/init/register-ai-trigger.d.ts.map +1 -1
- package/lib/init/register-ai-trigger.js +35 -159
- package/lib/init/register-ai-trigger.js.map +1 -1
- package/lib/init/register-builtin-tools.d.ts.map +1 -1
- package/lib/init/register-builtin-tools.js +9 -5
- package/lib/init/register-builtin-tools.js.map +1 -1
- package/lib/orchestrator/index.d.ts +2 -0
- package/lib/orchestrator/index.d.ts.map +1 -1
- package/lib/orchestrator/index.js +1 -0
- package/lib/orchestrator/index.js.map +1 -1
- package/lib/orchestrator/resource-registry.d.ts +1 -0
- package/lib/orchestrator/resource-registry.d.ts.map +1 -1
- package/lib/orchestrator/resource-registry.js +6 -0
- package/lib/orchestrator/resource-registry.js.map +1 -1
- package/lib/orchestrator/tool-registry.d.ts +5 -11
- package/lib/orchestrator/tool-registry.d.ts.map +1 -1
- package/lib/orchestrator/tool-registry.js +30 -75
- package/lib/orchestrator/tool-registry.js.map +1 -1
- package/lib/orchestrator/tool-selection.d.ts +39 -0
- package/lib/orchestrator/tool-selection.d.ts.map +1 -0
- package/lib/orchestrator/tool-selection.js +319 -0
- package/lib/orchestrator/tool-selection.js.map +1 -0
- package/lib/orchestrator/types.d.ts +2 -0
- package/lib/orchestrator/types.d.ts.map +1 -1
- package/lib/reserved-tools.d.ts +3 -0
- package/lib/reserved-tools.d.ts.map +1 -0
- package/lib/reserved-tools.js +30 -0
- package/lib/reserved-tools.js.map +1 -0
- package/lib/service.d.ts +9 -5
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +42 -36
- package/lib/service.js.map +1 -1
- package/lib/subagent.d.ts +6 -0
- package/lib/subagent.d.ts.map +1 -1
- package/lib/subagent.js +33 -15
- package/lib/subagent.js.map +1 -1
- package/lib/task-executor.d.ts +1 -0
- package/lib/task-executor.d.ts.map +1 -1
- package/lib/task-executor.js +15 -8
- package/lib/task-executor.js.map +1 -1
- package/lib/zhin-agent/builtin-tools.d.ts +1 -3
- package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
- package/lib/zhin-agent/builtin-tools.js +4 -41
- package/lib/zhin-agent/builtin-tools.js.map +1 -1
- package/lib/zhin-agent/config.d.ts +7 -0
- package/lib/zhin-agent/config.d.ts.map +1 -1
- package/lib/zhin-agent/config.js +12 -7
- package/lib/zhin-agent/config.js.map +1 -1
- package/lib/zhin-agent/context-budget.d.ts +27 -0
- package/lib/zhin-agent/context-budget.d.ts.map +1 -0
- package/lib/zhin-agent/context-budget.js +50 -0
- package/lib/zhin-agent/context-budget.js.map +1 -0
- package/lib/zhin-agent/index.d.ts +10 -0
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +120 -88
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/model-harness.d.ts +29 -0
- package/lib/zhin-agent/model-harness.d.ts.map +1 -0
- package/lib/zhin-agent/model-harness.js +67 -0
- package/lib/zhin-agent/model-harness.js.map +1 -0
- package/lib/zhin-agent/pre-exec.d.ts +7 -0
- package/lib/zhin-agent/pre-exec.d.ts.map +1 -0
- package/lib/zhin-agent/pre-exec.js +25 -0
- package/lib/zhin-agent/pre-exec.js.map +1 -0
- package/lib/zhin-agent/prompt.d.ts +10 -8
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +37 -30
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/lib/zhin-agent/text-sanitize.d.ts +8 -0
- package/lib/zhin-agent/text-sanitize.d.ts.map +1 -0
- package/lib/zhin-agent/text-sanitize.js +19 -0
- package/lib/zhin-agent/text-sanitize.js.map +1 -0
- package/lib/zhin-agent/tool-runtime.d.ts +31 -0
- package/lib/zhin-agent/tool-runtime.d.ts.map +1 -0
- package/lib/zhin-agent/tool-runtime.js +49 -0
- package/lib/zhin-agent/tool-runtime.js.map +1 -0
- package/package.json +8 -6
- package/lib/tools.d.ts +0 -45
- package/lib/tools.d.ts.map +0 -1
- package/lib/tools.js +0 -205
- package/lib/tools.js.map +0 -1
- package/lib/zhin-agent/tool-collector.d.ts +0 -22
- package/lib/zhin-agent/tool-collector.d.ts.map +0 -1
- package/lib/zhin-agent/tool-collector.js +0 -225
- package/lib/zhin-agent/tool-collector.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reserved-tools.js","sourceRoot":"","sources":["../src/reserved-tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,UAAU;IACV,cAAc;IACd,cAAc;IACd,YAAY;IACZ,WAAW;IACX,UAAU;IACV,aAAa;IACb,YAAY;IACZ,aAAa;CACd,CAAC"}
|
package/lib/service.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* AIService — AI 服务核心类
|
|
3
3
|
* 统一管理多个模型提供商,提供会话和 Agent 能力
|
|
4
4
|
*/
|
|
5
|
-
import type { Plugin,
|
|
6
|
-
import type { AIProvider, AIConfig, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, AgentTool } from '@zhin.js/core';
|
|
5
|
+
import type { Plugin, AITriggerConfig } from '@zhin.js/core';
|
|
6
|
+
import type { AIProvider, AIConfig, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, AgentTool, Tool } from '@zhin.js/core';
|
|
7
7
|
import { SessionManager } from '@zhin.js/ai';
|
|
8
8
|
import { Agent } from '@zhin.js/ai';
|
|
9
9
|
import type { ModelRegistry } from '@zhin.js/ai';
|
|
@@ -23,10 +23,7 @@ export declare class AIService {
|
|
|
23
23
|
private _modelRegistry;
|
|
24
24
|
constructor(config?: AIConfig);
|
|
25
25
|
isReady(): boolean;
|
|
26
|
-
process(content: string, context: ToolContext, _tools: Tool[]): Promise<string>;
|
|
27
|
-
private finishAndSave;
|
|
28
26
|
private simpleChat;
|
|
29
|
-
private convertToolToAgentTool;
|
|
30
27
|
setSessionManager(manager: SessionManager): void;
|
|
31
28
|
setContextManager(manager: ContextManager): void;
|
|
32
29
|
setPlugin(plugin: Plugin): void;
|
|
@@ -34,6 +31,12 @@ export declare class AIService {
|
|
|
34
31
|
getModelRegistry(): ModelRegistry | null;
|
|
35
32
|
registerTool(tool: AgentTool): () => void;
|
|
36
33
|
collectAllTools(): AgentTool[];
|
|
34
|
+
/**
|
|
35
|
+
* IM / ZhinAgent 流水线用的常驻 Tool 实例(未经 normalize;与 ToolFeature 工具合并后由 collectRelevantTools 绑定 context)。
|
|
36
|
+
*/
|
|
37
|
+
getResidentToolsAsTools(): Tool[];
|
|
38
|
+
/** `web_search` 始终挂载;`ask_user` 在 {@link setPlugin} 之后挂载(依赖 Prompt / 中间件)。 */
|
|
39
|
+
private refreshBuiltinAgentTools;
|
|
37
40
|
getContextConfig(): ContextConfig;
|
|
38
41
|
getSessionConfig(): {
|
|
39
42
|
maxHistory?: number;
|
|
@@ -69,6 +72,7 @@ export declare class AIService {
|
|
|
69
72
|
useBuiltinTools?: boolean;
|
|
70
73
|
collectExternalTools?: boolean;
|
|
71
74
|
maxIterations?: number;
|
|
75
|
+
contextWindow?: number;
|
|
72
76
|
}): Agent;
|
|
73
77
|
runAgent(task: string, options?: {
|
|
74
78
|
provider?: string;
|
package/lib/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/service.js
CHANGED
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Logger } from '@zhin.js/core';
|
|
6
6
|
import { OpenAIProvider, DeepSeekProvider, MoonshotProvider, ZhipuProvider, AnthropicProvider, OllamaProvider, } from '@zhin.js/core';
|
|
7
|
-
import {
|
|
7
|
+
import { createMemorySessionManager, } from '@zhin.js/ai';
|
|
8
8
|
import { createAgent } from '@zhin.js/ai';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { DEFAULT_CONFIG } from './zhin-agent/config.js';
|
|
10
|
+
import { resolveContextBudget } from './zhin-agent/context-budget.js';
|
|
11
|
+
import { normalizeTool } from './orchestrator/tool-selection.js';
|
|
12
|
+
import { createWebSearchTool } from './builtin/web-search-tool.js';
|
|
13
|
+
import { createAskUserTool } from './builtin/ask-user-tool.js';
|
|
11
14
|
const aiLogger = new Logger(null, 'AI');
|
|
12
15
|
/** Provider 注册表:key → 构造函数 + 是否需要 apiKey */
|
|
13
16
|
const PROVIDER_REGISTRY = [
|
|
@@ -38,7 +41,7 @@ export class AIService {
|
|
|
38
41
|
this.triggerConfig = config.trigger || {};
|
|
39
42
|
this.agentConfig = config.agent;
|
|
40
43
|
this.sessions = createMemorySessionManager(this.sessionConfig);
|
|
41
|
-
this.
|
|
44
|
+
this.refreshBuiltinAgentTools();
|
|
42
45
|
for (const { key, factory, requireApiKey } of PROVIDER_REGISTRY) {
|
|
43
46
|
const providerConfig = config.providers?.[key];
|
|
44
47
|
if (!providerConfig)
|
|
@@ -51,21 +54,6 @@ export class AIService {
|
|
|
51
54
|
isReady() {
|
|
52
55
|
return this.providers.size > 0;
|
|
53
56
|
}
|
|
54
|
-
async process(content, context, _tools) {
|
|
55
|
-
const { platform, senderId, sceneId } = context;
|
|
56
|
-
const sessionId = SessionManager.generateId(platform || '', senderId || '', sceneId);
|
|
57
|
-
const systemPrompt = 'You are a helpful AI assistant. Reply in the language specified in [User profile] (key: language / preferred_language), or in the user\'s message language if not set. Never claim to perform actions you cannot actually do. If you cannot fulfill a request, say so honestly.';
|
|
58
|
-
return this.finishAndSave(sessionId, content, systemPrompt, sceneId);
|
|
59
|
-
}
|
|
60
|
-
async finishAndSave(sessionId, content, systemPrompt, sceneId) {
|
|
61
|
-
const response = await this.simpleChat(content, systemPrompt);
|
|
62
|
-
await this.sessions.addMessage(sessionId, { role: 'user', content });
|
|
63
|
-
await this.sessions.addMessage(sessionId, { role: 'assistant', content: response });
|
|
64
|
-
if (this.contextManager && sceneId) {
|
|
65
|
-
this.contextManager.autoSummarizeIfNeeded(sceneId).catch(() => { });
|
|
66
|
-
}
|
|
67
|
-
return response;
|
|
68
|
-
}
|
|
69
57
|
async simpleChat(content, systemPrompt) {
|
|
70
58
|
const provider = this.getProvider();
|
|
71
59
|
const response = await this.chat({
|
|
@@ -78,21 +66,6 @@ export class AIService {
|
|
|
78
66
|
const msgContent = response.choices[0]?.message?.content;
|
|
79
67
|
return typeof msgContent === 'string' ? msgContent : '';
|
|
80
68
|
}
|
|
81
|
-
convertToolToAgentTool(tool) {
|
|
82
|
-
const agentTool = {
|
|
83
|
-
name: tool.name,
|
|
84
|
-
description: tool.description,
|
|
85
|
-
parameters: tool.parameters,
|
|
86
|
-
execute: async (args) => tool.execute(args),
|
|
87
|
-
};
|
|
88
|
-
if (tool.tags?.length)
|
|
89
|
-
agentTool.tags = tool.tags;
|
|
90
|
-
if (tool.permissionLevel)
|
|
91
|
-
agentTool.permissionLevel = PERM_MAP[tool.permissionLevel] ?? 0;
|
|
92
|
-
if (tool.keywords?.length)
|
|
93
|
-
agentTool.keywords = tool.keywords;
|
|
94
|
-
return agentTool;
|
|
95
|
-
}
|
|
96
69
|
setSessionManager(manager) { this.sessions.dispose(); this.sessions = manager; }
|
|
97
70
|
setContextManager(manager) {
|
|
98
71
|
this.contextManager = manager;
|
|
@@ -100,7 +73,10 @@ export class AIService {
|
|
|
100
73
|
if (defaultProvider)
|
|
101
74
|
manager.setAIProvider(defaultProvider);
|
|
102
75
|
}
|
|
103
|
-
setPlugin(plugin) {
|
|
76
|
+
setPlugin(plugin) {
|
|
77
|
+
this.plugin = plugin;
|
|
78
|
+
this.refreshBuiltinAgentTools();
|
|
79
|
+
}
|
|
104
80
|
setModelRegistry(registry) { this._modelRegistry = registry; }
|
|
105
81
|
getModelRegistry() { return this._modelRegistry; }
|
|
106
82
|
registerTool(tool) { this.customTools.set(tool.name, tool); return () => { this.customTools.delete(tool.name); }; }
|
|
@@ -108,6 +84,22 @@ export class AIService {
|
|
|
108
84
|
const tools = [...this.builtinTools, ...this.customTools.values()];
|
|
109
85
|
return tools;
|
|
110
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* IM / ZhinAgent 流水线用的常驻 Tool 实例(未经 normalize;与 ToolFeature 工具合并后由 collectRelevantTools 绑定 context)。
|
|
89
|
+
*/
|
|
90
|
+
getResidentToolsAsTools() {
|
|
91
|
+
const tools = [createWebSearchTool()];
|
|
92
|
+
if (this.plugin)
|
|
93
|
+
tools.push(createAskUserTool(this.plugin));
|
|
94
|
+
return tools;
|
|
95
|
+
}
|
|
96
|
+
/** `web_search` 始终挂载;`ask_user` 在 {@link setPlugin} 之后挂载(依赖 Prompt / 中间件)。 */
|
|
97
|
+
refreshBuiltinAgentTools() {
|
|
98
|
+
const next = [normalizeTool(createWebSearchTool())];
|
|
99
|
+
if (this.plugin)
|
|
100
|
+
next.push(normalizeTool(createAskUserTool(this.plugin)));
|
|
101
|
+
this.builtinTools = next;
|
|
102
|
+
}
|
|
111
103
|
getContextConfig() { return this.contextConfig; }
|
|
112
104
|
getSessionConfig() { return this.sessionConfig; }
|
|
113
105
|
getTriggerConfig() { return this.triggerConfig; }
|
|
@@ -168,7 +160,21 @@ export class AIService {
|
|
|
168
160
|
}
|
|
169
161
|
if (options.tools?.length)
|
|
170
162
|
tools.push(...options.tools);
|
|
171
|
-
|
|
163
|
+
const config = { ...DEFAULT_CONFIG, ...(this.agentConfig ?? {}) };
|
|
164
|
+
const model = options.model ?? provider.models[0];
|
|
165
|
+
const contextWindow = options.contextWindow ?? resolveContextBudget({
|
|
166
|
+
config,
|
|
167
|
+
provider,
|
|
168
|
+
modelRegistry: this._modelRegistry,
|
|
169
|
+
model,
|
|
170
|
+
}).contextWindow;
|
|
171
|
+
return createAgent(provider, {
|
|
172
|
+
model,
|
|
173
|
+
systemPrompt: options.systemPrompt,
|
|
174
|
+
tools,
|
|
175
|
+
maxIterations: options.maxIterations,
|
|
176
|
+
contextWindow,
|
|
177
|
+
});
|
|
172
178
|
}
|
|
173
179
|
async runAgent(task, options = {}) {
|
|
174
180
|
const agent = this.createAgent(options);
|
package/lib/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/subagent.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* 4. 完成后将结果投递回主流程,由主 agent 摘要后发送到原始频道
|
|
9
9
|
*/
|
|
10
10
|
import type { AIProvider, AgentTool } from '@zhin.js/core';
|
|
11
|
+
import type { ModelRegistry } from '@zhin.js/ai';
|
|
11
12
|
import type { ZhinAgentConfig } from './zhin-agent/config.js';
|
|
12
13
|
export interface SubagentOrigin {
|
|
13
14
|
platform: string;
|
|
@@ -26,20 +27,25 @@ export interface SubagentManagerOptions {
|
|
|
26
27
|
provider: AIProvider;
|
|
27
28
|
workspace: string;
|
|
28
29
|
createTools: () => AgentTool[];
|
|
30
|
+
subagentTools?: string[];
|
|
29
31
|
maxIterations?: number;
|
|
30
32
|
/** Exec policy config to enforce on subagent bash tools */
|
|
31
33
|
execPolicyConfig?: Required<ZhinAgentConfig>;
|
|
34
|
+
modelRegistry?: ModelRegistry | null;
|
|
32
35
|
}
|
|
33
36
|
export declare class SubagentManager {
|
|
34
37
|
private provider;
|
|
35
38
|
private workspace;
|
|
36
39
|
private createTools;
|
|
37
40
|
private maxIterations;
|
|
41
|
+
private subagentTools;
|
|
38
42
|
private execPolicyConfig;
|
|
43
|
+
private modelRegistry;
|
|
39
44
|
private runningTasks;
|
|
40
45
|
private resultSender;
|
|
41
46
|
constructor(options: SubagentManagerOptions);
|
|
42
47
|
setSender(sender: SubagentResultSender): void;
|
|
48
|
+
setModelRegistry(registry: ModelRegistry | null): void;
|
|
43
49
|
spawn(options: SpawnOptions): Promise<string>;
|
|
44
50
|
getRunningCount(): number;
|
|
45
51
|
private runSubagent;
|
package/lib/subagent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAY9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,SAAS,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,YAAY,CAAqC;gBAE7C,OAAO,EAAE,sBAAsB;IAU3C,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAI7C,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBnD,eAAe,IAAI,MAAM;YAMX,WAAW;YA0DX,cAAc;IAwB5B,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,IAAI,IAAI;CAGhB"}
|
package/lib/subagent.js
CHANGED
|
@@ -11,22 +11,11 @@ import { randomUUID } from 'crypto';
|
|
|
11
11
|
import { Logger } from '@zhin.js/core';
|
|
12
12
|
import { createAgent } from '@zhin.js/ai';
|
|
13
13
|
import { applyExecPolicyToTools } from './security/exec-policy.js';
|
|
14
|
+
import { RESERVED_TOOL_NAMES, RESERVED_TOOL_NAME_PREFIXES } from './reserved-tools.js';
|
|
15
|
+
import { resolveContextBudget } from './zhin-agent/context-budget.js';
|
|
16
|
+
import { createRestrictedToolView, DEFAULT_SUBAGENT_TOOL_NAMES } from './orchestrator/tool-selection.js';
|
|
14
17
|
const logger = new Logger(null, 'Subagent');
|
|
15
18
|
// ============================================================================
|
|
16
|
-
// 子 agent 允许使用的工具名单
|
|
17
|
-
// ============================================================================
|
|
18
|
-
const SUBAGENT_ALLOWED_TOOLS = new Set([
|
|
19
|
-
'read_file',
|
|
20
|
-
'write_file',
|
|
21
|
-
'edit_file',
|
|
22
|
-
'list_dir',
|
|
23
|
-
'glob',
|
|
24
|
-
'grep',
|
|
25
|
-
'bash',
|
|
26
|
-
'web_search',
|
|
27
|
-
'web_fetch',
|
|
28
|
-
]);
|
|
29
|
-
// ============================================================================
|
|
30
19
|
// SubagentManager
|
|
31
20
|
// ============================================================================
|
|
32
21
|
export class SubagentManager {
|
|
@@ -34,7 +23,9 @@ export class SubagentManager {
|
|
|
34
23
|
workspace;
|
|
35
24
|
createTools;
|
|
36
25
|
maxIterations;
|
|
26
|
+
subagentTools;
|
|
37
27
|
execPolicyConfig;
|
|
28
|
+
modelRegistry;
|
|
38
29
|
runningTasks = new Map();
|
|
39
30
|
resultSender = null;
|
|
40
31
|
constructor(options) {
|
|
@@ -42,11 +33,16 @@ export class SubagentManager {
|
|
|
42
33
|
this.workspace = options.workspace;
|
|
43
34
|
this.createTools = options.createTools;
|
|
44
35
|
this.maxIterations = options.maxIterations ?? 15;
|
|
36
|
+
this.subagentTools = options.subagentTools || [];
|
|
45
37
|
this.execPolicyConfig = options.execPolicyConfig ?? null;
|
|
38
|
+
this.modelRegistry = options.modelRegistry ?? null;
|
|
46
39
|
}
|
|
47
40
|
setSender(sender) {
|
|
48
41
|
this.resultSender = sender;
|
|
49
42
|
}
|
|
43
|
+
setModelRegistry(registry) {
|
|
44
|
+
this.modelRegistry = registry;
|
|
45
|
+
}
|
|
50
46
|
async spawn(options) {
|
|
51
47
|
const taskId = randomUUID().slice(0, 8);
|
|
52
48
|
const displayLabel = options.label ||
|
|
@@ -71,15 +67,35 @@ export class SubagentManager {
|
|
|
71
67
|
logger.info({ taskId, label }, 'Subagent starting task');
|
|
72
68
|
try {
|
|
73
69
|
const allTools = this.createTools();
|
|
74
|
-
let tools = allTools
|
|
70
|
+
let tools = createRestrictedToolView(allTools, {
|
|
71
|
+
allowedNames: this.subagentTools.length
|
|
72
|
+
? this.subagentTools
|
|
73
|
+
: this.execPolicyConfig?.subagentTools?.length
|
|
74
|
+
? this.execPolicyConfig.subagentTools
|
|
75
|
+
: DEFAULT_SUBAGENT_TOOL_NAMES,
|
|
76
|
+
disabledNames: this.execPolicyConfig?.disabledTools,
|
|
77
|
+
});
|
|
75
78
|
if (this.execPolicyConfig) {
|
|
76
79
|
tools = applyExecPolicyToTools(this.execPolicyConfig, tools);
|
|
77
80
|
}
|
|
78
81
|
const systemPrompt = this.buildSubagentPrompt(task);
|
|
82
|
+
const model = this.provider.models[0];
|
|
83
|
+
const contextBudget = this.execPolicyConfig
|
|
84
|
+
? resolveContextBudget({
|
|
85
|
+
config: this.execPolicyConfig,
|
|
86
|
+
provider: this.provider,
|
|
87
|
+
modelRegistry: this.modelRegistry,
|
|
88
|
+
model,
|
|
89
|
+
})
|
|
90
|
+
: null;
|
|
79
91
|
const agent = createAgent(this.provider, {
|
|
92
|
+
model,
|
|
80
93
|
systemPrompt,
|
|
81
94
|
tools,
|
|
82
95
|
maxIterations: this.maxIterations,
|
|
96
|
+
reservedToolNames: RESERVED_TOOL_NAMES,
|
|
97
|
+
reservedToolNamePrefixes: RESERVED_TOOL_NAME_PREFIXES,
|
|
98
|
+
contextWindow: contextBudget?.contextWindow ?? this.provider.contextWindow,
|
|
83
99
|
});
|
|
84
100
|
try {
|
|
85
101
|
const result = await agent.run(task);
|
|
@@ -125,6 +141,8 @@ ${task}
|
|
|
125
141
|
2. Your final reply will be reported to the main agent and relayed to the user
|
|
126
142
|
3. Do not start new conversations or take on extra tasks
|
|
127
143
|
4. Keep replies concise but informative
|
|
144
|
+
5. Never claim success unless tool results confirm it
|
|
145
|
+
6. Do not fabricate tool outputs or execution status
|
|
128
146
|
|
|
129
147
|
## You may
|
|
130
148
|
- Read/write files in the workspace
|
package/lib/subagent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"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"}
|
package/lib/task-executor.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export interface TaskExecutorDeps {
|
|
|
36
36
|
sendMessage: (opts: SendOptions) => Promise<string>;
|
|
37
37
|
} | undefined;
|
|
38
38
|
}
|
|
39
|
+
export declare function cronContextToSendOptions(context: CronJobContext, content: string): SendOptions;
|
|
39
40
|
export declare function createTaskExecutor(deps: TaskExecutorDeps): {
|
|
40
41
|
executeTask: (options: TaskExecutionOptions) => Promise<TaskExecutionResult>;
|
|
41
42
|
resolveAdapter: (platform: string) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUvD,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,qFAAqF;IACrF,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK;QAAE,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3G;AA6BD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAW9F;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB;2BACnB,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAAC;+BAhD5D,MAAM,KAAK;QAAE,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,SAAS;EA6G1G;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
package/lib/task-executor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Logger } from '@zhin.js/core';
|
|
2
|
+
import { toSendOptions } from '@zhin.js/core/queue-im-field-contract';
|
|
2
3
|
const logger = new Logger(null, 'task-executor');
|
|
3
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
4
5
|
// Per-sceneId mutex lock
|
|
@@ -25,6 +26,19 @@ function elementsToText(elements) {
|
|
|
25
26
|
return '';
|
|
26
27
|
}).join('\n').trim();
|
|
27
28
|
}
|
|
29
|
+
export function cronContextToSendOptions(context, content) {
|
|
30
|
+
if (!context.botId)
|
|
31
|
+
throw new Error('Missing cron delivery field: botId');
|
|
32
|
+
const sceneType = (context.scope || 'private');
|
|
33
|
+
const outboundDetail = {
|
|
34
|
+
context: context.platform || 'cron',
|
|
35
|
+
bot: context.botId,
|
|
36
|
+
channelId: context.sceneId || 'cron',
|
|
37
|
+
channelType: sceneType,
|
|
38
|
+
content,
|
|
39
|
+
};
|
|
40
|
+
return toSendOptions(outboundDetail);
|
|
41
|
+
}
|
|
28
42
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
29
43
|
// Factory
|
|
30
44
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -69,14 +83,7 @@ export function createTaskExecutor(deps) {
|
|
|
69
83
|
if (context.platform && context.botId && context.sceneId) {
|
|
70
84
|
const adapter = deps.resolveAdapter(context.platform);
|
|
71
85
|
if (adapter) {
|
|
72
|
-
|
|
73
|
-
await adapter.sendMessage({
|
|
74
|
-
context: context.platform,
|
|
75
|
-
bot: context.botId,
|
|
76
|
-
id: context.sceneId,
|
|
77
|
-
type: sceneType,
|
|
78
|
-
content: text,
|
|
79
|
-
});
|
|
86
|
+
await adapter.sendMessage(cronContextToSendOptions(context, text));
|
|
80
87
|
}
|
|
81
88
|
else {
|
|
82
89
|
logger.warn(`[TaskExecutor] 找不到适配器: ${context.platform}`);
|
package/lib/task-executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../src/task-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
* 这些工具依赖运行时上下文(sessionId / userId / context),
|
|
5
5
|
* 由 ZhinAgent.process() 按需创建并注入到工具列表中。
|
|
6
6
|
*/
|
|
7
|
-
import type { ToolContext } from '@zhin.js/core';
|
|
8
7
|
import type { AgentTool } from '@zhin.js/core';
|
|
9
8
|
import type { ConversationMemory } from '@zhin.js/ai';
|
|
10
9
|
import type { UserProfileStore } from '../user-profile.js';
|
|
11
|
-
|
|
10
|
+
export { createSpawnTaskTool } from '../builtin/spawn-task-tool.js';
|
|
12
11
|
export declare function createChatHistoryTool(sessionId: string, memory: ConversationMemory): AgentTool;
|
|
13
12
|
export declare function createUserProfileTool(userId: string, profiles: UserProfileStore): AgentTool;
|
|
14
|
-
export declare function createSpawnTaskTool(context: ToolContext, manager: SubagentManager): AgentTool;
|
|
15
13
|
//# sourceMappingURL=builtin-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-tools.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"builtin-tools.d.ts","sourceRoot":"","sources":["../../src/zhin-agent/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAyE9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAmD3F"}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* 这些工具依赖运行时上下文(sessionId / userId / context),
|
|
5
5
|
* 由 ZhinAgent.process() 按需创建并注入到工具列表中。
|
|
6
6
|
*/
|
|
7
|
+
export { createSpawnTaskTool } from '../builtin/spawn-task-tool.js';
|
|
7
8
|
export function createChatHistoryTool(sessionId, memory) {
|
|
8
9
|
return {
|
|
9
10
|
name: 'chat_history',
|
|
11
|
+
source: 'builtin:context',
|
|
10
12
|
description: '搜索与用户的历史聊天记录。可以按关键词搜索,也可以按对话轮次范围查询。当用户问到"之前聊过什么""我们讨论过什么"等回忆类问题时使用。',
|
|
11
13
|
parameters: {
|
|
12
14
|
type: 'object',
|
|
@@ -72,6 +74,7 @@ export function createChatHistoryTool(sessionId, memory) {
|
|
|
72
74
|
export function createUserProfileTool(userId, profiles) {
|
|
73
75
|
return {
|
|
74
76
|
name: 'user_profile',
|
|
77
|
+
source: 'builtin:context',
|
|
75
78
|
description: '读取或保存用户的个人偏好和信息。当用户告诉你他的名字、偏好、兴趣、习惯等个人信息时,用 set 操作保存。当需要了解用户偏好时,用 get 操作读取。',
|
|
76
79
|
parameters: {
|
|
77
80
|
type: 'object',
|
|
@@ -87,7 +90,7 @@ export function createUserProfileTool(userId, profiles) {
|
|
|
87
90
|
},
|
|
88
91
|
value: {
|
|
89
92
|
type: 'string',
|
|
90
|
-
description: '偏好值(仅 set
|
|
93
|
+
description: '偏好值(仅 set 操作需要)。language / preferred_language 会影响回复与 web_search 的 Bing 市场语言。',
|
|
91
94
|
},
|
|
92
95
|
},
|
|
93
96
|
required: ['action'],
|
|
@@ -122,44 +125,4 @@ export function createUserProfileTool(userId, profiles) {
|
|
|
122
125
|
},
|
|
123
126
|
};
|
|
124
127
|
}
|
|
125
|
-
export function createSpawnTaskTool(context, manager) {
|
|
126
|
-
const platform = context.platform || '';
|
|
127
|
-
const botId = context.botId || '';
|
|
128
|
-
const senderId = context.senderId || '';
|
|
129
|
-
const sceneId = context.sceneId || '';
|
|
130
|
-
const sceneType = context.message?.$channel?.type || 'private';
|
|
131
|
-
return {
|
|
132
|
-
name: 'spawn_task',
|
|
133
|
-
description: '将复杂或耗时的任务交给后台子 agent 异步处理。子 agent 拥有文件读写、Shell、网络搜索等能力,完成后会自动通知用户。适用于需要多步操作的文件处理、代码分析、数据收集等任务。',
|
|
134
|
-
parameters: {
|
|
135
|
-
type: 'object',
|
|
136
|
-
properties: {
|
|
137
|
-
task: {
|
|
138
|
-
type: 'string',
|
|
139
|
-
description: '要交给子 agent 完成的任务描述(尽量详细,包含目标、范围、期望输出)',
|
|
140
|
-
},
|
|
141
|
-
label: {
|
|
142
|
-
type: 'string',
|
|
143
|
-
description: '任务的简短标签(用于显示,可选)',
|
|
144
|
-
},
|
|
145
|
-
},
|
|
146
|
-
required: ['task'],
|
|
147
|
-
},
|
|
148
|
-
tags: ['agent', 'async', 'task', '后台', '子任务'],
|
|
149
|
-
keywords: ['后台', '异步', '子任务', 'spawn', 'background', '并行', '独立处理'],
|
|
150
|
-
async execute(args) {
|
|
151
|
-
const { task, label } = args;
|
|
152
|
-
if (!task)
|
|
153
|
-
return '请提供任务描述';
|
|
154
|
-
const origin = {
|
|
155
|
-
platform,
|
|
156
|
-
botId,
|
|
157
|
-
sceneId,
|
|
158
|
-
senderId,
|
|
159
|
-
sceneType,
|
|
160
|
-
};
|
|
161
|
-
return manager.spawn({ task, label, origin });
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
128
|
//# sourceMappingURL=builtin-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../../src/zhin-agent/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../../src/zhin-agent/builtin-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* ZhinAgent 配置、常量、类型定义
|
|
3
3
|
*/
|
|
4
4
|
import type { RateLimitConfig } from '@zhin.js/ai';
|
|
5
|
+
import type { ModelHarnessConfig } from './model-harness.js';
|
|
5
6
|
export type ModelSizeHint = 'small' | 'medium' | 'large';
|
|
6
7
|
/**
|
|
7
8
|
* Infer model size from model name string.
|
|
@@ -59,6 +60,12 @@ export interface ZhinAgentConfig {
|
|
|
59
60
|
modelSizeHint?: '' | 'small' | 'medium' | 'large';
|
|
60
61
|
/** 技能指令最大字符数(覆盖 modelSizeHint 推断值) */
|
|
61
62
|
skillInstructionMaxChars?: number;
|
|
63
|
+
/** 模型级 harness 覆盖配置(按 model id / provider 模式) */
|
|
64
|
+
modelHarness?: ModelHarnessConfig;
|
|
65
|
+
/** 输出回合 phase 观测日志(或通过 ZHIN_AGENT_PHASE_TRACE 环境变量开启) */
|
|
66
|
+
phaseTrace?: boolean;
|
|
62
67
|
}
|
|
63
68
|
export declare const DEFAULT_CONFIG: Required<ZhinAgentConfig>;
|
|
69
|
+
/** `env` 参数主要用于测试注入,运行时默认读取 `process.env`。 */
|
|
70
|
+
export declare function isPhaseTraceEnabled(config: Required<ZhinAgentConfig>, env?: NodeJS.ProcessEnv): boolean;
|
|
64
71
|
//# sourceMappingURL=config.d.ts.map
|