feat: enable investigation mode

This commit is contained in:
Li Xin
2025-04-30 19:53:14 +08:00
parent 3ef36b95f6
commit 0a0f705aca
6 changed files with 104 additions and 23 deletions

View File

@@ -17,6 +17,7 @@ export async function* chatStream(
max_plan_iterations: number;
max_step_num: number;
interrupt_feedback?: string;
enable_background_investigation: boolean;
mcp_settings?: {
servers: Record<
string,

View File

@@ -10,6 +10,7 @@ const SETTINGS_KEY = "deerflow.settings";
const DEFAULT_SETTINGS: SettingsState = {
general: {
autoAcceptedPlan: false,
enableBackgroundInvestigation: false,
maxPlanIterations: 1,
maxStepNum: 3,
},
@@ -21,6 +22,7 @@ const DEFAULT_SETTINGS: SettingsState = {
export type SettingsState = {
general: {
autoAcceptedPlan: boolean;
enableBackgroundInvestigation: boolean;
maxPlanIterations: number;
maxStepNum: number;
};
@@ -48,9 +50,10 @@ export const loadSettings = () => {
const json = localStorage.getItem(SETTINGS_KEY);
if (json) {
const settings = JSON.parse(json);
for (const key in DEFAULT_SETTINGS) {
if (!(key in settings)) {
settings[key] = DEFAULT_SETTINGS[key as keyof SettingsState];
for (const key in DEFAULT_SETTINGS.general) {
if (!(key in settings.general)) {
settings.general[key as keyof SettingsState["general"]] =
DEFAULT_SETTINGS.general[key as keyof SettingsState["general"]];
}
}
@@ -71,14 +74,14 @@ export const saveSettings = () => {
export const getChatStreamSettings = () => {
let mcpSettings:
| {
servers: Record<
string,
MCPServerMetadata & {
enabled_tools: string[];
add_to_agents: string[];
}
>;
}
servers: Record<
string,
MCPServerMetadata & {
enabled_tools: string[];
add_to_agents: string[];
}
>;
}
| undefined = undefined;
const { mcp, general } = useSettingsStore.getState();
const mcpServers = mcp.servers.filter((server) => server.enabled);
@@ -120,4 +123,13 @@ export const getChatStreamSettings = () => {
};
};
export function setEnableBackgroundInvestigation(value: boolean) {
useSettingsStore.setState((state) => ({
general: {
...state.general,
enableBackgroundInvestigation: value,
},
}));
saveSettings();
}
loadSettings();

View File

@@ -50,7 +50,9 @@ export const useStore = create<{
}));
},
updateMessage(message: Message) {
set(state => ({ messages: new Map(state.messages).set(message.id, message) }));
set((state) => ({
messages: new Map(state.messages).set(message.id, message),
}));
},
updateMessages(messages: Message[]) {
set((state) => {
@@ -67,7 +69,7 @@ export const useStore = create<{
},
setOngoingResearch(researchId: string | null) {
set({ ongoingResearchId: researchId });
}
},
}));
export async function sendMessage(
@@ -96,6 +98,8 @@ export async function sendMessage(
thread_id: THREAD_ID,
interrupt_feedback: interruptFeedback,
auto_accepted_plan: settings.autoAcceptedPlan,
enable_background_investigation:
settings.enableBackgroundInvestigation ?? true,
max_plan_iterations: settings.maxPlanIterations,
max_step_num: settings.maxStepNum,
mcp_settings: settings.mcpSettings,