mirror of
https://github.com/langgenius/dify.git
synced 2026-05-30 05:37:48 +08:00
First slice of the Agent App type (新 Agent 作为独立 App 类型,替代 chatbot/agent-legacy/completion). Design: https://km.dify.langgenius.ai/wiki/spaces/DT/pages/460161070/Agent+App+Type * New ``AppMode.AGENT = "agent"`` (distinct from legacy ``agent-chat`` ReAct app). Runtime model/prompt/tools live in the bound Agent Soul, so the default template seeds no model_config. * Create flow: creating an Agent App also creates a roster Agent bound 1:1 via ``Agent.app_id`` (decision Q1), inside the same transaction so app + backing agent persist atomically. ``AgentRosterService.create_backing_agent_for_app`` builds the agent + a v1 (empty) Agent Soul snapshot without committing; the user configures model/prompt/tools afterward in the Composer. * ``App.bound_agent_id`` resolves the backing roster Agent from the app id (so the console can open the Composer in roster-detail mode); surfaced on the app detail response. Returns None for non-agent apps (short-circuits, no DB hit). * ``CreateAppParams`` / ``AppListParams`` accept "agent"; list filter handles it. Scope: S1 only (foundation). Runtime/preview, web/service API, access & sharing, logs and feature flags land in S2–S7 per the design. Tests: roster backing-agent build/link/get + enum/template/params/bound_agent_id short-circuit. 46 passing in app + agent service suites; ruff + pyrefly clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>