跳转至

jianmu.tree

适用对象:行为树使用者 / 自定义树结构开发者 / 高阶节点作者 是否必读:按需 相关模块:jianmu, jianmu.node

1. 模块职责

jianmu.tree 是 jianmu 对行为树原语的官方导入入口,用来承接常用的 py_trees 能力。

目标很明确:

  • 使用 jianmu 时不必把常用树原语继续从 py_trees 直接导入
  • 把框架核心原语和行为树原语拆成两个清晰层级

2. 适合查什么

  • 组合子:Sequence、Selector、Parallel、Composite
  • 状态与树:Status、BehaviourTree
  • 树层基类:Behaviour、Decorator
  • 常用树装饰器:Inverter、FailureIsSuccess、SuccessIsFailure
  • 常用树配置:ParallelPolicy、Duration

3. 使用建议

  • 新代码里,行为树原语统一从 jianmu.tree 导入
  • 如果你写的是 jianmu 业务节点,仍优先看 jianmu.node
  • jianmu.tree.Behaviour / Decorator 对应的是 py_trees 这一层;带状态注入语义的节点基类在 jianmu.node.base
  • jianmu 顶层对树原语的旧导出仅用于兼容迁移,不应继续作为主路径

这里要特别区分两层概念:

  • jianmu.tree.Behaviour / Decorator 是原始行为树层
  • jianmu.Node / jianmu.AsyncNode 是 jianmu 运行时语义层

如果你的节点需要 state_manager、运行时依赖注入或 jianmu 节点语义,优先使用后者。

4. 常见导入

from jianmu.tree import Sequence, Selector, Parallel, Status
from jianmu.tree import BehaviourTree, Inverter, ParallelPolicy

5. 最小示例

from jianmu.tree import BehaviourTree, Sequence, Status

root = Sequence(name="Root", memory=True, children=[node_a, node_b])
tree = BehaviourTree(root)

tree.tick()
assert root.status in {Status.SUCCESS, Status.FAILURE, Status.RUNNING}

6. 常见入口

  • 想拿组合子:看 Sequence、Selector、Parallel
  • 想看树执行状态:看 Status
  • 想做原始 py_trees 层扩展:看 Behaviour、Decorator
  • 想写带 jianmu 运行时语义的节点:回到 jianmu.Node / jianmu.AsyncNode

7. API 参考

tree

Behavior tree primitives re-exported by jianmu.

This module is the official py_trees-level import surface for jianmu. Use it for standard behavior-tree building blocks without importing py_trees directly.