@zhin.js/agent 0.1.27 → 0.1.28
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
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Zhin AI Agent 组合层:在 `@zhin.js/core` 的类型与 Provider 之上,提供会话管理、Agent 执行循环、ZhinAgent 与框架挂载(init)。
|
|
4
4
|
|
|
5
|
+
领域词汇见 [CONTEXT.md](./CONTEXT.md)。用户向文档:[AI 模块](https://zhin.js.org/advanced/ai)、[消息如何流转](../../docs/essentials/message-flow.md)。
|
|
6
|
+
|
|
5
7
|
## 功能特性
|
|
6
8
|
|
|
7
9
|
- 🤖 **Agent 循环**:`Agent` / `createAgent`,支持工具调用、迭代与事件
|
|
8
10
|
- 📝 **会话管理**:`SessionManager`、内存/数据库会话、`SessionManager.generateId`
|
|
9
11
|
- 🧠 **ZhinAgent**:与 Zhin 消息流集成的智能体(SOUL/TOOLS/AGENTS、工具收集、执行策略)
|
|
10
|
-
- 🔍
|
|
12
|
+
- 🔍 **模型自动发现**:通过 `@zhin.js/ai` 的 `ModelRegistry`(本包 re-export AI 原语,不单独导出 Registry)
|
|
11
13
|
- 🔄 **模型自动降级**:首选模型失败时自动切换到次优模型,支持 Chat / Vision / Agent 三条路径
|
|
12
14
|
- 🛡️ **6 层 Bash 安全**:`ExecPolicy` 纵深防御(危险黑名单、环境变量剥离、wrapper 剥离、复合命令拆分、只读放行、交互式审批)
|
|
13
15
|
- 📂 **文件访问安全**:`FilePolicy` 路径检查、设备路径拦截、命令读写分类
|
|
@@ -38,9 +40,9 @@ npm install zhin.js
|
|
|
38
40
|
|
|
39
41
|
主包 `zhin.js` 已依赖 `@zhin.js/agent` 并在 setup 中调用 `initAgentModule()`,插件可直接从 `zhin.js` 使用:
|
|
40
42
|
|
|
41
|
-
```
|
|
43
|
+
```typescript
|
|
42
44
|
import {
|
|
43
|
-
|
|
45
|
+
initAgentModule,
|
|
44
46
|
ZhinAgent,
|
|
45
47
|
Agent,
|
|
46
48
|
createAgent,
|
|
@@ -80,7 +82,7 @@ const result = await agent.run('你好')
|
|
|
80
82
|
|------|------|
|
|
81
83
|
| 初始化 | `initAgentModule` |
|
|
82
84
|
| Agent | `Agent`, `createAgent`, `formatToolTitle` |
|
|
83
|
-
|
|
|
85
|
+
| Model harness | `MODEL_HARNESS_DEFAULTS`, `resolveModelHarness`, `mergeModelHarnessValues` |
|
|
84
86
|
| 服务与会话 | `AIService`, `SessionManager`, `MemorySessionManager`, `DatabaseSessionManager`, `createMemorySessionManager`, `createDatabaseSessionManager` |
|
|
85
87
|
| ZhinAgent | `ZhinAgent`,以及 config / exec-policy / file-policy / tool-runtime / prompt / builtin-tools 等子模块 |
|
|
86
88
|
| 安全策略 | `checkExecPolicy`, `applyExecPolicyToTools`, `isDangerousCommand`, `stripEnvVarPrefix`, `stripSafeWrappers`, `splitCompoundCommand`, `extractCommandName`, `ExecPolicyResult`, `checkFileAccess`, `classifyBashCommand`, `isBlockedDevicePath` |
|
|
@@ -151,18 +153,6 @@ ai:
|
|
|
151
153
|
|
|
152
154
|
无需额外配置即可使用;若需放宽子 Agent 的工具范围,使用 `ai.agent.subagentTools` 显式追加白名单(不会自动继承主会话全部 skill/tool)。
|
|
153
155
|
|
|
154
|
-
## 工具命名策略
|
|
155
|
-
|
|
156
|
-
- 保留/内置工具名(如 `bash`、`read_file`、`spawn_task`)不可被插件或文件化工具覆盖。
|
|
157
|
-
- 非保留工具同名时采用 **后注册覆盖前注册**。
|
|
158
|
-
- 冲突统一以 warn 记录:包含 `name`、`source`、`action`(`ignored`/`overridden`)。
|
|
159
|
-
|
|
160
|
-
## Model harness(第一期)
|
|
161
|
-
|
|
162
|
-
- 默认参数通过 TypeScript 表维护:`src/zhin-agent/model-harness.ts`。
|
|
163
|
-
- 为新 provider/model 增补默认值时,直接在该表新增行并附测试。
|
|
164
|
-
- 第一阶段不引入新的 YAML 配置键;后续若支持 YAML 覆盖,TS 表仍作为默认层。
|
|
165
|
-
|
|
166
156
|
### 2. 用 AIService 创建多个不同配置的 Agent
|
|
167
157
|
|
|
168
158
|
`ctx.ai`(AIService)可以按需创建**多个互不共享状态的 Agent**,每个可指定不同 provider、model、systemPrompt、tools:
|
|
@@ -213,6 +203,40 @@ useContext('ai', async (ai) => {
|
|
|
213
203
|
|
|
214
204
|
本包只提供基础能力:`createAgent`、`ZhinAgent`、`ai.createAgent` 等。**多 Agent 串联/并联编排**(例如 A 的输出作为 B 的输入、按条件路由到不同专业 Agent)以及**按 bot / 按群组配置多个 ZhinAgent** 的调度与路由,将在 **zhin.js 主包**实现;插件侧通过 zhin.js 暴露的 API 使用即可,无需在业务里手写多实例维护与路由逻辑。
|
|
215
205
|
|
|
206
|
+
## 工具命名策略
|
|
207
|
+
|
|
208
|
+
- 保留/内置工具名(如 `bash`、`read_file`、`spawn_task`)不可被插件或文件化工具覆盖。
|
|
209
|
+
- 非保留工具同名时采用 **后注册覆盖前注册**。
|
|
210
|
+
- 冲突统一以 warn 记录:包含 `name`、`source`、`action`(`ignored`/`overridden`)。
|
|
211
|
+
|
|
212
|
+
## Model harness
|
|
213
|
+
|
|
214
|
+
按 provider / model 覆盖 Agent 循环默认参数(当前主要为 **`maxIterations`**)。
|
|
215
|
+
|
|
216
|
+
**合并顺序**(约定优先,详见 [ADR 0007](../../docs/adr/0007-ai-agent-model-harness-yaml-overrides.md)):
|
|
217
|
+
|
|
218
|
+
1. TypeScript 默认表 `MODEL_HARNESS_DEFAULTS`([`src/zhin-agent/model-harness.ts`](./src/zhin-agent/model-harness.ts))
|
|
219
|
+
2. YAML `ai.agent.modelHarness.providerPatterns`(匹配当前 provider,支持 `*` 通配;按对象键插入顺序叠加)
|
|
220
|
+
3. YAML `ai.agent.modelHarness.models`(`model` 或 `provider:model` 精确键)
|
|
221
|
+
|
|
222
|
+
```yaml
|
|
223
|
+
ai:
|
|
224
|
+
agent:
|
|
225
|
+
modelHarness:
|
|
226
|
+
providerPatterns:
|
|
227
|
+
"open*":
|
|
228
|
+
maxIterations: 7
|
|
229
|
+
models:
|
|
230
|
+
"gpt-4o":
|
|
231
|
+
maxIterations: 8
|
|
232
|
+
"openai:gpt-4o":
|
|
233
|
+
maxIterations: 9
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
运行时由 `resolveModelHarness(providerName, modelName, config?.modelHarness)` 解析;包入口导出 `MODEL_HARNESS_DEFAULTS`、`resolveModelHarness`、`mergeModelHarnessValues` 与 `ModelHarnessConfig` 类型。未命中任何规则时回退 TS 默认行或空对象;当前仅消费 `maxIterations`,未知 YAML 字段会被忽略。
|
|
237
|
+
|
|
238
|
+
增补内置默认值:在 `model-harness.ts` 增加 `ModelHarnessRow` 并附测试;YAML 只做覆盖,不替代 TS 约定层。
|
|
239
|
+
|
|
216
240
|
## 开发
|
|
217
241
|
|
|
218
242
|
### 项目结构
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangerous-tool-policy.d.ts","sourceRoot":"","sources":["../../src/security/dangerous-tool-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGnG,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dangerous-tool-policy.d.ts","sourceRoot":"","sources":["../../src/security/dangerous-tool-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGnG,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AA8EnG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAuCxG;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,qBAAqB,CA8BnI;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAyCzI;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAErE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAEnE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,OAAO,CAGtG"}
|
|
@@ -28,24 +28,65 @@ function resolveExecAllowlistFromAiService(plugin) {
|
|
|
28
28
|
return [];
|
|
29
29
|
return allowlist.map((v) => String(v)).filter(Boolean);
|
|
30
30
|
}
|
|
31
|
+
function hasToolIdentity(context) {
|
|
32
|
+
return Boolean(context?.platform && context?.botId && context?.senderId);
|
|
33
|
+
}
|
|
31
34
|
function resolveRoleFromContext(context) {
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
const hasIdentity = hasToolIdentity(context);
|
|
36
|
+
if (!hasIdentity) {
|
|
37
|
+
return { role: 'unknown', hasIdentity: false };
|
|
34
38
|
}
|
|
35
39
|
try {
|
|
36
40
|
const plugin = getPlugin();
|
|
37
|
-
return {
|
|
41
|
+
return {
|
|
42
|
+
role: resolveToolRequesterRole(plugin, context),
|
|
43
|
+
plugin,
|
|
44
|
+
hasIdentity: true,
|
|
45
|
+
};
|
|
38
46
|
}
|
|
39
47
|
catch {
|
|
40
|
-
return {
|
|
48
|
+
return {
|
|
49
|
+
role: resolveRoleFromToolContextFallback(context),
|
|
50
|
+
hasIdentity: true,
|
|
51
|
+
};
|
|
41
52
|
}
|
|
42
53
|
}
|
|
54
|
+
/** getPlugin 不可用时,从 ToolContext 上的 IM 标记推断角色(测试/降级路径) */
|
|
55
|
+
function resolveRoleFromToolContextFallback(context) {
|
|
56
|
+
if (context.isOwner === true)
|
|
57
|
+
return 'owner';
|
|
58
|
+
if (context.isBotAdmin === true)
|
|
59
|
+
return 'admin';
|
|
60
|
+
if (context.fileRole === 'owner')
|
|
61
|
+
return 'owner';
|
|
62
|
+
if (context.fileRole === 'admin')
|
|
63
|
+
return 'admin';
|
|
64
|
+
if (context.fileRole === 'user')
|
|
65
|
+
return 'other';
|
|
66
|
+
return 'unknown';
|
|
67
|
+
}
|
|
68
|
+
function denyUnidentifiedTool(toolName) {
|
|
69
|
+
return {
|
|
70
|
+
allowed: false,
|
|
71
|
+
role: 'unknown',
|
|
72
|
+
reason: `无法确认调用者身份:工具「${toolName}」已拒绝。`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
43
75
|
export function checkFileToolAccess(toolName, context) {
|
|
44
|
-
const { role } = resolveRoleFromContext(context);
|
|
76
|
+
const { role, hasIdentity } = resolveRoleFromContext(context);
|
|
45
77
|
const op = FILE_TOOL_OPERATION[toolName];
|
|
46
|
-
if (role === 'owner'
|
|
78
|
+
if (role === 'owner') {
|
|
47
79
|
return { allowed: true, role };
|
|
48
80
|
}
|
|
81
|
+
if (!hasIdentity) {
|
|
82
|
+
return { allowed: true, role: 'unknown' };
|
|
83
|
+
}
|
|
84
|
+
if (role === 'unknown') {
|
|
85
|
+
if (op === 'read') {
|
|
86
|
+
return { allowed: true, role };
|
|
87
|
+
}
|
|
88
|
+
return denyUnidentifiedTool(toolName);
|
|
89
|
+
}
|
|
49
90
|
if (role === 'admin') {
|
|
50
91
|
if (op === 'delete') {
|
|
51
92
|
return {
|
|
@@ -94,11 +135,17 @@ export function checkSensitiveFilePathAccess(toolName, filePath, context) {
|
|
|
94
135
|
};
|
|
95
136
|
}
|
|
96
137
|
export function checkDangerousToolAccess(toolName, context) {
|
|
97
|
-
const { role, plugin } = resolveRoleFromContext(context);
|
|
138
|
+
const { role, plugin, hasIdentity } = resolveRoleFromContext(context);
|
|
139
|
+
if (!hasIdentity) {
|
|
140
|
+
return { allowed: true, role: 'unknown' };
|
|
141
|
+
}
|
|
98
142
|
try {
|
|
99
143
|
if (role === 'owner') {
|
|
100
144
|
return { allowed: true, role };
|
|
101
145
|
}
|
|
146
|
+
if (role === 'unknown') {
|
|
147
|
+
return denyUnidentifiedTool(toolName);
|
|
148
|
+
}
|
|
102
149
|
if (role === 'admin') {
|
|
103
150
|
const allowlist = plugin ? resolveExecAllowlistFromAiService(plugin) : [];
|
|
104
151
|
if (isAllowlisted(allowlist, toolName)) {
|
|
@@ -118,10 +165,10 @@ export function checkDangerousToolAccess(toolName, context) {
|
|
|
118
165
|
reason: `工具「${toolName}」为危险操作,仅 owner 可直接执行;admin 需 Owner 审批。`,
|
|
119
166
|
};
|
|
120
167
|
}
|
|
121
|
-
return
|
|
168
|
+
return denyUnidentifiedTool(toolName);
|
|
122
169
|
}
|
|
123
170
|
catch {
|
|
124
|
-
return
|
|
171
|
+
return denyUnidentifiedTool(toolName);
|
|
125
172
|
}
|
|
126
173
|
}
|
|
127
174
|
export function toOwnerSignal(decision) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangerous-tool-policy.js","sourceRoot":"","sources":["../../src/security/dangerous-tool-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,wBAAwB,EAA0B,MAAM,iCAAiC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAanD,MAAM,mBAAmB,GAAwC;IAC/D,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF,SAAS,aAAa,CAAC,SAAmB,EAAE,IAAY;IACtD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,KAAK,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAoC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwE,CAAC;IAC3G,MAAM,SAAS,GAAG,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"dangerous-tool-policy.js","sourceRoot":"","sources":["../../src/security/dangerous-tool-policy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"description": "Zhin AI Agent — session, ZhinAgent, init; composes @zhin.js/core providers and tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"he": "^1.2.0",
|
|
20
20
|
"js-yaml": "^4.2.0",
|
|
21
|
-
"@zhin.js/ai": "1.1.
|
|
22
|
-
"@zhin.js/core": "1.1.
|
|
21
|
+
"@zhin.js/ai": "1.1.28",
|
|
22
|
+
"@zhin.js/core": "1.1.30",
|
|
23
23
|
"@zhin.js/logger": "0.1.69"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|