面向互聯網2C業務的分布式類Manus Java框架

圖片

本文介紹了阿里巴巴推出的分布式類ManusAgent框架——ali-langengine-dflow,旨在解決現有Agent架構在互聯網2C業務場景中的局限性。文章從背景出發,分析了當前主流Agent架構(如Manus、字節TARS、AutoGLM)存在的問題,如云虛擬機架構的數據孤島問題、本地化Agent架構的響應速度與安全性不足等,進而提出了一種結合分布式服務端與異構C端的混合架構。

圖片

背景

在Manus成功實現營銷破圈引發行業關注的背景下,Agent類產品正逐漸成為市場競逐的技術焦點。當前主流技術方案呈現兩種典型架構:以Manus為代表的云虛擬機架構體系,以及字節TARS、AutoGLM等采用的客戶端架構體系,二者本質上均屬于單機Agent技術框架(這也是Python技術生態主導的AI領域常見的技術范式)。

然而深入分析發現,現有架構存在顯著局限性:云虛擬機架構受限于虛擬化隔離機制,難以通過用戶登錄態實現跨平臺數據貫通,無法有效打破信息孤島;而本地化Agent架構本質上屬于客戶端時代的技術思維,在應對互聯網業務場景時,其迭代響應速度、安全防護能力等關鍵指標已難以滿足現代業務需求。

我們需要的理想架構,是核心智能在云端,但是執行工具能觸達用戶,這需要分布式服務端和異構C端混合架構。

解決方案

???2.1?指導思想

  • 1.1?首先是AI框架本體

我們認為要實施足夠靈活的Agent:

  1. 以完備能力的代碼為載體而不是再次定義DSL,外加開源可輕松地復制修改非常精細的行為。

  2. 業務研發能力最強的平臺仍舊是Java生態,減少不必要的架構復雜度也傾向于Java庫而不是一個平臺。

  3. Agent需要很多的能力和底層大模型抽象的依賴,豐富的生態會讓其更加好用。

考慮到這些,我們整體基于Ali-LangEngine的框架來構建這個技術體系,因為底層比較干凈,維護常用的LLM,有大量的外部框架實現和附屬工具,易于提交代碼貢獻。

  • 1.2?分布式問題的解法

類Manus的Agent執行是一個耗時很久的長流程。為了避免服務端變更發布導致的大批量中斷,其最好具有分布式的可靠性,而且發生在端上的異步流程也要能被串聯起來,因此我們需要有流程引擎來支持agent的推進。

流程引擎的選取有一種是用傳統BPMN,但是這是新的DSL會帶來靈活性問題,更重要的是,行業的開源agent多數基于單機的代碼結構,充滿基于基于代碼函數文本的繼承、抽象。要把他們以BPMN DSL方式的復刻無法100%遵循參考方的代碼結構,基本需要重寫從而可能漏掉不少關鍵細節。


我們采用了基于Java Monad的DFlow分布式執行庫,在ali-langengine-dflow包中實現Manus Agent。這樣只需要用Java研發還算熟悉的map,?flatMap函數式編程的寫法,用一樣的面向對象的代碼結構重構開源方案。而且dflow本身是支持本地異步運行的,所以即使沒有分布式場景不想學習DFlow帶來的額外負擔,它也可以當一個傳統本地Agent框架去使用。

  • 1.3?工程&AI的分離

Agent研發既有大量的工程部分,也有具備AI特點的部分。我們認為工程的部分就應該沿用傳統的Java體系。尤其是最近提到的Agent研發中,新提到的上下文工程(Context Engineering)的部分(有確定性)。

而具有AI特點(不確定性)的部分,是最小化的AI四元組-(LLM config,PromptTemplate,InputFormatter,?OutputParser)的LLM原子化能力。我們內部基于這部分抽象,研發了Ali-langsmith平臺實現構建了Prompt級別的獨立開發,發布,在線調試回放,測評能力的完整體系。

以此為邊界構建的Java的Agent框架決定了確定性的代碼流程,prompt及其連帶元素的研發迭代則可以獨立調整,Manus體系中不同環節的prompt采用不同水準的大模型非常自然。

同時這套框架也不能耦合Ali-langsmith這樣的研發平臺。因此ali-langengine-dflow既可以獨自運行,也可以基于ali-langsmith完成prompt研發,去迭代業務特定的agent。

  • 1.4?調AI?的主體應該是誰?

我們的答案很簡單,最終的目標一定是要距離業務最近的人去調教AI。要么研發變得更懂業務,要么讓業務能自己上。最開始和系統和AI Trick更多一些的部分,可以由研發打下基礎的初始版本。業務調整了幾次之后針對性的改幾次基本上可以習得特點。

經過我們一年的實踐,Ali-langsmith可以讓PD和運營實現prompt迭代預覽到直接看的最終產品的效果。雖然它是散的,但仍然即使是agent場景,也可用。令人驚奇的是,PD輸入的prompt,對業務的理解明顯高過技術同學的,其產生的效果也是有巨大差異,而且他自己能快速的體驗迭代,這比中間加一個研發去翻譯,效率是無與倫比的。當然,對于復雜Agent場景,由于ContextEngineering的存在,研發仍需告知這方面的細節,調整和教導幾次。后續的精細化準確度優化,也更多需要技術進來。會是多方合作的場景。

至于訓練數據,模型優化這些深度算法向的東西,可以在業務證明大方向上價值之后,基于平臺系統的輔助下積累的線上數據和評估能力,半自動化地蒸餾優化,甚至引入專業算法團隊去提升。

  • 1.5工程框架本身如何抽象?

目前為止,認真優化的先進系統很少會使用復雜多層附加概念的框架。因為新的抽象會破壞精細的操作和優化,langchain最初的抽象在這個問題上被人詬病頗深,我們不選用Dify為代表的托管式研發平臺也出于此。

Ali-langengine-dflow框架除了AI四元組的原始抽象外,框架的組織也傾向于在平鋪直敘地在單Agent文件完成流程編排。除了可以通過繼承等方式重寫。Copy相關Agent的文件去自定義也是非常簡單而值得鼓勵的事情。“Exampleas框架”,復雜性放在工具類。是本框架的抽象設計哲學。

實現

以下是我們完整的技術體系架構圖,包含了本文討論外的內容(紅框部分是本文Release的重點)但是有助于理解上下文環境。


首先核心框架是在ali-langengine開源生態中的一部分。它們本身的實現不會依賴任何在線系統。哪怕dflow和ali-langsmith無可避免地有眾多分布式中間件依賴,也是基于擴展interface讓部署方實現。


ali-langsmith-starter是它的二方SpringStarter,實現了ali-langengine-langsmith-sdk中的必要服務依賴指向內部應用(Prompt四元組的定義服務和上報服務-相對弱依賴))。

dflow-starter實現了dflow的中間件依賴(基于MetaQ的消息,基于Redis的存儲,基于HSF的轉發)依賴。外部可以自行替換為其它消息中間件,Redis以及http轉發的組合。

Java業務應用。后者中的PluginAgent是本文主要針對的電商域插件Manus產品業務場景。

ali-langengine-dflow則是本次開源發布的包。它干凈地只依賴ali-langengine-core和dflow,后兩者“比較”干凈。(https://github.com/AIDC-AI/Agentic-ADK/)。

???3.1?dflow

DFlow的理想是進一步簡化異步流程編排,去中心化的庫設計,編排邏輯和節點業務代碼在一個地方,不破壞業務邏輯流暢性;思路是in language的?monad?庫,新構建了分布式流程范疇的類型,使得業務邏輯串聯流暢,無需切換工程范式。類似Flowable會自行完成本地的異步化,DFlow是分布式環境的異步化。

  • 3.1.1?工作原理

首先是用戶通過DFlow算子把各種DFlow節點創建和串聯起來,表達其業務邏輯。然后通過init創建流程。init的時候,會在本地全局內存中記錄流程節點step,這樣,在觸發實際任務之時,每個step都會通過消息adapter在任意一臺機器上執行一個流程節點。流程節點是DFlow節點在具體一個流程中的實例,其key為當前流轉鏈路剩下的DFlow節點名串聯在一起。

flatMap會動態創建節點,只有執行到的時候才會初始化內部節點。因此執行到這中間的流程如果發生了重新部署,需要整個系統環境中再有人觸發這個節點才能繼續。

???3.2?ali-langengine-dflow

<dependency>? ??<groupId>com.alibaba</groupId>? ??<artifactId>ali-langengine-dflow</artifactId>? ??<version>0.1.12</version></dependency>

該包基于DFlow實現了一些Agent。
他們的核心Runnable函數都可以被動態替換。

代碼詳解:

  • 3.2.1?DFlowConversationAgentExecutor

這是DFlowAgent框架的第一個Case。直接基于ali-langengine-semantickernel-core里的agentSKConversationAgentExecutor重寫的。

ali-langengine-semantickernel-core承載了兩個使命,一個是當年langchain抽象再沒有進行lcel改革之前并不是面向prompt研發的框架,因此以semantickernel為核心,當LangEngine復刻了LCEL理念的Runnable系列后,這個最重要的意義不再存在。二是基于可替換的四元組來構建agent。由于個人去年的主旋律仍然是直接給業務帶來實際性結果的Workflow型Agent(此類工作無需Agent級別框架,裸用ali-langengine-langsmith-sdk手工拼流程毫無問題)。沒有投入重新以此理念但是擺脫semantickernel的框架。


SKConversationAgentExecutor基于semantickernel的寫法中,所有的流程都是基于Flowable異步化的Monad。因此改造成dflow?Monad非常簡單。改造完之后,由于DFlow可以通過設置成本地運行的模式用,把它當做本地異步框架用也不是不行。這樣ali-langengine-dflow就徹底取代了ali-langengine-semantickernel-core在這個體系中的生態位。

然而,ConversationAgentExecutor是基于傳統ReAct的Prompt范式,在各大模型都開始內置特殊token支持FunctionCall的今天,它有些落伍了。也有不支持多工具并發的問題。

  • 3.2.2?DFlowToolCallAgent?&?DFlowPlanningFlow

這倆是復刻OpenManus的關鍵組件。核心邏輯與OpenManus一致。
整個ali-langengine-dflow的基礎架構,是基于OpenManus的復刻來的,DFlowBaseAgent,DFlowReActAgent,DFlowToolCallAgent是基于?python的復刻。

它又和OpenManus基于OpenAI模型有重大的不同。我們仍然是基于raw底層實現的toolcall。不同的是內置版本采用了Qwen2.5的原生格式已達到對齊OpenAI風格的效果。因此其準確度要超越ConversationAgentExecutor。沒有使用Message風格的底層。

若要換成其他模型,模版須調整成<|im_start|>function?包裹的能被RawWrapChatModelLLM解析成function call的樣子。實測qwen?raw模型也能理解這個格式,考慮默認換成這個。當然也可以自己實現的Runnable中,用原生Message風格的API來處理Toolcall的變量。

DFlowToolCallAgent也支持了多Tool的并發調用。同時支持普通的BaseTool和異步的DFlowTool。

DFlowPlanningFlow開發的時候正好趕上了ali-langengine-openmanus復刻,因此是基于Java代碼改的,對于PlanningTool這樣的快速Tool并沒有完全DFlow化。在業務實踐中,最終對于子Agent的狀態,原有的Finish狀態被我們拆成了FINISH和TERMINATE兩個狀態,這樣把內部agent的異常終止和正常終止分開,以決定外部Planning是繼續下一個計劃還是徹底終止。

  • 3.2.3?DFlowDeepCrawlerAgent

Manus中最重要的Tool是?Browser use Tool,要實現這個能力,RPA+Vision的技術路線會比較通用,對模型的要求也更高。在端上Plugin中用JS實現它是一條路線也有眾多的參考,我們也在研究但它不是服務端框架的一部分。另一條路是基于簡單概念的Dom爬蟲和url分析,使得模型能深度遍歷,這條路徑操作更短,對模型要求更低。



爬蟲工具可以是任何DFlow包裝的工具調用(既可以是我們用的發送給端的任務,也可以是簡單爬蟲)。其中三個AI函數都是可以在ali-langsmith自定義定制。這里要注意的是爬蟲拿到的html內容會很多。我們端上工具除了做了基于jina-reader的markdown化,還對所有url做了映射以便縮短content。

  • 3.2.4?AgentTool

它可以把一個DFlowAgent封裝成一個DFlowTool。這樣可以嵌套使用。特別地,它復制copy了DFlow上下文,避免了與相同代碼的上級BaseAgent代碼里的上下文污染。

  • 3.2.5?JedisBasedPullingJobDFlowTool

它基于異構client(如前端)拉任務,完成后上報的架構構建。把這種模式封裝成一種異步的DFlowTool。

???3.3?ali-langsmith

這部分注重一個清晰的極小邊界來做變更單元。在另外的平臺迭代,由于本次不在開源范圍。不做贅述。要注意的,就是這個LLM config,PromptTemplate,InputFormatter,?OutputParser四元組定義了一個LangEngine中的LCEL單元——?Runnable對象。能接受變量參數,返回確定性結構化的一次LLMOutput即可。(可以很簡單的自己實現,用其他方式變更)

效果

?? 4.1?使用示例

簡單使用示例代碼:

這些代碼示例了最簡單的不用DFlow分布式能力的用法

DFlow.globalInitForTest();?//DFlow本地化,無需引入DFlow-starter即可本地用。? ??DashScopeLLM?llm?=?new?DashScopeLLM();? ? llm.setModel("qwen-plus-latest");? ? llm.setToken("sk-x");?? ??ConversationBufferMemory?memory?=?new?ConversationBufferMemory();?? ??DFlowToolCallAgent?agent?=?new?DFlowToolCallAgent("manus",memory, getBaseTools(),llm);? ??//SystemPrompt和NextStepPrompt是OpenManus中的擴展方式,對于基于Ali-langsmith的應用,這個直接在prompt中,這個變量就無用了? ? agent.setSystemPrompt("你是 一個搭配助手,幫用戶搭配穿衣");? ? agent.setNextStepPrompt("你可以用GoogleSearch 搜索信息. 用dapei工具給用戶出搭配建議,用chuan工具真正的穿上\n"? ? ? ??+?"\n"? ? ? ??+?"GoogleSearch: Perform web information retrieval\n"? ? ? ??+?"\n"? ? ? ??+?"dapai: 出搭配方案\n?chuan:真的穿上"? ? ? ??+?"\n"? ? ? ??+?"Terminate: End the current interaction when the task is complete or when you need additional information from the user. Use this tool to signal that you've finished addressing the user's request or need clarification before proceeding further.\n"? ? ? ??+?"\n"? ? ? ??+?"Based on user needs, proactively select the most appropriate tool or combination of tools. For complex tasks, you can break down the problem and use different tools step by step to solve it. After using each tool, clearly explain the execution results and suggest the next steps.\n"? ? ? ??+?"\n"? ? ? ??+?"Always maintain a helpful, informative tone throughout the interaction. If you encounter any limitations or need more details, clearly communicate this to the user before terminating.\n"? ? );? ? agent.setFunctionChoose(agent.genQwen25Function(llm));?? ??DFlowPlanningFlow?planningFlow?=?new?DFlowPlanningFlow("manus", agent);? ? planningFlow.setFinalizePlanFunction(planningFlow.genQwen25FinalizeFunction(llm));? ? planningFlow.setInitPlanFunction(planningFlow.genQwen25InitFunction(llm));? ??// 運行時樣例代碼? ??DFlow.directRun(DFlow.InitParam.of("春天我應該怎么穿?"),(y)->DFlow.just(y)? ? ? ? .flatMap(x -> {? ? ? ? ? ??System.out.println("===="?+?x);? ? ? ? ? ??return?planningFlow.execute(x.getParam());? ? ? ? }).id("a1")? ? ? ? .flatMap(x -> {? ? ? ? ? ??System.out.println("===="?+?x);? ? ? ? ? ??return?planningFlow.execute("休閑一點,在室內");? ? ? ? }).id("a2")? ? ? ? .map(x -> {? ? ? ? ? ??System.out.println("===="?+?x);? ? ? ? ? ??return?x;? ? ? ? }).id("a3"));? ??//等? ??System.in.read();


正經基于Ali-LangSmith替換函數后的線上用法

bean初始化函數,準備好memorytoolAI函數

@PostConstructprivate?void?init()? ? memory =?new?JedisMemory(jedisPool);? ? crawlerJobDFlowTool =?new?BrowserCrawlerTool(jedisPool, runnableService, memory,?this::log);?? ? humanaskJobDFlowTool =?new?JedisBasedPullingJobDFlowTool(jedisPool);? ? humanaskJobDFlowTool.setName("askhuman_func_b2ac");? ??StructuredSchema?schema?=?new?StructuredSchema();? ? ArrayList<StructuredParameter> params =?new?ArrayList<>();? ??StructuredParameter?p?=?new?StructuredParameter();? ? p.setName("choices");? ? p.setDescription("給用戶的選項,以json列表形式['option1','option2']給出,不要超過3個");? ? params.add(p);? ? schema.setParameters(params);? ? humanaskJobDFlowTool.setStructuredSchema(schema);? ? humanaskJobDFlowTool.setHumanName("詢問用戶的工具,實在無法確定時,可以詢問用戶從選項中選擇");? ? humanaskJobDFlowTool.setDescription("詢問用戶的工具,實在無法確定時,可以詢問用戶從選項中選擇");?? ? agent =?new?DFlowToolCallAgent("main", memory, Arrays.asList(crawlerJobDFlowTool, humanaskJobDFlowTool));? ? agent.setLogger(this::log);?? ? agent.setFunctionChoose(() -> runnableService.getRunnable("ai_content",?"ManusAgent"));?? ? dFlowPlanningFlow =?new?DFlowPlanningFlow("main", agent, memory);? ? dFlowPlanningFlow.setLogger(this::log);?? ? dFlowPlanningFlow.setFinalizePlanFunction(? ? ? ? () -> runnableService.getRunnable("ai_content",?"ManusPlanningFinal"));? ? dFlowPlanningFlow.setInitPlanFunction(? ? ? ? () -> runnableService.getRunnable("ai_content",?"ManusPlanningInit"));}

定義AI函數的ali-langsmith后臺

運行時函數

public?String?chat(Long?userId,?String?query) throws?Exception?{? ??String?sessionId =?getSessionId(userId);? ??String?traceId = sessionId +?"-"?+?System.currentTimeMillis();? ??clear(sessionId);?? ??String?realinput = query;? ??InitParam?param =?new?InitParam(realinput, sessionId);?? ??DFlow.directRun(DFlow.InitParam.of(JSON.toJSONString(param), traceId), (y) -> {? ? ? ??InitParam?p =?JSON.parseObject(y.getParam(),?InitParam.class);? ? ? ??return?dFlowPlanningFlow.execute(p.getQuery(), p.getSessionId()).map((contextStack, x) -> {? ? ? ? ? ??String?sid = contextStack.get(SESSIONID);? ? ? ? ? ? log.info("chat {} result:{}", sid, contextStack.getId());? ? ? ? ? ??log(contextStack.get(SESSIONID),?"Terminate");? ? ? ? ? ??return?"";? ? ? ? }).id("setbackmaindata2");? ? });?? ??return?traceId;}

具體BrowserTool的實現,用AgentToolDFlowDeepCrawlerAgent封裝成一個Tool,內核的爬蟲工具基于JedisBasedPullingJobDFlow,由前端拉取任務完成后,回報結果得到。

public?class?BrowserCrawlerTool?extends?JedisBasedPullingJobDFlowTool?{? ??private?RunnableService runnableService;?? ??private?AgentTool agentTool;?? ??public?BrowserCrawlerTool(JedisPool jedisPool, RunnableService runnableService, BaseChatMemory memory,? ? ? ? BiConsumer<String,String> logger) {? ? ? ??super(jedisPool);? ? ? ??DFlowDeepCrawlerAgent?agent?=?new?DFlowDeepCrawlerAgent("crawler_func_a32a", memory);?? ? ? ? agent.setLogger(logger);?? ? ? ? agent.setSummaryFunction(() -> {? ? ? ? ? ??return?runnableService.getRunnable("ai_content",?"ManusDeepCrawlerSummary");? ? ? ? });? ? ? ? agent.setValidationFunction(() -> {? ? ? ? ? ??return?runnableService.getRunnable("ai_content",?"ManusHtmlValidation");? ? ? ? });? ? ? ? agent.setResearchFunction(() -> {? ? ? ? ? ??return?runnableService.getRunnable("ai_content",?"ManusHtmlResearch");? ? ? ? });?? ? ? ? agent.setDflowCrawler((ctx, url) -> {? ? ? ? ? ??return?super.dflowRun(ctx, url)? ? ? ? ? ? ? ? .map(x -> x.getOutput()).id("crawler_func_a32a_output");? ? ? ? });? ? ? ? agentTool =?new?AgentTool(agent);?? ? ? ??this.runnableService = runnableService;?? ? ? ??this.setName("crawler_func_a32a");? ? ? ??StructuredSchema?schema?=?new?StructuredSchema();? ? ? ? List<StructuredParameter> params =?new?ArrayList<>();? ? ? ??StructuredParameter?p?=?new?StructuredParameter();? ? ? ? p.setName("url");? ? ? ? p.setDescription("待爬取網頁的url");? ? ? ? params.add(p);? ? ? ? p =?new?StructuredParameter();? ? ? ? p.setName("prompt");? ? ? ? p.setDescription("爬取這個網頁要做的任務和目標");? ? ? ? params.add(p);? ? ? ? schema.setParameters(params);? ? ? ??this.setStructuredSchema(schema);? ? ? ??this.setHumanName("爬蟲工具,可以爬取網頁內容");? ? ? ??this.setDescription("爬蟲工具,可以爬取網頁內容");? ? }?? ??public?DFlow<ToolExecuteResult>?dflowRun(ContextStack ctx, String toolInput)?throws?? ? DFlowConstructionException {?? ? ? ??DFlowCtx?c?=?JSON.parseObject(ctx.get(DFlowBaseAgent.DFLOW_CTX), DFlowCtx.class);? ? ? ??String?topic?=?Optional.ofNullable(c.getInputs()).flatMap(? ? ? ? ? ? ? ? i -> Optional.ofNullable(i.get("input")).map(Object::toString))? ? ? ? ? ? .orElse("");? ? ? ??return?agentTool.dflowRun(ctx, toolInput);? ?? ? }?}

???4.2?以類ManusAgent為例串起來的完整架構

我們的Agent的載體是PC淘寶瀏覽器插件,理念是模擬專業的買手幫用戶真實的瀏覽網頁,收集信息,真實的用戶訪問使得沒有登陸屏蔽信息孤島問題,過程的可見使得用戶不必懷疑夾帶私貨有損可信性。

插件端從chat任務開始,然后輪詢llmPull獲取中間的返回結果。chat函數代碼事實上還有一個前置流控,需求分類和改寫,以確保只執行導購類任務。

與此同時有一個toolPull拉取當前的Tool任務,完成則使用ToolReport回報。然后流程邏輯在宿主Java應用內執行,碰到AI函數則基于ali-langengine-langsmith-sdk執行,其中prompt定義緩存弱依賴地去ali-langsmith部署應用去取。llm調用通過本地ali-langengine-llm的包去訪問dashscope或者idealab。

未來發展

?? 5.1?基礎能力的完善

DFlow本身原地發布變更問題的解法(老代碼會在最后一批發布消失使得中間任務無法執行完畢,需自行控制;發布后需有一個請求預熱),以及處理閉包的解法(不支持跨機器的閉包變量,自己確定沒問題的類需實現ValidClosure標記),至今仍有瑕疵。另外外部可用的starter并沒有好好提供。目前需自行實現interface。

?? 5.2?發揮靈活架構優勢

在端云協作方面,插件端可以轉發服務端很多DFlow的調用,一些標準的比如轉發到用戶側可訪問MCP服務,或是用戶的本地大模型調用。還有局部DFlow工作流的端云切換也是簡單而很有趣的方案(DFlow一部分節點里一個if else即可),并且能解決瀏覽隱私和成本問題。

?? 5.3?暢想未來

在AI工程架構設計中,一個核心命題始終存在:工程邊界究竟應如何劃定?是選擇以ali-langsmith的工程自由主義路徑——賦予系統最大限度的靈活性,還是采用OpenAI的模型產品覆蓋模式——僅通過模型擴展手腳接入能力即可完成一切?這一問題的答案,正在隨著AI工程范式的演進而不斷被重新定義。

過去一年間,我們見證了AI工程范式的螺旋式迭代:從Cot(Chain-of-Thought)到Reasoning模型內化,從Agent架構到Deep Research的模型即產品,每一次突破均遵循相似的路徑——工程創新先行:通過設計新穎的prompt或架構,率先實現功能驗證,再利用合成數據反哺模型訓練,最終將工程智慧沉淀為模型能力。這種“工程驅動-數據強化-模型內化”的閉環,構成了AI應用發展的核心邏輯。

現在,LLM的快思考特性決定了Agent應用最好控制好它需處理的信息空間:通過約束每次調用的上下文粒度,讓模型聚焦特定抽象層級的推理任務,可顯著提升輸出質量與穩定性。這一思想恰如人類認知的分層分治機制。而隨著模型能力的迭代,這些工程邏輯可能再次模型內化。

然而,工程框架的先驗價值始終不可替代。即使模型逐步覆蓋了原本由工程實現的邏輯,工程實現的可靠性仍是更加重要:在生產環境中,高度可控的代碼流程比完全依賴真人AGI直接執行更具確定性和效率。最小化執行的發散性,始終是嚴肅應用產品追求的核心目標。

因此,在更多是確定性的需求世界中,更多的工程,必然會占據更為重要的Runtime世界。當然,AGI會再次學會這些工程。但是沒有足夠的在這一抽象層的代碼和數據,它從何學起呢?

團隊介紹

本文作者虬枝,來自淘天集團-網站技術團隊。本團隊專注于PC端電商平臺的技術創新與產品升級。我們負責淘寶網PC主站核心功能研發以及PC上其它創新形態的發展。為消費者打造更流暢、更智能的大屏購物體驗,助力有特色的企業用戶高效采購。團隊積極探索AI驅動的PC端創新產品形態,讓技術服務于用戶體驗與商業價值的提升。

¤?拓展閱讀?¤

3DXR技術?|?終端技術?|?音視頻技術

服務端技術?|?技術質量?|?數據算法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92848.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java-82 深入淺出 MySQL 內部架構:服務層、存儲引擎與文件系統全覆蓋

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-30-新發布【1T 萬億】參數量大模型&#xff01;Kim…

開發避坑短篇(6):Vue+Element UI 深度選擇器實現表單元素精準對齊的技術實踐

需求 el-form 表單的el-input和el-select默認寬度度不一致&#xff0c;導致不對齊&#xff0c;如下圖。那么如何設置讓el-input和el-select的寬度度一致并對齊&#xff1f;<el-form class"page-form" :model"addForm" :rules"rules" :disable…

rust-參考與借用

參考與借用 在清單4-5中的元組代碼的問題在于&#xff0c;我們必須將String返回給調用函數&#xff0c;這樣我們才能在調用calculate_length之后繼續使用String&#xff0c;因為String已經被移動到了calculate_length中。相反&#xff0c;我們可以提供一個對String值的引用。引…

深入解析HDFS Federation:如何有效解決單NameNode瓶頸問題

HDFS Federation簡介與背景在Hadoop分布式文件系統&#xff08;HDFS&#xff09;的經典架構中&#xff0c;NameNode作為核心組件承擔著整個文件系統的元數據管理職責。這一設計雖然簡潔高效&#xff0c;但隨著數據規模的爆炸式增長&#xff0c;單NameNode架構逐漸暴露出難以克服…

為什么選擇EasyGBS?

作為集 算法倉、算力設備接入、視頻云平臺 于一體的綜合性智能安防監控平臺&#xff0c;EasyGBS有哪些優勢是您的必選理由呢&#xff1f;一、設備與協議的兼容性EasyGBS不挑設備品牌型號。只要支持GB28181、RTSP、ONVIF、RTMP標準協議里的任一種&#xff0c;就能將視頻接入。但…

【形態學變換】——圖像預處理(OpenCV)

目錄 1 核 2 腐蝕 3 膨脹 4 開運算 5 閉運算 6 禮帽運算 7 黑帽運算 8 形態學梯度 形態學變換是一種基于形狀的簡單變換&#xff0c;處理對象是二值化后的圖像。有兩個輸入&#xff1a;原圖像和核&#xff0c;一個輸出&#xff1a;形態學變換后的圖像。基本操作有以下四…

一次“非法指令”(SIGILL)問題的完整調試過程:CPU指令集兼容性探秘

一次"非法指令"問題的完整調試過程&#xff1a;CPU指令集兼容性探秘一、問題概述二、問題現象與初步分析1. 環境與現象2. 官方文檔的線索3. 重現問題4. 懷疑方向&#xff1a;CPU指令兼容性5. 關鍵發現&#xff1a;AVX512指令三、詳細調試過程1. 搭建調試環境 (KVM虛擬…

Node.js - 創建 Express 項目

創建 Express 項目 安裝 npm i -g express-generatorornpm i -g express-generator4# 注意&#xff1a;Windows有可能碰到提示&#xff1a;npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因為在此系統上禁止運行腳本。 # 如果碰到這個錯誤&#xff0c;需要…

高并發系統設計面試題

高并發系統設計面試題&#x1f525;&#x1f525;&#x1f525; 超高頻問題&#xff08;幾乎必問&#xff09;讓你設計一個秒殺系統&#xff0c;你會考慮哪些問題&#xff1f;如果你的業務量突然提升100倍QPS你會怎么做&#xff1f;庫存扣減如何避免超賣和少賣&#xff1f;訂單…

【通識】如何看電路圖

1. 電路圖 1.1 基礎概念 電路圖即電原理圖。 電路圖第一種是說明模擬電子電路工作原理&#xff0c;用圖形符號表示電阻器、電容器、開關、晶體管等實物&#xff0c;用線條把元器件和單元電路按工作原理的關系連接起來。 第二種則是說明數字電子電路工作原理的。用圖形符號表示…

SpringBoot實戰指南:從快速入門到生產級部署(2025最新版)

一、為什么SpringBoot依然是Java開發的首選&#xff1f; SpringBoot自2014年發布以來&#xff0c;已成為Java企業級開發的事實標準框架。根據2025年最新調研數據顯示&#xff0c;全球78%的Java微服務項目基于SpringBoot構建&#xff0c;其核心優勢在于&#xff1a; 約定優于配置…

新房裝修是中央空調還是壁掛空調好?

這個要看戶型和投資金額&#xff0c;大戶型空間適合裝中央空調&#xff0c;因為空間大有足夠的地方安裝&#xff0c;功率也可以根據面積大小進行配置&#xff0c;整體配置一個外機就行了&#xff0c;整體的裝修效果比較規整&#xff0c;就是多花點&#xff0c;使用成本也稍高點…

如何理解泊松分布

文章目錄一、引例——鯨魚研究二、泊松分布一、引例——鯨魚研究 有生態學家對生活在北冰洋水域的鯨魚進行了跟蹤研究&#xff0c;他們利用一臺水下無人機來探測鯨魚數量&#xff0c;這是近十天的數據&#xff1a; 第1天第2天第3天第4天第5天第6天第7天第8天第9天第10天10101…

python學習DAY22打卡

作業&#xff1a; 自行學習參考如何使用kaggle平臺&#xff0c;寫下使用注意點&#xff0c;并對下述比賽提交代碼 kaggle泰坦尼克號人員生還預測 import warnings warnings.filterwarnings("ignore") #忽略警告信息 # 數據處理清洗包 import pandas as pd import …

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中設置 RGP 表的技巧&#xff0c;以優化仿真精度和效率。挑戰在計算流體動力學 &#xff08;CFD&#xff09; 領域&#xff0c;RGP&#xff08;真實氣體屬性&#xff09;表對于準確模擬流體在不同條件下的行為至關重要。這些表格提供了詳細的熱力學屬性&a…

C語言————原碼 補碼 反碼 (日漸清晰版)

本文的內容通下面這篇文章有著緊密的聯系&#xff0c;讀者可以選擇性閱讀 C語言————二、八、十、十六進制的相互轉換-CSDN博客 目錄 基本概念 原碼 反碼 補碼 轉換 數據的存儲方式 基本存儲單位 數據的計算方式 補碼的模運算原理 移位操作符 左移操作符 右移操…

函數-變量的作用域和生命周期

變量的作用域 引入問題 我們在函數設計的過程中&#xff0c;經常要考慮對于參數的設計&#xff0c;換句話說&#xff0c;我們需要考慮函數需要幾個參數&#xff0c;需要什么類型的參數&#xff0c;但我們并沒有考慮函數是否需要提供參數&#xff0c;如果說函數可以訪問到已定義…

Ansible在配置管理中的應用

Ansible是一個開源的配置管理和應用程序部署工具&#xff0c;它使用YAML語言編寫的Playbook來描述配置和應用部署過程。通過SSH協議與目標機器通信&#xff0c;Ansible可以實現批量操作&#xff0c;極大地提升了工作效率。核心功能Ansible的核心功能包括&#xff1a;配置管理&a…

【學習路線】Go語言云原生開發之路:從簡潔語法到微服務架構

一、Go語言基礎入門&#xff08;1-2個月&#xff09; &#xff08;一&#xff09;環境搭建與工具鏈Go環境安裝 官方安裝&#xff1a;從golang.org下載安裝包版本管理&#xff1a;g、gvm等Go版本管理工具環境變量&#xff1a;GOROOT、GOPATH、GOPROXY配置Go Modules&#xff1a;…

軟件工廠:推動新質生產力的組織躍遷

引言&#xff1a;軟件工廠的建設&#xff0c;不在于工具多&#xff0c;而在于理解深&#xff1b;不在于上線快&#xff0c;而在于體系穩。不僅是“看得見的流水線”&#xff0c;更是“看不見的組織變革”。在新質生產力的時代命題下&#xff0c;軟件工廠正成為連接創新與效率、…