qclaw通过四层结构将自然语言指令转为真实动作:交互层标准化消息,理解层用nlu识别意图并注入上下文,规划层按dag分解任务,执行层由隔离沙箱中的子agent安全落实各步骤。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要理解QClaw如何把一句“整理桌面PDF并归档到周报文件夹”变成真实动作,必须穿透它四层运行结构——指令进来后不直接执行,而是先被拆解、再被路由、最后在隔离沙箱里落地。
指令如何被听懂:理解层的意图识别与上下文注入
用户输入自然语言后,首先进入交互层,由微信协议适配模块完成MsgContext标准化处理,剥离聊天头像、时间戳、消息ID等冗余字段,只保留纯文本指令和会话上下文快照。
指令送入理解层,本地轻量NLU模型启动意图识别,提取任务类型(如“文件管理”)、目标对象(“桌面PDF”)、约束条件(“归档到周报文件夹”)三要素;若指令模糊,例如“那个文件”,系统会自动从记忆层SQLite-vec混合检索中匹配最近3次对话中出现过的文件名或路径。
这一步的关键在于上下文注入——不是孤立看单条消息,而是将当前指令与USER.md中定义的用户偏好、SOUL.md中设定的角色行为准则、以及本次会话前5轮对话摘要一并打包进TaskIntent对象。没有这步,AI就无法判断“周报文件夹”是指D:\Work\WeeklyReport还是腾讯文档里的同名在线文件夹。
任务怎么被拆开:规划层的任务分解与DAG编排
规划层收到TaskIntent后,启动任务分解引擎。对简单指令(如“打开计算器”)直接生成单步执行链;对复合指令(如“合并桌面3个pdf并保存到归档文件夹”),则按原子性、可逆性、依赖关系三项原则切分为:【扫描桌面目录→筛选出pdf格式文件→调用pdf合并技能→生成新文件→迁移至指定路径→返回操作结果】。
存在依赖关系的子任务会被构建成有向无环图(DAG),例如“迁移至指定路径”必须等“生成新文件”完成后才触发;而“扫描桌面目录”和“筛选pdf”可并行执行,提升响应速度。
每个子任务分配唯一task_id,并注入共享记忆区写入权限——这是后续子Agent跨任务读取中间结果的前提,比如pdf合并技能生成的临时文件路径,必须能被迁移技能准确读取。
谁来真正干活:主Agent与子Agent的协同分工
方法一:主Agent不碰文件系统
主Agent(orchestrator)只做三件事:理解指令、拆解任务、分派子任务。它不调用任何Skills,也不访问磁盘路径。所有实际操作均由注册在ClawHub中的专业子Agent完成,例如文件管理Agent负责移动/复制/删除,浏览器操作Agent负责网页抓取。
方法二:子Agent严格隔离运行
每个子Agent启动时加载专属上下文快照,不继承其他Agent的历史记录;执行中若需调用Skill(如pdf_merge.py),须先向执行层提交权限请求,经沙箱安全模块验证其声明的file_read、file_write权限与白名单一致后,才允许载入代码。
【所有敏感操作——包括文件写入、系统API调用、进程启动——均强制触发用户二次校验弹窗,未经点击确认绝不执行】
方法三:结果自动封装回传
子Agent完成任务后,将输出(文本、截图、临时文件路径)封装为标准JSON,写入以task_id命名的共享记忆区子目录;主Agent轮询该目录,待全部子任务JSON就位后,启动结果聚合与自然语言重构,生成最终回复。
动作如何安全落地:沙箱执行与权限双控机制
第一步:检查Skill是否启用
当指令触发某项Skill调用时,执行层首先查询本地权限白名单数据库,确认该Skill(如pdf_merge)已在设置→权限管理中开启;未启用则拒绝调度,返回“权限不足,请在设置→权限管理中开启对应功能”提示。
第二步:启动专用沙箱进程
若已启用,则fork一个独立沙箱进程,载入Skill代码及其依赖库;沙箱默认禁用网络访问、限制磁盘路径仅可读写用户指定目录(如桌面、文档、下载)、屏蔽对进程列表与注册表的读写能力。
第三步:结果清洗后输出
沙箱内执行完成后,输出内容经安全过滤器清洗——剔除shell元字符(如$()、`)、非法路径(如../../../etc/passwd)、潜在恶意字符串(如rm -rf /);清洗后的结果才写入共享记忆区,供主Agent读取。











