Skip to content
FunCoding

Search

Search docs, Skills and MCP

Monitor 流式观察

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

This page has not been translated into English yet. The original Chinese version is shown below.

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 工具对尾随 & 的处理不同,不应互相套用。