AutoGLM 中文文档 下载 App

AutoGLM Take_over——登录验证码和二次验证的人工接管机制

什么时候触发

模型在推理时识别到当前界面包含以下类型的元素,会主动返回 Take_over 动作:

Take_over 的含义是:"我这个 AI 搞不定这个,等人类来处理完我再继续"。

回调函数用法

def my_takeover(message: str) -> None:
    """人工接管回调——暂停 Agent 等人类介入"""
    print(f"🔐 模型请求人工接管:{message}")
    print("请手动完成上述操作,完成后按回车继续 Agent 执行...")
    input()

agent = PhoneAgent(
    model_config=model_config,
    takeover_callback=my_takeover,
)

运行时:

[Agent 正常执行中...]
🔐 模型请求人工接管:微信登录需要输入手机号验证码
请手动完成上述操作,完成后按回车继续 Agent 执行...

[你在手机上手动完成登录]
[回到终端按回车]

[Agent 继续执行剩余任务...]

和 confirmation_callback 的对比

方面confirmation_callbacktakeover_callback
触发者框架(每个动作前都检查)模型主动输出 Take_over 动作
检查点每一步仅模型判断需要时
典型场景"所有发送消息都要过审""登录验证码我搞不定"
人工介入后无需额外操作,返回 True 继续等人类在手机上操作完,按回车
回调签名message -> boolmessage -> None

message 参数示例

模型输出的 Take_over message 会包含具体场景描述,比如:

这个 message 可以用来给人工操作者提示该做什么。

超时自动恢复(进阶)

如果担心人工接管后忘记按回车,可以在回调里加超时:

import time

def takeover_with_timeout(message: str) -> None:
    print(f"🔐 {message}")
    print("300 秒内未操作将自动超时退出...")
    
    start = time.time()
    while time.time() - start < 300:
        if input().strip() == "":
            print("检测到回车,恢复 Agent")
            return
    print("超时,Agent 任务中止")
    raise Exception("Takeover timeout")

常见问题

Take_over 没触发但应该触发 → 模型可能没识别到是敏感页面,检查 System Prompt 里有没有明确告诉模型哪些场景需要 Take_over。

Take_over 触发了但回调没被调用 → 检查 PhoneAgent 构造函数是否正确传了 takeover_callback 参数。

相关阅读