最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qwen3.6-27B 本地私有化部署 + Claude Code 連接應用

  發(fā)布時間:2026-04-29 10:31:04   作者:小畢超   我要評論
本文主要介紹 Qwen3.6-27B 的本地私有化部署過程,部署采用vLLM 引擎,以及將 Claude Code 指向使用私有化部署的模型,并且開發(fā)一個五子棋的網(wǎng)頁小游戲,以及針對開源項目 DeerFlow 2.0 進行源碼分析的實踐,感興趣的朋友一起看看吧

一、Qwen3.6-27B + Claude Code

Qwen3.6-27B 是阿里于 20264 月開源的多模態(tài)大模型,在主流智能體編程基準上取得了顯著突破,全面超越前代旗艦 Qwen3.5-397B-A17B,參數(shù)量僅為其約 1/15,甚至在一些指標上和 Claude 4.5 Opus 相持平。

這里未展示出全部測評結(jié)果,更多介紹可以關注官方博客:

https://qwen.ai/blog?id=qwen3.6-27b

從上面的指標結(jié)果可以看出,Qwen3.6-27B 相比與上一代的 Qwen3.5-27B,在編程能力上有了大的飛躍,平常我們使用 Claude Code 做任務開發(fā)的時候,通常會消耗巨大的 Token 量,如果將一些常用重復性的開發(fā)任務使用本地私有化部署的 Qwen3.6-27B 來開發(fā)的話,是不是可以節(jié)省一些 Token 的使用量,而且還可以提高響應速度提高處理效率。再或者使用一些在線能力較強的模型,構(gòu)建開發(fā)架構(gòu),使用 Qwen3.6-27B 來補充架子里面的具體實現(xiàn),最后讓能力強的模型驗收結(jié)果,從而減少收費模型的輸出量,畢竟收費模型的 output tokens 定價一般都比 input tokens 要貴,這樣也可以實現(xiàn)優(yōu)化開發(fā)成本和提升效率雙豐收的結(jié)果。

因此本文主要介紹 Qwen3.6-27B 的本地私有化部署過程,部署采用vLLM 引擎,以及將 Claude Code 指向使用私有化部署的模型,并且開發(fā)一個五子棋的網(wǎng)頁小游戲,以及針對開源項目 DeerFlow 2.0 進行源碼分析的實踐。

下面是本次實驗主要的依賴版本:

torch==2.10.0
vllm>=0.17.0
transformers==4.57.6
modelscope==1.34.0

其中由于Claude Code 默認使用的 Anthropic 協(xié)議 ,vLLM0.17.0 版本才集成了 Anthropic 協(xié)議,因此 vLLM 的版本必須大于等于 v0.17.0。

二、vLLM 私有化部署 Qwen3.6-27B

安裝 vLLM,并且自動安裝對應的 torch

uv pip install "vllm>=0.17.0" --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly

下載 Qwen3.6-27B 模型,這里使用 modelscope 快速下載到本地:

modelscope download --model="Qwen/Qwen3.6-27B" --local_dir Qwen3.6-27B

使用 vLLM 啟動 API 服務:

export CUDA_VISIBLE_DEVICES=0,1
vllm serve "Qwen3.6-27B" \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype bfloat16 \
  --tensor-parallel-size 2 \
  --gpu-memory-utilization 0.8 \
  --api-key token-abc123 \
  --enable-prefix-caching \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --trust-remote-code

關鍵參數(shù)說明:

參數(shù)說明
export CUDA_VISIBLE_DEVICES=0,1指定使用的GPU設備,根據(jù)實際的GPU數(shù)量,這里我有兩塊GPU
dtype數(shù)據(jù)類型,其中 bfloat16,16位浮點數(shù)
tensor-parallel-sizeTensor 并行的數(shù)量,當多 GPU 分布式推理時使用,建議和GPU的數(shù)量一致
gpu-memory-utilization設置 GPU 內(nèi)存利用率的上限
api-keyAPI 認證密鑰
enable-prefix-caching啟用前綴緩存減少重復計算
reasoning-parser指定推理解析器
enable-auto-tool-choice啟用自動工具選擇
tool-call-parser工具調(diào)用解析器

啟動后顯存占用情況:

如果啟動顯存不足,可根據(jù)實際設備情況調(diào)整 gpu-memory-utilization 或者添加 max-model-len 參數(shù),或通過 cpu-offload-gb 將部分模型權重卸載到內(nèi)存中(影響運行效率)。

訪問測試:

curl http://127.0.0.1:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
	-H "Authorization: Bearer token-abc123" \
    -d '{
        "model": "Qwen3.6-27B",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "你是誰,你認識小畢超嗎?"}
        ]
    }'

運行結(jié)果:

使用 Anthropic 協(xié)議測試:

curl http://127.0.0.1:8000/v1/messages \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer token-abc123" \
    -d '{
        "model": "Qwen3.6-27B",
        "system": "You are a helpful assistant.",
        "messages": [
            {"role": "user", "content": "你是誰,你認識小畢超嗎?"}
        ],
        "max_tokens": 1024
    }'

運行結(jié)果:

三、Claude Code 安裝及配置私有化模型

3.1 安裝 Claude Code

請?zhí)崆鞍惭b好 Node 環(huán)境,版本最好 Node >=22 。

安裝官方組件:

npm install -g @anthropic-ai/claude-code

安裝好后,先輸入 claude 看是否能正常進入cli

claude 

如果提示 Claude Code might not be available in your country ,可以在當前電腦用戶目錄下,找到 .claude.json 文件,在該文件中加入 "hasCompletedOnboarding": true 配置:

然后重新在控制臺重新輸入 claude 測試是否正常:

如果出現(xiàn)上述效果,則表示部署正常。

3.2 配置模型

cmd 控制中輸入如下指令,配置系統(tǒng)環(huán)境變量:

setx ANTHROPIC_BASE_URL "http://127.0.0.1:8000"
setx ANTHROPIC_AUTH_TOKEN "token-abc123"
setx ANTHROPIC_MODEL "Qwen3.6-27B"
setx ANTHROPIC_SMALL_FAST_MODEL "Qwen3.6-27B"

然后最好關掉當前 cmd,重新打開cmd 進入 claude,測試連接是否正常:

如果看到使用的是 Qwen3.6-27B 模型,并且可以正常回答,就表示環(huán)境配置成功。

四、應用實踐

4.1 開發(fā)一個H5五子棋小游戲

輸入提示:

在當前根目錄下創(chuàng)建一個H5五子棋游戲,單個HTML文件實現(xiàn),包含:
- 15x15棋盤,黑白雙方輪流落子
- 判斷勝負(五子連珠)
- 顯示當前回合和勝利提示
- 重新開始按鈕
- 界面簡潔美觀

運行效果:

運行一切正常,并且所提需求均實現(xiàn)。

4.2 解讀 DeerFlow2.0 源碼設計過程

DeerFlow 2.0 是一個非常優(yōu)秀的開源 Harness Agent 項目,這里讓 Claude Code 分析其源碼設計過程:

拉取項目:

git clone https://github.com/bytedance/deer-flow.git

然后進入項目中喚醒 claude, 首先使用 /init 指令,讓 claude 了解下當前項目,并生成 Claude.md

/init

Claude.md 內(nèi)容:

這里如果是我們自己的項目,可能就要看下 Claude.md 中梳理的具體內(nèi)容了,判斷內(nèi)容是否完善,以及補充一些關鍵知識,這里主要讓Claude分析其設計思路,這里不做任何修改,下面直接請 claude 幫助分析智能體的設計過程,輸入提示:

請幫我分析這個項目的源碼架構(gòu),我想了解:
1. Agent 的整體設計架構(gòu)和核心模塊劃分。
2. Agent 的初始化和啟動流程。
3. Agent 的任務接收、調(diào)度和執(zhí)行的完整鏈路。
4. Agent 的狀態(tài)管理和生命周期設計。
最后請將分析結(jié)果寫入“設計過程.md”文件中。

分析結(jié)束,分析的結(jié)果不亞于收費模型!

以下是分析過程,其中為了方便展示 ```符號均替換為 ``:

# DeerFlow Agent 源碼架構(gòu)分析
## 一、整體設計架構(gòu)和核心模塊劃分
DeerFlow 是一個基于 LangGraph 構(gòu)建的 AI "超級代理"系統(tǒng)。其核心設計理念是:**一個 Lead Agent(主代理)作為任務編排器,可動態(tài)分解任務、派生 Sub-Agent(子代理),在隔離的沙箱環(huán)境中執(zhí)行復雜的多步驟工作。**
### 1.1 系統(tǒng)層級架構(gòu)
``
┌─────────────────────────────────────────────────────────────────┐
│                        接入層                                     │
│   Nginx (:2026) → Frontend(:3000) / Gateway(:8001) / LangGraph(:2024) │
├─────────────────────────────────────────────────────────────────┤
│                       應用層                                      │
│                                                                 │
│  ┌──────────────┐   ┌──────────────┐   ┌────────────────────┐  │
│  │ LangGraph    │   │ Gateway API  │   │ DeerFlowClient     │  │
│  │ Server       │   │ (FastAPI)    │   │ (嵌入式 Python 客戶端)│  │
│  │ (:2024)      │   │ (:8001)      │   │                    │  │
│  └──────┬───────┘   └──────────────┘   └────────────────────┘  │
│         │                                                       │
│         ▼  (兩者共享同一套 src/ 模塊)                              │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                   Agent 核心層                            │    │
│  │                                                          │    │
│  │  ┌─────────────┐  ┌──────────────┐  ┌────────────────┐ │    │
│  │  │ Lead Agent  │  │ Middleware   │  │ Subagent       │ │    │
│  │  │ (主代理)     │──│ Chain (11個) │  │ System (子代理) │ │    │
│  │  └──────┬──────┘  └──────────────┘  └────────┬───────┘ │    │
│  │         │                                    │         │    │
│  │         ▼  ── 核心基礎設施 ──                  ▼         │    │
│  │                                                          │    │
│  │  ┌──────────┐ ┌──────────┐ ┌───────┐ ┌──────────────┐  │    │
│  │  │ Sandbox  │ │  Tools   │ │ MCP   │ │ Skills System│  │    │
│  │  │ (沙箱)    │ │ (工具集)  │ │(外部) │ │ (技能系統(tǒng))    │  │    │
│  │  └──────────┘ └──────────┘ └───────┘ └──────────────┘  │    │
│  │                                                          │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐                 │    │
│  │  │ Memory   │ │ Model    │ │Config    │                 │    │
│  │  │ (記憶)   │ │ Factory  │ │(配置)    │                 │    │
│  │  └──────────┘ └──────────┘ └──────────┘                 │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
``
### 1.2 核心模塊劃分
| 模塊 | 路徑 | 職責 |
|------|------|------|
| **Lead Agent** | `src/agents/lead_agent/` | 主代理工廠函數(shù) + 動態(tài)系統(tǒng)提示詞生成 |
| **Thread State** | `src/agents/thread_state.py` | 代理狀態(tài)模式定義(繼承 AgentState) |
| **Middleware** | `src/agents/middlewares/` | 11 個中間件,負責沙箱、記憶、標題、澄清等橫切關注點 |
| **Memory** | `src/agents/memory/` | 跨會話持久記憶(事實提取、去抖隊列、原子寫入) |
| **Sandbox** | `src/sandbox/` | 沙箱執(zhí)行系統(tǒng)(本地/Docker 兩種實現(xiàn) + 虛擬路徑映射) |
| **Subagent** | `src/subagents/` | 子代理系統(tǒng)(注冊表、雙線程池執(zhí)行引擎、超時控制) |
| **Tools** | `src/tools/` + `src/community/` | 工具裝配(內(nèi)置 + 沙箱 + MCP + 社區(qū)工具) |
| **MCP** | `src/mcp/` | Model Context Protocol 集成(懶加載、緩存、OAuth) |
| **Skills** | `src/skills/` | 技能發(fā)現(xiàn)、加載、解析(SKILL.md 漸進式加載) |
| **Model Factory** | `src/models/` | 模型工廠(thinking/vision 支持、動態(tài)反射創(chuàng)建) |
| **Config** | `src/config/` | 配置系統(tǒng)(config.yaml + extensions_config.json) |
| **Gateway** | `src/gateway/` | FastAPI 網(wǎng)關(models/skills/memory/uploads/artifacts/agents 路由) |
| **Client** | `src/client.py` | 嵌入式 Python 客戶端(無需 HTTP 服務,直接調(diào)用 Agent) |
---
## 二、Agent 的初始化和啟動流程
DeerFlow 的 Agent 初始化有兩條路徑:**LangGraph Server 路徑**(HTTP 服務)和 **嵌入式 Client 路徑**(純 Python)。兩者最終調(diào)用相同的 `make_lead_agent` 工廠函數(shù)。
### 2.1 LangGraph Server 路徑
``
啟動命令: uv run langgraph dev
                    │
                    ▼
           ┌─────────────────┐
           │ 讀取 langgraph.json │
           │ graphs.lead_agent  │
           │ → src.agents:     │
           │   make_lead_agent  │
           └────────┬──────────┘
                    │
           LangGraph CLI 在收到
           第一個請求時懶調(diào)用該工廠函數(shù)
                    │
                    ▼
``
`langgraph.json` 配置:
``json
{
  "graphs": {
    "lead_agent": "src.agents:make_lead_agent"
  }
}
``
### 2.2 嵌入式 Client 路徑
``
DeerFlowClient()
    │
    ▼  _ensure_agent(config)
    │
    ├── 創(chuàng)建 Model: create_chat_model()
    ├── 獲取 Tools: get_available_tools()
    ├── 構(gòu)建 Middleware: _build_middlewares()
    ├── 生成 Prompt: apply_prompt_template()
    └── 調(diào)用 LangChain: create_agent(...)
``
### 2.3 make_lead_agent 工廠函數(shù)詳解
入口文件:`src/agents/lead_agent/agent.py:254`
``
make_lead_agent(config: RunnableConfig)
│
├── 1. 解析運行時參數(shù) (從 config.configurable)
│   ├── thinking_enabled      → 是否啟用擴展思考
│   ├── reasoning_effort      → 推理力度
│   ├── model_name / model    → 指定模型
│   ├── is_plan_mode          → 啟用 TodoList
│   ├── subagent_enabled      → 啟用子代理
│   ├── max_concurrent_subagents → 并發(fā)子代理上限
│   ├── is_bootstrap          → 啟動引導模式
│   └── agent_name            → 自定義代理名
│
├── 2. 模型解析 (_resolve_model_name)
│   ├── 優(yōu)先使用請求中指定的 model_name
│   ├── 其次使用 agent_config.model (自定義代理)
│   └── 回退到 config.yaml 中第一個模型
│
├── 3. 創(chuàng)建 LLM 實例 (create_chat_model)
│   ├── 根據(jù) supports_thinking 決定是否啟用思考模式
│   └── 根據(jù) supports_reasoning_effort 注入推理力度參數(shù)
│
├── 4. 組裝工具集 (get_available_tools)
│   ├── config.yaml 中定義的工具 (通過反射解析)
│   ├── MCP 工具 (懶加載 + mtime 緩存失效)
│   ├── 內(nèi)置工具 (present_files, ask_clarification, view_image)
│   └── 子代理工具 (task, 僅在 subagent_enabled=True 時)
│
├── 5. 構(gòu)建中間件鏈 (_build_middlewares) ← 見下方中間件鏈
│
├── 6. 生成系統(tǒng)提示詞 (apply_prompt_template)
│   ├── 注入 Agent 角色和靈魂 (SOUL.md)
│   ├── 注入記憶上下文 (memory.json)
│   ├── 注入可用技能列表 (skills/)
│   ├── 注入子代理系統(tǒng)指令 (subagent_enabled 時)
│   ├── 注入工作目錄說明
│   └── 附加當前日期
│
└── 7. 調(diào)用 LangChain create_agent()
    ├── model
    ├── tools
    ├── middleware
    ├── system_prompt
    └── state_schema = ThreadState
``
### 2.4 中間件鏈構(gòu)建順序(嚴格有序)
`_build_middlewares()` 函數(shù)按以下順序組裝 11 個中間件:
``
順序  中間件                    條件        職責
────  ──────────────────────  ──────────  ──────────────────────────────
 1    ThreadDataMiddleware      始終        為 thread_id 創(chuàng)建本地數(shù)據(jù)目錄
 2    UploadsMiddleware         始終        追蹤并注入新上傳的文件到對話
 3    SandboxMiddleware         始終        獲取沙箱實例,存儲 sandbox_id 到狀態(tài)
 4    DanglingToolCallMiddleware 始終        為缺少響應的 tool_call 注入占位 ToolMessage
 5    SummarizationMiddleware   config.yaml  接近 token 上限時自動摘要對話
 6    TodoListMiddleware        is_plan_mode  提供 write_todos 工具,任務跟蹤
 7    TitleMiddleware           始終        首次完整對話后自動生成線程標題
 8    MemoryMiddleware          config.yaml  過濾消息(user + 最終 AI),排隊異步記憶更新
 9    ViewImageMiddleware       supports_vision 將圖片轉(zhuǎn)為 base64 注入狀態(tài)
10    SubagentLimitMiddleware   subagent_enabled 截斷超出并發(fā)上限的 task 調(diào)用
11    ClarificationMiddleware   始終(必須在最后) 攔截 ask_clarification 調(diào)用,中斷執(zhí)行 → Command(goto=END)
``
---
## 三、Agent 的任務接收、調(diào)度和執(zhí)行的完整鏈路
### 3.1 完整請求鏈路(HTTP 模式)
``
用戶輸入消息
    │
    ▼
┌──────────────────────────────────────────────────┐
│ ① Frontend (Next.js)                             │
│    - 用戶發(fā)送消息                                   │
│    - useThreadStream hook → LangGraph SDK 流式請求 │
│    - POST /api/langgraph/lead_agent/runs          │
└──────────────┬───────────────────────────────────┘
               │
               ▼
┌──────────────────────────────────────────────────┐
│ ② Nginx (:2026)                                  │
│    - 路由 /api/langgraph/* → LangGraph Server(:2024)│
└──────────────┬───────────────────────────────────┘
               │
               ▼
┌──────────────────────────────────────────────────┐
│ ③ LangGraph Server (:2024)                       │
│    - 收到請求,調(diào)用 make_lead_agent(config) 工廠函數(shù)  │
│    - 首次調(diào)用:創(chuàng)建 Agent 實例(模型 + 工具 + 中間件)  │
│    - 后續(xù)調(diào)用:復用緩存的 Agent 實例                  │
│    - 將請求包裝為 Agent 輸入狀態(tài)                      │
│    - 調(diào)用 agent.stream(state, config, context)      │
└──────────────┬───────────────────────────────────┘
               │
               ▼
┌──────────────────────────────────────────────────┐
│ ④ Agent 執(zhí)行循環(huán) (LangGraph 內(nèi)部)                  │
│                                                   │
│    for 每個中間件 (outer → inner):                 │
│        before_model(state)  ← 中間件前置處理        │
│        ▲                                          │
│        │                                          │
│    ┌───┴───┐                                      │
│    │ LLM   │ ← 系統(tǒng)提示詞 + 對話歷史 → 模型響應     │
│    │ 調(diào)用   │    (可能包含 tool_calls)              │
│    └───┬───┘                                      │
│        │                                          │
│        ▼                                          │
│    for 每個中間件 (inner → outer):                 │
│        after_model(state)  ← 中間件后置處理          │
│        │                                          │
│    for 每個 tool_call:                             │
│        執(zhí)行工具 → 得到 ToolMessage → 追加到歷史       │
│        │                                          │
│    if 還有 tool_calls: 回到開頭繼續(xù)                  │
│    else: 返回最終狀態(tài)                                │
│                                                   │
│    每一步通過 SSE 流式輸出到 Frontend                 │
└───────────────────────────────────────────────────┘
``
### 3.2 單輪 Agent 執(zhí)行流程(詳細)
``
輸入: HumanMessage("分析騰訊股價下跌原因")
    │
    ▼
┌─ 中間件 before_model 鏈 ──────────────────────┐
│                                                │
│ ThreadDataMiddleware.before_model()             │
│   → 創(chuàng)建 .deer-flow/threads/{tid}/user-data/    │
│   → 寫入 state.thread_data (workspace/uploads/  │
│     outputs 路徑)                               │
│                                                │
│ UploadsMiddleware.before_model()                │
│   → 掃描 uploads/ 目錄                          │
│   → 將新上傳文件列表注入 state.uploaded_files    │
│                                                │
│ SandboxMiddleware.before_model()                │
│   → 獲取沙箱實例 (本地/Docker)                    │
│   → 寫入 state.sandbox = {sandbox_id: ...}      │
│                                                │
│ DanglingToolCallMiddleware.before_model()       │
│   → 檢查消息歷史中是否有未配對的 tool_call        │
│   → 注入占位 ToolMessage 防止模型重試             │
│                                                │
│ SummarizationMiddleware.before_model()          │
│   → 檢查 token 數(shù)/消息數(shù)是否達到閾值              │
│   → 觸發(fā)摘要:保留最近 N 條消息,壓縮舊對話        │
│                                                │
│ TitleMiddleware.before_model()                  │
│   → 如果是首次完整交換,調(diào)用 LLM 生成標題          │
│   → 寫入 state.title                            │
│                                                │
│ MemoryMiddleware.before_model()                 │
│   → 過濾出用戶消息 + 最終 AI 響應                 │
│   → 加入去抖隊列 (30s 后觸發(fā)異步記憶更新)          │
│                                                │
│ ViewImageMiddleware.before_model()              │
│   → 將對話中的圖片引用轉(zhuǎn)為 base64 嵌入            │
│   → 寫入 state.viewed_images                    │
│                                                │
│ SubagentLimitMiddleware.after_model()           │
│   → 截斷 model_response 中超出 max_concurrent    │
│     的 task tool_calls                          │
│                                                │
│ ClarificationMiddleware.after_model()           │
│   → 檢測 model_response 是否包含                 │
│     ask_clarification tool_call                 │
│   → 如果有 → return Command(goto=END) 中斷      │
└────────────────────────────────────────────────┘
    │
    ▼
┌─ LLM 調(diào)用 ────────────────────────────────────┐
│                                                │
│  System Prompt (含角色/記憶/技能/子代理指令)      │
│  +                                              │
│  對話歷史 (HumanMessage / AIMessage / ...)       │
│     │                                           │
│     ▼                                           │
│  模型返回:                                       │
│    - 文本響應 (簡單問題)                           │
│    - 或多個 tool_calls (復雜任務)                  │
│    - 或 text + tool_calls (并行)                  │
└────────────────────┬───────────────────────────┘
                     │
                     ▼
            是否包含 tool_calls?
                     │
              ┌──────┴──────┐
              │ yes         │ no
              ▼             ▼
     ┌──────────────┐  ┌──────────────┐
     │ 工具執(zhí)行階段  │  │ 返回最終狀態(tài)   │
     │              │  │ → SSE 輸出   │
     │ for each     │  │ → 前端渲染   │
     │   tool_call: │  └──────────────┘
     │   執(zhí)行工具    │
     │   → 生成     │
     │     ToolMsg  │
     │   → 追加到   │
     │     歷史     │
     │              │
     │ → 回到開頭   │
     │   繼續(xù)循環(huán)   │
     └──────────────┘
``
### 3.3 子代理調(diào)度鏈路
當 Lead Agent 調(diào)用 `task` 工具時:
``
Lead Agent 返回 tool_calls: [task(...), task(...), task(...)]
    │
    ▼
┌───────────────────────────────────────────────────────┐
│ task_tool(description, prompt, subagent_type, ...)     │
│                                                        │
│ ① 從注冊表獲取子代理配置                                 │
│    get_subagent_config("general-purpose")              │
│    → SubagentConfig(name, tools, disallowed_tools,    │
│                     system_prompt, max_turns, timeout)  │
│                                                        │
│ ② 創(chuàng)建 SubagentExecutor                                │
│    - 過濾工具集 (根據(jù) allowed/disallowed)               │
│    - 繼承父代理的沙箱狀態(tài)和 thread_data                  │
│    - 生成 trace_id 用于分布式追蹤                        │
│                                                        │
│ ③ 異步執(zhí)行 (execute_async)                              │
│    - 創(chuàng)建 SubagentResult(task_id, status=PENDING)       │
│    - 存入全局 _background_tasks 字典                     │
│    - 提交到 _scheduler_pool (3 個工作線程)               │
│    - 立即返回 task_id (非阻塞)                           │
│                                                        │
│ ④ 后臺調(diào)度線程執(zhí)行                                       │
│    - 狀態(tài) → RUNNING                                     │
│    - 提交到 _execution_pool (3 個工作線程)               │
│    - 等待 execution_future.result(timeout=900s)         │
│                                                        │
│ ⑤ 子代理執(zhí)行線程                                         │
│    - _create_agent():                                   │
│      create_agent(model, filtered_tools,               │
│                   [ThreadDataMiddleware,                │
│                    SandboxMiddleware],                  │
│                   system_prompt, ThreadState)           │
│    - agent.stream(initial_state, config, context)       │
│    - 實時收集 AI 消息到 result.ai_messages               │
│    - 提取最終 AIMessage 內(nèi)容作為 result.result            │
│                                                        │
│ ⑥ 調(diào)度線程回收結(jié)果                                       │
│    - 更新 _background_tasks[task_id]:                   │
│      status → COMPLETED / FAILED / TIMED_OUT            │
│      result, error, ai_messages                         │
└───────────────────────────────────────────────────────┘
    │
    ▼
┌───────────────────────────────────────────────────────┐
│ task_tool 輪詢等待 (5s 間隔)                             │
│                                                        │
│  while True:                                           │
│      result = get_background_task_result(task_id)      │
│      if result.status in (COMPLETED, FAILED, TIMED_OUT):│
│          break                                         │
│      yield SSE event (task_started / task_running / ...)│
│      sleep(5)                                          │
│                                                        │
│  返回: ToolMessage(content=子代理最終結(jié)果)                │
└───────────────────────────────────────────────────────┘
    │
    ▼
Lead Agent 收到所有 task 的 ToolMessage → 繼續(xù)下一輪循環(huán)
→ 綜合所有子代理結(jié)果 → 生成最終回復 → 流式輸出到用戶
``
### 3.4 雙線程池設計
``
┌─────────────────────┐         ┌─────────────────────┐
│  _scheduler_pool     │         │  _execution_pool     │
│  (3 workers)         │────────?│  (3 workers)         │
│                      │         │                      │
│  職責:                │         │  職責:                │
│  - 狀態(tài)管理           │         │  - 實際 Agent 執(zhí)行    │
│  - 超時控制           │         │  - 流式消息收集       │
│  - 結(jié)果回收           │         │  - 提取最終結(jié)果       │
│  - 異常處理           │         │                      │
└─────────────────────┘         └─────────────────────┘
分離原因:
- 調(diào)度線程需要阻塞等待 (future.result(timeout))
- 執(zhí)行線程需要流式處理 agent.stream()
- 分離后調(diào)度線程不會被執(zhí)行阻塞,可以管理超時和清理
``
---
## 四、Agent 的狀態(tài)管理和生命周期設計
### 4.1 ThreadState 狀態(tài)模式
定義文件:`src/agents/thread_state.py`
``python
class ThreadState(AgentState):
    # ── 繼承自 AgentState ──
    messages: list[BaseMessage]      # 對話消息歷史 (append 模式)
    stack: list[...]                 # LangGraph 內(nèi)部調(diào)用棧
    # ── DeerFlow 擴展字段 ──
    sandbox: SandboxState            # 沙箱狀態(tài) {sandbox_id: "local" | "container-xxx"}
    thread_data: ThreadDataState     # 線程數(shù)據(jù) {workspace_path, uploads_path, outputs_path}
    title: str                       # 自動生成的對話標題
    artifacts: list[str]             # 產(chǎn)物文件列表 (merge_artifacts 去重歸并)
    todos: list                      # 任務列表 (plan_mode 時)
    uploaded_files: list[dict]       # 上傳文件信息
    viewed_images: dict              # 已查看圖片 {path: {base64, mime_type}}
``
**自定義歸并器 (Reducer)**:
- `merge_artifacts` — 合并去重(`dict.fromkeys` 保序去重)
- `merge_viewed_images` — 字典合并,空字典 `{}` 特殊處理為"清除所有"
### 4.2 生命周期狀態(tài)圖
``
                    ┌─────────────────────────────────────────────┐
                    │              Agent 實例生命周期                │
                    └─────────────────────────────────────────────┘
  ┌─────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────┐
  │  空閑    │────?│  接收請求     │────?│  執(zhí)行中       │────?│  完成     │
  │ (Standby)│     │ (make_...  ) │     │ (agent.     │     │ (SSE 結(jié)束)│
  └─────────┘     └──────────────┘     │  stream)    │     └──────────┘
                                       └──────────────┘
  首次請求時:
    make_lead_agent(config)
    ├── 解析模型 → create_chat_model()
    ├── 組裝工具 → get_available_tools()
    ├── 構(gòu)建中間件 → _build_middlewares()
    ├── 生成提示詞 → apply_prompt_template()
    └── 創(chuàng)建代理 → create_agent(...)
  后續(xù)請求 (同配置):
    復用已緩存的 Agent 實例
  配置變化時:
    重新調(diào)用 make_lead_agent() 創(chuàng)建新實例
                    ┌─────────────────────────────────────────────┐
                    │            Thread (對話線程) 生命周期          │
                    └─────────────────────────────────────────────┘
  ┌────────┐  ┌──────────┐  ┌───────────┐  ┌──────────┐  ┌──────────┐
  │ 創(chuàng)建    │─?│ ThreadData│─?│ 每輪執(zhí)行   │─?│ 記憶更新  │─?│ 持續(xù)/   │
  │ (新對話) │  │ 初始化    │  │ (中間件→   │  │ (異步,   │  │ 結(jié)束     │
  │        │  │ 創(chuàng)建目錄  │  │  LLM→工具) │  │  30s去抖)│  │          │
  └────────┘  └──────────┘  └───────────┘  └──────────┘  └──────────┘
  每輪執(zhí)行:
    ThreadDataMiddleware  → 確保線程目錄存在
    UploadsMiddleware     → 掃描新上傳文件
    SandboxMiddleware     → 獲取/復用沙箱
    ... (其余中間件)
    TitleMiddleware       → 首次交換后生成標題 (僅一次)
    MemoryMiddleware      → 排隊記憶更新 (每輪)
                    ┌─────────────────────────────────────────────┐
                    │           Sandbox (沙箱) 生命周期             │
                    └─────────────────────────────────────────────┘
  LocalSandbox:
    acquire() → 單例 (sandbox_id = "local")
    get(id)   → 返回同一實例
    release() → no-op (不銷毀)
  AioSandbox (Docker):
    acquire() → 啟動新容器 / 連接已有容器
    get(id)   → 返回容器客戶端
    release() → 停止并清理容器
  沙箱復用:
    - 同一 thread_id 復用同一個沙箱實例
    - SandboxMiddleware 檢查 state.sandbox 是否已有 sandbox_id
    - 如果有 → 直接 get() 復用,不再 acquire
                    ┌─────────────────────────────────────────────┐
                    │        Subagent (子代理) 生命周期             │
                    └─────────────────────────────────────────────┘
  PENDING ──? RUNNING ──? COMPLETED
                │
                ├──? FAILED    (執(zhí)行異常)
                │
                └──? TIMED_OUT (超過 timeout_seconds,默認 900s)
  創(chuàng)建:
    task_tool() → SubagentExecutor(task, task_id)
                 → _scheduler_pool.submit(run_task)
  執(zhí)行:
    run_task()  → _execution_pool.submit(execute)
                → agent.stream(state) 流式執(zhí)行
                → 實時收集 AI 消息
  回收:
    調(diào)度線程等待 future.result(timeout)
    → 更新 _background_tasks[task_id] 狀態(tài)
    → task_tool 輪詢檢測到終態(tài) → 返回結(jié)果
``
### 4.3 配置驅(qū)動的條件化行為
Agent 的運行時行為由 `config.configurable` 中的參數(shù)動態(tài)控制:
``
config.configurable
├── model_name            → 切換 LLM 模型
├── thinking_enabled      → 啟用/禁用擴展思考
├── reasoning_effort      → 推理力度 ("low" / "medium" / "high")
├── is_plan_mode          → 啟用 TodoListMiddleware (任務追蹤)
├── subagent_enabled      → 啟用 task 工具 + SubagentLimitMiddleware
├── max_concurrent_subagents → 并發(fā)子代理數(shù)上限 (默認 3)
├── is_bootstrap          → 啟動引導模式 (精簡提示詞 + setup_agent 工具)
└── agent_name            → 自定義代理 (加載對應 SOUL.md + 獨立記憶)
``
### 4.4 記憶系統(tǒng)生命周期
``
用戶發(fā)送消息
    │
    ▼
MemoryMiddleware.before_model()
    │ 過濾: 只保留 HumanMessage + 最后一個 AIMessage
    ▼
加入 MemoryQueue (去抖: 同一 thread_id 合并)
    │
    ▼  (30 秒后觸發(fā))
MemoryQueue.process()
    │
    ▼
LLM 事實提取
    ├── 分析對話內(nèi)容
    ├── 提取用戶上下文 (workContext, personalContext, topOfMind)
    ├── 提取離散事實 (id, content, category, confidence)
    └── 過濾: confidence < 0.7 的事實不存儲
    │
    ▼
原子寫入 memory.json
    ├── 寫入臨時文件
    ├── 原子替換 (os.replace)
    └── 失效內(nèi)存緩存
    │
    ▼
下次對話時 → apply_prompt_template() → 讀取 memory.json
    → 注入 top 15 事實 + 用戶上下文到 <memory> 標簽
    → 限制 max_injection_tokens (默認 2000 token)
``
---
## 五、關鍵設計模式總結(jié)
| 模式 | 體現(xiàn) |
|------|------|
| **工廠模式** | `make_lead_agent(config)` 根據(jù)運行時參數(shù)創(chuàng)建完整 Agent 實例 |
| **中間件鏈** | 11 個中間件有序組裝,before_model / after_model 鉤子 |
| **策略模式** | SandboxProvider 接口,Local / Docker / K8s 三種實現(xiàn) |
| **懶加載** | MCP 工具首次使用時才初始化;Agent 首次請求時才創(chuàng)建 |
| **緩存 + 失效** | MCP 工具按 mtime 緩存;memory.json 按修改時間緩存 |
| **對象池** | Subagent 雙線程池 (_scheduler_pool + _execution_pool) |
| **事件驅(qū)動** | SSE 流式輸出 (values / messages-tuple / end) |
| **漸進式加載** | Skills 只在系統(tǒng)提示詞中列出路徑,Agent 按需 read_file 加載 |
| **去抖隊列** | Memory 更新去抖 (30s),避免每輪對話都觸發(fā) LLM 調(diào)用 |
| **原子寫入** | memory.json 和 extensions_config.json 使用 temp + replace |

到此這篇關于Qwen3.6-27B 本地私有化部署 + Claude Code 連接應用的文章就介紹到這了,更多相關Qwen3.6-27B 本地部署+Claude Code內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

相關文章

  • Claude Code接入SonarQube靜態(tài)掃描的實戰(zhàn)指南

    SonarQube 是業(yè)界最流行的代碼質(zhì)量平臺之一,能檢測 Bug、漏洞、壞味道、安全熱點,還能統(tǒng)計覆蓋率和重復代碼,而現(xiàn)在,它可以直接集成進 Claude Code,讓 AI 在幫你寫代碼
    2026-04-28
  • Claude Code零改動接入DeepSeek V4的詳細過程

    文章介紹了cc-use工具,作為ClaudeCodeDe的啟動器,解決了在不同不同Anthropop提供者之間切換時環(huán)境變量沖突的問題,文章詳細描述了如何使用cc-use工具接通DeepSeekV4端點,需
    2026-04-28
  • 2026年Claude Code的最佳實戰(zhàn)指南

    這篇文章主要為大家詳細Claude Code的核心用法,包括精簡上下文、先規(guī)劃后編碼、強制自我驗證,通過標準四步工作流與實戰(zhàn) Prompt助你 5 分鐘上手,讓 AI 成為編程神隊友,有
    2026-04-28
  • 使用claude code的15個實用小技巧(建議收藏!)

    Claude Code是Anthropic推出的面向開發(fā)者的AI編程協(xié)作工具, Claude Code定位不是聊天,而是在本地代碼倉庫中執(zhí)行高權限、可上下文感知的工程任務,這篇文章主要介紹了使用cla
    2026-04-27
  • Claude Code + IDEA 的沉浸式編程實踐方案

    ClaudeCode是Anthropicc推出的AI編程搭檔,具備上下文感知、工程化導向和可定制行為特征,本文介紹了其安裝配置、與第三方平臺CodingPlan的的集成,并通過IDE插件在Idea中使用
    2026-04-27
  • Claude Code GitHub Actions 使用詳細步驟

    ClaudeCode是Anthropic推出的GitHubActions工具,能自動分析代碼、創(chuàng)建PR、實現(xiàn)功能并修復錯誤,本文介紹了如何通過AceDataCloud的代理服務配置和使用ClaudeCodeGitHubAction
    2026-04-27
  • 2026年升級Claude Code版本的完整指南

    本文詳細介紹了如何安全干凈地升級ClaudeCode和OpenCode兩大工具至最新版本,內(nèi)容包括檢查當前版本,備份配置文件,關閉運行中的會話及解決常見問題的方法,希望對大家有所
    2026-04-26
  • 徹底卸載Claude Code的完整清理教程

    這篇文章提供了詳細的卸載Claude和Opencaed的方法,包括確認安裝方式,卸載命令,清理殘留配置文件和環(huán)境變量等幾個步驟,文章還提供了針對不同安裝方式的具體操作,希望對大
    2026-04-26
  • 一問詳解Claude Code中的調(diào)試技巧與錯誤處理

    這篇文章主要為大家詳細介紹了 Claude Code 的調(diào)試技巧、錯誤分析方法、日志解讀、性能優(yōu)化策略以及常見問題的解決方案,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小
    2026-04-24
  • claude code高級使用手冊

    本文介紹了ClaudeCode的使用指南,涵蓋安裝配置、模式切換、終端命令、文件編輯、代碼回滾、上下文管理、長期記憶、子代理、插件安裝等內(nèi)容,幫助開發(fā)者更高效地使用AI編程助
    2026-04-24

最新評論

大竹县| 台北县| 龙海市| 方正县| 永新县| 自贡市| 白银市| 惠安县| 社会| 赫章县| 富平县| 阿拉善右旗| 合江县| 遂宁市| 丰都县| 高唐县| 章丘市| 清流县| 桓仁| 正宁县| 新竹县| 吐鲁番市| 合山市| 宾川县| 云霄县| 兰考县| 乃东县| 班戈县| 连江县| 连平县| 铁岭县| 彭泽县| 龙海市| 吴川市| 海丰县| 玉龙| 克什克腾旗| 绥江县| 简阳市| 余庆县| 璧山县|