Browse Source

feat: 优化工具处理逻辑,确保在无代理工具时隐藏工具栏

feat/agent-independence
npmrun 2 months ago
parent
commit
24099b6b70
  1. 12
      app/components/agent/AgentInput.vue
  2. 2
      app/pages/chat/[agentSlug]/index.vue
  3. BIN
      packages/drizzle-pkg/db.sqlite

12
app/components/agent/AgentInput.vue

@ -29,9 +29,11 @@ const inputText = ref("");
const textareaRef = ref<HTMLTextAreaElement | null>(null);
const fetchedTools = ref<ToolInfo[]>([]);
const hasAgentTools = computed(() => !!(props.agentTools && props.agentTools.length > 0));
const availableTools = computed<ToolInfo[]>(() => {
if (props.agentTools && props.agentTools.length > 0) {
return props.agentTools;
if (hasAgentTools.value) {
return props.agentTools!;
}
return fetchedTools.value;
});
@ -45,7 +47,7 @@ const effectivePlaceholder = computed(() => {
});
async function loadTools() {
if (props.agentTools && props.agentTools.length > 0) return;
if (hasAgentTools.value) return;
try {
const res = await $fetch<{ code: number; data: ToolInfo[] }>("/api/llm/chat/tools");
fetchedTools.value = res.data ?? [];
@ -128,8 +130,8 @@ defineExpose({
</button>
</div>
<!-- Tools bar above input (hidden when model doesn't support tools) -->
<div v-if="!toolsDisabled" class="tools-bar">
<!-- Tools bar above input (hidden when model doesn't support tools or agent has no tools) -->
<div v-if="!toolsDisabled && hasAgentTools" class="tools-bar">
<button
class="toggle-btn"
:class="{ active: enableTools, disabled: toolsDisabled }"

2
app/pages/chat/[agentSlug]/index.vue

@ -86,10 +86,12 @@ const currentModelSupportsTools = computed(() => {
const enableTools = computed({
get: () => {
if (!currentModelSupportsTools.value) return false;
if (agentTools.value.length === 0) return false;
return !!(sessions.currentSession.value?.enableTools);
},
set: (val: boolean) => {
if (!currentModelSupportsTools.value) return;
if (agentTools.value.length === 0) return;
if (sessions.currentSessionId.value) {
sessions.updateSessionConfig(sessions.currentSessionId.value, { enableTools: val });
}

BIN
packages/drizzle-pkg/db.sqlite

Binary file not shown.
Loading…
Cancel
Save