@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
- - 🔍 **模型自动发现**:ModelRegistry 自动发现 Provider 可用模型,Tier 评分智能选择
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
- ```javascript
43
+ ```typescript
42
44
  import {
43
- initAIModule, // 即 initAgentModule 的别名
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
- | 模型管理 | `ModelRegistry`, `computeTierScore`, `extractModelRoot`, `AIModelInfo` |
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;AA4CnG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,qBAAqB,CA4BxG;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,CAgCzI;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"}
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
- if (!context?.platform || !context?.botId || !context?.senderId) {
33
- return { role: 'unknown' };
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 { role: resolveToolRequesterRole(plugin, context), plugin };
41
+ return {
42
+ role: resolveToolRequesterRole(plugin, context),
43
+ plugin,
44
+ hasIdentity: true,
45
+ };
38
46
  }
39
47
  catch {
40
- return { role: 'unknown' };
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' || role === 'unknown') {
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 { allowed: true, role: 'unknown' };
168
+ return denyUnidentifiedTool(toolName);
122
169
  }
123
170
  catch {
124
- return { allowed: true, role: 'unknown' };
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":"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"}
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.27",
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.27",
22
- "@zhin.js/core": "1.1.29",
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": {