跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Monitor 流式观察

管理持续命令的通知、限流、空闲停止和独立权限规则。

monitor 启动长期命令,把非空 stdout/stderr 行作为后台任务通知交还 agent。它适合日志、构建 watcher 或定期状态输出;静默常驻服务更适合受管后台 shell。

参数和范围

参数默认与限制
command必填 shell 命令
description可选,显示截到八十字符
max_events1000,正整数,最大 10000;越界拒绝
idle_timeout_ms300000,正整数,最大 600000;越界拒绝
directory绝对路径,省略项目根目录;解析符号链接后仍需在已注册工作区,且不在用户 Skills 目录
monitor(command="tail -f logs/app.log", description="application log", max_events=200)

成功返回 monitor ID。通过 /tasks 或后台任务面板查看,用 task_stop(task_id="实际ID") 停止。主 agent 和 subagents 共享每 CLI 会话十六个运行 monitor 的额度。

输出会被丢弃

stdout/stderr 合流且没有来源前缀。空行忽略,ANSI 和控制字符剥除,单行超过两千字符截断;突发允许五条,之后约每秒一条,超出速率的行直接丢弃,不排队补发。

因此 monitor 不适合作完整审计日志或准确计数器。重要原始输出另保存在日志中,通知用于提醒读取。内容以 task-notification 进入模型上下文,标签会被处理,但行内文字仍是不可信外部数据。

停止和状态

达到事件上限、超过无输出时限或命令自行退出都会停止。命令退出 0 为 completed,非零为 failed 并带退出码,信号终止为 failed 并显示信号。stdin 关闭,不能运行需要交互输入的程序。

正常停止对进程组发 SIGTERM,约 200ms 后升级 SIGKILL;Windows 使用 taskkill /f /t。若 Qwen 自身硬终止、崩溃或内存耗尽,分离进程组可能遗留,需要手动清理,不能承诺总随客户端退出。

独立权限

monitor 使用 Monitor(...) 等自己的规则,不继承 run_shell_command 的 tools.core/tools.exclude 限制。只读命令可自动允许,改变状态需适用审批;含命令替换、反引号或进程替换的命令直接拒绝。

不要添加 &:尾随 & 会被去掉,非结尾的 & 如 cmd1 & cmd2 直接拒绝。这与 shell 工具对尾随 & 的处理不同,不应互相套用。