Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reviewer's GuideImplements proper support for multi-agent parallel tasks by wiring a new executeAgentTasks orchestration path end-to-end, splitting client/server task rendering with live metrics, enhancing task title metrics display, and updating batch-result handling and system prompts while temporarily disabling the public manifest entry for the multi-task tool. Sequence diagram for executeAgentTasks orchestration flowsequenceDiagram
actor User
participant UI as ChatUI
participant Supervisor as SupervisorAgent
participant Tool as GroupManagementExecutor
participant AR as AgentRuntime
participant Orchestr as GroupOrchestrationStore
participant Agents as WorkerAgents
participant StreamExec as StreamingExecutor
participant ChatStore
User->>UI: Ask for multi-part work
UI->>Supervisor: User request
Supervisor->>Tool: executeAgentTasks(params)
Tool->>Tool: prepare tasks list
Tool->>Tool: ctx.registerAfterCompletion(callback)
Tool-->>Supervisor: BuiltinToolResult { stop: true,
Tool-->>Supervisor: state.type = executeAgentTasks }
Supervisor->>AR: Continue group orchestration
AR->>Tool: Complete tool call
Tool-->>AR: afterCompletion callback registered
AR->>Tool: Finish execution
Tool-->>Orchestr: triggerExecuteTasks(params)
Orchestr->>Orchestr: get().activeGroupId
Orchestr->>Orchestr: build initialResult
Orchestr->>Orchestr: decision = execute_tasks
Orchestr->>AR: internal_execGroupOrchestration({
Orchestr->>AR: initialResult.type = supervisor_decided,
Orchestr->>AR: payload.decision = execute_tasks,
Orchestr->>AR: payload.params.tasks, toolMessageId,
Orchestr->>AR: skipCallSupervisor
Orchestr->>AR: })
AR->>Agents: Run tasks in parallel
loop For each task
AR-->>Agents: Execute async task
Agents-->>AR: Task result
end
AR-->>StreamExec: result.nextContext.phase = tasks_batch_result
StreamExec->>ChatStore: refreshMessages(context)
ChatStore-->>UI: Updated messages with task results
UI-->>User: Display completed multi-agent tasks
Class diagram for TaskItem refactor and metrics componentsclassDiagram
class UIChatMessage {
+string id
+any content
+any metadata
+any taskDetail
}
class TaskItem {
+UIChatMessage item
}
class ClientTaskItem {
+UIChatMessage item
}
class ServerTaskItem {
+UIChatMessage item
}
class TaskTitle {
+TaskMetrics metrics
+ThreadStatus status
+string title
}
class MetricsDisplay {
+TaskMetrics metrics
+ThreadStatus status
-number elapsedTime
-setElapsedTime(number value) void
}
class TaskMetrics {
+number duration
+boolean isLoading
+number startTime
+number steps
+number toolCalls
}
class ClientTaskStats {
+boolean isLoading
+number startTime
+number steps
+number toolCalls
}
class useClientTaskStats {
+ClientTaskStats useClientTaskStats(boolean enabled, string threadId)
}
class ThreadStatus {
<<enumeration>>
Completed
Failed
Cancel
}
TaskItem --> UIChatMessage : uses
TaskItem --> ClientTaskItem : renders
TaskItem --> ServerTaskItem : renders
ClientTaskItem --> UIChatMessage : reads
ClientTaskItem --> TaskTitle : renders
ClientTaskItem --> useClientTaskStats : calls
ServerTaskItem --> UIChatMessage : reads
ServerTaskItem --> TaskTitle : renders
TaskTitle --> TaskMetrics : has
TaskTitle --> MetricsDisplay : renders
MetricsDisplay --> TaskMetrics : reads
MetricsDisplay --> ThreadStatus : reads
useClientTaskStats --> ClientTaskStats : returns
useClientTaskStats --> UIChatMessage : derives from thread messages
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
There is too much information in the pull request to test. |
There was a problem hiding this comment.
Hey - I've found 1 issue, and left some high level feedback:
- The
TaskItemmemoization now usesfast-deep-equalon the fullUIChatMessage, which could be expensive for large message trees; consider memoizing based on stable keys (e.g.,idplus specific fields you care about) or splitting props to avoid deep equality on the whole object. ClientTaskItemandServerTaskItemshare a lot of identical UI and status-handling logic; extracting a common presentational component that accepts metrics as props would reduce duplication and make future changes to task rendering less error-prone.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The `TaskItem` memoization now uses `fast-deep-equal` on the full `UIChatMessage`, which could be expensive for large message trees; consider memoizing based on stable keys (e.g., `id` plus specific fields you care about) or splitting props to avoid deep equality on the whole object.
- `ClientTaskItem` and `ServerTaskItem` share a lot of identical UI and status-handling logic; extracting a common presentational component that accepts metrics as props would reduce duplication and make future changes to task rendering less error-prone.
## Individual Comments
### Comment 1
<location> `packages/builtin-tool-group-management/src/client/Render/ExecuteTasks/index.tsx:73-77` </location>
<code_context>
+
+ return (
+ <div className={styles.container}>
+ {tasksWithAgents.map((task, index) => {
+ const timeoutMinutes = task.timeout ? Math.round(task.timeout / 60_000) : 30;
+
+ return (
+ <div className={styles.taskCard} key={task.agentId || index}>
+ <Flexbox gap={12}>
+ {/* Header: Agent info + Timeout */}
</code_context>
<issue_to_address>
**issue (bug_risk):** Avoid potential key collisions when multiple tasks use the same agentId.
Since multiple tasks can legitimately share an `agentId`, using it alone as the React key (with `index` only as a falsy fallback) risks incorrect reconciliation and subtle UI glitches. Prefer a composite key like `${agentId}-${index}` or, better, a stable task-specific identifier to ensure each rendered task is uniquely keyed.
</issue_to_address>Help me be more useful! Please click π or π on each comment and I'll use the feedback to improve your reviews.
π€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
π‘ Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1b19255999
βΉοΈ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with π.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| initialResult: { | ||
| type: 'supervisor_decided', | ||
| payload: { | ||
| decision: 'execute_tasks', | ||
| params: { tasks, toolMessageId }, |
There was a problem hiding this comment.
Wire execute_tasks to batch_exec_async_tasks
When triggerExecuteTasks sets decision: 'execute_tasks', the GroupOrchestrationSupervisor decision switch only handles execute_task and falls through to the default case (finish with unknown_decision). This means any call to the new executeAgentTasks flow will immediately end orchestration without running the parallel tasks. To make this work, the supervisor needs an execute_tasks branch that emits batch_exec_async_tasks (and maps the task payload) instead of finishing.
Useful? React with πΒ / π.
Codecov Reportβ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## next #11672 +/- ##
==========================================
- Coverage 74.07% 74.05% -0.03%
==========================================
Files 1187 1187
Lines 94490 94524 +34
Branches 12860 10394 -2466
==========================================
+ Hits 69996 70001 +5
- Misses 24404 24433 +29
Partials 90 90
Flags with carried forward coverage won't be shown. Click here to find out more.
π New features to boost your workflow:
|
|
β€οΈ Great PR @arvinxx β€οΈ The growth of project is inseparable from user feedback and contribution. Thanks for your contribution! If you are interested in the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing AI newsletter around the world.
Original Contentβ€οΈ Great PR @arvinxx β€οΈ The growth of project is inseparable from user feedback and contribution, thanks for your contribution! If you are interesting with the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing ai newsletter around the world. |
## [Version 2.0.0-next.330](v2.0.0-next.329...v2.0.0-next.330) <sup>Released on **2026-01-21**</sup> #### π Bug Fixes - **misc**: Fix multi agent tasks issue. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### What's fixed * **misc**: Fix multi agent tasks issue, closes [#11672](#11672) ([9de773b](9de773b)) </details> <div align="right"> [](#readme-top) </div>
|
π This PR is included in version 2.0.0-next.330 π The release is available on: Your semantic-release bot π¦π |
## [Version 1.153.0](v1.152.0...v1.153.0) <sup>Released on **2026-01-23**</sup> #### β» Code Refactoring - **auth**: Remove NEXT_PUBLIC_AUTH_URL env variable. - **model-select**: Migrate FunctionCallingModelSelect to LobeSelect. - **ModelSwitchPanel**: Migrate from Popover to DropdownMenu with virtual scrolling. - **userMemories**: Removed un-used code. - **misc**: Improve memory data with experience and identity, move vercel-react-best-practices skills to .agents directory. #### β¨ Features - **database**: Added user memory activity. - **desktop**: Add legacy local database detection and migration guidance. - **misc**: Add platform-aware download client menu option, add server version check for desktop app, remove Clerk authentication code, skill setting page and skill store, support agent group unpublish agents, support client tasks mode, update the sandbox preinstall libs in sys role. #### π Bug Fixes - **copilot**: Pass correct scope when creating new session in PageEditor. - **desktop**: Gracefully handle missing update manifest 404 errors. - **model-runtime**: Filter unsupported image types (SVG) before sending to vision models. - **pdf**: Upgrade pdfjs-dist and react-pdf to v5.x. - **sidebar-drawer**: Fix drawer positioning and title style. - **misc**: Fix group broadcast trigger tool use, fix local system tools, fix memory schema, fix multi agent tasks issue, fix multi tasks no summary issue, fix scope issue, fix tool argument scape and improve multi task run, fixed the sandbox tools call when error should use right callback, improve e2e server and complete i18n resources, slove the agent group editor not focus in editdata area, slove the agents header switch agents the lobeAI not show problem, sloved the old removeSessionTopics not work, TypewriterEffect not refreshing on language change, updata cron job ui & fixed commnuity pagenation goto error, update the agentbuilder tools not always use humanIntervention. #### π Styles - **misc**: Improve auto scroll and group profile, update og, update share style. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### Code refactoring * **auth**: Remove NEXT_PUBLIC_AUTH_URL env variable, closes [lobehub#11658](https://github.com/jaworldwideorg/OneJA-Bot/issues/11658) ([c0f9875](c0f9875)) * **model-select**: Migrate FunctionCallingModelSelect to LobeSelect, closes [lobehub#11664](https://github.com/jaworldwideorg/OneJA-Bot/issues/11664) ([ad51305](ad51305)) * **ModelSwitchPanel**: Migrate from Popover to DropdownMenu with virtual scrolling, closes [lobehub#11663](https://github.com/jaworldwideorg/OneJA-Bot/issues/11663) ([c9d9dff](c9d9dff)) * **userMemories**: Removed un-used code, closes [lobehub#11713](https://github.com/jaworldwideorg/OneJA-Bot/issues/11713) ([89750fc](89750fc)) * **misc**: Improve memory data with experience and identity, closes [lobehub#11717](https://github.com/jaworldwideorg/OneJA-Bot/issues/11717) ([bdb3eb4](bdb3eb4)) * **misc**: Move vercel-react-best-practices skills to .agents directory, closes [lobehub#11703](https://github.com/jaworldwideorg/OneJA-Bot/issues/11703) ([6df7731](6df7731)) #### What's improved * **database**: Added user memory activity, closes [lobehub#11680](https://github.com/jaworldwideorg/OneJA-Bot/issues/11680) ([0160fbd](0160fbd)) * **desktop**: Add legacy local database detection and migration guidance, closes [lobehub#11682](https://github.com/jaworldwideorg/OneJA-Bot/issues/11682) ([5664b84](5664b84)) * **misc**: Add platform-aware download client menu option, closes [lobehub#11676](https://github.com/jaworldwideorg/OneJA-Bot/issues/11676) ([55abddc](55abddc)) * **misc**: Add server version check for desktop app, closes [lobehub#11710](https://github.com/jaworldwideorg/OneJA-Bot/issues/11710) ([0cf2723](0cf2723)) * **misc**: Remove Clerk authentication code, closes [lobehub#11711](https://github.com/jaworldwideorg/OneJA-Bot/issues/11711) ([395595a](395595a)) * **misc**: Skill setting page and skill store, closes [lobehub#11665](https://github.com/jaworldwideorg/OneJA-Bot/issues/11665) ([d8c0c26](d8c0c26)) * **misc**: Support agent group unpublish agents, closes [lobehub#11687](https://github.com/jaworldwideorg/OneJA-Bot/issues/11687) ([4e060be](4e060be)) * **misc**: Support client tasks mode, closes [lobehub#11666](https://github.com/jaworldwideorg/OneJA-Bot/issues/11666) ([98cf57b](98cf57b)) * **misc**: Update the sandbox preinstall libs in sys role, closes [lobehub#11688](https://github.com/jaworldwideorg/OneJA-Bot/issues/11688) ([404c577](404c577)) #### What's fixed * **copilot**: Pass correct scope when creating new session in PageEditor, closes [lobehub#11714](https://github.com/jaworldwideorg/OneJA-Bot/issues/11714) ([0259270](0259270)) * **desktop**: Gracefully handle missing update manifest 404 errors, closes [lobehub#11625](https://github.com/jaworldwideorg/OneJA-Bot/issues/11625) ([13e95b9](13e95b9)) * **model-runtime**: Filter unsupported image types (SVG) before sending to vision models, closes [lobehub#11698](https://github.com/jaworldwideorg/OneJA-Bot/issues/11698) ([c0c99a7](c0c99a7)) * **pdf**: Upgrade pdfjs-dist and react-pdf to v5.x, closes [lobehub#11686](https://github.com/jaworldwideorg/OneJA-Bot/issues/11686) ([2b620df](2b620df)) * **sidebar-drawer**: Fix drawer positioning and title style, closes [lobehub#11655](https://github.com/jaworldwideorg/OneJA-Bot/issues/11655) ([cf5320e](cf5320e)) * **misc**: Fix group broadcast trigger tool use, closes [lobehub#11646](https://github.com/jaworldwideorg/OneJA-Bot/issues/11646) ([831a9b3](831a9b3)) * **misc**: Fix local system tools, closes [lobehub#11702](https://github.com/jaworldwideorg/OneJA-Bot/issues/11702) ([6548fc7](6548fc7)) * **misc**: Fix memory schema, closes [lobehub#11645](https://github.com/jaworldwideorg/OneJA-Bot/issues/11645) ([3baf780](3baf780)) * **misc**: Fix multi agent tasks issue, closes [lobehub#11672](https://github.com/jaworldwideorg/OneJA-Bot/issues/11672) ([9de773b](9de773b)) * **misc**: Fix multi tasks no summary issue, closes [lobehub#11685](https://github.com/jaworldwideorg/OneJA-Bot/issues/11685) ([26ce317](26ce317)) * **misc**: Fix scope issue, closes [lobehub#11719](https://github.com/jaworldwideorg/OneJA-Bot/issues/11719) ([17adde8](17adde8)) * **misc**: Fix tool argument scape and improve multi task run, closes [lobehub#11691](https://github.com/jaworldwideorg/OneJA-Bot/issues/11691) ([b13bb8a](b13bb8a)) * **misc**: Fixed the sandbox tools call when error should use right callback, closes [lobehub#11721](https://github.com/jaworldwideorg/OneJA-Bot/issues/11721) ([e8fce68](e8fce68)) * **misc**: Improve e2e server and complete i18n resources, closes [lobehub#11678](https://github.com/jaworldwideorg/OneJA-Bot/issues/11678) ([d450dd9](d450dd9)) * **misc**: Slove the agent group editor not focus in editdata area, closes [lobehub#11677](https://github.com/jaworldwideorg/OneJA-Bot/issues/11677) ([9ac84e6](9ac84e6)) * **misc**: Slove the agents header switch agents the lobeAI not show problem, closes [lobehub#11726](https://github.com/jaworldwideorg/OneJA-Bot/issues/11726) ([f45f508](f45f508)) * **misc**: Sloved the old removeSessionTopics not work, closes [lobehub#11671](https://github.com/jaworldwideorg/OneJA-Bot/issues/11671) ([06d41e5](06d41e5)) * **misc**: TypewriterEffect not refreshing on language change, closes [lobehub#11657](https://github.com/jaworldwideorg/OneJA-Bot/issues/11657) ([ba30f46](ba30f46)) * **misc**: Updata cron job ui & fixed commnuity pagenation goto error, closes [lobehub#11700](https://github.com/jaworldwideorg/OneJA-Bot/issues/11700) ([42ad2a0](42ad2a0)) * **misc**: Update the agentbuilder tools not always use humanIntervention, closes [lobehub#11696](https://github.com/jaworldwideorg/OneJA-Bot/issues/11696) ([0d3017b](0d3017b)) #### Styles * **misc**: Improve auto scroll and group profile, closes [lobehub#11725](https://github.com/jaworldwideorg/OneJA-Bot/issues/11725) ([550acc2](550acc2)) * **misc**: Update og, closes [lobehub#11709](https://github.com/jaworldwideorg/OneJA-Bot/issues/11709) ([01cf4e4](01cf4e4)) * **misc**: Update share style, closes [lobehub#11716](https://github.com/jaworldwideorg/OneJA-Bot/issues/11716) ([3c70dfa](3c70dfa)) </details> <div align="right"> [](#readme-top) </div>
π» Change Type
π Related Issue
π Description of Change
π§ͺ How to Test
πΈ Screenshots / Videos
π Additional Information
Summary by Sourcery
Enable parallel multi-agent task execution in the orchestration pipeline while improving task UI metrics and rendering for both client and server modes.
New Features:
Bug Fixes:
Enhancements:
Tests: