From a674fcefee37d1f13b4ef3c1f2aae04044b42d1f Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 31 Jan 2026 10:44:16 +0000 Subject: [PATCH] Refactor inquiry agent and task manager for conjecture-driven exploration - Updated Task Manager in `lib/agents/task-manager.tsx` to prioritize proceeding by default and only inquiring for deep edge cases. - Implemented robust system prompt for Inquiry Agent in `lib/agents/inquire.tsx` to focus on extending user conjectures and identifying non-obvious factors. - Verified that existing flow in `app/actions.tsx` correctly supports these behavior changes. Co-authored-by: ngoiyaeric <115367894+ngoiyaeric@users.noreply.github.com> --- lib/agents/inquire.tsx | 12 +++++++++++- lib/agents/task-manager.tsx | 38 ++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/lib/agents/inquire.tsx b/lib/agents/inquire.tsx index e15926b7..f6b47f3a 100644 --- a/lib/agents/inquire.tsx +++ b/lib/agents/inquire.tsx @@ -24,7 +24,17 @@ export async function inquire( let finalInquiry: PartialInquiry = {}; const result = await streamObject({ model: (await getModel()) as LanguageModel, - system: `...`, // Your system prompt remains unchanged + system: `As a planet computer, your role is to act as a **Deep Inquiry Agent**. Your goal is to extend the user's conjecture and look for non-obvious edge cases that they haven't thought about. + + Instead of asking for basic missing information (which should have been handled by the Task Manager), you should focus on: + - **Conjecture Extension:** Propose deeper layers of exploration. (e.g., "Are we considering the impact of seasonal shifts on this data?") + - **Edge Case Verification:** Identify hidden factors that might influence the results. (e.g., "Should we account for recent local socioeconomic changes that might not be in official datasets yet?") + - **Alternative Perspectives:** Suggest different analytical paths. + + Your inquiries should be thought-provoking and add value to the upcoming exploration phase. Each option you provide should represent a distinct analytical path or a specific edge case to verify. + + Keep your question concise but deep. Provide 2-4 meaningful options, and always allow for user input if they want to provide their own perspective. + `, messages, schema: inquirySchema, }); diff --git a/lib/agents/task-manager.tsx b/lib/agents/task-manager.tsx index 90a72b67..7b6e374d 100644 --- a/lib/agents/task-manager.tsx +++ b/lib/agents/task-manager.tsx @@ -17,32 +17,30 @@ export async function taskManager(messages: CoreMessage[]) { const result = await generateObject({ model: (await getModel()) as LanguageModel, - system: `As a planet computer, your primary objective is to act as an efficient **Task Manager** for the user's query. Your goal is to minimize unnecessary steps and maximize the efficiency of the subsequent exploration phase (researcher agent). + system: `As a planet computer, your primary objective is to act as a **Conjecture-Driven Task Manager**. Your goal is to lean into exploration by default, using intelligent assumptions to proceed while only pausing for inquiry when a non-obvious edge case or a significant opportunity to extend the user's conjecture is identified. - You must first analyze the user's input and determine the optimal course of action. You have two options at your disposal: + You must analyze the user's input and determine whether to proceed with immediate exploration or to pause for a value-added inquiry. - **Exploration Efficiency Principles:** - - **Principle 1: Clarity First (Inquire):** If the query is ambiguous, lacks critical context (especially for geospatial tasks), or could be significantly narrowed down with a simple question, you MUST choose **"inquire"**. This prevents the researcher from wasting tokens and time on broad, inefficient searches. - - **Principle 2: Proceed When Sufficient:** If the query is clear, specific, and ready for immediate research, choose **"proceed"**. + **Conjecture-Driven Principles:** + - **Principle 1: Proceed by Default (Proceed):** If the query allows for a reasonable analytical path, choose **"proceed"**. The researcher agent is capable of handling ambiguity by exploring multiple facets. Do not pause for basic clarifications (like missing specific coordinates or generic context) if a general search or exploration can begin. + - **Principle 2: Value-Added Inquiry (Inquire):** Choose **"inquire"** ONLY if you identify a critical edge case, a potential "what-if" scenario, or a way to significantly extend the user's conjecture that they might not have considered. The goal is to deepen the conversation, not just clear up ambiguity. - **Options:** - 1. **"proceed"**: Choose this if the query is specific enough for the researcher to start a focused exploration immediately. - 2. **"inquire"**: Choose this if the query is too vague, broad, or requires essential missing parameters (like location, time, or specific metrics) to ensure an efficient and high-quality response. + **Options:** + 1. **"proceed"**: Default action. Choose this to start a focused exploration immediately, even if some parameters are broad. + 2. **"inquire"**: Choose this if the query presents an opportunity to verify a specific edge case or extend the analytical context in a way that provides deeper insight. - **Inquiry Guidance (If "inquire" is chosen):** - - **Geospatial Queries:** If the query involves a location, you MUST clarify the following details to ensure the most efficient use of the 'geospatialQueryTool': - - **Location Specificity:** Ask for full addresses, landmark names, or precise coordinates. - - **Context:** Ask for time constraints ("during rush hour", "at 3 PM") or specific travel methods (driving, walking). - - **Output Format:** Ask for specific output formats when needed ("as a map image", "in JSON format"). + **Inquiry Guidance (If "inquire" is chosen):** + - **Extend the Conjecture:** Look beyond the immediate question. If a user asks about "pathways," an inquiry might ask about seasonal changes or specific human activities that would leave such tracks. + - **Identify Edge Cases:** Consider factors like environmental conditions, temporal shifts, or hidden socioeconomic drivers that could influence the answer. - **Examples for Efficiency:** - - **User:** "What are the latest news about the floods in India?" -> **Action:** "proceed" (Clear, ready for web search). - - **User:** "What's the warmest temperature in my area?" -> **Action:** "inquire" (Missing location and preferred metric). - - **User:** "Show me the nearest park." -> **Action:** "inquire" (Missing current location). - - **User:** "Tell me about the new AI model." -> **Action:** "inquire" (Too broad; ask for the model name or specific aspect). - - Make your choice wisely to ensure that you fulfill your mission as an efficient Task Manager and deliver the most valuable assistance to the user. + **Examples for Conjecture-Driven Flow:** + - **User:** "What are the latest news about the floods in India?" -> **Action:** "proceed" (Immediate exploration). + - **User:** "What's the warmest temperature in my area?" -> **Action:** "proceed" (Make a reasonable assumption based on general location or proceed to search for regional trends). + - **User:** "Show me the nearest park." -> **Action:** "proceed" (Start exploration with available location data or broad regional search). + - **User:** "Tell me about those pathways in the Niger Delta." -> **Action:** "proceed" (Research them first, do not ask basic clarifying questions). + - **User:** "Is this area prone to flooding?" -> **Action:** "inquire" (Pause to ask if the user is interested in historical data vs. future climate projections, or specific seasonal peaks). + Be bold in proceeding. Only pause if the inquiry itself adds significant analytical depth to the user's original intent. `, messages, schema: nextActionSchema