0Pricing
AI Agents · 课时

目标栈与回溯

将子目标压入栈中,完成后弹出,遇到死路时回溯——这是经典的人工智能规划。

目标栈与回溯 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

目标栈

经典人工智能规划使用目标栈:遇到子目标时 push,完成后 pop。智能体可以使用相同的数据结构:

goal_stack = []

def push(goal):
    goal_stack.append(goal)

def pop():
    return goal_stack.pop() if goal_stack else None

def current():
    return goal_stack[-1] if goal_stack else None

# --- demo ---
push('write the report')
push('collect the data')
print(f'Current goal: {current()}')
print(f'Popped: {pop()}')
print(f'Current goal after pop: {current()}')

Example: Refactoring Workflow

push('Refactor auth')
while current():
    g = current()
    if g == 'Refactor auth':
        if not done('add_oauth_dep'):
            push('Add OAuth dependency')
        elif not done('replace_login'):
            push('Replace login endpoint')
        else:
            pop()   # done
    elif g == 'Add OAuth dependency':
        # ...actually do the work...
        mark_done('add_oauth_dep')
        pop()

回溯

当目标失败时:

  1. 将其标记为失败
  2. 返回父节点
  3. 尝试不同的方法(不同的子目标)

Backtracking Example

def attempt(goal):
    for approach in [oauth, saml, custom_token]:
        try:
            return run_with(goal, approach)
        except FailedException:
            continue
    raise NoApproachWorked(goal)

跟踪尝试过的方法

避免重试同一个失败的方法。请针对每个目标跟踪已经尝试过的方法:

{
    'goal_id': 'refactor-auth',
    'tried': ['oauth', 'saml'],
    'remaining_options': ['custom_token']
}

让 LLM 选择目标

使用 LLM 决定接下来要 push 什么:

next_goal = llm.invoke(f'Current goal: {current()}. Done so far: {done_list}. What sub-goal next?').content
push(next_goal)

前置条件与效果

借鉴 STRIPS 规划:每个动作都有前置条件(必须为真的内容)和效果(将变为真的内容):

action = {
    'name': 'replace_login',
    'preconditions': ['oauth_dep_installed'],
    'effects': ['login_endpoint_replaced']
}

规划与行动循环

两阶段方法:

  1. 规划 — 符号规划器构建目标栈
  2. 行动 — 智能体执行栈顶任务,更新世界状态,并在需要时重新规划

符号方法与 LLM 的混合

对于前置条件明确的任务(文件操作、部署),请使用符号规划器。对于模糊的部分,请使用 LLM。将两者结合可以提高稳健性。

死胡同

有时智能体会到达一种无论采取什么动作都没有帮助的状态。请识别死胡同并进一步回溯:

if no_progress_in_n_steps(5):
    pop_to_parent()
    try_different_approach()

限制回溯深度

不受限制的回溯可能导致无限循环。请限制深度和总迭代次数:

MAX_BACKTRACKS = 10
if backtrack_count >= MAX_BACKTRACKS:
    escalate_to_human()

向用户展示回溯过程

当智能体进行回溯时,请告诉用户:“OAuth 没有奏效,正在尝试 SAML。”这样可以维持信任,也让用户能够及早介入。

回溯触发条件

智能体应在什么时候从子目标进行回溯?

回顾

目标栈记录智能体“我现在在哪里”。push 子目标,pop 已完成的目标,在遇到死胡同时回溯。将符号规划与 LLM 判断结合起来。

常见问题解答

「目标栈与回溯」课时是免费的吗?

是的 — 「目标栈与回溯」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「目标栈与回溯」这节课中我会学到什么?

将子目标压入栈中,完成后弹出,遇到死路时回溯——这是经典的人工智能规划。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「目标栈与回溯」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 层次化任务分解
  2. 目标栈与回溯
  3. 世界模型与前瞻
  4. 反思与自我批评循环
← 返回 AI Agents