
在實(shí)際 AI 開發(fā)與部署場景中成本控制與性能表現(xiàn)是開發(fā)者面臨的核心矛盾。一方面我們希望獲得強(qiáng)大的模型推理能力以處理復(fù)雜任務(wù)另一方面高昂的云端 API 調(diào)用費(fèi)用常常讓個人開發(fā)者或小型團(tuán)隊(duì)望而卻步。一種折中且高效的思路是將輕量級、可本地部署的開源模型與云端高性能模型相結(jié)合構(gòu)建一個既能滿足日常開發(fā)需求又能應(yīng)對復(fù)雜任務(wù)的混合工作流。本文將圍繞這一思路探討如何利用 Kimi K3 這類本地模型與 DeepSeek-V4-Flash 等云端模型搭建一個完整的、成本可控的 AI 輔助開發(fā)與內(nèi)容生成流程。我們將從概念理解、環(huán)境搭建、工具配置、代碼實(shí)踐到工作流優(yōu)化提供一套可復(fù)現(xiàn)的保姆級指南旨在幫助開發(fā)者以每月約 10 美元的預(yù)算實(shí)現(xiàn)接近甚至超越單一昂貴云端模型如每月 200 美元級別的綜合體驗(yàn)。1. 理解混合 AI 工作流的核心價值與架構(gòu)在深入配置之前我們需要先厘清為什么需要混合工作流以及它如何運(yùn)作。單一模型策略無論是完全依賴本地部署還是完全依賴云端 API都存在明顯的短板。1.1 本地模型與云端模型的優(yōu)劣勢對比本地模型如 Kimi K3的優(yōu)勢在于零調(diào)用成本、數(shù)據(jù)隱私性高、響應(yīng)延遲低且不受網(wǎng)絡(luò)波動影響。其短板通常在于模型規(guī)模較小導(dǎo)致復(fù)雜邏輯推理、代碼生成、長文本理解等能力有限。云端模型如 DeepSeek-V4-Flash則相反它們通?;谇|甚至萬億參數(shù)訓(xùn)練在代碼、數(shù)學(xué)、邏輯和創(chuàng)意寫作等方面表現(xiàn)卓越但代價是按 token 計(jì)費(fèi)頻繁調(diào)用成本高昂且存在數(shù)據(jù)出域和網(wǎng)絡(luò)依賴的風(fēng)險。一個高效的混合工作流其核心思想是“讓合適的模型做合適的事”。將輕量、高頻、對隱私敏感的任務(wù)交給本地模型處理將重量、低頻、需要強(qiáng)推理能力的任務(wù)路由到云端模型。這不僅能大幅降低成本還能在響應(yīng)速度和任務(wù)質(zhì)量之間取得最佳平衡。1.2 典型混合工作流架構(gòu)設(shè)計(jì)一個完整的混合 AI 工作流通常包含以下組件本地模型服務(wù)負(fù)責(zé)運(yùn)行 Kimi K3 等模型提供本地 API 端點(diǎn)。云端模型 API已訂閱的 DeepSeek、豆包等服務(wù)的 API 密鑰和端點(diǎn)。路由與調(diào)度器核心組件根據(jù)預(yù)設(shè)規(guī)則如任務(wù)類型、復(fù)雜度、token 長度自動決定將用戶請求發(fā)送給本地模型還是云端模型。統(tǒng)一客戶端可以是命令行工具、IDE 插件如 VSCode 擴(kuò)展或自定義的 Web 界面用戶通過它與整個工作流交互無需關(guān)心背后是哪個模型在響應(yīng)。上下文管理與緩存管理對話歷史并對常見或重復(fù)的查詢結(jié)果進(jìn)行緩存避免不必要的、尤其是昂貴的云端 API 調(diào)用。我們的目標(biāo)就是搭建這樣一個系統(tǒng)并確保其穩(wěn)定、易用。2. 環(huán)境準(zhǔn)備與核心工具選型在開始搭建前需要準(zhǔn)備好基礎(chǔ)環(huán)境和關(guān)鍵工具。以下清單涵蓋了從硬件到軟件的各項(xiàng)要求。2.1 硬件與基礎(chǔ)軟件環(huán)境組件最低要求推薦配置說明操作系統(tǒng)Ubuntu 20.04 LTS / Windows 10 WSL2Ubuntu 22.04 LTS / macOSLinux 環(huán)境對 AI 工具鏈支持最友好。Windows 用戶強(qiáng)烈建議使用 WSL2。CPU支持 AVX2 指令集的 x86-64 CPU多核現(xiàn)代 CPU (如 Intel i7/Ryzen 7)本地模型推理依賴 CPU 算力AVX2 是許多推理框架的硬性要求。內(nèi)存16 GB32 GB 或更高運(yùn)行本地模型尤其是 7B 參數(shù)級別需要足夠的內(nèi)存加載模型權(quán)重。存儲50 GB 可用空間100 GB SSD用于存放模型文件、Python 環(huán)境、依賴庫等。模型文件通常較大。Python3.83.10 或 3.11這是當(dāng)前主流 AI 框架最兼容的版本。避免使用 3.12 等過新版本。包管理器pipconda (可選)用于管理 Python 依賴。conda 在解決復(fù)雜環(huán)境沖突時更有優(yōu)勢。版本控制GitGit用于克隆項(xiàng)目代碼和模型倉庫。首先在終端中檢查你的 Python 版本并創(chuàng)建獨(dú)立的虛擬環(huán)境這是避免依賴沖突的最佳實(shí)踐。# 檢查Python版本 python3 --version # 創(chuàng)建并激活虛擬環(huán)境以 venv 為例 python3 -m venv ~/venvs/ai_workflow source ~/venvs/ai_workflow/bin/activate # Linux/macOS # 對于 Windows (cmd): ~\venvs\ai_workflow\Scripts\activate.bat # 對于 Windows (PowerShell): ~\venvs\ai_workflow\Scripts\Activate.ps1 # 升級pip pip install --upgrade pip2.2 核心工具安裝Ollama 與 LiteLLM為了簡化本地模型的部署和統(tǒng)一不同模型 API 的調(diào)用方式我們將使用兩個關(guān)鍵工具Ollama和LiteLLM。Ollama一個強(qiáng)大的工具能夠以極簡的方式在本地拉取和運(yùn)行大型語言模型。它自動處理模型下載、依賴庫安裝和 API 服務(wù)暴露是運(yùn)行 Kimi K3 等模型的理想選擇。LiteLLM一個統(tǒng)一的代理層它抽象了不同 AI 提供商如 OpenAI, Anthropic, DeepSeek甚至是本地 Ollama 服務(wù)的 API 差異。通過 LiteLLM你可以用同一種格式調(diào)用任何模型并輕松實(shí)現(xiàn)模型路由和負(fù)載均衡。安裝 OllamaLinux/macOS# 一鍵安裝腳本 curl -fsSL https://ollama.com/install.sh | sh # 啟動 Ollama 服務(wù) ollama serve 安裝后你可以通過ollama pull model-name來拉取模型。但首先我們需要確認(rèn) Kimi K3 在 Ollama 庫中的準(zhǔn)確名稱。安裝 LiteLLM 及其必要依賴pip install litellm # 如果需要用到額外的模型提供商或功能 pip install litellm[proxy]3. 部署本地模型服務(wù)以 Kimi K3 為例Ollama 官方模型庫中可能沒有直接名為 “Kimi K3” 的模型。在開源社區(qū)一個模型可能有多個別名或變體。我們需要根據(jù)模型的實(shí)際架構(gòu)例如它是基于 Llama 3.2、Qwen 2.5 還是其他架構(gòu)微調(diào)的來尋找最接近的可用版本。假設(shè)我們找到一個與 Kimi K3 能力相近的、基于 Llama 3.2 微調(diào)的 7B 參數(shù)模型其 Ollama 標(biāo)簽為kimi-k3:7b。3.1 拉取并運(yùn)行本地模型# 拉取模型這會下載數(shù)GB的文件請確保網(wǎng)絡(luò)通暢和磁盤空間 ollama pull kimi-k3:7b # 運(yùn)行模型服務(wù)并指定API端口 ollama run kimi-k3:7b # 默認(rèn)情況下Ollama 會在 http://localhost:11434 提供兼容 OpenAI 格式的 API。運(yùn)行后你可以打開另一個終端使用curl測試服務(wù)是否正常curl http://localhost:11434/api/generate -d { model: kimi-k3:7b, prompt: 你好請介紹一下你自己。, stream: false }如果收到包含模型回復(fù)的 JSON 響應(yīng)說明本地模型服務(wù)已成功啟動。3.2 配置 LiteLLM 以接入本地模型現(xiàn)在我們需要讓 LiteLLM 知道這個本地服務(wù)。LiteLLM 通過一個config.yaml文件來管理所有模型配置。創(chuàng)建該文件# ~/ai_workflow_config/config.yaml model_list: - model_name: kimi-local # 我們給這個本地模型起個別名 litellm_params: model: ollama/kimi-k3:7b # litellm的格式provider/model-name api_base: http://localhost:11434 # Ollama 服務(wù)地址 api_key: fake-key # 本地服務(wù)不需要真key但參數(shù)必須提供 - model_name: deepseek-v4-flash # 云端模型別名 litellm_params: model: deepseek/deepseek-chat # 假設(shè)使用DeepSeek官方Chat模型 api_key: ${DEEPSEEK_API_KEY} # 從環(huán)境變量讀取真實(shí)API Key # api_base: https://api.deepseek.com # 如果需要指定特定端點(diǎn)這里我們定義了兩個模型端點(diǎn)一個是本地的kimi-local另一個是云端的deepseek-v4-flash。注意云端模型的api_key通過環(huán)境變量注入避免將敏感信息硬編碼在配置文件中。接下來設(shè)置環(huán)境變量并啟動 LiteLLM 代理服務(wù)器# 在終端中設(shè)置DeepSeek API Key請?zhí)鎿Q成你自己的 export DEEPSEEK_API_KEYyour_deepseek_api_key_here # 啟動 litellm 代理指定配置文件和路由策略 litellm --config ~/ai_workflow_config/config.yaml --num_workers 1LiteLLM 代理默認(rèn)會在http://localhost:4000啟動一個統(tǒng)一的 OpenAI 兼容端點(diǎn)。所有發(fā)送到這個端點(diǎn)的請求都會根據(jù)路由規(guī)則下一步設(shè)置被轉(zhuǎn)發(fā)到后端的相應(yīng)模型。4. 實(shí)現(xiàn)智能路由與統(tǒng)一調(diào)用僅僅有兩個模型端點(diǎn)還不夠智能路由是混合工作流的大腦。LiteLLM 支持基于litellm.acompletion函數(shù)調(diào)用或更高級的Router類來實(shí)現(xiàn)路由。這里我們展示一個更靈活、可編程的Router方式。4.1 創(chuàng)建路由策略腳本創(chuàng)建一個 Python 腳本router.py# router.py import asyncio from litellm import Router import os # 從環(huán)境變量或配置文件加載模型列表配置 # 這里為了清晰直接寫在代碼里實(shí)際項(xiàng)目建議外置為YAML model_list [ { model_name: kimi-local, litellm_params: { model: ollama/kimi-k3:7b, api_base: http://localhost:11434, api_key: fake-key, }, tpm: 100000, # 本地模型令牌每分鐘限制設(shè)高一些 rpm: 100, # 請求每分鐘限制 input_cost_per_token: 0.0, # 本地模型零成本 output_cost_per_token: 0.0, }, { model_name: deepseek-v4-flash, litellm_params: { model: deepseek/deepseek-chat, api_key: os.getenv(DEEPSEEK_API_KEY), }, tpm: 60000, # 參考DeepSeek API實(shí)際限制 rpm: 30, input_cost_per_token: 0.00014, # 假設(shè)價格$0.14 / 1M tokens output_cost_per_token: 0.00028, } ] # 初始化路由設(shè)置路由策略為“最低成本” router Router(model_listmodel_list, routing_strategycost-based, set_verboseTrue) async def chat_with_router(messages, modelNone, **kwargs): 統(tǒng)一聊天函數(shù)。 如果指定了model則路由到該模型。 如果未指定則根據(jù)路由策略自動選擇。 try: response await router.acompletion( modelmodel, # 如果傳入則固定使用該模型 messagesmessages, **kwargs ) # 打印本次調(diào)用使用了哪個模型方便調(diào)試和計(jì)費(fèi)估算 chosen_model response._hidden_params.get(model, unknown) print(f[Router] Request served by: {chosen_model}) return response.choices[0].message.content except Exception as e: print(f[Router] Error: {e}) return f請求處理出錯: {e} # 示例同步調(diào)用的包裝函數(shù) def sync_chat(messages, modelNone): return asyncio.run(chat_with_router(messages, model)) if __name__ __main__: # 測試1不指定模型由路由器根據(jù)成本選擇應(yīng)選本地 test_messages [{role: user, content: 今天的天氣怎么樣}] print(測試1 - 自動路由簡單問題:) result sync_chat(test_messages) print(f回答: {result}\n) # 測試2指定使用云端模型處理復(fù)雜問題 complex_messages [{role: user, content: 請用Python實(shí)現(xiàn)一個快速排序算法并分析其時間復(fù)雜度和空間復(fù)雜度。}] print(測試2 - 指定使用 deepseek-v4-flash:) result sync_chat(complex_messages, modeldeepseek-v4-flash) print(f回答: {result[:200]}...\n) # 截取部分輸出這個腳本的核心是Router對象。我們設(shè)置了routing_strategycost-based這意味著默認(rèn)情況下路由器會優(yōu)先選擇成本最低的可用模型即本地的kimi-local成本為0。對于明確要求高性能的復(fù)雜任務(wù)我們可以通過model參數(shù)強(qiáng)制指定使用云端模型。4.2 集成到開發(fā)環(huán)境VSCode 擴(kuò)展配置對于開發(fā)者而言將混合工作流集成到 IDE 中能極大提升效率。許多 VSCode 的 AI 助手?jǐn)U展如genie、Continue或Twinny支持配置自定義的 OpenAI 兼容端點(diǎn)。安裝一個支持自定義端點(diǎn)的擴(kuò)展例如 “Genie”。在擴(kuò)展設(shè)置中找到 API 配置部分。將API Base URL設(shè)置為 LiteLLM 代理的地址http://localhost:4000。將API Key設(shè)置為任意非空字符串因?yàn)槲覀兊?LiteLLM 代理配置了本地模型不需要驗(yàn)證。在模型名稱處你可以填寫kimi-local來默認(rèn)使用本地模型或者在需要時在擴(kuò)展的聊天框中手動指定模型如/model deepseek-v4-flash。這樣你在 VSCode 中寫代碼、問問題、生成注釋時請求就會先發(fā)送到你的 LiteLLM 代理再由代理根據(jù)路由策略或你的指令分發(fā)給具體的模型。5. 工作流優(yōu)化與成本控制實(shí)踐搭建好基礎(chǔ)框架后我們需要通過一系列策略來優(yōu)化體驗(yàn)、控制成本并確保工作流的健壯性。5.1 制定路由規(guī)則何時用本地何時用云端僅靠“最低成本”策略可能不夠智能。我們需要更精細(xì)的規(guī)則??梢孕薷穆酚蛇壿嬂缭趓outer.py的chat_with_router函數(shù)中加入規(guī)則判斷def should_use_cloud_model(messages): 啟發(fā)式規(guī)則判斷是否應(yīng)該使用云端模型。 user_input messages[-1][content] if messages else # 規(guī)則1問題長度超過一定閾值可能涉及復(fù)雜描述 if len(user_input) 500: return True # 規(guī)則2包含特定關(guān)鍵詞如“代碼”、“算法”、“解釋”、“翻譯長文本” keywords [代碼, 實(shí)現(xiàn), 算法, bug, 錯誤, 解釋一下, 翻譯以下] if any(keyword in user_input for keyword in keywords): return True # 規(guī)則3用戶明確指定了模型 # 這個可以在調(diào)用前判斷不放在這里 return False async def chat_with_router_enhanced(messages, modelNone, **kwargs): # 如果用戶未指定模型則根據(jù)規(guī)則自動選擇 if model is None: if should_use_cloud_model(messages): model deepseek-v4-flash print(f[Router] 根據(jù)規(guī)則復(fù)雜問題路由至: {model}) else: model kimi-local print(f[Router] 根據(jù)規(guī)則簡單問題路由至: {model}) # 后續(xù)調(diào)用邏輯不變... return await router.acompletion(modelmodel, messagesmessages, **kwargs)5.2 實(shí)現(xiàn)對話緩存與歷史管理對于重復(fù)性問題緩存可以避免重復(fù)調(diào)用模型特別是昂貴的云端 API??梢允褂煤唵蔚膄unctools.lru_cache或外部緩存如redis。from functools import lru_cache import hashlib import json lru_cache(maxsize100) def get_cached_response(model_name, messages_hash): # 這里模擬一個緩存字典實(shí)際應(yīng)用中應(yīng)使用Redis等 cache_store {} return cache_store.get((model_name, messages_hash)) def cache_response(model_name, messages_hash, response): cache_store[(model_name, messages_hash)] response def hash_messages(messages): 將消息列表轉(zhuǎn)換為唯一哈希鍵 messages_str json.dumps(messages, sort_keysTrue) return hashlib.md5(messages_str.encode()).hexdigest() async def chat_with_cache(messages, modelNone, **kwargs): messages_hash hash_messages(messages) chosen_model model if model else kimi-local # 簡化實(shí)際需結(jié)合路由規(guī)則 # 嘗試從緩存讀取 cached get_cached_response(chosen_model, messages_hash) if cached: print(f[Cache] 緩存命中 for {chosen_model}) return cached # 緩存未命中調(diào)用模型 response await chat_with_router_enhanced(messages, modelmodel, **kwargs) # 緩存結(jié)果注意對于流式響應(yīng)或創(chuàng)造性任務(wù)緩存需謹(jǐn)慎 cache_response(chosen_model, messages_hash, response) return response5.3 成本監(jiān)控與預(yù)警為了將月花費(fèi)控制在 10 美元左右必須監(jiān)控云端 API 的使用情況。LiteLLM 的Router自帶成本追蹤功能。# 在router.py中定期或在每次調(diào)用后打印成本報告 async def track_cost(): # 獲取router中所有模型的總花費(fèi) total_cost router.get_total_cost() print(f\n 成本報告 ) print(f預(yù)估總花費(fèi): ${total_cost:.4f}) for model in model_list: model_name model[model_name] cost router.get_model_cost(model_name) # 假設(shè)有這個方法或類似屬性 if cost 0: print(f- {model_name}: ${cost:.4f}) # 可以在這里添加邏輯如果總花費(fèi)超過閾值如$9發(fā)送郵件或釘釘告警 if total_cost 9.0: print(警告本月預(yù)估花費(fèi)已接近$10預(yù)算) print(\n) # 在合適的時機(jī)調(diào)用例如每處理100個請求后6. 常見問題排查與性能調(diào)優(yōu)在實(shí)際運(yùn)行中你可能會遇到以下問題。這里提供排查思路和解決方案。6.1 本地模型服務(wù)啟動失敗或響應(yīng)慢現(xiàn)象ollama run命令報錯或調(diào)用本地 API 超時??赡茉?1模型文件損壞或下載不完整。檢查運(yùn)行ollama ps查看服務(wù)狀態(tài)。嘗試ollama rm kimi-k3:7b刪除后重新pull??赡茉?2內(nèi)存不足。檢查使用free -h或htop命令查看可用內(nèi)存。7B 模型通常需要 8-16GB 內(nèi)存。解決關(guān)閉不必要的程序?yàn)?Ollama 設(shè)置 CPU/內(nèi)存限制ollama run kimi-k3:7b --num-ctx 2048減少上下文長度以節(jié)省內(nèi)存考慮使用量化版本模型如q4_K_M??赡茉?3端口沖突。檢查ollama serve默認(rèn)使用11434端口。使用netstat -tulnp | grep 11434查看是否被占用。解決停止占用端口的進(jìn)程或修改 Ollama 服務(wù)端口。6.2 LiteLLM 代理無法連接到模型現(xiàn)象LiteLLM 返回錯誤提示無法連接到api_base或認(rèn)證失敗??赡茉?1Ollama 服務(wù)未運(yùn)行或地址錯誤。檢查在瀏覽器或終端訪問http://localhost:11434看是否有響應(yīng)。解決確保ollama serve在后臺運(yùn)行且config.yaml中的api_base正確??赡茉?2云端 API Key 無效或未設(shè)置。檢查確認(rèn)DEEPSEEK_API_KEY環(huán)境變量已設(shè)置且正確??梢酝ㄟ^echo $DEEPSEEK_API_KEY檢查。解決重新在 DeepSeek 平臺生成 API Key 并更新環(huán)境變量。可能原因 3網(wǎng)絡(luò)問題導(dǎo)致無法訪問云端 API。檢查使用curl -v https://api.deepseek.com/v1/chat/completions或你的 API 端點(diǎn)測試連通性。解決檢查本地網(wǎng)絡(luò)配置。6.3 路由策略未按預(yù)期工作現(xiàn)象復(fù)雜問題仍然被路由到本地模型導(dǎo)致回答質(zhì)量差。檢查在router.py中增加調(diào)試打印查看should_use_cloud_model函數(shù)的判斷邏輯和輸入內(nèi)容。解決調(diào)整啟發(fā)式規(guī)則的閾值和關(guān)鍵詞??紤]引入更復(fù)雜的判斷如調(diào)用一個極輕量級的分類模型來對問題意圖進(jìn)行分類。6.4 VSCode 擴(kuò)展無法使用自定義端點(diǎn)現(xiàn)象擴(kuò)展內(nèi) AI 功能無響應(yīng)或報錯。檢查 1確保 LiteLLM 代理正在運(yùn)行 (litellm --config ...)。檢查 2在終端用curl直接測試 LiteLLM 端點(diǎn)是否正常。curl http://localhost:4000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer fake-key \ -d {model: kimi-local, messages: [{role: user, content: test}]}檢查 3確認(rèn) VSCode 擴(kuò)展設(shè)置中的 “API Base URL” 和 “Model” 名稱與 LiteLLM 配置中的一致。有些擴(kuò)展要求模型名稱必須完全匹配config.yaml里定義的model_name。解決根據(jù)錯誤信息逐一排查。查看 LiteLLM 代理的運(yùn)行日志通常會有詳細(xì)的錯誤輸出。7. 生產(chǎn)環(huán)境部署與安全建議當(dāng)這個工作流從個人學(xué)習(xí)轉(zhuǎn)向團(tuán)隊(duì)或生產(chǎn)環(huán)境使用時需要考慮更多因素。服務(wù)化與高可用將 Ollama 服務(wù)、LiteLLM 代理以及你的路由腳本封裝為系統(tǒng)服務(wù)如使用systemd并配置開機(jī)自啟和進(jìn)程守護(hù)。對于云端模型可以考慮配置多個 API Key 或備用端點(diǎn)在Router中實(shí)現(xiàn)故障轉(zhuǎn)移。配置外置與加密將config.yaml中的敏感信息如 API Key移至環(huán)境變量或?qū)iT的密鑰管理服務(wù)。切勿將包含真實(shí) API Key 的配置文件提交到代碼倉庫。身份認(rèn)證與限流開放的 LiteLLM 代理端點(diǎn)存在被濫用的風(fēng)險。應(yīng)為代理層添加身份認(rèn)證如 JWT和基于 IP 或用戶的速率限制。LiteLLM 的--add_auth參數(shù)和litellm.proxy模塊可以輔助實(shí)現(xiàn)。日志與審計(jì)啟用 LiteLLM 的詳細(xì)日志--set_verboseTrue并將日志收集到 ELK 或 Loki 等系統(tǒng)中。記錄每一次調(diào)用的模型、Token 使用量、成本和用戶標(biāo)識便于審計(jì)和成本分?jǐn)?。模型版本管理本地模型文件需要定期更新。可以編寫腳本定期檢查 Ollama 官方庫或 Hugging Face 上是否有模型的新版本并在低峰期自動拉取更新。備災(zāi)方案當(dāng)云端 API 不可用或預(yù)算耗盡時工作流應(yīng)能自動降級將所有請求路由到本地模型保證基礎(chǔ)服務(wù)不中斷。通過以上步驟你便構(gòu)建了一個兼具經(jīng)濟(jì)性、靈活性和可用性的混合 AI 工作流。它并非要完全“吊打”頂級付費(fèi)模型而是在成本約束下通過合理的架構(gòu)設(shè)計(jì)和技術(shù)選型最大化利用現(xiàn)有資源為開發(fā)、學(xué)習(xí)和內(nèi)容創(chuàng)作提供一個高效且可持續(xù)的 AI 輔助環(huán)境。核心在于理解不同組件的職責(zé)并持續(xù)根據(jù)實(shí)際使用反饋優(yōu)化路由策略和緩存規(guī)則讓整個系統(tǒng)越用越“聰明”。