refactor(sandbox): update imports and remove unused bash tool files, adjust DIFY_CLI_CONFIG_PATH

This commit is contained in:
Harry 2026-01-12 13:36:15 +08:00
parent 3e49d6b900
commit e7c89b6153
10 changed files with 10 additions and 14 deletions

View File

@ -1,3 +1,4 @@
from core.sandbox.bash_tool import SandboxBashTool
from core.sandbox.constants import ( from core.sandbox.constants import (
DIFY_CLI_CONFIG_PATH, DIFY_CLI_CONFIG_PATH,
DIFY_CLI_PATH, DIFY_CLI_PATH,
@ -25,6 +26,7 @@ __all__ = [
"DifyCliInitializer", "DifyCliInitializer",
"DifyCliLocator", "DifyCliLocator",
"DifyCliToolConfig", "DifyCliToolConfig",
"SandboxBashTool",
"SandboxInitializer", "SandboxInitializer",
"SandboxSession", "SandboxSession",
] ]

View File

@ -6,4 +6,4 @@ DIFY_CLI_PATH: Final[str] = "/work/.dify/bin/dify"
DIFY_CLI_PATH_PATTERN: Final[str] = "dify-cli-{os}-{arch}" DIFY_CLI_PATH_PATTERN: Final[str] = "dify-cli-{os}-{arch}"
DIFY_CLI_CONFIG_PATH: Final[str] = "/work/config.json" DIFY_CLI_CONFIG_PATH: Final[str] = "/work/.dify_cli.json"

View File

@ -2,20 +2,17 @@ import logging
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING
from core.sandbox.constants import DIFY_CLI_PATH from core.sandbox.constants import DIFY_CLI_PATH
from core.sandbox.dify_cli import DifyCliLocator from core.sandbox.dify_cli import DifyCliLocator
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
if TYPE_CHECKING:
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class SandboxInitializer(ABC): class SandboxInitializer(ABC):
@abstractmethod @abstractmethod
def initialize(self, env: "VirtualEnvironment") -> None: def initialize(self, env: VirtualEnvironment) -> None:
... ...
@ -23,7 +20,7 @@ class DifyCliInitializer(SandboxInitializer):
def __init__(self, cli_root: str | Path | None = None) -> None: def __init__(self, cli_root: str | Path | None = None) -> None:
self._locator = DifyCliLocator(root=cli_root) self._locator = DifyCliLocator(root=cli_root)
def initialize(self, env: "VirtualEnvironment") -> None: def initialize(self, env: VirtualEnvironment) -> None:
binary = self._locator.resolve(env.metadata.os, env.metadata.arch) binary = self._locator.resolve(env.metadata.os, env.metadata.arch)
env.upload_file(DIFY_CLI_PATH, BytesIO(binary.path.read_bytes())) env.upload_file(DIFY_CLI_PATH, BytesIO(binary.path.read_bytes()))

View File

@ -5,12 +5,12 @@ import logging
from io import BytesIO from io import BytesIO
from types import TracebackType from types import TracebackType
from core.sandbox.bash_tool import SandboxBashTool
from core.sandbox.constants import DIFY_CLI_CONFIG_PATH, DIFY_CLI_PATH from core.sandbox.constants import DIFY_CLI_CONFIG_PATH, DIFY_CLI_PATH
from core.sandbox.dify_cli import DifyCliConfig from core.sandbox.dify_cli import DifyCliConfig
from core.sandbox.manager import SandboxManager from core.sandbox.manager import SandboxManager
from core.session.inner_api import InnerApiSessionManager from core.session.inner_api import InnerApiSessionManager
from core.tools.__base.tool import Tool from core.tools.__base.tool import Tool
from core.tools.builtin_tool.providers.sandbox.bash_tool import SandboxBashTool
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -1,3 +0,0 @@
from core.tools.builtin_tool.providers.sandbox.bash_tool import SandboxBashTool
__all__ = ["SandboxBashTool"]

View File

@ -357,7 +357,7 @@ class LLMNodeData(BaseNodeData):
# Tool support # Tool support
tools: Sequence[ToolMetadata] = Field(default_factory=list) tools: Sequence[ToolMetadata] = Field(default_factory=list)
max_iterations: int | None = Field(default=None, description="Maximum number of iterations for the LLM node") max_iterations: int | None = Field(default=100, description="Maximum number of iterations for the LLM node")
@field_validator("prompt_config", mode="before") @field_validator("prompt_config", mode="before")
@classmethod @classmethod

View File

@ -1609,7 +1609,7 @@ class LLMNode(Node[LLMNodeData]):
model_instance=model_instance, model_instance=model_instance,
tools=[sandbox_session.bash_tool], tools=[sandbox_session.bash_tool],
files=prompt_files, files=prompt_files,
max_iterations=self._node_data.max_iterations or 10, max_iterations=self._node_data.max_iterations or 100,
context=ExecutionContext(user_id=self.user_id, app_id=self.app_id, tenant_id=self.tenant_id), context=ExecutionContext(user_id=self.user_id, app_id=self.app_id, tenant_id=self.tenant_id),
) )

View File

@ -19,6 +19,7 @@ from sqlalchemy.orm import Session
from configs import dify_config from configs import dify_config
from constants import HIDDEN_VALUE from constants import HIDDEN_VALUE
from core.entities.provider_entities import BasicProviderConfig from core.entities.provider_entities import BasicProviderConfig
from core.sandbox.encryption import create_sandbox_config_encrypter, masked_config
from core.sandbox.factory import VMFactory, VMType from core.sandbox.factory import VMFactory, VMType
from core.sandbox.initializer import DifyCliInitializer from core.sandbox.initializer import DifyCliInitializer
from core.tools.utils.system_encryption import ( from core.tools.utils.system_encryption import (
@ -27,7 +28,6 @@ from core.tools.utils.system_encryption import (
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
from extensions.ext_database import db from extensions.ext_database import db
from models.sandbox import SandboxProvider, SandboxProviderSystemConfig from models.sandbox import SandboxProvider, SandboxProviderSystemConfig
from services.sandbox.encryption import create_sandbox_config_encrypter, masked_config
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)