# lwh-labs/omni-agent-workshop architecture

> Architecture diagram of the GitHub repository lwh-labs/omni-agent-workshop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lwh-labs/omni-agent-workshop
- Repository: https://github.com/lwh-labs/omni-agent-workshop

## Overview

Omni-Agent Workshop is a multi-agent platform built on AstronAgent. Its principal flow is configuring an agent or visual workflow, submitting text or files, executing workflow nodes such as branching, OCR and model processing, then returning results or generating speech and digital-human output. The README documents these product capabilities; sampled source confirms workflow authoring/protocol handling, DSL execution, model selection, chat streaming, tool management and file/knowledge operations. Several integrations and runtime links are documented but their callers were not sampled, so uncertain wiring is omitted.

Main entry points: [`core/workflow/engine/dsl_engine.py`](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py) (DSL engine), [`console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/tool/ToolBoxService.java`](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/tool/ToolBoxService.java) (Tool registry), [`console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/FileInfoV2Service.java`](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/FileInfoV2Service.java) (Knowledge files), [`console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java`](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java) (Workflow authoring)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Agent authoring"]
  node_workflow_api["Workflow authoring"]
  node_model_api["Model selection API<br/>[LLMController.java]"]
  node_model_service["Model catalog<br/>[LLMService.java]"]
  node_toolbox["Tool registry"]
  node_mysql[("Tool and agent data")]
  node_redis[("Redis cache")]
end

subgraph group_execution["Workflow execution"]
  node_workflow_engine["DSL engine<br/>[dsl_engine.py]"]
  node_engine_cache["Engine cache<br/>[engine.py]"]
  node_resume_flow["Resume workflow<br/>[dsl_engine.py]"]
  node_branch_ocr["Branch and OCR<br/>[dsl_engine.py]"]
  node_model_node["Model processing<br/>[dsl_engine.py]"]
  node_workflow_output["Workflow output<br/>[dsl_engine.py]"]
  node_postgres[("Workflow database")]
end

subgraph group_knowledge["Files and knowledge"]
  node_knowledge_files["Knowledge files"]
  node_ragflow["RAGFlow service<br/>[ragflow_client.py]"]
  node_object_storage["Object storage"]
end

subgraph group_runtime["Chat and integrations"]
  node_chat_service["Streaming chat"]
  node_llm_provider{{"Model provider"}}
  node_speech_service{{"Speech synthesis"}}
  node_digital_human{{"Digital human"}}
end

node_user(("User"))

node_user -->|"configure workflow"| node_workflow_api
node_workflow_api -->|"publish protocol"| node_workflow_engine
node_user -->|"select model"| node_model_api
node_model_api -->|"request catalog"| node_model_service
node_model_service -->|"read cache"| node_redis
node_user -->|"manage tools"| node_toolbox
node_toolbox -->|"store metadata"| node_mysql
node_toolbox -->|"cache auth"| node_redis
node_workflow_engine -.->|"cache engine"| node_engine_cache
node_user -->|"submit résumé"| node_resume_flow
node_resume_flow -->|"execute nodes"| node_branch_ocr
node_branch_ocr -->|"route extracted text"| node_model_node
node_model_node -->|"produce result"| node_workflow_output
node_workflow_engine -.->|"persist workflow data"| node_postgres
node_user -->|"upload documents"| node_knowledge_files
node_knowledge_files -.->|"manage documents"| node_ragflow
node_knowledge_files -.->|"store files"| node_object_storage
node_user -->|"send chat"| node_chat_service
node_chat_service -.->|"stream completion"| node_llm_provider
node_workflow_engine -.->|"invoke synthesis"| node_speech_service
node_speech_service -.->|"provide audio"| node_digital_human

click node_workflow_api "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java"
click node_model_api "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/controller/common/LLMController.java"
click node_model_service "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/model/LLMService.java"
click node_toolbox "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/tool/ToolBoxService.java"
click node_workflow_engine "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py"
click node_engine_cache "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/cache/engine.py"
click node_resume_flow "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py"
click node_branch_ocr "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py"
click node_model_node "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py"
click node_workflow_output "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py"
click node_knowledge_files "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/FileInfoV2Service.java"
click node_ragflow "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/knowledge/infra/ragflow/ragflow_client.py"
click node_object_storage "https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/common/service/oss/ifly_storage_gateway_service.py"
click node_chat_service "https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/hub/src/main/java/com/iflytek/astron/console/hub/service/SparkChatService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_workflow_api,node_model_api,node_model_service,node_toolbox,node_mysql,node_redis,node_user toneBlue
class node_workflow_engine,node_engine_cache,node_resume_flow,node_branch_ocr,node_model_node,node_workflow_output,node_postgres toneAmber
class node_knowledge_files,node_ragflow,node_object_storage toneMint
class node_chat_service,node_llm_provider,node_speech_service,node_digital_human toneRose
```

## Components

### Agent authoring

- [Workflow authoring](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java): `console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/workflow/WorkflowService.java`
- [Model selection API](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/controller/common/LLMController.java): `console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/controller/common/LLMController.java`
- [Model catalog](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/model/LLMService.java): `console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/model/LLMService.java`
- [Tool registry](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/tool/ToolBoxService.java): `console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/tool/ToolBoxService.java`
- **Tool and agent data**
- **Redis cache**

### Workflow execution

- [DSL engine](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py): `core/workflow/engine/dsl_engine.py`
- [Engine cache](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/cache/engine.py): `core/workflow/cache/engine.py`
- [Resume workflow](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py): `core/workflow/engine/dsl_engine.py`
- [Branch and OCR](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py): `core/workflow/engine/dsl_engine.py`
- [Model processing](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py): `core/workflow/engine/dsl_engine.py`
- [Workflow output](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/workflow/engine/dsl_engine.py): `core/workflow/engine/dsl_engine.py`
- **Workflow database**

### Files and knowledge

- [Knowledge files](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/FileInfoV2Service.java): `console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/repo/FileInfoV2Service.java`
- [RAGFlow service](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/knowledge/infra/ragflow/ragflow_client.py): `core/knowledge/infra/ragflow/ragflow_client.py`
- [Object storage](https://github.com/lwh-labs/omni-agent-workshop/blob/main/core/common/service/oss/ifly_storage_gateway_service.py): `core/common/service/oss/ifly_storage_gateway_service.py`

### Chat and integrations

- [Streaming chat](https://github.com/lwh-labs/omni-agent-workshop/blob/main/console/backend/hub/src/main/java/com/iflytek/astron/console/hub/service/SparkChatService.java): `console/backend/hub/src/main/java/com/iflytek/astron/console/hub/service/SparkChatService.java`
- **Model provider**
- **Speech synthesis**
- **Digital human**

### Other components

- **User**

## Connections

- User → Workflow authoring: configure workflow
- Workflow authoring → DSL engine: publish protocol
- User → Model selection API: select model
- Model selection API → Model catalog: request catalog
- Model catalog → Redis cache: read cache
- User → Tool registry: manage tools
- Tool registry → Tool and agent data: store metadata
- Tool registry → Redis cache: cache auth
- DSL engine → Engine cache: cache engine
- User → Resume workflow: submit résumé
- Resume workflow → Branch and OCR: execute nodes
- Branch and OCR → Model processing: route extracted text
- Model processing → Workflow output: produce result
- DSL engine → Workflow database: persist workflow data
- User → Knowledge files: upload documents
- Knowledge files → RAGFlow service: manage documents
- Knowledge files → Object storage: store files
- User → Streaming chat: send chat
- Streaming chat → Model provider: stream completion
- DSL engine → Speech synthesis: invoke synthesis
- Speech synthesis → Digital human: provide audio
