@zhin.js/ai 1.0.0 → 1.0.1
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/CHANGELOG.md +7 -0
- package/lib/agent.d.ts +54 -6
- package/lib/agent.d.ts.map +1 -1
- package/lib/agent.js +468 -116
- package/lib/agent.js.map +1 -1
- package/lib/compaction.d.ts +132 -0
- package/lib/compaction.d.ts.map +1 -0
- package/lib/compaction.js +370 -0
- package/lib/compaction.js.map +1 -0
- package/lib/context-manager.d.ts.map +1 -1
- package/lib/context-manager.js +10 -3
- package/lib/context-manager.js.map +1 -1
- package/lib/conversation-memory.d.ts +192 -0
- package/lib/conversation-memory.d.ts.map +1 -0
- package/lib/conversation-memory.js +619 -0
- package/lib/conversation-memory.js.map +1 -0
- package/lib/index.d.ts +25 -163
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +24 -1122
- package/lib/index.js.map +1 -1
- package/lib/output.d.ts +93 -0
- package/lib/output.d.ts.map +1 -0
- package/lib/output.js +176 -0
- package/lib/output.js.map +1 -0
- package/lib/providers/anthropic.d.ts +7 -0
- package/lib/providers/anthropic.d.ts.map +1 -1
- package/lib/providers/anthropic.js +5 -0
- package/lib/providers/anthropic.js.map +1 -1
- package/lib/providers/ollama.d.ts +10 -0
- package/lib/providers/ollama.d.ts.map +1 -1
- package/lib/providers/ollama.js +19 -4
- package/lib/providers/ollama.js.map +1 -1
- package/lib/providers/openai.d.ts +7 -0
- package/lib/providers/openai.d.ts.map +1 -1
- package/lib/providers/openai.js +11 -0
- package/lib/providers/openai.js.map +1 -1
- package/lib/rate-limiter.d.ts +38 -0
- package/lib/rate-limiter.d.ts.map +1 -0
- package/lib/rate-limiter.js +86 -0
- package/lib/rate-limiter.js.map +1 -0
- package/lib/session.d.ts +7 -0
- package/lib/session.d.ts.map +1 -1
- package/lib/session.js +47 -18
- package/lib/session.js.map +1 -1
- package/lib/storage.d.ts +68 -0
- package/lib/storage.d.ts.map +1 -0
- package/lib/storage.js +105 -0
- package/lib/storage.js.map +1 -0
- package/lib/tone-detector.d.ts +19 -0
- package/lib/tone-detector.d.ts.map +1 -0
- package/lib/tone-detector.js +72 -0
- package/lib/tone-detector.js.map +1 -0
- package/lib/types.d.ts +84 -8
- package/lib/types.d.ts.map +1 -1
- package/package.json +13 -42
- package/src/agent.ts +518 -135
- package/src/compaction.ts +529 -0
- package/src/context-manager.ts +10 -9
- package/src/conversation-memory.ts +816 -0
- package/src/index.ts +121 -1406
- package/src/output.ts +261 -0
- package/src/providers/anthropic.ts +4 -0
- package/src/providers/ollama.ts +23 -4
- package/src/providers/openai.ts +8 -1
- package/src/rate-limiter.ts +129 -0
- package/src/session.ts +47 -18
- package/src/storage.ts +135 -0
- package/src/tone-detector.ts +89 -0
- package/src/types.ts +95 -6
- package/tests/agent.test.ts +123 -70
- package/tests/compaction.test.ts +310 -0
- package/tests/context-manager.test.ts +73 -47
- package/tests/conversation-memory.test.ts +128 -0
- package/tests/output.test.ts +128 -0
- package/tests/providers.test.ts +574 -0
- package/tests/rate-limiter.test.ts +108 -0
- package/tests/session.test.ts +139 -48
- package/tests/setup.ts +82 -240
- package/tests/storage.test.ts +224 -0
- package/tests/tone-detector.test.ts +80 -0
- package/tsconfig.json +4 -5
- package/vitest.setup.ts +1 -0
- package/README.md +0 -564
- package/TOOLS.md +0 -294
- package/lib/tools.d.ts +0 -45
- package/lib/tools.d.ts.map +0 -1
- package/lib/tools.js +0 -194
- package/lib/tools.js.map +0 -1
- package/src/tools.ts +0 -205
- package/tests/ai-trigger.test.ts +0 -369
- package/tests/integration.test.ts +0 -596
- package/tests/providers.integration.test.ts +0 -227
- package/tests/tool.test.ts +0 -800
- package/tests/tools-builtin.test.ts +0 -346
package/CHANGELOG.md
ADDED
package/lib/agent.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zhin.js/
|
|
2
|
+
* @zhin.js/agent - Agent System
|
|
3
3
|
* AI Agent 实现,支持工具调用和多轮对话
|
|
4
4
|
*/
|
|
5
|
-
import type { AIProvider, AgentConfig, AgentTool, AgentResult, ChatMessage, Usage } from './types.js';
|
|
5
|
+
import type { AIProvider, AgentConfig, AgentTool, AgentResult, ChatMessage, ToolFilterOptions, Usage } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* 根据工具名和参数生成简短标题(用于日志、TOOLS.md 等)
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatToolTitle(name: string, args?: Record<string, any>): string;
|
|
6
10
|
/**
|
|
7
11
|
* Agent 执行状态
|
|
8
12
|
*/
|
|
@@ -58,21 +62,65 @@ export declare class Agent {
|
|
|
58
62
|
*/
|
|
59
63
|
removeTool(name: string): void;
|
|
60
64
|
/**
|
|
61
|
-
*
|
|
65
|
+
* 获取工具定义(缓存在第一次调用后保持不变)
|
|
62
66
|
*/
|
|
63
67
|
private getToolDefinitions;
|
|
64
68
|
/**
|
|
65
|
-
*
|
|
69
|
+
* 生成工具调用的去重 key(规范化参数以避免 "" vs "{}" 等差异)
|
|
70
|
+
*/
|
|
71
|
+
private static toolCallKey;
|
|
72
|
+
/**
|
|
73
|
+
* 安全解析 JSON,失败则返回原始字符串
|
|
74
|
+
*/
|
|
75
|
+
private static safeParse;
|
|
76
|
+
/**
|
|
77
|
+
* 程序化工具过滤 —— TF-IDF 加权的相关性评分
|
|
78
|
+
*
|
|
79
|
+
* 评分层级(基础权重 × IDF 倍率):
|
|
80
|
+
* 1. keywords 精确匹配: base 1.0 × idf —— 工具声明的触发关键词
|
|
81
|
+
* 2. tags 匹配: base 0.5 × idf —— 工具分类标签
|
|
82
|
+
* 3. 工具名 token 匹配: base 0.3 × idf —— 工具名按 `.` `_` `-` 拆词
|
|
83
|
+
* 4. description 关键词: base 0.15 × idf —— 描述中的词/短语
|
|
84
|
+
*
|
|
85
|
+
* IDF = log(N / df),N 为工具总数,df 为包含该词的工具数。
|
|
86
|
+
* 高频词(出现在大部分工具中)的 IDF 接近 0,权重被压低;
|
|
87
|
+
* 稀有词(仅少数工具有)的 IDF 较高,权重被放大。
|
|
88
|
+
*
|
|
89
|
+
* @param message 用户消息原文
|
|
90
|
+
* @param tools 候选工具列表
|
|
91
|
+
* @param options 过滤选项
|
|
92
|
+
* @returns 按相关性降序排列的工具子集
|
|
93
|
+
*/
|
|
94
|
+
static filterTools(message: string, tools: AgentTool[], options?: ToolFilterOptions): AgentTool[];
|
|
95
|
+
/**
|
|
96
|
+
* 执行单个工具调用(带超时保护)
|
|
66
97
|
*/
|
|
67
98
|
private executeToolCall;
|
|
99
|
+
/**
|
|
100
|
+
* 并行执行多个工具调用(跳过重复的)
|
|
101
|
+
* @returns 新执行的工具调用结果列表;如果全部重复则返回空数组
|
|
102
|
+
*/
|
|
103
|
+
private executeToolCalls;
|
|
104
|
+
/**
|
|
105
|
+
* 累加 token 用量
|
|
106
|
+
*/
|
|
107
|
+
private static addUsage;
|
|
68
108
|
/**
|
|
69
109
|
* 运行 Agent
|
|
110
|
+
*
|
|
111
|
+
* @param userMessage 用户消息
|
|
112
|
+
* @param context 对话上下文
|
|
113
|
+
* @param filterOptions 工具过滤选项 —— 启用后在 AI 调用之前程序化筛选工具,省去额外的 AI 意图分析往返
|
|
70
114
|
*/
|
|
71
|
-
run(userMessage: string, context?: ChatMessage[]): Promise<AgentResult>;
|
|
115
|
+
run(userMessage: string, context?: ChatMessage[], filterOptions?: ToolFilterOptions): Promise<AgentResult>;
|
|
72
116
|
/**
|
|
73
117
|
* 流式运行 Agent
|
|
118
|
+
*
|
|
119
|
+
* @param userMessage 用户消息
|
|
120
|
+
* @param context 对话上下文
|
|
121
|
+
* @param filterOptions 工具过滤选项 —— 启用后在 AI 调用之前程序化筛选工具
|
|
74
122
|
*/
|
|
75
|
-
runStream(userMessage: string, context?: ChatMessage[]): AsyncIterable<{
|
|
123
|
+
runStream(userMessage: string, context?: ChatMessage[], filterOptions?: ToolFilterOptions): AsyncIterable<{
|
|
76
124
|
type: 'content' | 'tool_call' | 'tool_result' | 'done';
|
|
77
125
|
data: any;
|
|
78
126
|
}>;
|
package/lib/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EAGX,KAAK,EACN,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|