<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>行为树 on 大飞的博客</title>
    <link>https://www.dafei.me/tags/%E8%A1%8C%E4%B8%BA%E6%A0%91/</link>
    <description>Recent content in 行为树 on 大飞的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 14 Jun 2026 03:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.dafei.me/tags/%E8%A1%8C%E4%B8%BA%E6%A0%91/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>tbrain（四）：行为树探索与放弃</title>
      <link>https://www.dafei.me/posts/tbrain-04/</link>
      <pubDate>Sun, 14 Jun 2026 03:00:00 +0000</pubDate>
      <guid>https://www.dafei.me/posts/tbrain-04/</guid>
      <description>&lt;h2 id=&#34;从-dag-到行为树&#34;&gt;从 DAG 到行为树&lt;/h2&gt;
&lt;p&gt;tbrain 最初的任务调度是 DAG（有向无环图）：brain agent 把 job 拆成带依赖关系的任务列表，orchestrator 按依赖顺序执行。这套机制简单直接，但有一个缺陷——缺乏条件分支和自适应能力。任务成功失败的处理方式是固定的，无法根据执行结果走不同路径。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，引入了行为树（Behavior Tree）——游戏 AI 里常用的决策架构。实现了 sequence、selector、retry、condition、parallel 五种节点类型，支持顺序执行、失败回退、条件判断、重试等逻辑，并为此做了 SVG 流程图渲染。&lt;/p&gt;
&lt;h2 id=&#34;两个根本问题&#34;&gt;两个根本问题&lt;/h2&gt;
&lt;p&gt;但随后发现两个根本问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;让 LLM 建树难度很高。&lt;/strong&gt; LLM 建普通任务列表已经容易出错，建一棵结构正确、逻辑合理的行为树更难——节点类型选择、嵌套结构、条件语义，每一步都容易出偏差。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;渲染流程图难度也高。&lt;/strong&gt; 行为树是嵌套树形结构，和 DAG 的布局算法完全不同，需要手写递归布局算法才能正确渲染。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论&lt;/h2&gt;
&lt;p&gt;行为树的核心价值——条件分支、根据结果重新规划——其实可以用更简单的方式实现：brain agent 在任务末尾根据验收结果决定是否追加新任务。本质上是同样的能力，但对 LLM 的要求和系统复杂度都低得多。&lt;/p&gt;
&lt;p&gt;行为树分支因此未合并，回到了 DAG + brain agent 动态追加任务的路子。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;tbrain 源码在这里：&lt;a href=&#34;https://github.com/tongpengfei/tbrain&#34;&gt;tbrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最兼容 tbrain 的 Agent 运行时是 tclaw，感兴趣可以去 &lt;a href=&#34;https://github.com/tongpengfei/tclaw-releases&#34;&gt;tclaw-releases&lt;/a&gt; 体验。&lt;/p&gt;
&lt;/blockquote&gt;</description>
    </item>
  </channel>
</rss>
