feat(web): add enable_web_search frontend UI (#681) (#766)

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
This commit is contained in:
Jiahe Wu
2025-12-17 23:36:32 +08:00
committed by GitHub
parent b85130b849
commit 3e8f2ce3ad
6 changed files with 44 additions and 2 deletions

View File

@@ -44,7 +44,9 @@
"maxStepsOfPlan": "Max steps of a research plan",
"maxStepsDescription": "By default, each research plan has 3 steps.",
"maxSearchResults": "Max search results",
"maxSearchResultsDescription": "By default, each search step has 3 results."
"maxSearchResultsDescription": "By default, each search step has 3 results.",
"enableWebSearch": "Enable web search",
"enableWebSearchDescription": "When disabled, only local RAG knowledge base will be used. Useful for environments without internet access."
},
"mcp": {
"title": "MCP Servers",

View File

@@ -44,7 +44,9 @@
"maxStepsOfPlan": "研究计划的最大步骤数",
"maxStepsDescription": "默认情况下,每个研究计划有 3 个步骤。",
"maxSearchResults": "最大搜索结果数",
"maxSearchResultsDescription": "默认情况下,每个搜索步骤有 3 个结果。"
"maxSearchResultsDescription": "默认情况下,每个搜索步骤有 3 个结果。",
"enableWebSearch": "启用网络搜索",
"enableWebSearchDescription": "禁用后将仅使用本地 RAG 知识库。适用于无网络环境。"
},
"mcp": {
"title": "MCP 服务器",

View File

@@ -42,6 +42,7 @@ const generalFormSchema = z.object({
// Others
enableBackgroundInvestigation: z.boolean(),
enableDeepThinking: z.boolean(),
enableWebSearch: z.boolean(),
reportStyle: z.enum(["academic", "popular_science", "news", "social_media","strategic_investment"]),
});
@@ -126,6 +127,29 @@ export const GeneralTab: Tab = ({
</FormItem>
)}
/>
<FormField
control={form.control}
name="enableWebSearch"
render={({ field }) => (
<FormItem>
<FormControl>
<div className="flex items-center gap-2">
<Switch
id="enableWebSearch"
checked={field.value}
onCheckedChange={field.onChange}
/>
<Label className="text-sm" htmlFor="enableWebSearch">
{t("enableWebSearch")}
</Label>
</div>
</FormControl>
<FormDescription>
{t("enableWebSearchDescription")}
</FormDescription>
</FormItem>
)}
/>
{form.watch("enableClarification") && (
<FormField
control={form.control}

View File

@@ -51,6 +51,7 @@ export async function* chatStream(
interrupt_feedback?: string;
enable_deep_thinking?: boolean;
enable_background_investigation: boolean;
enable_web_search?: boolean;
report_style?: "academic" | "popular_science" | "news" | "social_media" | "strategic_investment";
mcp_settings?: {
servers: Record<

View File

@@ -14,6 +14,7 @@ const DEFAULT_SETTINGS: SettingsState = {
maxClarificationRounds: 3,
enableDeepThinking: false,
enableBackgroundInvestigation: false,
enableWebSearch: true,
maxPlanIterations: 1,
maxStepNum: 3,
maxSearchResults: 3,
@@ -31,6 +32,7 @@ export type SettingsState = {
maxClarificationRounds: number;
enableDeepThinking: boolean;
enableBackgroundInvestigation: boolean;
enableWebSearch: boolean;
maxPlanIterations: number;
maxStepNum: number;
maxSearchResults: number;
@@ -174,4 +176,14 @@ export function setEnableClarification(value: boolean) {
}));
saveSettings();
}
export function setEnableWebSearch(value: boolean) {
useSettingsStore.setState((state) => ({
general: {
...state.general,
enableWebSearch: value,
},
}));
saveSettings();
}
loadSettings();

View File

@@ -115,6 +115,7 @@ export async function sendMessage(
enable_deep_thinking: settings.enableDeepThinking ?? false,
enable_background_investigation:
settings.enableBackgroundInvestigation ?? true,
enable_web_search: settings.enableWebSearch ?? true,
max_plan_iterations: settings.maxPlanIterations,
max_step_num: settings.maxStepNum,
max_search_results: settings.maxSearchResults,