feat: 支持智能体文档附件与轻量读取
- 建立文档上传、异步读取、对象存储、补偿与聊天绑定闭环 - 按智能体 20K 上下文预算选择文档片段并保留稳定引用 - 统一聊天文件卡片、类型图标、草稿恢复与可靠下载
This commit is contained in:
@@ -51,10 +51,13 @@ function resolveToolName(
|
||||
if (isSafeToolName(resource?.name)) {
|
||||
return String(resource?.name);
|
||||
}
|
||||
return buildFallbackToolName(
|
||||
kind === 'workflow' ? 'workflow' : kind === 'mcp' ? 'mcp' : 'plugin',
|
||||
resource,
|
||||
);
|
||||
let prefix = 'plugin';
|
||||
if (kind === 'workflow') {
|
||||
prefix = 'workflow';
|
||||
} else if (kind === 'mcp') {
|
||||
prefix = 'mcp';
|
||||
}
|
||||
return buildFallbackToolName(prefix, resource);
|
||||
}
|
||||
|
||||
function normalizeBindingToolName(binding: AgentToolBinding) {
|
||||
@@ -66,8 +69,8 @@ function normalizeBindingToolName(binding: AgentToolBinding) {
|
||||
}
|
||||
const kind = toolKindFromType(binding.toolType);
|
||||
const resource = {
|
||||
...(binding.resourceSnapshot || {}),
|
||||
...(binding.resourceSummary || {}),
|
||||
...binding.resourceSnapshot,
|
||||
...binding.resourceSummary,
|
||||
id:
|
||||
binding.targetId ||
|
||||
binding.resourceSummary?.id ||
|
||||
@@ -90,6 +93,9 @@ export function createEmptyAgent(): AgentInfo {
|
||||
description: '',
|
||||
avatar: '',
|
||||
categoryId: '',
|
||||
executionConfigJson: {
|
||||
documentContextBudgetTokens: 20_000,
|
||||
},
|
||||
modelId: '',
|
||||
promptConfigJson: { systemPrompt: '' },
|
||||
generationConfigJson: { stream: true },
|
||||
@@ -124,6 +130,13 @@ function normalizeAgent(agent?: AgentInfo): AgentInfo {
|
||||
...source.generationConfigJson,
|
||||
stream: source.generationConfigJson?.stream !== false,
|
||||
},
|
||||
executionConfigJson: {
|
||||
...source.executionConfigJson,
|
||||
documentContextBudgetTokens:
|
||||
Number(source.executionConfigJson?.documentContextBudgetTokens) > 0
|
||||
? Number(source.executionConfigJson?.documentContextBudgetTokens)
|
||||
: 20_000,
|
||||
},
|
||||
memoryConfigJson: {
|
||||
...memoryConfig,
|
||||
compressionParameter: {
|
||||
@@ -166,7 +179,7 @@ function normalizeToolBinding(
|
||||
index: number,
|
||||
): AgentToolBinding {
|
||||
const optionsJson = {
|
||||
...(binding.optionsJson || {}),
|
||||
...binding.optionsJson,
|
||||
};
|
||||
if (String(optionsJson.executionMode || '').toUpperCase() !== 'ASYNC') {
|
||||
optionsJson.executionMode = 'SYNC';
|
||||
@@ -269,16 +282,17 @@ export function useAgentDesignerState() {
|
||||
kind: Exclude<AgentCapabilityKind, 'knowledge'>,
|
||||
resource?: Record<string, any>,
|
||||
) {
|
||||
const toolType =
|
||||
kind === 'workflow' ? 'WORKFLOW' : kind === 'mcp' ? 'MCP' : 'PLUGIN';
|
||||
let toolType = 'PLUGIN';
|
||||
if (kind === 'workflow') {
|
||||
toolType = 'WORKFLOW';
|
||||
} else if (kind === 'mcp') {
|
||||
toolType = 'MCP';
|
||||
}
|
||||
const targetId = resource?.mcpId || resource?.id;
|
||||
const binding = normalizeToolBinding(
|
||||
{
|
||||
toolType,
|
||||
targetId: resource?.mcpId
|
||||
? String(resource.mcpId)
|
||||
: resource?.id
|
||||
? String(resource.id)
|
||||
: '',
|
||||
targetId: targetId ? String(targetId) : '',
|
||||
toolName: kind === 'mcp' ? '' : resolveToolName(kind, resource),
|
||||
resourceSummary: resource || {},
|
||||
},
|
||||
@@ -373,6 +387,17 @@ export function useAgentDesignerState() {
|
||||
...state.agent.generationConfigJson,
|
||||
stream: state.agent.generationConfigJson?.stream !== false,
|
||||
},
|
||||
executionConfigJson: {
|
||||
...state.agent.executionConfigJson,
|
||||
documentContextBudgetTokens: Math.max(
|
||||
1,
|
||||
Math.trunc(
|
||||
Number(
|
||||
state.agent.executionConfigJson?.documentContextBudgetTokens,
|
||||
) || 20_000,
|
||||
),
|
||||
),
|
||||
},
|
||||
memoryConfigJson: {
|
||||
...restMemoryConfigJson,
|
||||
compressionParameter: {
|
||||
|
||||
Reference in New Issue
Block a user