mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-24 21:36:06 +00:00
Merge remote-tracking branch 'origin/master' into refactor/eba
# Conflicts: # pyproject.toml # uv.lock
This commit is contained in:
@@ -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 sandbox:Box 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
|
||||
|
||||
Reference in New Issue
Block a user