@yfwu2020/dsh-selection-explain 0.12.0 → 0.13.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/README.md +18 -5
- package/lib/chat-context.js +6 -4
- package/lib/chat-context.js.map +1 -1
- package/lib/client.js +11810 -10118
- package/lib/client.js.map +4 -4
- package/lib/config-values.js +5 -1
- package/lib/config-values.js.map +1 -1
- package/lib/host/analyze-conclusion.js +115 -0
- package/lib/host/analyze-conclusion.js.map +1 -0
- package/lib/host/analyze-execution-types.js +2 -0
- package/lib/host/analyze-execution-types.js.map +1 -0
- package/lib/host/analyze-execution.js +166 -0
- package/lib/host/analyze-execution.js.map +1 -0
- package/lib/host/analyze-history.js +110 -0
- package/lib/host/analyze-history.js.map +1 -0
- package/lib/host/analyze-messages.js +95 -0
- package/lib/host/analyze-messages.js.map +1 -0
- package/lib/host/analyze-output.js +69 -0
- package/lib/host/analyze-output.js.map +1 -0
- package/lib/host/analyze-prompt.js +110 -0
- package/lib/host/analyze-prompt.js.map +1 -0
- package/lib/host/analyze-request.js +129 -0
- package/lib/host/analyze-request.js.map +1 -0
- package/lib/host/analyze-round.js +121 -0
- package/lib/host/analyze-round.js.map +1 -0
- package/lib/host/analyze-tool-execution.js +98 -0
- package/lib/host/analyze-tool-execution.js.map +1 -0
- package/lib/host/analyze-tools.js +79 -0
- package/lib/host/analyze-tools.js.map +1 -0
- package/lib/host/analyze-types.js +2 -0
- package/lib/host/analyze-types.js.map +1 -0
- package/lib/host/analyze.js +30 -926
- package/lib/host/analyze.js.map +1 -1
- package/lib/host/chat-context.js +8 -3
- package/lib/host/chat-context.js.map +1 -1
- package/lib/host/config.js +6 -0
- package/lib/host/config.js.map +1 -1
- package/lib/host/history-store.js +18 -6
- package/lib/host/history-store.js.map +1 -1
- package/lib/host/native-probe.js +66 -0
- package/lib/host/native-probe.js.map +1 -0
- package/lib/host/plugin.js +30 -0
- package/lib/host/plugin.js.map +1 -1
- package/lib/host/shot-capture.js +322 -0
- package/lib/host/shot-capture.js.map +1 -0
- package/lib/host/shot-geometry.js +183 -0
- package/lib/host/shot-geometry.js.map +1 -0
- package/lib/host/shot-platform.js +208 -0
- package/lib/host/shot-platform.js.map +1 -0
- package/lib/host/shot-service.js +127 -0
- package/lib/host/shot-service.js.map +1 -0
- package/lib/host/shot-types.js +5 -0
- package/lib/host/shot-types.js.map +1 -0
- package/lib/host/shot.js +136 -0
- package/lib/host/shot.js.map +1 -0
- package/lib/prompts.js +54 -1
- package/lib/prompts.js.map +1 -1
- package/lib/settings.js +13 -2
- package/lib/settings.js.map +1 -1
- package/lib/types/chat-context.d.ts +2 -2
- package/lib/types/config-values.d.ts +24 -0
- package/lib/types/host/analyze-conclusion.d.ts +3 -0
- package/lib/types/host/analyze-execution-types.d.ts +54 -0
- package/lib/types/host/analyze-execution.d.ts +3 -0
- package/lib/types/host/analyze-history.d.ts +41 -0
- package/lib/types/host/analyze-messages.d.ts +15 -0
- package/lib/types/host/analyze-output.d.ts +8 -0
- package/lib/types/host/analyze-prompt.d.ts +15 -0
- package/lib/types/host/analyze-request.d.ts +28 -0
- package/lib/types/host/analyze-round.d.ts +7 -0
- package/lib/types/host/analyze-tool-execution.d.ts +4 -0
- package/lib/types/host/analyze-tools.d.ts +15 -0
- package/lib/types/host/analyze-types.d.ts +13 -0
- package/lib/types/host/analyze.d.ts +4 -4
- package/lib/types/host/config.d.ts +12 -0
- package/lib/types/host/native-probe.d.ts +10 -0
- package/lib/types/host/shot-capture.d.ts +11 -0
- package/lib/types/host/shot-geometry.d.ts +37 -0
- package/lib/types/host/shot-platform.d.ts +11 -0
- package/lib/types/host/shot-service.d.ts +17 -0
- package/lib/types/host/shot-types.d.ts +105 -0
- package/lib/types/host/shot.d.ts +16 -0
- package/lib/types/host/types.d.ts +13 -0
- package/lib/types/prompts.d.ts +21 -0
- package/native/window-list.c +139 -0
- package/package.json +5 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { MATERIAL_TOOL } from './chat-materials.js';
|
|
2
|
+
import { name } from './constants.js';
|
|
3
|
+
import { sessionIdOf } from './context.js';
|
|
4
|
+
import { FS_TOOL_NAMES, resolveToolNames, webFetchUsable } from './tools.js';
|
|
5
|
+
/** Resolve session scope, allowed tools, fetch availability and filesystem boundary. */
|
|
6
|
+
export async function planAnalyzeTools(deps, request) {
|
|
7
|
+
const { ctx, config, sessions } = deps;
|
|
8
|
+
const { body, isChat, history } = request;
|
|
9
|
+
// 可用工具(白名单,默认只有联网搜索/抓取):交给模型自己决定要不要用。
|
|
10
|
+
// 注意工具是「按会话作用域」注册的(全局视图里看不到 web_search 等),
|
|
11
|
+
// 所以要拿该会话的 agent 当 scope 去查,并把同一个 agent 传给 execute。
|
|
12
|
+
const agents = ctx.get('agents');
|
|
13
|
+
const sessionId = sessionIdOf(body);
|
|
14
|
+
let agent = sessionId ? agents?.get?.(sessionId) : undefined;
|
|
15
|
+
let agentScope = agent ? 'session' : '';
|
|
16
|
+
if (!agent) {
|
|
17
|
+
// 回退:本会话还没起 agent(刚开的新会话/agent 已释放)时,用任一活跃 agent 当作用域。
|
|
18
|
+
// 不这么做的话,session-scoped 的 web_search/web_fetch 在全局视图里根本不可见 →
|
|
19
|
+
// 工具静默为空,模型还会把工具调用当正文吐出来(实测见过 <ds_safety_tool_call>)。
|
|
20
|
+
const live = agents?.list?.() ?? [];
|
|
21
|
+
if (live.length > 0) {
|
|
22
|
+
agent = live[0];
|
|
23
|
+
agentScope = 'fallback';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const toolSchemas = [];
|
|
27
|
+
/** 诊断:这一轮是不是走了"备用联网工具"(首选联网工具一个都不在)。 */
|
|
28
|
+
let toolFallbackUsed = false;
|
|
29
|
+
if (config.tools && config.maxToolRounds > 0) {
|
|
30
|
+
const registry = ctx.get('tools');
|
|
31
|
+
const split = (value) => value.split(',').map((item) => item.trim()).filter((item) => item.length > 0);
|
|
32
|
+
let visible = [];
|
|
33
|
+
try {
|
|
34
|
+
visible = registry?.schemas?.(agent) ?? [];
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
ctx.logger?.warn?.(`[${name}] 读取工具表失败:${String(error?.message ?? error)}`);
|
|
38
|
+
}
|
|
39
|
+
const allowed = resolveToolNames(split(config.toolNames), split(config.fallbackToolNames), visible.map((schema) => schema.name));
|
|
40
|
+
toolFallbackUsed = !allowed.includes('advanced_search') && !allowed.includes('platform_search');
|
|
41
|
+
for (const schema of visible) {
|
|
42
|
+
if (allowed.includes(schema.name))
|
|
43
|
+
toolSchemas.push(schema);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// 本机抓不了网页(fake-IP 代理 / SSRF 防护)时,把 web_fetch 摘掉:
|
|
47
|
+
// 否则模型每次都要白跑一轮(5~15s)才拿到"resolves to a non-public IP address"。
|
|
48
|
+
let fetchBlockedSample = '';
|
|
49
|
+
if (toolSchemas.some((schema) => schema.name === 'web_fetch')) {
|
|
50
|
+
const probe = await webFetchUsable();
|
|
51
|
+
if (!probe.usable) {
|
|
52
|
+
fetchBlockedSample = probe.sample;
|
|
53
|
+
for (let i = toolSchemas.length - 1; i >= 0; i -= 1) {
|
|
54
|
+
if (toolSchemas[i]?.name === 'web_fetch')
|
|
55
|
+
toolSchemas.splice(i, 1);
|
|
56
|
+
}
|
|
57
|
+
ctx.logger?.warn?.(`[${name}] 网页抓取不可用(域名解析到 ${probe.sample},属保留地址段),已从工具表移除 web_fetch`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (isChat && config.tools && config.maxToolRounds > 0 && (history.rawHistory.length > 0 || history.catalog.length > 0 || history.contextState.through > 0)) {
|
|
61
|
+
toolSchemas.push(MATERIAL_TOOL);
|
|
62
|
+
}
|
|
63
|
+
// 文件类工具的边界:默认只允许会话工作目录;'*' = 不限制;配置了具体目录就用它。
|
|
64
|
+
// 拿不到工作目录时**不设限**(否则新会话里 read 直接全废),但会打日志说明。
|
|
65
|
+
const wantsFsTools = toolSchemas.some((schema) => FS_TOOL_NAMES.includes(schema.name));
|
|
66
|
+
let readRoot = '';
|
|
67
|
+
if (wantsFsTools) {
|
|
68
|
+
if (config.toolReadRoot === '*') {
|
|
69
|
+
readRoot = '';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
readRoot = config.toolReadRoot || (await sessions.resolveSessionCwd(sessionIdOf(body))) || '';
|
|
73
|
+
if (!readRoot)
|
|
74
|
+
ctx.logger?.warn?.(`[${name}] 拿不到会话工作目录,文件工具本次不设边界`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { agent, agentScope, sessionId, toolSchemas, toolFallbackUsed, fetchBlockedSample, wantsFsTools, readRoot };
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=analyze-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-tools.js","sourceRoot":"","sources":["../../src/host/analyze-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-types.js","sourceRoot":"","sources":["../../src/host/analyze-types.ts"],"names":[],"mappings":""}
|