Merge remote-tracking branch 'origin/master' into refactor/eba

# Conflicts:
#	pyproject.toml
#	uv.lock
This commit is contained in:
Junyan Qin
2026-06-11 01:05:14 +08:00
375 changed files with 64717 additions and 6102 deletions
+38
View File
@@ -21,10 +21,23 @@ system:
recovery_key: ''
allow_modify_login_info: true
disabled_adapters: []
# Public outbound IP addresses of this LangBot deployment. Some platforms
# (e.g. WeCom, WeChat Official Account, QQ Official API) require the
# caller's IPs to be added to their trusted-IP / IP-whitelist settings.
# When set, the web UI shows these IPs on the bot config form of such
# adapters. Also settable via the SYSTEM__OUTBOUND_IPS env var
# (comma-separated). Empty list = hidden in the web UI.
outbound_ips: []
limitation:
max_bots: -1
max_pipelines: -1
max_extensions: -1
# When set to a non-empty string, every pipeline is forced to use this
# Box sandbox-scope template regardless of its own configuration, and
# the per-pipeline "Sandbox Scope" selector is locked in the web UI.
# Used by SaaS deployments to confine a tenant to a single shared
# sandbox (set to '{global}'). Empty string = no restriction.
force_box_session_id_template: ''
task_retention:
# Keep at most this many completed async task records in memory
completed_limit: 200
@@ -104,6 +117,31 @@ monitoring:
check_interval_hours: 1
# Number of expired rows to delete per table batch
delete_batch_size: 1000
box:
# Master switch for the Box sandbox runtime. When false, LangBot does NOT
# attempt to connect to a remote Box runtime nor start a local stdio Box
# subprocess. Disabling Box also disables every feature that depends on it:
# the native sandbox tools (exec/read/write/edit/glob/grep), the activate
# skill tool, skill add/edit, and stdio-mode MCP servers. Skills can still
# be listed read-only and http/sse MCP servers continue to work.
enabled: true
backend: 'local' # 'local' (Docker/nsjail), 'docker', 'nsjail', or 'e2b'. Can be written via BOX__BACKEND.
runtime:
endpoint: '' # External Box Runtime base URL, e.g. 'ws://127.0.0.1:5410'. Leave empty for local auto-managed runtime.
local:
profile: 'default'
image: '' # Custom local sandbox image. Leave empty to use the profile default.
host_root: './data/box' # Base host directory for local workspace mounts. Docker deployments should override this with an absolute host path.
default_workspace: '' # Defaults to '<host_root>/default'. Relative paths are resolved under host_root.
skills_root: 'skills' # Box-owned skill package directory. Relative paths are resolved under host_root.
allowed_mount_roots: # Defaults to ['<host_root>'] when left empty.
- './data/box'
- '/tmp'
workspace_quota_mb: null # Optional disk quota override (>= 0). null = profile default.
e2b:
api_key: '' # Can also be set via E2B_API_KEY env var.
api_url: '' # Custom API URL for self-hosted deployments.
template: '' # Default template ID (e.g. 'base', 'python-3.11').
space:
# Space service URL for OAuth and API
url: 'https://space.langbot.app'
@@ -50,10 +50,11 @@
"prompt": [
{
"role": "system",
"content": "You are a helpful assistant."
"content": "You are a helpful assistant. When tools are available, use them for exact calculations, data processing, and code execution instead of guessing. Unless the user explicitly asks for code or a script, return the result directly instead of printing the generated code."
}
],
"knowledge-bases": [],
"box-session-id-template": "{launcher_type}_{launcher_id}",
"rerank-model": "",
"rerank-top-k": 5
},
@@ -47,6 +47,14 @@ stages:
label:
en_US: Langflow API
zh_Hans: Langflow API
- name: weknora-api
label:
en_US: WeKnora API
zh_Hans: WeKnora API
- name: deerflow-api
label:
en_US: DeerFlow API
zh_Hans: DeerFlow API
- name: expire-time
label:
en_US: Conversation expire time (seconds)
@@ -124,6 +132,100 @@ stages:
field: __system.is_wizard
operator: neq
value: true
- name: box-session-id-template
label:
en_US: Sandbox Scope
zh_Hans: 沙箱作用域
zh_Hant: 沙箱作用域
ja_JP: サンドボックススコープ
vi_VN: Phạm vi Sandbox
th_TH: ขอบเขต Sandbox
es_ES: Alcance del Sandbox
ru_RU: Область песочницы
description:
en_US: Determines how sandbox environments are shared across messages.
zh_Hans: 决定沙箱环境在不同消息间的共享方式。
zh_Hant: 決定沙箱環境在不同訊息間的共享方式。
ja_JP: メッセージ間でサンドボックス環境を共有する方法を決定します。
vi_VN: Xác định cách chia sẻ môi trường sandbox giữa các tin nhắn.
th_TH: กำหนดวิธีแชร์สภาพแวดล้อม Sandbox ระหว่างข้อความ
es_ES: Determina cómo se comparten los entornos sandbox entre mensajes.
ru_RU: Определяет, как песочницы используются совместно между сообщениями.
disable_if:
field: __system.box_scope_editable
operator: eq
value: false
disabled_tooltip:
en_US: >-
Sandbox scope can't be changed: either the Box sandbox is disabled
or unavailable (enable it in config.yaml with box.enabled = true and
ensure the runtime is reachable), or this deployment pins all
pipelines to a fixed scope.
zh_Hans: "无法修改沙箱作用域:Box 沙箱已禁用或不可用(请在配置中启用 box.enabled = true 并确认运行时连接正常),或本部署已将所有流水线固定为统一作用域。"
zh_Hant: "無法修改沙箱作用域:Box 沙箱已停用或無法使用(請在設定中啟用 box.enabled = true 並確認執行時連線正常),或本部署已將所有流水線固定為統一作用域。"
ja_JP: "サンドボックススコープを変更できません:Box サンドボックスが無効/利用不可(設定で box.enabled = true にしてランタイム接続を確認)、またはこのデプロイがすべてのパイプラインを固定スコープに制限しています。"
vi_VN: "Không thể thay đổi phạm vi sandboxBox sandbox bị tắt hoặc không khả dụng (bật box.enabled = true và đảm bảo runtime hoạt động), hoặc bản triển khai này cố định mọi pipeline về một phạm vi."
th_TH: "ไม่สามารถเปลี่ยนขอบเขต Sandbox:Box sandbox ถูกปิดหรือไม่พร้อมใช้งาน (เปิด box.enabled = true และตรวจสอบรันไทม์) หรือการ deploy นี้ล็อกทุก pipeline ไว้ที่ขอบเขตเดียว"
es_ES: "No se puede cambiar el alcance del sandbox: el sandbox de Box está desactivado o no disponible (actívelo con box.enabled = true y verifique el runtime), o este despliegue fija todas las pipelines a un alcance único."
ru_RU: "Невозможно изменить область песочницы: песочница Box отключена или недоступна (включите box.enabled = true и проверьте среду выполнения), либо это развёртывание фиксирует единую область для всех конвейеров."
type: select
required: false
default: "{launcher_type}_{launcher_id}"
options:
- name: "{global}"
label:
en_US: Global (shared by all)
zh_Hans: 全局(所有人共享)
zh_Hant: 全域(所有人共用)
ja_JP: グローバル(全員共有)
vi_VN: Toàn cục (chia sẻ cho tất cả)
th_TH: ทั่วไป (แชร์ทั้งหมด)
es_ES: Global (compartido por todos)
ru_RU: Глобальный (общий для всех)
- name: "{launcher_type}_{launcher_id}"
label:
en_US: Per chat (Recommended)
zh_Hans: 每个会话(推荐)
zh_Hant: 每個會話(推薦)
ja_JP: チャットごと(推奨)
vi_VN: Mỗi cuộc trò chuyện (Khuyến nghị)
th_TH: ต่อแชท (แนะนำ)
es_ES: Por chat (Recomendado)
ru_RU: По чату (Рекомендуется)
- name: "{launcher_type}_{launcher_id}_{sender_id}"
label:
en_US: Per user in chat
zh_Hans: 会话中每个用户
zh_Hant: 會話中每個用戶
ja_JP: チャット内のユーザーごと
vi_VN: Mỗi người dùng trong cuộc trò chuyện
th_TH: ต่อผู้ใช้ในแชท
es_ES: Por usuario en chat
ru_RU: По пользователю в чате
- name: "{launcher_type}_{launcher_id}_{conversation_id}"
label:
en_US: Per conversation context
zh_Hans: 每个对话上下文
zh_Hant: 每個對話上下文
ja_JP: 会話コンテキストごと
vi_VN: Mỗi ngữ cảnh hội thoại
th_TH: ต่อบริบทการสนทนา
es_ES: Por contexto de conversación
ru_RU: По контексту разговора
- name: "{query_id}"
label:
en_US: Per message (isolated)
zh_Hans: 每条消息(完全隔离)
zh_Hant: 每條訊息(完全隔離)
ja_JP: メッセージごと(隔離)
vi_VN: Mỗi tin nhắn (cách ly)
th_TH: ต่อข้อความ (แยกส่วน)
es_ES: Por mensaje (aislado)
ru_RU: По сообщению (изолированно)
show_if:
field: __system.is_wizard
operator: neq
value: true
- name: rerank-model
label:
en_US: Rerank Model
@@ -560,3 +662,215 @@ stages:
type: json
required: false
default: '{}'
- name: weknora-api
label:
en_US: WeKnora API
zh_Hans: WeKnora API
description:
en_US: Configure the WeKnora API of the pipeline
zh_Hans: 配置 WeKnora API
config:
- name: base-url
label:
en_US: Base URL
zh_Hans: 基础 URL
description:
en_US: The base URL of the WeKnora server (with /api/v1)
zh_Hans: WeKnora 服务器的基础 URL(包含 /api/v1
type: string
required: true
default: 'http://localhost:8080/api/v1'
- name: api-key
label:
en_US: API Key
zh_Hans: API 密钥
description:
en_US: The API key for WeKnora, generated from WeKnora frontend Settings → API Keys
zh_Hans: WeKnora 的 API 密钥,从 WeKnora 前端 设置 → API Keys 生成
type: string
required: true
default: ''
- name: app-type
label:
en_US: App Type
zh_Hans: 应用类型
type: select
required: true
default: agent
options:
- name: agent
label:
en_US: Agent (Smart Reasoning)
zh_Hans: Agent(智能推理)
- name: chat
label:
en_US: Chat (Knowledge Base RAG)
zh_Hans: 聊天(知识库 RAG
- name: agent-id
label:
en_US: Agent ID
zh_Hans: 智能体 ID
description:
en_US: The Agent ID to use. Built-in agents include builtin-quick-answer, builtin-smart-reasoning, builtin-data-analyst
zh_Hans: 要使用的智能体 ID。内置智能体:builtin-quick-answer、builtin-smart-reasoning、builtin-data-analyst
type: string
required: true
default: 'builtin-smart-reasoning'
- name: knowledge-base-ids
label:
en_US: Knowledge Base IDs
zh_Hans: 知识库 ID 列表
description:
en_US: List of WeKnora knowledge base IDs to use (one per line)
zh_Hans: 要使用的 WeKnora 知识库 ID 列表(每行一个)
type: array
required: false
default: []
- name: web-search-enabled
label:
en_US: Enable Web Search
zh_Hans: 启用网络搜索
description:
en_US: Whether to enable web search in agent mode
zh_Hans: 在 Agent 模式下是否启用网络搜索
type: boolean
required: false
default: false
- name: timeout
label:
en_US: Timeout
zh_Hans: 超时时间
description:
en_US: Request timeout in seconds
zh_Hans: 请求超时时间(秒)
type: integer
required: false
default: 120
- name: base-prompt
label:
en_US: Base Prompt
zh_Hans: 基础提示词
description:
en_US: Default prompt when user message is empty (e.g. only images)
zh_Hans: 当用户消息为空(例如仅图片)时使用的默认提示词
type: string
required: false
default: '请回答用户的问题。'
- name: deerflow-api
label:
en_US: DeerFlow API
zh_Hans: DeerFlow API
description:
en_US: Configure the DeerFlow LangGraph API of the pipeline
zh_Hans: 配置 DeerFlow LangGraph API
config:
- name: api-base
label:
en_US: API Base URL
zh_Hans: API 基础 URL
description:
en_US: The base URL of the DeerFlow server (e.g. http://127.0.0.1:2026)
zh_Hans: DeerFlow 服务器的基础 URL(例如 http://127.0.0.1:2026
type: string
required: true
default: 'http://127.0.0.1:2026'
- name: api-key
label:
en_US: API Key
zh_Hans: API 密钥
description:
en_US: Optional API key for DeerFlow (leave empty if not required)
zh_Hans: DeerFlow 的 API 密钥(如果不需要可留空)
type: string
required: false
default: ''
- name: auth-header
label:
en_US: Auth Header Name
zh_Hans: 鉴权请求头名称
description:
en_US: Custom auth header name. Leave empty to use "x-api-key"
zh_Hans: 自定义鉴权请求头名称,留空则使用 "x-api-key"
type: string
required: false
default: ''
- name: assistant-id
label:
en_US: Assistant ID
zh_Hans: 助手 ID
description:
en_US: The DeerFlow assistant/graph id (default lead_agent)
zh_Hans: DeerFlow 助手/图 ID(默认 lead_agent
type: string
required: true
default: 'lead_agent'
- name: model-name
label:
en_US: Model Name
zh_Hans: 模型名称
description:
en_US: Optional model override forwarded to DeerFlow configurable
zh_Hans: 可选的模型名称覆盖,会作为 configurable 转发给 DeerFlow
type: string
required: false
default: ''
- name: thinking-enabled
label:
en_US: Enable Thinking
zh_Hans: 启用思考
description:
en_US: Whether to enable DeerFlow thinking mode
zh_Hans: 是否启用 DeerFlow 思考模式
type: boolean
required: false
default: false
- name: plan-mode
label:
en_US: Plan Mode
zh_Hans: 规划模式
description:
en_US: Whether to enable DeerFlow plan mode
zh_Hans: 是否启用 DeerFlow 规划模式
type: boolean
required: false
default: false
- name: subagent-enabled
label:
en_US: Enable Subagents
zh_Hans: 启用子代理
description:
en_US: Whether to enable parallel subagent execution
zh_Hans: 是否启用并行子代理执行
type: boolean
required: false
default: false
- name: max-concurrent-subagents
label:
en_US: Max Concurrent Subagents
zh_Hans: 最大并发子代理数
description:
en_US: Maximum number of concurrent subagents (only effective when subagents are enabled)
zh_Hans: 最大并发子代理数(仅在启用子代理时生效)
type: integer
required: false
default: 3
- name: timeout
label:
en_US: Timeout
zh_Hans: 超时时间
description:
en_US: Request timeout in seconds (DeerFlow runs may take a long time)
zh_Hans: 请求超时时间(秒),DeerFlow 运行可能耗时较长
type: integer
required: false
default: 300
- name: recursion-limit
label:
en_US: Recursion Limit
zh_Hans: 递归上限
description:
en_US: LangGraph recursion limit for a single run
zh_Hans: 单次运行的 LangGraph 递归上限
type: integer
required: false
default: 1000