fix: send full extract_webpage content to model

This commit is contained in:
JOJO 2026-01-03 15:03:41 +08:00
parent e2ba632ac8
commit f5cf2fb7e7
4 changed files with 44 additions and 4 deletions

View File

@ -95,6 +95,7 @@
<TokenDrawer
:visible="Boolean(currentConversationId)"
:collapsed="tokenPanelCollapsed"
@toggle="handleTokenPanelToggleClick"
:current-conversation-tokens="currentConversationTokens"
:current-context-tokens="currentContextTokens"
:container-status="containerStatus"

View File

@ -1,6 +1,9 @@
<template>
<div class="token-drawer" v-if="visible" :class="{ collapsed }">
<div class="token-display-panel">
<button class="token-close-btn" type="button" @click="emit('toggle')">
</button>
<div class="token-panel-content">
<div class="usage-dashboard">
<div class="usage-cell usage-cell--left usage-cell--token panel-card">
@ -95,6 +98,10 @@ defineOptions({ name: 'TokenDrawer' });
import { computed } from 'vue';
const emit = defineEmits<{
(e: 'toggle'): void;
}>();
const props = defineProps<{
visible: boolean;
collapsed: boolean;

View File

@ -5,7 +5,7 @@
/* 顶部 Token 抽屉 */
.token-drawer {
position: absolute;
top: 20px;
top: 56px;
left: 0;
right: 0;
width: 100%;
@ -24,6 +24,7 @@
box-shadow: 0 24px 42px rgba(61, 57, 41, 0.18);
transition: transform 0.35s ease, opacity 0.35s ease;
pointer-events: auto;
position: relative;
}
.token-drawer.collapsed .token-display-panel {
@ -163,6 +164,33 @@
color: var(--claude-text-secondary);
}
.token-close-btn {
position: absolute;
top: 12px;
left: 12px;
width: 28px;
height: 28px;
border: 1px solid var(--claude-border);
border-radius: 50%;
background: rgba(255, 255, 255, 0.8);
color: var(--claude-text);
font-size: 14px;
display: grid;
place-items: center;
cursor: pointer;
transition: background 0.2s ease, transform 0.2s ease;
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.08);
}
.token-close-btn:hover {
background: var(--claude-surface);
transform: translateY(-1px);
}
.token-close-btn:active {
transform: translateY(0);
}
.panel-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));

View File

@ -562,12 +562,16 @@ def _format_extract_webpage(result_data: Dict[str, Any]) -> str:
url = result_data.get("url") or "目标网页"
content = result_data.get("content") or ""
length = len(content)
preview, truncated = _preview_text(content, 800)
truncated_flag = result_data.get("truncated") or False
header = f"提取完成:{url},长度 {length} 字符。"
if not content:
return f"{header} 内容为空。"
note = "(截断预览)" if truncated else "(未截断)"
return "\n".join([f"{header}{note}", "```", preview, "```"])
# 为模型保留完整正文,避免 800 字预览导致上下文缺失
note_parts = []
if truncated_flag:
note_parts.append("原始内容已被上游截断")
note = f"{''.join(note_parts)}" if note_parts else ""
return "\n".join([f"{header}{note}", "```", content, "```"])
def _format_vlm_analyze(result_data: Dict[str, Any]) -> str: