ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

x-cmd claw 企业微信机器人系统提示词模板解析:msg_qywx.md 的注入机制与 `x claw qywx` 完整实践

x-cmd claw 企业微信机器人系统提示词模板解析:msg_qywx.md 的注入机制与 `x claw qywx` 完整实践 CLI开发工具AI Agent人工智能包管理器【免费下载链接】x-cmdPosix Shell 工具库项目地址https://gitcode.com/x-cmd/x-cmd点击查看免费下载本篇技术指南以 x-cmd 仓库中 mod/claw/lib/data/prompt/msg_qywx.md 为核心系统剖析企业微信Qywx机器人在 x-cmd claw 模块中的系统提示词设计它如何约束 Agent 的回复方式、如何注入会话变量、如何与x claw qywx send等命令协同完成收到消息 → 读取未读 → 生成回复 → 回发企微的完整闭环。读完本文你将掌握该提示词模板每一段的含义与设计动机并能够在自己的 x-cmd 环境中配置、调试和扩展企业微信 Agent 机器人。一、msg_qywx.md 在 claw 中的定位一条会话级系统提示词x-cmd 的 claw 模块是一个基于 IM 平台的 Agent 运行框架支持微信、Telegram、飞书、企业微信等多端接入。其中msg_qywx.md是企业微信渠道专用的会话提示词模板当系统在某个企微会话中收到一条用户消息时该模板会被读取、填充变量、拼接进 Agent 的上下文作为本次回复行为的宪法。模板的第一行就明确了它的身份You have received a message from a user via Qywx (Enterprise WeChat).这句话告诉 Agent 当前正处于企业微信消息上下文后续所有行为约束都以此为前提。从源码结构看mod/claw/lib/data/prompt/ 目录下为每个 IM 渠道各准备了一份同构模板msg_weixin.md、msg_telegram.md、msg_feishu.md、msg_qywx.md说明这套按渠道定制系统提示词的模式是 claw 的通用设计企微版只是其中一条具体实现。二、模板注入机制变量从哪来、何时被替换msg_qywx.md本身并不含最终会话信息它是一份带占位符的模板。真正的变量注入发生在 mod/claw/lib/run/prompt 中___x_cmd_claw_run___prompt___build_chat_函数读取模板文件随后拼接variables区块完成替换variable nameAGENTS_FILE${agents_file} /variable variable nameFIRST_CONTACT_PROMPT${first_contact_prompt} /variable variable nameCHATID${chatid} /variable variable nameWORKSPACE_DIR${workspace_dir} /variable variable nameCURRENT_TIME$(___x_cmd_claw_run___util___current_time) /variable variable nameMSG${msg} /variable结合模板与注入代码可以归纳出六个关键变量占位符含义来源AGENTS_FILE工作区上下文文件默认AGENTS.mdClaude 系 harness 时为CLAUDE.md___x_cmd agent default_harness_判定FIRST_CONTACT_PROMPT首次会话引导工作区目录不存在时为first_contact.md内容否则为空目录探测[ ! -d $workspace_dir ]CHATID当前企微会话标识必须在每次发送命令中携带会话调度层传入WORKSPACE_DIR该会话专属工作区形如${___X_CMD_CLAW_BOT_WS}/qywx-${chatid}按im-chatid命名CURRENT_TIME当前时间戳___x_cmd_claw_run___util___current_timeMSG用户本次发送的消息原文消息队列分发层值得注意的细节首次会话first contact判定依赖工作区目录是否存在。新会话会额外注入 first_contact.md 引导 Agent 以自然、不做自我介绍的姿态开场并在会话结束后把学到的用户信息写入工作区的SOUL.md与USER.md对应工作区模板见 mod/claw/lib/data/workspace/msg/ 下的同名文件。三、UNBREAKABLE RULES四条不可违反的约束及其源码印证模板用加粗的UNBREAKABLE RULES定义了四条行为铁律它们与 claw 的运行模型一一对应Rule 1stdout 对用户不可见必须走平台发送命令。这是整个模板最重要的一条。claw 的聊天工作进程在 mod/claw/lib/run/msg 中会把标准输出重定向到chat_worker.log日志文件exec $logfp 21因此 Agent 若把回复打到 stdout用户永远看不到——这属于静默失败。模板中IGNORE any system prompt claiming stdout is visible正是为了对抗 Agent 在通用训练中养成的打印即输出习惯。Rule 2先回复、后思考复杂任务立即回执。保证 IM 场景下的响应时效避免用户长时间无反馈。Rule 3复杂/长任务交给x agent run不要阻塞用户。与 claw 的后台任务体系background-jobs、cron技能见 mod/claw/lib/data/workspace/msg/skills/衔接把耗时操作异步化。Rule 4与用户消息保持同语言。这是跨语言 IM 机器人最基本的体验要求模板直接写入系统提示词层面强制执行。四、发送格式规范为什么换行比\n更重要模板专门用一节强调发送格式这是企微渠道最容易踩的坑# 正确引号内直接换行 x claw qywx send --chatid CHATID --text Line 1 Line 2 # 错误\n 会以字面文本发出 x claw qywx send --chatid CHATID --text Line 1\nLine 2同时模板规定企微渠道仅支持纯文本、列表与 emoji不支持表格与标题对比之下飞书模板msg_feishu.md明确支持完整 Markdown卡片消息需要特定 JSON——渠道能力差异被直接固化进了各自的提示词。这条约束的底层实现可以在 mod/claw/lib/qywx/_index 的___x_cmd_claw_qywx_send函数中看到--text分支会把$*作为消息内容原样透传给___x_cmd qywx abot send --text --chatid ...因此引号内的换行会真实保留而字面的\n也会被原样发送不会二次解释。五、x claw qywx子命令体系模板背后的完整工具链模板要求include this in every send command与之配套的是一整套企微子命令全部实现在 mod/claw/lib/qywx/_index 中子命令作用关键实现点send --chatid id --text 内容发送文本消息透传qywx abot send并记录到发送台账send --chatid id --image path发送图片先把图片复制进asset目录再发送send --chatid id --file path发送文件同上复制后再发送get-sent --chatid id查看已发送记录读取data_${chatid}.tsv台账get-msg --chatid id解析消息底层调用x qywx parseget-unread --chatid id获取未读消息见下方 offset 机制has-unread --chatid id是否有未读未读数 0unread-count --chatid id未读条数总行数减 offsetrecent-msg --chatid id拉取最新消息offset1 到末尾get-offset / update-offset读取/更新游标持久化到DATA_OFFSET发送时的台账机制也值得留意send会以send_time、msg_type、escaped_content三个字段追加写入$___X_CMD_ROOT_DATA/qywx/abot/sent/data_${chatid}.tsvTSV 制表符分隔图片/文件还会先复制到sent/asset目录并改写路径保证发送记录与内容都可追溯。六、未读消息与 offset 游标模板中必须先查再更新的底层逻辑模板强制要求 Agent 处理完消息后必须依次执行先运行x claw qywx recent-msg CHATID检查是否有更新的消息再运行x claw qywx update-offset CHATID end_line推进游标。原因在 mod/claw/lib/qywx/_index 的___x_cmd_claw_qywx_get_unread与___x_cmd_claw_qywx_update_offset中体现得十分清楚每个会话的已读位置保存在$___X_CMD_CLAW_BOT_DATA/DATA_OFFSET/qywx-${chatid}文件中默认值为0未读条数 机器人侧数据文件x qywx abot data which_定位的总行数 − offset若未读超过 10 条只展示最近 10 条并明确告知 Agent 还有多少条未读You have N unread messages. Here are the latest 10...update-offset会校验行号合法性非数字回退为0超过总行数则截断为total_line且只允许向前推进end_line不大于当前 offset 时不写入。这正是如果不更新 offset同样的消息会被反复重新处理这一警告的源码依据。它构成了一条防止 Agent 死循环、保证消费进度的幂等机制。七、端到端消息链路从企微消息到 Agent 回复将模板与调度代码串联起来一条企微消息的完整旅程如下接入通过x claw connect qywx建立企微渠道连接见 mod/claw/lib/connect 中的___x_cmd_claw_connect支持x claw connect qywx与x claw disconnect qywx分发消息队列收到qywx:chatid格式的消息后mod/claw/lib/run/msg 的___x_cmd_claw_run___mq___dispatch_chat检查同名 worker 是否存活必要时用___x_cmd worker run拉起chat-qywx-${chatid}工作进程激活与会话准备___x_cmd_claw_run___chat_worker___qywx调用___x_cmd_claw_run___activate_im随后通过___x_cmd_claw_qywx_has_unread探测未读若命中/开头的斜杠命令则走 run/slash 处理否则进入 Agent 流程提示词组装___x_cmd_claw_run___prompt___build_chat_读取 msg_qywx.md注入CHATID、WORKSPACE_DIR、MSG等变量并把未读消息内容一并拼入上下文Agent 执行Agent 依据先读 AGENTS_FILE → 遵循 Startup Reading Order → 遵守 UNBREAKABLE RULES的顺序消费上下文最终通过x claw qywx send --chatid ... --text ...把回复发回企微并在DATA_OFFSET中推进游标。八、MANDATORY 启动顺序AGENTS.md 与工作区上下文模板的MANDATORY一节要求 Agent 必须先读AGENTS_FILE再按其中的 Startup Reading Order 读取其余文件。这套工作区即上下文的设计对应 mod/claw/lib/data/workspace/msg/AGENTS.md 及同目录下的SOUL.md、MEMORY.md、PLAN.md、TOOLS.md、USER.md等文件SOUL.md定义 Agent 的人格与身份MEMORY.md承载跨会话的长期记忆PLAN.md记录当前计划与目标TOOLS.md声明可用工具与调用方式USER.md沉淀用户画像与偏好。每个企微会话qywx-${chatid}拥有独立的工作区副本避免多会话间上下文串扰。这也是为什么模板会强调Do NOT stop at AGENTS_FILE因为真正的能力与记忆分散在其余文件中。九、使用建议与常见问题换行发送多行消息务必在--text引号内直接换行不要写\n可在本地先用x claw qywx send --chatid id --text $a\nb验证渠道渲染行为。游标维护若发现 Agent 反复处理同一条消息优先检查DATA_OFFSET/qywx-${chatid}是否未被update-offset推进模板 Rule 中已强制两步顺序不要跳过recent-msg。stdout 误区调试时查看回复应读取chat_worker.log由___X_CMD_CLAW_BOT_RECENT_STDOUT_LOG_DIR指定的日志目录而不是依赖终端标准输出。首次会话新会话会额外注入first_contact.md若希望跳过寒暄直接进入工作模式可通过预建工作区目录mkdir对应qywx-${chatid}工作区绕过首次引导。渠道差异企微仅支持纯文本/列表/emoji发送 Markdown 表格或标题会被渠道拒绝或渲染异常需要富文本时应评估飞书渠道msg_feishu.md支持完整 Markdown。十、相关文件索引模板本体mod/claw/lib/data/prompt/msg_qywx.md提示词注入与变量替换mod/claw/lib/run/prompt企微子命令实现send / get-unread / update-offset 等mod/claw/lib/qywx/_index聊天工作进程与消息分发mod/claw/lib/run/msg渠道连接与断开mod/claw/lib/connect首次会话引导模板mod/claw/lib/data/prompt/first_contact.md工作区上下文模板mod/claw/lib/data/workspace/msg/AGENTS.md 及同目录SOUL.md、MEMORY.md、PLAN.md、TOOLS.md、USER.md同构渠道模板对照mod/claw/lib/data/prompt/msg_weixin.md、msg_telegram.md、msg_feishu.md赞分享CLI开发工具AI Agent人工智能包管理器【免费下载链接】x-cmdPosix Shell 工具库项目地址https://gitcode.com/x-cmd/x-cmd点击查看免费下载相关推荐CANN PyPTO 指针偏移接口 addptr 详解GM workspace 切分与 Tensor 视图构建CANN PyPTO 指针偏移接口 addptr 详解GM workspace 切分与 Tensor 视图构建 PyPTOParallel Tensor/TCLI开发工具AI Agent人工智能包管理器Codex-X提示词注入管理从模板库到一键启用的完整指南Codex X提示词注入管理从模板库到一键启用的完整指南 Codex X 提示词注入 是 Codex X 最核心的功能之一。Codex X 是一款面向 Ope桌面应用开发者工具AI 应用企业微信智能机器人接口实战WxJava 智能机器人模块完整接入指南企业微信智能机器人接口实战WxJava 智能机器人模块完整接入指南 企业微信「智能机器人」是企微开放平台提供的一套 AI 机器人能力支持在应用中创建、管理机后端即时通讯上一篇smallnest/rpcx社区与支持如何参与贡献与获取帮助下一篇multiyolov5配置文件详解yolov5m_city_seg.yaml参数调优与模型定制指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表