[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-soimy--openclaw-channel-dingtalk":3,"tool-soimy--openclaw-channel-dingtalk":64},[4,16,27,35,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":15},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,14],"Agent","插件","ready",{"id":17,"name":18,"github_repo":19,"description_zh":20,"stars":21,"difficulty_score":22,"last_commit_at":23,"category_tags":24,"status":15},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,2,"2026-04-10T01:20:03",[14,13,25,26],"图像","开发框架",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":22,"last_commit_at":33,"category_tags":34,"status":15},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[14,26],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":22,"last_commit_at":41,"category_tags":42,"status":15},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[25,43,44,14,13,45,46,26,47],"数据工具","视频","其他","语言模型","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":15},7525,"codex","openai\u002Fcodex","Codex 是 OpenAI 推出的一款轻量级编程智能体，专为在终端环境中高效运行而设计。它允许开发者直接在命令行界面与 AI 交互，完成代码生成、调试、重构及项目维护等任务，无需频繁切换至浏览器或集成开发环境，从而显著提升了编码流程的连贯性与专注度。\n\n这款工具主要解决了传统 AI 辅助编程中上下文割裂的问题。通过将智能体本地化运行，Codex 能够更紧密地结合当前工作目录的文件结构，提供更具针对性的代码建议，同时支持以自然语言指令驱动复杂的开发操作，让“对话即编码”成为现实。\n\nCodex 非常适合习惯使用命令行的软件工程师、全栈开发者以及技术研究人员。对于追求极致效率、偏好键盘操作胜过图形界面的极客用户而言，它更是理想的结对编程伙伴。\n\n其独特亮点在于灵活的部署方式：既可作为全局命令行工具通过 npm 或 Homebrew 一键安装，也能无缝对接现有的 ChatGPT 订阅计划（如 Plus 或 Pro），直接复用账户权益。此外，它还提供了从纯文本终端到桌面应用的多形态体验，并支持基于 API 密钥的深度定制，充分满足不同场景下的开发需求。",75220,"2026-04-14T14:40:34",[46,13,14],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":22,"last_commit_at":62,"category_tags":63,"status":15},51,"gstack","garrytan\u002Fgstack","gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置，旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战，gstack 提供了一套标准化解决方案，帮助开发者实现堪比二十人团队的高效产出。\n\n这套配置特别适合希望提升交付效率的创始人、技术负责人，以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具，涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令（如 `\u002Freview` 进行代码审查、`\u002Fqa` 执行测试、`\u002Fplan-ceo-review` 规划功能），即可自动化处理从需求分析到部署上线的全链路任务。\n\n所有操作基于 Markdown 和斜杠命令，无需复杂配置，完全免费且遵循 MIT 协议。gstack 不仅是一套工具集，更是一种现代化的软件工厂实践，让单人开发者也能拥有严谨的工程流程。",74909,"2026-04-17T23:08:54",[13,14],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":78,"owner_location":79,"owner_email":80,"owner_twitter":78,"owner_website":81,"owner_url":82,"languages":83,"stars":100,"forks":101,"last_commit_at":102,"license":103,"difficulty_score":22,"env_os":104,"env_gpu":104,"env_ram":104,"env_deps":105,"category_tags":112,"github_topics":113,"view_count":22,"oss_zip_url":78,"oss_zip_packed_at":78,"status":15,"created_at":117,"updated_at":118,"faqs":119,"releases":155},8880,"soimy\u002Fopenclaw-channel-dingtalk","openclaw-channel-dingtalk","Dingtalk channel plugin for OpenClaw","openclaw-channel-dingtalk 是专为 OpenClaw 框架打造的钉钉渠道插件，旨在让企业内部的 AI 智能体无缝接入钉钉生态。它主要解决了传统机器人开发中依赖公网 IP 和复杂 Webhook 配置的痛点，通过独特的 Stream 模式，仅需内网环境即可实现稳定通信，大幅降低了部署门槛和安全风险。\n\n这款工具非常适合希望将自研或开源大模型应用落地到企业内部工作流的开发者与技术团队。无论是构建自动化的客服助手、内部知识问答机器人，还是多 Agent 协作系统，它都能提供强力支持。其技术亮点在于全面支持私聊、群聊及@互动，能够流畅处理文本、图片、语音、视频及钉钉专属文档等多种消息格式。此外，它还具备流式 AI 卡片回复、实时中断生成以及灵活的“多助手路由”功能，让交互体验更加自然高效。配合钉钉官方提供的限时免费资源额度，开发者可以快速低成本地验证并部署企业级 AI 应用，轻松实现智能化办公升级。","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fdingclaw-banner.svg\" alt=\"DingClaw Banner\" width=\"1040\">\n\u003C\u002Fp>\n\n# DingTalk Channel for OpenClaw\n\n\u003Cp class=\"repo-badges\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\">\u003Cimg alt=\"OpenClaw\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenClaw-%3E%3D2026.3.24-0A7CFF\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@soimy\u002Fdingtalk\">\u003Cimg alt=\"npm version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F%40soimy%2Fdingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@soimy\u002Fdingtalk\">\u003Cimg alt=\"npm downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F%40soimy%2Fdingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fsoimy\u002Fopenclaw-channel-dingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FCITATION.cff\">\u003Cimg alt=\"Citation\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCitation-CITATION.cff-1277B5\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n针对 OpenClaw 的钉钉企业内部机器人 Channel 渠道插件，使用 Stream 模式，无需公网 IP。\n\n## 功能特性\n\n- Stream 模式，无需 Webhook 和公网入口\n- 支持私聊、群聊和 @机器人\n- 支持文本、图片、语音、视频、文件和钉钉文档\u002F文件卡片\n- 支持引用消息恢复和常见文本附件正文抽取\n- 支持 Markdown 回复与 AI 卡片流式回复\n- 支持多 Agent、多机器人绑定和实验性的 `@多助手路由`\n- 支持实时中止当前 AI generation。常用停止指令包括 `停止`、`stop`、`\u002Fstop`、`esc` 等\n- 接入 OpenClaw 消息处理与 outbound 能力\n\n> [!IMPORTANT]\n> 根据钉钉开放平台公告《[关于限时开放钉钉PaaS资源不限量额度以助力企业AI智能体集成的公告](https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fdevelopment\u002Fopen-ai-paas-report)》（更新于 `2026-03-11`），OpenClaw 调用钉钉 `API\u002FWebhook\u002FStream` 的免费“不限量”额度默认有效至 `2026-03-31`；如已通过官方申请通道获批，豁免权益最晚有效至 `2026-04-30`。部署前请前往“钉钉开发者后台 -> 资源管理”核对当前额度状态。\n\n## 文档入口\n\n- 线上文档站点：\u003Chttps:\u002F\u002Fdingtalk-channel.nanoo.app\u002F>\n- 用户文档入口：[docs\u002Fuser\u002Findex.md](docs\u002Fuser\u002Findex.md)\n- 参与贡献入口：[docs\u002Fcontributor\u002Findex.md](docs\u002Fcontributor\u002Findex.md)\n- 发布记录：[docs\u002Freleases\u002Findex.md](docs\u002Freleases\u002Findex.md)\n- 英文入口：[docs\u002Fen\u002Findex.md](docs\u002Fen\u002Findex.md)\n\n## 引用与署名\n\n- GitHub \u002F 机器可读引用元数据：[CITATION.cff](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FCITATION.cff)\n- 维护者对复用、引用与 AI 协作场景的署名请求：[docs\u002Fcontributor\u002Fcitation-and-attribution.md](docs\u002Fcontributor\u002Fcitation-and-attribution.md)\n\n## 安装\n\n> [!IMPORTANT]\n> 最小兼容版本为 `OpenClaw 2026.3.24`。安装前请先升级到最新版 OpenClaw。\n\n```bash\nopenclaw plugins install @soimy\u002Fdingtalk\n```\n\n### 本地开发或联调可使用源码链接安装\n\n如需本地开发、调试或联调，可使用源码链接安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk.git\ncd openclaw-channel-dingtalk\nnpm install # 或 pnpm install\nopenclaw plugins install -l .\n```\n\n安装后建议显式配置 `plugins.allow`：\n\n```json5\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"allow\": [\"dingtalk\"]\n  }\n}\n```\n\n详细说明：\n\n- [安装指南](docs\u002Fuser\u002Fgetting-started\u002Finstall.md)\n\n## 更新\n\nClawHub 安装来源：\n\n```bash\nopenclaw plugins update dingtalk\n```\n\n本地源码 \u002F 链接安装来源：\n\n```bash\ngit pull\nopenclaw gateway restart\n```\n\n详细说明：\n\n- [更新指南](docs\u002Fuser\u002Fgetting-started\u002Fupdate.md)\n\n## 配置\n\n推荐优先使用交互式配置：\n\n```bash\nopenclaw onboard\n```\n\n或：\n\n```bash\nopenclaw configure --section channels\n```\n\n最小手动配置示例：\n\n```json5\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"allow\": [\"dingtalk\"]\n  },\n  \"channels\": {\n    \"dingtalk\": {\n      \"enabled\": true,\n      \"clientId\": \"dingxxxxxx\",\n      \"clientSecret\": \"your-app-secret\",\n      \"dmPolicy\": \"open\",\n      \"groupPolicy\": \"open\",\n      \"messageType\": \"markdown\"\n    }\n  }\n}\n```\n\n详细说明：\n\n- [配置指南](docs\u002Fuser\u002Fgetting-started\u002Fconfigure.md)\n- [钉钉权限与凭证](docs\u002Fuser\u002Fgetting-started\u002Fpermissions.md)\n- [配置项参考](docs\u002Fuser\u002Freference\u002Fconfiguration.md)\n\n## 重要功能文档\n\n- [消息类型支持](docs\u002Fuser\u002Ffeatures\u002Fmessage-types.md)\n- [回复模式](docs\u002Fuser\u002Ffeatures\u002Freply-modes.md)\n- [AI 卡片](docs\u002Fuser\u002Ffeatures\u002Fai-card.md)\n- [钉钉文档 API](docs\u002Fuser\u002Ffeatures\u002Fdingtalk-docs-api.md)\n- [反馈学习](docs\u002Fuser\u002Ffeatures\u002Ffeedback-learning.md)\n- [多 Agent 与多机器人绑定](docs\u002Fuser\u002Ffeatures\u002Fmulti-agent-bindings.md)\n- [@多助手路由](docs\u002Fuser\u002Ffeatures\u002Fat-agent-routing.md)\n- [安全策略](docs\u002Fuser\u002Freference\u002Fsecurity-policies.md)\n- [API 消耗说明](docs\u002Fuser\u002Freference\u002Fapi-usage-and-cost.md)\n- [故障排查](docs\u002Fuser\u002Ftroubleshooting\u002Findex.md)\n\n## 开发简述\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk.git\ncd openclaw-channel-dingtalk\nnpm install\nnpm run type-check\nnpm run lint\npnpm test\n```\n\n更多开发与维护说明：\n\n- [本地开发](docs\u002Fcontributor\u002Fdevelopment.md)\n- [测试与验证](docs\u002Fcontributor\u002Ftesting.md)\n- [架构说明（中文详版）](docs\u002Fcontributor\u002Farchitecture.zh-CN.md)\n- [NPM 发布](docs\u002Fcontributor\u002Fnpm-publish.md)\n\n## 许可\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FLICENSE)\n","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fdingclaw-banner.svg\" alt=\"DingClaw Banner\" width=\"1040\">\n\u003C\u002Fp>\n\n# OpenClaw 的钉钉 Channel\n\n\u003Cp class=\"repo-badges\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\">\u003Cimg alt=\"OpenClaw\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenClaw-%3E%3D2026.3.24-0A7CFF\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@soimy\u002Fdingtalk\">\u003Cimg alt=\"npm version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F%40soimy%2Fdingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@soimy\u002Fdingtalk\">\u003Cimg alt=\"npm downloads\" src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F%40soimy%2Fdingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fsoimy\u002Fopenclaw-channel-dingtalk\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FCITATION.cff\">\u003Cimg alt=\"Citation\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCitation-CITATION.cff-1277B5\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n针对 OpenClaw 的钉钉企业内部机器人 Channel 渠道插件，使用 Stream 模式，无需公网 IP。\n\n## 功能特性\n\n- Stream 模式，无需 Webhook 和公网入口\n- 支持私聊、群聊和 @机器人\n- 支持文本、图片、语音、视频、文件和钉钉文档\u002F文件卡片\n- 支持引用消息恢复和常见文本附件正文抽取\n- 支持 Markdown 回复与 AI 卡片流式回复\n- 支持多 Agent、多机器人绑定和实验性的 `@多助手路由`\n- 支持实时中止当前 AI generation。常用停止指令包括 `停止`、`stop`、`\u002Fstop`、`esc` 等\n- 接入 OpenClaw 消息处理与 outbound 能力\n\n> [!IMPORTANT]\n> 根据钉钉开放平台公告《[关于限时开放钉钉PaaS资源不限量额度以助力企业AI智能体集成的公告](https:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fdevelopment\u002Fopen-ai-paas-report)》（更新于 `2026-03-11`），OpenClaw 调用钉钉 `API\u002FWebhook\u002FStream` 的免费“不限量”额度默认有效至 `2026-03-31`；如已通过官方申请通道获批，豁免权益最晚有效至 `2026-04-30`。部署前请前往“钉钉开发者后台 -> 资源管理”核对当前额度状态。\n\n## 文档入口\n\n- 线上文档站点：\u003Chttps:\u002F\u002Fdingtalk-channel.nanoo.app\u002F>\n- 用户文档入口：[docs\u002Fuser\u002Findex.md](docs\u002Fuser\u002Findex.md)\n- 参与贡献入口：[docs\u002Fcontributor\u002Findex.md](docs\u002Fcontributor\u002Findex.md)\n- 发布记录：[docs\u002Freleases\u002Findex.md](docs\u002Freleases\u002Findex.md)\n- 英文入口：[docs\u002Fen\u002Findex.md](docs\u002Fen\u002Findex.md)\n\n## 引用与署名\n\n- GitHub \u002F 机器可读引用元数据：[CITATION.cff](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FCITATION.cff)\n- 维护者对复用、引用与 AI 协作场景的署名请求：[docs\u002Fcontributor\u002Fcitation-and-attribution.md](docs\u002Fcontributor\u002Fcitation-and-attribution.md)\n\n## 安装\n\n> [!IMPORTANT]\n> 最小兼容版本为 `OpenClaw 2026.3.24`。安装前请先升级到最新版 OpenClaw。\n\n```bash\nopenclaw plugins install @soimy\u002Fdingtalk\n```\n\n### 本地开发或联调可使用源码链接安装\n\n如需本地开发、调试或联调，可使用源码链接安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk.git\ncd openclaw-channel-dingtalk\nnpm install # 或 pnpm install\nopenclaw plugins install -l .\n```\n\n安装后建议显式配置 `plugins.allow`：\n\n```json5\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"allow\": [\"dingtalk\"]\n  }\n}\n```\n\n详细说明：\n\n- [安装指南](docs\u002Fuser\u002Fgetting-started\u002Finstall.md)\n\n## 更新\n\nClawHub 安装来源：\n\n```bash\nopenclaw plugins update dingtalk\n```\n\n本地源码 \u002F 链接安装来源：\n\n```bash\ngit pull\nopenclaw gateway restart\n```\n\n详细说明：\n\n- [更新指南](docs\u002Fuser\u002Fgetting-started\u002Fupdate.md)\n\n## 配置\n\n推荐优先使用交互式配置：\n\n```bash\nopenclaw onboard\n```\n\n或：\n\n```bash\nopenclaw configure --section channels\n```\n\n最小手动配置示例：\n\n```json5\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"allow\": [\"dingtalk\"]\n  },\n  \"channels\": {\n    \"dingtalk\": {\n      \"enabled\": true,\n      \"clientId\": \"dingxxxxxx\",\n      \"clientSecret\": \"your-app-secret\",\n      \"dmPolicy\": \"open\",\n      \"groupPolicy\": \"open\",\n      \"messageType\": \"markdown\"\n    }\n  }\n}\n```\n\n详细说明：\n\n- [配置指南](docs\u002Fuser\u002Fgetting-started\u002Fconfigure.md)\n- [钉钉权限与凭证](docs\u002Fuser\u002Fgetting-started\u002Fpermissions.md)\n- [配置项参考](docs\u002Fuser\u002Freference\u002Fconfiguration.md)\n\n## 重要功能文档\n\n- [消息类型支持](docs\u002Fuser\u002Ffeatures\u002Fmessage-types.md)\n- [回复模式](docs\u002Fuser\u002Ffeatures\u002Freply-modes.md)\n- [AI 卡片](docs\u002Fuser\u002Ffeatures\u002Fai-card.md)\n- [钉钉文档 API](docs\u002Fuser\u002Ffeatures\u002Fdingtalk-docs-api.md)\n- [反馈学习](docs\u002Fuser\u002Ffeatures\u002Ffeedback-learning.md)\n- [多 Agent 与多机器人绑定](docs\u002Fuser\u002Ffeatures\u002Fmulti-agent-bindings.md)\n- [@多助手路由](docs\u002Fuser\u002Ffeatures\u002Fat-agent-routing.md)\n- [安全策略](docs\u002Fuser\u002Freference\u002Fsecurity-policies.md)\n- [API 消耗说明](docs\u002Fuser\u002Freference\u002Fapi-usage-and-cost.md)\n- [故障排查](docs\u002Fuser\u002Ftroubleshooting\u002Findex.md)\n\n## 开发简述\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk.git\ncd openclaw-channel-dingtalk\nnpm install\nnpm run type-check\nnpm run lint\npnpm test\n```\n\n更多开发与维护说明：\n\n- [本地开发](docs\u002Fcontributor\u002Fdevelopment.md)\n- [测试与验证](docs\u002Fcontributor\u002Ftesting.md)\n- [架构说明（中文详版）](docs\u002Fcontributor\u002Farchitecture.zh-CN.md)\n- [NPM 发布](docs\u002Fcontributor\u002Fnpm-publish.md)\n\n## 许可\n\n[MIT](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FLICENSE)","# openclaw-channel-dingtalk 快速上手指南\n\n本指南帮助开发者快速将钉钉企业内部机器人接入 OpenClaw，实现 Stream 模式下的 AI 对话能力，无需公网 IP 和 Webhook。\n\n## 环境准备\n\n在开始之前，请确保满足以下前置条件：\n\n- **OpenClaw 版本**：必须 >= `2026.3.24`。请先升级您的 OpenClaw 至最新版。\n- **Node.js 环境**：已安装 Node.js (推荐 LTS 版本) 及包管理器 (`npm` 或 `pnpm`)。\n- **钉钉应用凭证**：\n  - 已在 [钉钉开发者后台](https:\u002F\u002Fopen-dev.dingtalk.com\u002F) 创建企业内部应用。\n  - 获取应用的 `AppKey` (clientId) 和 `AppSecret` (clientSecret)。\n  - 确认应用具备相应的机器人权限及 API 调用额度（注意免费额度有效期至 2026-03-31）。\n\n## 安装步骤\n\n### 方式一：通过 ClawHub 安装（推荐）\n\n直接使用命令行安装官方发布的插件包：\n\n```bash\nopenclaw plugins install @soimy\u002Fdingtalk\n```\n\n### 方式二：源码安装（适用于开发调试）\n\n如需本地修改代码或进行联调，可克隆源码进行安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk.git\ncd openclaw-channel-dingtalk\nnpm install # 或 pnpm install\nopenclaw plugins install -l .\n```\n\n### 启用插件\n\n安装完成后，建议在配置中显式允许该插件。编辑配置文件或在交互式配置中设置：\n\n```json5\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"allow\": [\"dingtalk\"]\n  }\n}\n```\n\n## 基本使用\n\n### 1. 配置钉钉凭证\n\n推荐使用交互式命令进行配置，按提示填入钉钉应用的 `clientId` 和 `clientSecret`：\n\n```bash\nopenclaw onboard\n```\n\n或者手动编辑配置文件，最小配置示例如下：\n\n```json5\n{\n  \"channels\": {\n    \"dingtalk\": {\n      \"enabled\": true,\n      \"clientId\": \"dingxxxxxx\", \n      \"clientSecret\": \"your-app-secret\",\n      \"dmPolicy\": \"open\",       \u002F\u002F 私聊策略：open(开放) \u002F close(关闭)\n      \"groupPolicy\": \"open\",    \u002F\u002F 群聊策略：open(开放) \u002F close(关闭)\n      \"messageType\": \"markdown\" \u002F\u002F 回复格式：markdown \u002F text\n    }\n  }\n}\n```\n\n> **注意**：`clientId` 对应钉钉后台的 AppKey，`clientSecret` 对应 AppSecret。\n\n### 2. 重启服务\n\n配置生效后，重启 OpenClaw 网关以加载新通道：\n\n```bash\nopenclaw gateway restart\n```\n\n### 3. 验证运行\n\n- 打开钉钉，进入已授权机器人的私聊窗口或群组。\n- 发送一条文本消息（如“你好”），或在群中 `@机器人` 发送消息。\n- 机器人将通过 Stream 模式实时返回 AI 生成的回复。\n- **停止生成**：在 AI 回复过程中，发送 `停止 `、`stop`、`\u002Fstop` 或按下 `esc`（取决于客户端支持）即可中断当前生成。\n\n至此，您已成功部署并运行钉钉 Channel 插件。更多高级功能（如多 Agent 路由、AI 卡片、文档解析等）请参考项目详细文档。","某中型电商企业的运维团队希望将内部 AI 助手接入钉钉，以便工程师在移动端随时查询系统日志和部署状态，但受限于公司网络安全策略，服务器无法暴露公网 IP。\n\n### 没有 openclaw-channel-dingtalk 时\n- **网络架构复杂**：由于缺乏公网入口，团队不得不搭建昂贵的反向代理或穿透服务来接收钉钉 Webhook，增加了维护成本和安全风险。\n- **交互体验割裂**：AI 回复仅支持纯文本，无法展示包含代码块、图表的结构化 Markdown 内容，更不支持直接预览钉钉文档卡片，信息获取效率低。\n- **资源浪费严重**：长篇幅的日志分析一旦开始就无法中途打断，若用户发现提问错误，只能等待生成结束，白白消耗 Token 和计算资源。\n- **多角色管理混乱**：不同业务线（如数据库、前端）需要不同的 AI 专家，但缺乏灵活的路由机制，导致所有请求都涌向同一个通用机器人，回答不够精准。\n\n### 使用 openclaw-channel-dingtalk 后\n- **零公网部署**：利用 Stream 模式直接建立长连接，无需配置 Webhook 或公网 IP，在内网环境中即可秒级完成钉钉机器人接入。\n- **富媒体智能交互**：完美支持 Markdown 格式化输出与 AI 卡片流式回复，工程师可直接在钉钉内查看高亮代码、监控图表及钉钉文档链接，阅读体验大幅提升。\n- **实时可控生成**：支持发送“停止”、\"\u002Fstop\"等指令实时中断 AI 生成，让工程师能立即纠正错误提问，显著节省算力成本。\n- **灵活的多助手路由**：通过 `@多助手路由` 功能，用户在群聊中 `@数据库助手` 或 `@前端专家` 即可自动切换后端 Agent，实现专业问题专业答。\n\nopenclaw-channel-dingtalk 通过免公网的 Stream 架构和丰富的企业级交互特性，让内网环境下的钉钉 AI 集成变得安全、高效且极致流畅。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsoimy_openclaw-channel-dingtalk_52963fa4.png","soimy","Shen Yiming","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsoimy_f498902c.jpg",null,"Shanghai, China","soimy@163.com","https:\u002F\u002Fsymis.me\u002F","https:\u002F\u002Fgithub.com\u002Fsoimy",[84,88,92,96],{"name":85,"color":86,"percentage":87},"TypeScript","#3178c6",97.3,{"name":89,"color":90,"percentage":91},"JavaScript","#f1e05a",1.9,{"name":93,"color":94,"percentage":95},"Shell","#89e051",0.5,{"name":97,"color":98,"percentage":99},"PowerShell","#012456",0.4,1634,221,"2026-04-17T10:50:23","MIT","未说明",{"notes":106,"python":104,"dependencies":107},"该工具是 OpenClaw 的钉钉渠道插件，基于 Node.js 环境运行（需安装 npm 或 pnpm）。最小兼容版本为 OpenClaw 2026.3.24，安装前需升级。采用 Stream 模式，无需公网 IP 和 Webhook。需注意钉钉开放平台的 API 免费额度有效期（默认至 2026-03-31，获批豁免可延至 2026-04-30），部署前需在钉钉开发者后台核对资源额度状态。",[108,109,110,111],"OpenClaw >= 2026.3.24","@soimy\u002Fdingtalk","Node.js (隐含，因使用 npm\u002Fpnpm)","git",[14],[114,115,116],"dingtalk","openclaw","openclaw-plugin","2026-03-27T02:49:30.150509","2026-04-18T14:33:58.247604",[120,125,130,135,140,145,150],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},39825,"为什么钉钉机器人收不到消息或需要连发多条才能收到？","在群聊场景中，钉钉机器人通常需要先被用户 @（提及）才能正常接收和响应消息。如果未 @ 机器人，消息可能会被忽略或丢失。请尝试在群聊中明确 @ 机器人名称后再发送指令。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F104",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},39826,"如何配置多个钉钉机器人分别绑定不同的 Agent？","需要在配置文件中设置三处：agents.list、channels.accounts 和 bindings。\n1. 在 agents.list 中定义多个 agent ID；\n2. 在 channels.accounts 下为每个机器人（bot_1, bot_2 等）配置 clientId, clientSecret, robotCode 和 agentId；\n3. 在 bindings 数组中将特定的 agentId 与对应的 channel 和 accountId 进行匹配绑定。\n示例配置结构如下：\n\"agents\": { \"list\": [{ \"id\": \"main\", \"default\": true }, { \"id\": \"agent_example\", ... }] }\n\"channels\": { \"dingtalk\": { \"accounts\": { \"bot_1\": {...}, \"bot_2\": {...} } } }\n\"bindings\": [{ \"agentId\": \"main\", \"match\": { \"channel\": \"dingtalk\", \"accountId\": \"bot_1\" } }, ...]","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F157",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},39827,"为什么定时任务（Cron Job）执行成功但钉钉收不到提醒消息？","钉钉机器人主动发送消息受限，通常需要用户先主动给机器人发一条消息（如“你好”）以建立对话会话，之后机器人才能主动推送提醒。此外，请检查 workspace 中的 MEMORY.md 文件是否有冲突的提示词，并在 agent 配置中添加时区设置（例如：\"userTimezone\": \"Asia\u002FShanghai\"）。如果使用的是流式输出模式可能不支持主动通知，可尝试切换回 HTTP 模式。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F144",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},39828,"安装插件时报错\"Cannot find module 'param-readers'\"怎么办？","这是因为旧版插件依赖了新版 OpenClaw 已移除的 SDK 模块。解决方案是升级 OpenClaw 到最新版本（>= 2026.3.24），或者使用兼容的新版 dingtalk-connector 插件。请勿混用旧版插件与新版本核心程序。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F435",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},39829,"如何在钉钉群中解决“访问受限”或需要将群 ID 加入白名单的问题？","当出现“访问受限”提示时，需要在配置文件的 dingtalk 部分设置群组白名单。将报错信息中提供的群聊 ID（如 ciduDFwQnBTFplueXyM+1mPnQ==）添加到 allowGroups 数组中，并确保 groupPolicy 设置为 \"allowlist\"。配置示例：\"groupPolicy\": \"allowlist\", \"allowGroups\": [\"你的群聊 ID\"]。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F305",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},39830,"钉钉机器人无法主动发送消息报错 400 如何解决？","钉钉接口限制机器人不能随意主动向未交互过的用户发送消息。解决方法是：用户需先在钉钉中主动给机器人发送任意消息（如“你好”），建立会话连接后，机器人即可正常回复或通过定时任务主动推送消息。如果是群通知需求，建议配置钉钉群机器人的 Webhook 地址来实现主动推送。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F63",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},39831,"定时任务偶尔成功偶尔失败，日志显示运行成功但无消息，如何排查？","首先确认 agent 配置中已正确设置时区（userTimezone），并检查 workspace 下的记忆文件（MEMORY.md）是否被其他插件污染。其次，创建一个短周期（如 1 分钟）的测试定时任务，通过 openclaw logs 命令查看系统底层日志，分析是否有隐藏的发送错误或限流提示。目前延时任务依赖服务器 API，设计上应无问题，多为配置或会话状态导致。","https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fissues\u002F45",[156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251],{"id":157,"version":158,"summary_zh":159,"released_at":160},315730,"v3.5.3","# v3.5.3 发布说明\n\n这一周期的重点主要集中在四块：**AI Card 流式模式与时间线稳定性、DingTalk 宿主\u002F配置对齐、转发与引用消息修复，以及文档与发布链路整理**。\n\n**最新版本入口**：[`latest.md`](.\u002Flatest.md)\n\n## ✨ 功能与体验改进\n\n### 1. AI Card 流式模式与展示稳定性提升\n\n* **新增 `cardStreamingMode`，统一 AI Card 流式更新策略**\n  * [`PR #494`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F494)（by @soimy）为 AI Card 引入更明确的流式模式配置，补齐 reasoning\u002Fanswer 展示边界，并稳定卡片时间线顺序，减少晚到内容导致的展示抖动与错位。\n\n* **发布 DingTalk card streaming 配置元数据**\n  * 在 [`PR #499`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F499)（by @soimy）及相关后续修复中，补齐了 DingTalk 卡片流式相关字段的配置表面与 manifest 暴露，方便宿主侧正确识别和展示插件能力。\n\n### 2. 宿主可见性与配置表面对齐\n\n* **向宿主 WebUI 发布 DingTalk channel metadata**\n  * [`PR #497`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F497)（by @soimy）补齐 DingTalk channel metadata 的发布链路，使宿主 WebUI 能更完整地感知插件安装与配置表面。\n\n* **补充 DingTalk 上下文可见性配置**\n  * [`PR #499`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F499)（by @soimy）进一步暴露并对齐 DingTalk 上下文可见性相关配置，减少宿主配置、运行时行为与文档之间的不一致。\n\n### 3. 转发与引用消息体验补强\n\n* **支持提取转发 Markdown 消息正文**\n  * [`PR #491`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F491)（by @BrilliantWang）修复 forwarded markdown message 的内容提取链路，避免转发消息在下游处理时丢失正文语义。\n\n* **修复 `chatRecord` 引用预览摘要缺失**\n  * [`PR #507`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F507)（by @Zouxxyy）为 `repliedMsgType === 'chatRecord'` 增加 summary\u002Ftitle 提取逻辑，恢复聊天记录类引用消息的有效预览。\n\n## 🛠 修复与稳定性\n\n* **对齐 DingTalk 宿主配置与媒体语义**\n  * [`PR #499`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F499)（by @soimy）集中修复 host config、媒体处理语义、sub-agent 路由、quoted visibility 等多处与上游宿主行为不一致的问题，减少配置解释偏差和消息处理分叉。\n\n* **补强入站 follow-up：helper warning 与引用可见性**\n  * [`PR #503`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F503)（by @soimy）继续收口 `#499` 后续问题，覆盖 helper-missing warning 去重、quote visibility、plain inline reply text 规范化，以及相关测试补强。\n\n* **恢复附件原始文件名透传与跨回合持久化**\n  * [`PR #505`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F505) \u002F [`#506`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F506)（by @BrilliantWang）修复媒体保存时丢失原始文件名的问题，并将 `attachmentFileName` 写入消息上下文，避免转发\u002F引用附件时退化成 UUID 文件名。\n\n* **将连接状态与入站状态投影进 snapshot**\n  * [`PR #487`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F487)（by @ming1523）改善 DingTalk runtime status snapshot，使 `connected` \u002F `inbound` 等状态在宿主与调试观察中更可见、更一致。\n\n## 📚 文档与发布链路\n\n* **补充 README 中的安装与 API 配额说明**\n  * 一组连续的 README \u002F 安装文档更新补齐了安装前置条件、OpenClaw 使用要求、DingTalk API usage limit，以及 2026 年 4 月配额策略提醒，降低接入与排障成本。\n\n* **整理文档站部署链路并迁移至 Vercel Actions**\n  * [`PR #496`](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F496)（by @soimy）与相关 docs 修复调整了文档站部署方式，并补齐根路径部署兼容性与安装指引，改善文档站可访问性。\n\n* **收口本地开发与发布产物边界**\n  * 本次版本还统一补充了规划\u002F设计文档、仓库 Open Graph 资源，并将 `.claude\u002Fworktrees\u002F` 与 `output\u002F` 等本地产物纳入忽略规则，减少临时文件进入仓库或发布包的概率。\n\n## 🤝 鸣谢\n\n感谢本版本周期的所有贡献者：\n\n* @soimy\n* @BrilliantWang\n* @ming1523\n* @Zouxxyy\n\n---\n\n**发布页面**：\u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Freleases\u002Ftag\u002Fv3.5.3>\n\n**Full Changelog**: \u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.5.2...v3.5.3>\n","2026-04-08T09:09:00",{"id":162,"version":163,"summary_zh":164,"released_at":165},315731,"v3.5.2","# v3.5.2 发布说明\n\n本页作为 `v3.5.2` 的补充汇总发布说明，覆盖 **`v3.5.0` 之后直到 `v3.5.2`** 的重要变更。\n\n这一周期的重点主要集中在四块：**AI Card 模板与停止交互、Markdown\u002F卡片回复体验、安装发布链路完善，以及钉钉通道稳定性修复**。\n\n## ✨ 功能与体验改进\n\n### 1. AI Card 能力补齐\n\n* **内置 AI Card 模板，降低卡片模式接入成本**\n  * `PR #444`（by @zhumin）将原先依赖外部 `cardTemplateId\u002FcardTemplateKey` 的模式切换为内置模板，默认配置更简单，卡片模式开箱即可用。\n\n* **AI Card 停止按钮支持**\n  * `PR #444`（by @zhumin）为 AI Card 增加 stop button，用户可直接在卡片上中断进行中的生成；同时补齐群聊 owner-only 权限控制、停止态收尾和按钮隐藏逻辑。\n\n### 2. Markdown 回复更接近真实对话流\n\n* **支持增量分段发送答案**\n  * `PR #447`（by @soimy）让 Markdown 模式按答案尾部增量发送，减少整段等待，更贴近流式回复体验。\n\n* **自动上传本地 Markdown 图片**\n  * `PR #468`（by @ming1523）为本地图片资源补齐上传流程，避免 Markdown 图片在钉钉侧失效。\n\n* **修复 `@agent` 回复在卡片\u002FMarkdown 中的引用渲染**\n  * `PR #477`（by @Bin）统一使用 block quote 前缀，改善 `@agent` 响应在钉钉中的可读性。\n\n### 3. AI Card reasoning 展示更稳定\n\n* **统一 reasoning-on 与 reasoning-stream 的块级投递**\n  * `PR #457`（by @soimy）对齐两类 reasoning 输出通路，减少显示结果不一致的问题。\n\n* **补强 reasoning-on 的临时 transcript 回退**\n  * `PR #474`（by @soimy）在上游事件不完整时提供临时回退，尽量保住最终可见内容。\n\n* **信任显式 reasoning 信号并修复边界拼装**\n  * `PR #481`（by @soimy）与相关后续重构进一步修复 reasoning 块边界，降低思考区与答案区串扰的概率。\n\n## 🛠 修复与稳定性\n\n* **Slash 命令不再误走子 Agent 路由**\n  * `PR #478`（by @zhumin）修复 `\u002Fnew`、`\u002Fstop` 等命令在路由阶段被错误当作 `@sub-agent` 输入的问题。\n\n* **修复 sandbox 场景媒体发送参数对齐**\n  * `PR #466`（by @zhumin）对齐 SDK `loadWebMedia` 参数签名，恢复 sandbox 模式下媒体发送能力。\n\n* **新增插件自有 DingTalk debug 日志落盘**\n  * `PR #484`（by @soimy）支持按账号输出独立调试日志，便于排查流连接、消息投递与卡片更新问题。\n\n* **拆分监控脚本环境处理，规避 OpenClaw 3.31 安全扫描误报**\n  * `PR #479`（by @zhumin）整理监控脚本结构，降低上游安全扫描噪声。\n\n## 📦 安装与发布链路\n\n* **新增独立 ClawHub 自动发布工作流**\n  * 在 `ci(release): add independent clawhub publish workflow` 这次发布链路改造中，仓库新增独立的 `.github\u002Fworkflows\u002Fclawhub-publish.yml`，使 npm 与 ClawHub 两条发布流程可由同一 tag push 独立触发，降低单一渠道失败对另一渠道的影响。\n\n* **将 `openclaw` 标记为 optional peer dependency**\n  * `PR #485`（by @wuwen）降低插件安装时的 peer dependency 冲突噪声，更适配当前宿主加载模式。\n\n* **升级 `oxlint-tsgolint` 以修复插件安装问题**\n  * `PR #473`（by @Bin）修复部分环境下的 OpenClaw 插件安装失败。\n\n* **从 npm 包中排除开发脚本**\n  * 后续发布修正补齐 `.npmignore`，避免开发用监控脚本误进入发布产物。\n\n## 🤝 贡献者\n\n感谢本版本周期的贡献者：\n\n* @soimy\n* @ming1523\n* @zhumin\n* @Bin\n* @wuwen\n\n---\n\n**发布页面**：\u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Freleases\u002Ftag\u002Fv3.5.2>\n\n**Full Changelog**: \u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.5.0...v3.5.2>\n","2026-04-02T09:57:33",{"id":167,"version":168,"summary_zh":169,"released_at":170},315732,"v3.5.0","# v3.5.0 发布说明 🚀\n\n本次 `v3.5.0` 是一次重要的功能增强版本，重点聚焦在 **单聊多 Agent 路由、AI Card 体验统一、配置表面简化以及文档站重构**。\n\n我们新增了单聊场景下的 `@sub-agent` 路由支持，统一了 AI Card 的单时间线展示，大幅简化了配置项并清理了历史遗留字段，同时将文档站从 MkDocs 迁移至 VitePress。\n\n**全新文档站已上线**：\u003Chttps:\u002F\u002Fsoimy.github.io\u002Fopenclaw-channel-dingtalk\u002F>\n\n## ✨ 新功能与架构升级\n\n### 1. 单聊场景多 Agent 路由\n\n* **支持单聊 `@sub-agent` 路由**\n  * `PR #412`（by @Sample999）突破群聊限制，将 `@mention` 子 Agent 路由扩展至单聊（DM）场景，让多 Agent 协作覆盖全部对话类型。\n\n* **实时停止指令响应**\n  * `PR #427`（by @BrilliantWang）修复了用户发送「停止」\u002F「\u002Fstop」指令时需等待当前 generation 完成才生效的问题。现在停止指令可绕过会话锁，实现即时中断。\n\n### 2. AI Card 体验与消息上下文\n\n* **统一 AI Card 单时间线展示**\n  * `PR #428`（by @soimy）重构 AI Card 显示逻辑，将原先分散的 tool\u002Fverbose 输出合并为单一时间线，恢复 `\u002Freasoning stream` 和 `\u002Fverbose on` 下的用户可感知工作链展示。\n\n* **暴露消息上下文元数据**\n  * `PR #440`（by @ming1523）提取消息上下文元数据查询能力，为后续 `\u002Fsummary` 命令奠定基础。\n\n### 3. 配置表面简化\n\n* **精简 DingTalk 配置项**\n  * `PR #431`（by @soimy）清理历史配置包袱，统一 schema、文档和运行时行为。\n\n* **移除废弃配置字段**\n  * `PR #445`（by @zhumin-zizhu）删除三个零引用字段：`corpId`、`agentId`、`robotCode`（后者始终等于 `clientId`，直接使用 `clientId` 即可）。\n\n### 4. 文档站现代化\n\n* **VitePress 文档站重构**\n  * `PR #436`（by @soimy）将文档站从 MkDocs\u002FPython 技术栈迁移至 VitePress，保留原有内容结构的同时优化了用户\u002F贡献者\u002F发布文档的组织方式。\n\n## 🛠 修复与稳定性改进\n\n* **修复 Sandbox 模式下媒体文件访问**\n  * `PR #432`（by @BrilliantWang）移除 `inbound body` 中 `[media_path:]` 绝对路径注入，解决 sandbox 环境下文件\u002F音频\u002F视频无法访问的问题。\n\n* **修复引用文件\u002F音频\u002F视频消息下载**\n  * `PR #411`（by @BrilliantWang）修复 v3.4.0 引入的引用消息处理断裂点，恢复对 `file`\u002F`audio`\u002F`video` 类型引用消息的内容提取与附件文本注入。\n\n* **入站媒体下载超时与日志增强**\n  * `PR #443`（by @soimy）为 `downloadMedia()` 第二跳请求添加显式 timeout，防止企业内网\u002F代理环境下请求无限挂起。\n\n* **优化 inbound-handler 测试性能**\n  * `PR #439`（by @soimy）将 `inbound-handler.test.ts` 运行时间从 81.5s 优化至合理范围，修复测试配置缺失导致的回退延迟。\n\n* **强化文档站 CI 工作流**\n  * `PR #438`（by @soimy）显式配置 GitHub Pages setup，升级相关 actions 至较新版本。\n\n## 🤝 贡献者\n\n感谢本版本周期的贡献者：\n\n* @soimy\n* @BrilliantWang\n* @zhumin-zizhu\n* @ming1523\n* @Sample999\n\n## 🌟 新贡献者\n\n* @Sample999 first contribution in `#412`\n\n---\n\n**发布页面**：\u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Freleases\u002Ftag\u002Fv3.5.0>\n\n**Full Changelog**: \u003Chttps:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.4.2...v3.5.0>\n","2026-03-29T14:38:01",{"id":172,"version":173,"summary_zh":174,"released_at":175},315733,"v3.4.2","# v3.4.2 紧急发布说明 🚨\n\n> [!IMPORTANT]\n> **紧急修复提醒 (Hotfix)**\n> 本次发布是一个紧急修复版本，专门解决了在上一版本中出现的**钉钉插件安装失败\u002F依赖丢失**的严重问题（表现为安装本插件时会意外导致 OpenClaw 主程序依赖被剔除）。\n> 涉及相关 Issues: `#402`, `#404`, `#405`。\n> **强烈建议所有用户立即更新至此版本，以恢复正常的安装和运行环境！**\n\n除了修复致命的安装机制问题外，本次更新还优化了特定场景下引用消息的降级处理。\n\n## 🛠 修复与改进 (Fixes & Improvements)\n\n* **修复插件安装时的依赖丢失问题 (高危)**：\n  * `PR #406`（by @soimy）修复了在安装本插件时意外忽略\u002F剔除 `openclaw` 核心包的配置错误，恢复了平滑的插件接入流程。\n  * `PR #403` (by @gps949) base plugin-sdk import 修复尝试（未并入，但提供了重要线索）\n* **引用回复空文本降级处理**：\n  * `PR #401`（by @BrilliantWang）优化了引用消息的处理逻辑，当提取的回复文本为空时，将自动回退（fallback）使用被引用消息的 `previewText`，避免产生无内容的异常展现。\n\n## 🤝 贡献者 (Contributors)\n\n感谢参与本次紧急修复与反馈的开发者：\n* @soimy\n* @BrilliantWang (欢迎新加入的项目合作者)\n* @gps949\n* 同时也感谢在 Issue 区及时反馈问题的社区用户们！\n\n---\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.4.1...v3.4.2","2026-03-24T05:31:34",{"id":177,"version":178,"summary_zh":179,"released_at":180},315734,"v3.4.1","# v3.4.1 发布说明 🚀\n\n> [!IMPORTANT]\n> **🚨 核心兼容性变更提醒 (Breaking Change)**\n> 本次版本发布主要是为了跟进 OpenClaw 最新的 `v3.22` 版本。由于上游引入了较多的 Breaking Change，作为社区插件，我们必须跟进同步重构底层 SDK API。\n> **请务必注意：从 `v3.4.1` 及后续版本开始，本插件支持的最老 OpenClaw 兼容版本变更为 `v3.22`，且无法提供向后兼容。在升级本插件前，请务必先将您的 OpenClaw 主程序升级至 `v3.22` 或以上版本。**\n>\n> **如果你暂时不打算升级Openclaw主程序到新版本，请暂时逗留在Dingtalk插件 `v3.4.0`以前的版本**\n> **如果你暂时不打算升级Openclaw主程序到新版本，请暂时逗留在Dingtalk插件 `v3.4.0`以前的版本**\n> **如果你暂时不打算升级Openclaw主程序到新版本，请暂时逗留在Dingtalk插件 `v3.4.0`以前的版本**\n\n本次 `v3.4.1` 是一个关键的兼容性与稳定性补丁版本。除了完成对上游架构的适配外，我们还修复了状态流转和沙箱环境下的媒体发送问题。\n\n## 🚀 架构重构与适配 (Architecture & Refactoring)\n\n* **同步上游 Plugin SDK 新版 API**：`PR #395`（by @soimy）全面跟进 OpenClaw v3.22 的底层接口变更，完成核心通信与插件机制的重构适配。\n\n## 🛠 修复与稳定性改进 (Fixes & Stability)\n\n* **修复 FAILED 终态下的等待阻塞问题**：`PR #399`（by @BrilliantWang）解决了当状态机进入 `FAILED` 终态时，`waitForStop` 无法正确 resolve 导致的逻辑挂起问题。\n* **修复沙箱环境下工作区文件发送失败**：`PR #398`（by @zhumin-zizhu，Fixes `#397`）修复了沙箱（Sandbox）模式下 `sendMedia` 方法无法正确处理工作区（workspace）媒体文件的异常。\n\n## 🤝 贡献者 (Contributors)\n\n感谢参与本次兼容性升级与修复的开发者：\n* @soimy\n* @BrilliantWang\n* @zhumin-zizhu\n\n---\n\n**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.4.0...v3.4.1","2026-03-23T14:02:21",{"id":182,"version":183,"summary_zh":184,"released_at":185},315735,"v3.4.0","# v3.4.0 发布说明 🚀\n\n本次 `v3.4.0` 是一次功能丰富的升级，重点聚焦在 **群聊多 Agent 场景增强、更完善的上下文引用链、AI Card 体验升级以及底层回复策略的重构**。\n我们引入了基于 `displayName` 的目标学习解析，补齐了群聊 `@sub-agent` 和单群精准访问控制；同时统一了短时消息上下文持久化，大幅增强了引用回复在 Agent 运行时的上下文理解。\n\n## ✨ 新功能与架构升级 (New Features & Architecture)\n\n1) 群聊场景与多 Agent 支持 (Group Chat & Multi-Agent)\n* **支持群聊 @子代理 (@sub-agent) 基本能力**：`PR #317`（by @wjueyao）为群聊多 Agent 协作场景打下基础。\n* **群聊访问控制增强**：`PR #385`（by @BrilliantWang）引入单群白名单、发送者限制以及禁用策略，支持更精细的群组访问安全管控。\n* **基于 displayName 的目标学习与解析**：`PR #372`（by @soimy）新增目录学习机制，让群聊与用户目标的解析更加智能。\n\n2) 上下文与引用回复链路 (Context & Quoted Replies)\n* **统一消息上下文持久化**：`PR #364\u002F#371`（by @soimy）重构并统一了短时消息上下文的存储与日志作用域。\n* **构建引用回复链并注入 Agent 运行时**：`PR #375\u002F#377\u002F#389`（by @soimy）新增基于 `quotedRef` 的多级引用参考链，并将其完整翻译和注入到运行时上下文，大幅提升 AI 对历史对话的理解能力。\n\n3) 交互体验与 AI Card 增强 (Interaction & AI Card)\n* **Agent 任务实时工具进度通知**：`PR #314`（by @MyQiongbao）在 Agent 任务执行期间提供实时的 Tool 进度反馈。\n* **AI 卡片动态摘要 (Dynamic Summary)**：`PR #384`（by @ming1523）允许对较长的 AI 卡片响应进行动态摘要展示。\n* **卡片完结后支持 @ 发送者 (cardAtSender)**：`PR #369`（by @BrilliantWang）支持在 AI Card 输出结束后主动 @ 触发者，提供更明确的完成提醒。\n* **Markdown 表格转换配置项**：`PR #335`（by @BrilliantWang）新增 `convertMarkdownTables` 控制开关。\n\n4) 底层重构 (Refactoring)\n* **抽离 ReplyStrategy 接口优化流式回复分发**：`PR #368`（by @zizhus-ai）重构回复投递逻辑，解耦了不同模式的回复分发策略。\n\n## 🛠 修复与稳定性改进 (Fixes & Stability)\n\n* **立即响应回调防止重复投递**：`PR #392`（by @zwj0117）修复回调 ACK 时机，避免因处理耗时触发钉钉服务端的重复消息投递重试。\n* **限制 main 会话默认路由**：`PR #382`（by @ming1523）限制了 main 会话的默认路由仅允许 owner 接管。\n* **禁用 Markdown 块级流式传输防断裂**：`PR #361`（by @zhumin-zizhu）关闭 Markdown 模式下的 block streaming，解决部分场景下消息被异常截断的问题。\n* **补充默认 ackReaction 降级处理**：`PR #362`（by @zhumin-zizhu）防止静默升级导致的配置回归异常。\n* **文本消息提取异常修复**：`PR #378`（by @zizhus-ai）移除提取文本消息时未定义的 `quotedPrefix`。\n* **类型与测试对齐**：`PR #387\u002F#388`（by @ming1523）移除冗余的 ackReaction 类型联合验证并对齐了清理逻辑的测试预期。\n\n## 🤝 贡献者 (Contributors)\n\n感谢本版本周期的贡献者：\n* @soimy\n* @BrilliantWang\n* @zhumin-zizhu\n* @zizhus-ai\n* @wjueyao\n* @ming1523\n* @MyQiongbao\n* @zwj0117\n\n## 🌟 新贡献者 (New Contributors)\n\n* @BrilliantWang 首次贡献于 `#335`\n* @wjueyao 首次贡献于 `#317`\n* @MyQiongbao 首次贡献于 `#314`\n\n---\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.3.0...v3.4.0","2026-03-22T06:09:21",{"id":187,"version":188,"summary_zh":189,"released_at":190},315736,"v3.3.0","# v3.3.0 发布说明 🚀\n\n大家久等了。本次姗姗来迟的 `v3.3.0` 是我们项目建立以来最大的一次功能更新，汇聚了来自15位贡献者的60多个PR和Commit，整合和测试压力巨大。（写Release Note压力也很大，总感觉漏了点啥，大家有发现记得联系我修改）。\r\n\r\n本次更新重点聚焦在 **更可感知的 AI Card 体验、更多原生交互能力、更完整的附件\u002F引用链路，以及更稳的 Stream 长连接与回复收尾**。其中有几个值得大家尽快体验的亮点：\r\n\r\n* **AI Card 实时流式预览优化**：`PR #341`（by @Zhumin-lv-wn）引入 `CardDraftController` \u002F `DraftStreamLoop`，支持更平滑的 thinking \u002F answer 预览，并提供 `cardRealTimeStream` 配置开关。\r\n* **原生 ackReaction \u002F emoji 思考反馈**：`PR #287`（by @kansousama）与最终清理落地的 `PR #344`（by @ming1523）共同补强思考中反馈与 reaction 配置能力。\r\n* **宽屏 AI Card 与可导入模板**：`PR #271`（by @soimy）扩展卡片模板形态，降低大段内容在桌面端的压缩感。\r\n* **learn 学习命令与多目标规则管理**：`PR #281`（by @ming1523）扩展规则学习和命令路由能力。\r\n\r\n## ✨ 新功能 (New Features)\r\n\r\n1) AI Card 与交互体验增强 (AI Card & Interaction)\r\n* **引入 AI Card 实时流式预览优化**：`PR #341`（by @Zhumin-lv-wn）新增 `CardDraftController` \u002F `DraftStreamLoop`，支持更平滑的 thinking \u002F answer 预览，并提供 `cardRealTimeStream` 配置开关。\r\n* **支持宽屏 AI Card 与可导入模板**：`PR #271`（by @soimy）扩展卡片模板形态，降低大段内容在桌面端的压缩感。\r\n* **thinking 提示语支持配置化**：`PR #214`（by @androidshu）允许自定义默认思考中提示。\r\n* **支持 emoji \u002F native ack reaction 反馈模式**：`PR #287`（by @kansousama）与最终清理落地的 `PR #344`（by @ming1523）共同补强思考中反馈与 reaction 配置能力。\r\n* **优化 Markdown 表格发送兼容性**：`PR #300`（by @ming1523）改善钉钉客户端对表格内容的展示一致性。\r\n\r\n2) 路由、命令与配置能力扩展 (Routing, Commands & Configuration)\r\n* **支持 named account 继承 channel 级默认配置**：`PR #194`（by @qiffang）简化多账号配置复用。\r\n* **在群聊系统提示中补充 `senderDingtalkId` \u002F `senderName`**：`PR #239`（by @wulien）增强 group prompt 的身份上下文。\r\n* **增加 learn rule 生命周期与多目标命令**：`PR #281`（by @ming1523）扩展规则学习和命令路由能力。\r\n* **新增 DingTalk 文档 gateway methods**：`PR #301`（by @ming1523）补齐文档类能力入口。\r\n* **支持 owner 控制群共享会话别名**：`PR #307`（by @ming1523）增强群聊多会话治理。\r\n* **补充多 agent \u002F 多 bot 绑定说明**：`PR #328`（by @dxsup）完善多机器人场景的接入文档。\r\n\r\n3) 引用消息、附件与内容理解增强 (Quoted Messages & Attachments)\r\n* **完善引用消息能力与回补路径**：`PR #250\u002F#263\u002F#279`（by @Zhumin-lv-wn）逐步补齐 quoted message、原始消息恢复和 quoted file 匹配能力。\r\n* **增加基于持久化的 quote journal fallback**：`PR #251`（by @soimy）让 `originalMsgId` 丢失时仍有机会恢复引用上下文。\r\n* **支持 PDF \u002F DOCX 入站附件正文抽取**：`PR #298`（by @ming1523）将文档正文解析进上下文，显著增强文件类消息可用性。\r\n* **图片消息上下文保留入站媒体路径**：`PR #246`（by @androidshu）让后续能力更容易消费入站图片文件。\r\n\r\n## 🛠 修复与稳定性改进 (Fixes & Stability)\r\n\r\n1) AI Card 与回复链路修复 (AI Card & Reply Fixes)\r\n* **修复重启后卡片遗留和 finalize 卡死问题**：`PR #217`（by @androidshu）补上重启后 stuck AI Card 的恢复与 finalize 收尾。\r\n* **增加 AI Card 熔断与错误降级能力**：`PR #253`（by @ming1523）为短时异常引入 circuit breaker，减少连续失败时的卡片链路抖动。\r\n* **修复 reasoning 内容重复堆叠**：`PR #291`（by @aoxiaotian-ai）将 reasoning stream 切换为 replace 模式，缓解 AI Card 重复输出。\r\n* **支持多个 final chunk 正确收尾**：`PR #326`（by @huww98）补齐多次 final chunk 场景，避免最终内容被吞。\r\n* **修复卡片 final\u002Ftool deliver 的空文本保护**：`PR #346`（by @aoxiaotian-ai）避免 `textToSend` 为空时直接打断后续发送。\r\n* **修复 finalize 使用内容不完整与多轮 tool call 收尾错误**：`PR #348\u002F#350\u002F#352`（by @Zhumin-lv-wn）连续收敛 accumulated content 与 AI Card streaming finalization 的边界问题。\r\n* **停止原因不再被静默吞掉**：`PR #231`（by @huww98）修复异常\u002F停止场景下无用户可见反馈的问题。\r\n* **入站回包支持发送 MEDIA 附件**：`PR #311`（by @LazyBug1E0CF）补齐 inbound reply handler 的媒体投递路径。\r\n* **chatRecord 空载荷时给出明确提示**：`PR #257`（by @ming1523）避免转发\u002F聊天记","2026-03-16T15:35:06",{"id":192,"version":193,"summary_zh":194,"released_at":195},315737,"v3.2.0","# v3.2.0 发布说明 🚀\n\n本次 `v3.2.0` 是在 `v3.1.3` 基础上的一次关键升级，重点聚焦在 **并发安全、Stream 稳定性、媒体能力增强与 AI Card 行为收敛**。\n尤其是 `PR #191`（merge commit: `421f5d1`）完成了会话级并发修复，并合并吸收了 `#168\u002F#169\u002F#179` 的相关能力与修复意图，使消息链路在高并发和混合场景下更稳健。\n\n## 🚀 核心改进 (Key Improvements)\n\n1) 会话并发安全与 AI Card 链路一致性 (Concurrency & Card Consistency)\n* **会话级 dispatch 锁，修复并发空回复问题**：`PR #191` \u002F commit `421f5d1`（by @Zhumin-lv-wn）。\n  同时该 PR 的实现上下文明确依赖并吸收了：\n  - `PR #168`（refactor: remove shared AI Card cache，by @huww98）\n  - `PR #169`（feat: support proactive text messages via AI Card API，by @huww98）\n  - `PR #179`（fix proactive notification overwritten，by @wulien；在 `#191` 中通过一组 hardening commits 对齐并落地相关修复意图）\n* **stale in-flight lock 清理机制增强（TTL + disconnect cleanup）**：`PR #183`（by @redphils）。\n* **DWClient 重连前清理 stale heartbeat timer**：`PR #167`（by @Zhumin-lv-wn）。\n\n2) 媒体能力升级与语音场景补强 (Media & Voice Enhancements)\n* **支持本地图片发送**：`PR #182`（by @AielloChan）。\n* **支持 asVoice 媒体发送（message action）**：`PR #200`（by @androidshu）。\n* **支持通过 `mediaMaxMb` 覆盖入站媒体大小限制**：`PR #181`（by @Zhumin-lv-wn）。\n* **修复 edge-TTS MP3 时长计算错误**：`PR #206`（by @sonnyyin，Fixes #196 \u002F #174）。\n\n3) 模板默认值与工程质量收敛 (Template Consistency & Tooling)\n* **README 更新 cardTemplateKey 默认值说明**：`PR #175`（by @animeng）。\n* **onboarding 与运行时 cardTemplateKey 默认值对齐**：`PR #199`（by @dxsup）。\n* **升级 oxlint-tsgolint 至 0.15.0**：`PR #213`（by @swampskye）。\n\n## 📌 版本演进概览 (Version Milestones)\n\n* **v3.1.4**：callback ack 时序优化、stream monitor 与 keepalive 开关增强。\n* **v3.2.0**：会话级并发锁与 stale lock 回收、媒体发送能力扩展（本地图片 + asVoice + mediaMaxMb）、AI Card 行为进一步收敛与稳定性强化（核心为 `PR #191` 及其关联整合）。\n\n## 🤝 贡献者 (Contributors)\n\n感谢本版本周期的贡献者：\n* @Zhumin-lv-wn\n* @huww98\n* @wulien\n* @redphils\n* @AielloChan\n* @androidshu\n* @sonnyyin\n* @animeng\n* @dxsup\n* @swampskye\n* @soimy\n\n## 🌟 New Contributors\n\n* @animeng first contribution in `#175`\n* @Zhumin-lv-wn first contribution in `#167`\n* @redphils first contribution in `#183`\n* @dxsup first contribution in `#199`\n* @AielloChan first contribution in `#182`\n* @androidshu first contribution in `#200`\n* @sonnyyin first contribution in `#206`\n* @swampskye first contribution in `#213`\n\n---\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.1.3...v3.2.0","2026-03-04T08:40:10",{"id":197,"version":198,"summary_zh":199,"released_at":200},315738,"v3.1.3","# v3.1.3 发布说明 🚀\n\n本次 `v3.1.3` 是从 `v3.0.0` 以来的一次阶段性汇总发布，重点聚焦在 **稳定性增强、AI Card 收敛一致性、以及错误观测能力提升**。  \n在持续迭代中，我们补齐了连接重试边界、去重与终态保护，并统一了 DingTalk 错误载荷日志规范，帮助线上问题更快定位、更易追踪。\n\n ## 🚀 核心改进 (Key Improvements)\n\n 1) 稳定性与可靠性 (Reliability)\n* **入站去重能力加固**：强化 inbound dedup 处理，并补充运行时计数器，降低重复处理风险。  \n* **重连策略持续优化**：降低误判重连的概率，暴露运行时重连统计；并进一步限制重连循环次数，避免特定场景出现无限循环（#153）。  \n* **网关行为更可控**：围绕重连与运行时状态的可观测性继续补强，便于排障与回归验证。\n\n 2) AI Card 生命周期修复 (AI Card Lifecycle Fixes)\n* **终态卡片保护**：修复终态 AI Card 仍被后续流式更新的问题。  \n* **交付阶段去重收敛**：修复 deliver 阶段重复 final update。  \n* **无文本回复兜底收口**：当回复无文本时，确保 AI Card 正常 finalize，避免卡片停留在中间状态。  \n* **敏感信息防泄露**：抑制 stop reason 泄露，降低日志与链路中的非预期暴露风险。\n\n 3) 错误日志标准化与排障能力 (Observability & Diagnostics)\n* **统一 ErrorPayload 日志格式**：新增并落地统一 DingTalk 错误载荷日志格式器。  \n* **跨链路标准化**：在 inbound 与 AI Card 流程统一错误日志前缀、`code\u002Fmessage\u002Fpayload` 输出结构。  \n* **测试覆盖完善**：新增单元与集成测试，覆盖 400 错误载荷日志场景与格式约束。  \n* **文档同步更新**：补充统一 ErrorPayload 日志约定，方便团队协作与线上故障定位。  \n* **主动消息风险提示增强**：新增 proactive target 风险提示与日志关联能力，并切换到 API-based proactive risk 路径。\n\n## 📌 版本演进概览 (Version Milestones)\n\n* **v3.0.1**：去重与重连误判修复，补充运行时计数。  \n* **v3.0.2**：AI Card 终态保护与重复 final update 修复。  \n* **v3.1.0**：统一 ErrorPayload 日志体系（实现 + 测试 + 文档）。  \n* **v3.1.1**：主动消息风险提示与日志关联增强。  \n* **v3.1.2**：重连循环上限修复 + stop reason 泄露抑制 + proactive risk API 化。  \n* **v3.1.3**：无文本回复场景下 AI Card finalize 修复。\n\n## 🤝 贡献者 (Contributors)\n\n感谢本版本周期内的贡献者：\n* **@soimy**：主导稳定性修复、AI Card 生命周期完善、错误日志体系建设与文档测试补齐。  \n* **@Prajna**：修复重连循环边界问题（#153），显著提升异常场景下的运行稳定性。 \n\n---\n\n**完整变更日志**: [v3.0.0...v3.1.3](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv3.0.0...v3.1.3)","2026-02-26T16:38:21",{"id":202,"version":203,"summary_zh":204,"released_at":205},315739,"v3.0.0","# v3.0.0 版本发布说明 🚀\n\n本次 `v3.0.0` 是一次面向可维护性与工程稳定性的重大升级。核心代码完成模块化重构，消息处理链路更清晰，测试覆盖进一步增强，并补齐了 npm 发布流程与文档规范。\n\n## 🚀 新特性与架构升级 (New Features & Architecture)\n* **通道核心模块化重构**：将原先集中在 `channel.ts` 的核心逻辑按职责拆分为多个服务模块（入站处理、发送服务、AI Card、鉴权、连接管理、去重、配置等），显著提升可读性与可扩展性。 (PR [#137](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F137) by @soimy)\n* **群成员存储逻辑抽离**：进一步将群成员相关逻辑从入站处理流程中拆分，降低耦合，为后续演进留出更清晰边界。\n\n## 🛠 工程质量与稳定性 (Quality & Stability)\n* **测试覆盖增强**：新增 group member store 模块覆盖用例，提升关键路径回归保障能力。\n* **文档完善**：补充 `plugins.allow` 配置说明并修正更新命令用法，降低接入与升级成本。\n\n## 📦 发布与 CI 改进 (Release & CI)\n* **Tag 驱动 npm 发布流程完善**：新增基于 semver（含 beta）的 tag 发布流程，统一版本发布路径。\n* **Trusted Publishing 加固**：CI 增加 npm trusted publishing OIDC 路径约束，强化发布链路安全性与可审计性。\n* **发布文档同步更新**：更新 `NPM_PUBLISH.md`，确保发布操作与当前流程一致。\n\n## 🤝 贡献者名单 (Contributors)\n感谢本版本的贡献者：\n* **@soimy**：完成了核心模块化重构、发布流程改进、文档更新与测试增强。\n* **@tongzhipeng**：感谢提交 PR [#135](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F135) 并帮助定位 `startAccount` 自动重启循环问题；虽该修复已由主线中的后续提交覆盖、PR 最终未合并，但这份贡献仍非常重要。\n\n---\n**完整变更日志**: [v2.7.0...v3.0.0](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.7.0...v3.0.0)\n","2026-02-22T08:47:45",{"id":207,"version":208,"summary_zh":209,"released_at":210},315740,"v2.7.0","# v2.7.0 版本发布说明 🚀\r\n\r\n本次更新是一个重要的大版本升级，不仅让 AI 的“思考过程”变得可视化，还引入了实用的**引用回复**功能，并大幅优化了与 ControlUI 的交互体验。\r\n\r\n## 🚀 新特性 (New Features)\r\n* **AI 思考过程可视化 (`showThinkingStream`)**：新增支持 AI 卡片的思考流显示。现在，AI 的思考逻辑（Thinking）以及工具调用（Tool Use）过程可以直接在钉钉卡片中动态展示。 (PR [#119](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F119) by @soimy) \r\n\r\n    > 请参考README中AI卡片相关章节了解[开启方法](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FREADME.md#ai-%E6%80%9D%E8%80%83%E8%BF%87%E7%A8%8B%E4%B8%8E%E5%B7%A5%E5%85%B7%E6%89%A7%E8%A1%8C%E6%98%BE%E7%A4%BAai-card-%E6%A8%A1%E5%BC%8F)\r\n\r\n* **引用回复支持 (Quote Message)**：AI 在回复时现在可以关联并引用用户的原始消息，让群聊或复杂对话的上下文更加清晰。 (PR [#128](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F128) by @liric24)\r\n\r\n## 🛠 修复与改进 (Fixes & Improvements)\r\n* **ControlUI 兼容性增强**：重构了 `accounts` 的 Schema 配置结构，移除了递归节点，使其完美适配 ControlUI 的可视化编辑界面。 (PR [#133](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F133) by @Copilot)\r\n* **网关稳定性优化**：修复了 `startAccount` 在停止前未能正确阻塞的问题，有效拦截了特定场景下网关（Gateway）可能进入的异常自动重启循环。 (PR [#134](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F134) by @Copilot)\r\n* **文件路径解析修复**：发送文件功能现已支持正确解析用户主目录路径（如 `~\u002FDownloads`）。 (PR [#132](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F132) by @pqing112358)\r\n\r\n## 🤝 贡献者名单 (Contributors)\r\n衷心感谢所有参与本版本开发的贡献者：\r\n* **@soimy**：贡献了 AI 思考流显示核心功能。\r\n* **@liric24** (新贡献者)：实现了引用回复功能，欢迎首秀！\r\n* **@pqing112358**：提供了文件路径解析的关键修复。\r\n* **@Copilot**：完成了 UI 兼容性重构与底层稳定性优化。\r\n\r\n---\r\n**完整变更日志**: [v2.6.5...v2.7.0](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.6.5...v2.7.0)","2026-02-19T17:33:43",{"id":212,"version":213,"summary_zh":214,"released_at":215},315741,"v2.6.5","# v2.6.5 紧急发布说明 🚨\r\n\r\n> [!IMPORTANT]\r\n> **紧急提醒：** 由于上游 OpenClaw 的插件安装机制发生调整，传统的 GitHub 链接安装方式已失效。\r\n> 本版本已全面转向 **npm 渠道**，请务必根据下方说明或最新的 README 更新您的安装方式。\r\n\r\n## 🚨 重大变更 (Breaking Changes)\r\n* **安装方式变更**：不再支持通过 GitHub URL 直接安装。现已统一通过 npm 仓库进行分发，以确保与上游机制的兼容性。\r\n* **配置说明更新**：安装与配置流程已在 [README.md](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FREADME.md) 中重新编写，涉及环境要求、npm 指令及初始化步骤。\r\n\r\n### 新安装命令\r\n\r\n```bash\r\nopenclaw plugins install @soimy\u002Fdingtalk\r\n```\r\n\r\n## 🚀 新特性 (New Features)\r\n* **Onboarding 自动化支持**：在 OpenClaw 的新用户引导阶段，现已支持基于 npm 的 DingTalk 通道自动发现机制，实现“一键式”接入体验。 (PR [#118](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F118) by @soimy)\r\n\r\n### 交互配置命令\r\n\r\n```bash\r\nopenclaw channels add\r\n```\r\n\r\n## 🤝 贡献者 (Contributors)\r\n感谢在本次紧急适配中提供支持的开发者：\r\n* **@Copilot**：快速响应上游变化并完成了 npm 自动发现功能的开发。\r\n\r\n---\r\n**完整变更日志**: [v2.6.4..v2.6.5](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.6.4..v2.6.5)\r\n","2026-02-17T18:56:08",{"id":217,"version":218,"summary_zh":219,"released_at":220},315742,"v2.6.4","# v2.6.4 紧急发布说明 🚨\r\n\r\n> [!IMPORTANT]\r\n> **紧急提醒：** 由于上游 OpenClaw 的插件安装机制发生调整，传统的 GitHub 链接安装方式已失效。\r\n> 本版本已全面转向 **npm 渠道**，请务必根据下方说明或最新的 README 更新您的安装方式。\r\n\r\n## 🚨 重大变更 (Breaking Changes)\r\n* **安装方式变更**：不再支持通过 GitHub URL 直接安装。现已统一通过 npm 仓库进行分发，以确保与上游机制的兼容性。\r\n* **配置说明更新**：安装与配置流程已在 [README.md](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FREADME.md) 中重新编写，涉及环境要求、npm 指令及初始化步骤。\r\n\r\n## 🚀 新特性 (New Features)\r\n* **Onboarding 自动化支持**：在 OpenClaw 的新用户引导阶段，现已支持基于 npm 的 DingTalk 通道自动发现机制，实现“一键式”接入体验。 (PR [#118](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F118) by @soimy)\r\n\r\n## 🤝 贡献者 (Contributors)\r\n感谢在本次紧急适配中提供支持的开发者：\r\n* **@Copilot**：快速响应上游变化并完成了 npm 自动发现功能的开发。\r\n\r\n---\r\n**完整变更日志**: [v2.6.1...v2.6.4](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.6.1...v2.6.4)\r\n\r\n> 💡 **快速安装指引**：\r\n> 1. 确保您的环境已安装 Node.js。\r\n> 2. 在 OpenClaw 插件目录执行：`npm install openclaw-channel-dingtalk`\r\n> 3. 详细步骤请参考 [README 15-69 行说明](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fblob\u002Fmain\u002FREADME.md?plain=1#L15-L69)。","2026-02-16T19:18:02",{"id":222,"version":223,"summary_zh":224,"released_at":225},315743,"v2.6.1","# v2.6.1 版本发布说明\r\n\r\n## 🚀 新特性 (New Features)\r\n\r\n* **DingTalk Onboarding Adapter**：新增 DingTalk 机器人配置引导适配器，简化新用户的初始化配置流程。(PR [#113](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F113) by @soimy)\r\n* **钉钉群组白名单授权**：新增群组白名单授权功能，支持更精细的群聊访问控制。(PR [#99](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F99) by @soimy and @David)\r\n\r\n## 🐛 修复与改进 (Fixes & Improvements)\r\n\r\n* **ESM 兼容性修复**：添加显式的 .js 文件扩展名，确保 ESM 模块系统的兼容性。(PR [#113](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F113) by @soimy)\r\n* **Gateway 状态同步**：优化连接状态变化时 Gateway 状态的更新逻辑，提升状态一致性。\r\n* **重连机制增强**：修复了 Runtime 重连循环失败后无法继续重连的问题，增强了连接的鲁棒性。(PR [#96](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F96) by @wdc63 & @soimy)\r\n* **ID 识别正则优化**：修复了 targetResolver.looksLikeId 正则表达式，支持 Base64 编码中的 '+' 字符。(PR [#109](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F109) by @pqing112358 & @惊宇)\r\n* **账户状态快照**：新增 buildAccountSnapshot 方法，完善 DingTalk Channel 状态管理。(PR [#97](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F97) by @soimy)\r\n* **文档优化**：更新了 README.md 中的模板配置示例，提升文档可读性。\r\n\r\n## 🤝 贡献者名单 (Contributors)\r\n\r\n非常感谢所有为本项目添砖加瓦的开发者：\r\n\r\n* **@wdc63**\r\n* **@pqing112358** & **@惊宇** \r\n\r\n**完整变更日志**: [v2.5.1...v2.6.1](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.5.1...v2.6.1)","2026-02-15T18:10:11",{"id":227,"version":228,"summary_zh":229,"released_at":230},315744,"v2.5.1","# v2.5.1 版本发布说明\r\n\r\n## 🛠 改进与优化 (Improvements)\r\n\r\n* **消息去重机制深度优化**：\r\n* **更高效的缓存策略**：引入了 60 秒 TTL（过期时间）与延迟清理机制。\r\n* **多机器人隔离**：去重 Key 现在按机器人维度（Bot-scoped）进行隔离，避免跨机器人干扰。\r\n* **安全加固**：增加了存储硬上限（Hard cap），防止极端情况下的内存占用。\r\n* (PR [[#91](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F91)] by @soimy )\r\n\r\n\r\n\r\n## 🐛 修复 (Fixes)\r\n\r\n* **状态显示修复**：通过实时更新运行快照，修复了管理页面通道状态显示不准确的问题。 (PR [[#93](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F93)] by @soimy )\r\n\r\n\r\n**完整变更日志**: [[v2.5.0...v2.5.1](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.5.0...v2.5.1)]\r\n","2026-02-09T13:29:08",{"id":232,"version":233,"summary_zh":234,"released_at":235},315745,"v2.5.0","# v2.5.0 版本发布说明\r\n\r\n## 🚀 新特性 (New Features)\r\n\r\n* **媒体文件上传支持**：实现了消息媒体上传功能，为后续支持更丰富的交互形式打下了基础。 (PR [[#78](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F78)] by @soimy) (PR [[#68](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F68)] @wuditata  )\r\n* **稳健的连接生命周期管理**：引入了**指数退避 (Exponential Backoff)** 重连机制，优化了连接生命周期的自动化管理，显著提升了服务在断线后的恢复能力。 (PR [[#85](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F85)] by @soimy) (PR [[#74](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F74) by @AdJIa) (PR [[#75](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F75) by @wdc63) \r\n\r\n## 🐛 修复与改进 (Fixes & Improvements)\r\n\r\n* **富文本解析增强**：修复了在 `richText` 片段缺失显式 `type` 字段时的解析逻辑，提高了消息处理的兼容性。 (PR [[#71](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F71)] by @soimy )\r\n* **卡片模板内容变量名配置** 优化了卡片配置缺失时的退化逻辑, 并增加模板变量名配置, 当配置错误时主动消息提示。(Commit 930d116e1e3a8f84030b1a2406997dc93d7c24a4 by @soimy ) \r\n* **链接与域名修正**：更新了钉钉卡片平台的跳转链接。 (PR [[#70](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F70)] by @Yojoe-Zhu)\r\n\r\n\r\n## 🤝 贡献者名单 (Contributors)\r\n\r\n非常感谢所有为本项目添砖加瓦的开发者：\r\n\r\n* **@wuditata**：贡献了媒体上传核心功能。\r\n* **@AdJIa & @wdc63** 贡献了连接生命周期管理。\r\n* **@Yojoe-Zhu** (新贡献者)：贡献了多处文档链接与域名的关键修复，欢迎加入！\r\n* **@soimy**：优化了富文本解析的鲁棒性。\r\n\r\n**完整变更日志**: [[v2.4.0...v2.5.0](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.4.0...v2.5.0)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.4.0...v2.5.0)","2026-02-08T16:56:03",{"id":237,"version":238,"summary_zh":239,"released_at":240},315746,"v2.4.0","# v2.4.0 版本发布说明\r\n\r\n本次更新带来了期待已久的多账号 Token 隔离机制，并针对钉钉协议中的一些边界情况（如消息重复、ID 大小写敏感）进行了深度修复。\r\n\r\n## 🚀 新特性 (New Features)\r\n\r\n* **消息去重机制**：新增消息去重逻辑，有效拦截因钉钉服务端重试导致的重复消息推送，确保 AI 响应的唯一性。 (PR [[#52](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F52)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F52) by @Explorer1092)\r\n* **Peer ID 注册表优化**：引入 `peer-id-registry`，彻底解决 `conversationId` 大小写敏感导致的会话匹配失败问题。 (PR [[#53](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F53)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F53) by @Explorer1092)\r\n\r\n## 🐛 修复与改进 (Fixes & Improvements)\r\n\r\n* **多账号隔离优化**：根据 `clientId` 对 Access Token 缓存进行物理隔离，完美支持多账号并发运行，避免 Token 冲突。 (PR [[#50](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F50)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F50) by @wuditata)\r\n* **配置鲁棒性增强**：修复了在 Web 页面删除所有账号后，因 `accounts` 字段为空字典导致无法启动 Stream 监听的崩溃问题。 (PR [[#57](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F57)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F57) by @S-yangbin)\r\n* **沙箱模式修复**：修复了在钉钉沙箱（Sandbox）环境下媒体文件下载失败的问题，提升了开发调试体验。 (PR [[#56](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F56)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F56) by @Explorer1092)\r\n\r\n## 🤝 贡献者名单 (Contributors)\r\n\r\n衷心感谢所有参与本次版本开发的贡献者，正是你们的 PR 让 OpenClaw 更加完善：\r\n\r\n* **@Explorer1092**：贡献了消息去重、ID 兼容性修复及沙箱模式优化等多项核心改进。\r\n* **@wuditata** (新贡献者)：实现了关键的多账号 Token 隔离机制。\r\n* **@S-yangbin** (新贡献者)：修复了配置为空时的系统启动 Bug。\r\n\r\n---\r\n\r\n**完整变更日志**: [[v2.3.0...v2.4.0](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.3.0...v2.4.0)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.3.0...v2.4.0)\r\n","2026-02-04T14:36:19",{"id":242,"version":243,"summary_zh":244,"released_at":245},315747,"v2.3.0","# v2.3.0 版本发布说明\r\n\r\n本次更新带来了群聊功能的重大增强，并针对连接稳定性及消息结构进行了深度优化。\r\n\r\n## 🚀 新特性 (New Features)\r\n\r\n* **群聊功能大幅增强**：\r\n* **群成员追踪**：支持更精准的群成员上下文管理。\r\n* **群 SystemPrompt**：现在可以为特定群聊配置独立的系统提示词（System Prompt）。\r\n* **conversationId 可见**：支持在交互中查看会话 ID，便于调试与日志追踪。 (PR [[#38](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F38)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F38) by @Explorer1092)\r\n\r\n\r\n\r\n## 🐛 修复与改进 (Fixes & Improvements)\r\n\r\n* **稳定性提升**：启用 WebSocket `keepAlive` 机制，有效解决了在高负载或长时间闲置下的连接“假死”问题。 (PR [[#37](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F37)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F37) by @AdJIa)\r\n* **消息结构优化**：根据消息类型（Markdown | Text）重构了 `msgParam` 参数结构，确保不同类型消息的参数解析更加准确。 (PR [[#42](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F42)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fpull\u002F42) by @LuckybugQ)\r\n\r\n## 🤝 贡献者名单 (Contributors)\r\n感谢以下开发者对本版本的支持：\r\n\r\n@Explorer1092：负责群聊增强核心功能的开发。\r\n\r\n@AdJIa (新贡献者)：修复了 WebSocket 稳定性问题。\r\n\r\n@LuckybugQ (新贡献者)：优化了消息参数解析结构。\r\n\r\n**完整变更日志**: [[v2.2.2...v2.3.0](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.2.2...v2.3.0)](https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.2.2...v2.3.0)","2026-02-03T16:16:12",{"id":247,"version":248,"summary_zh":249,"released_at":250},315748,"v2.2.2","### 修复\r\n- 解决了独立安装设置中的 npm install 和类型检查错误 (#31)","2026-02-02T08:02:41",{"id":252,"version":253,"summary_zh":254,"released_at":255},315749,"v2.2.1","# Release v2.2.1 - 全新 AI 互动卡片与流式渲染支持\r\n\r\n本次更新是一个重大的功能迭代，引入了对钉钉 **AI 卡片（AI Card）** 的原生支持，实现了消息的**流式输出（Streaming）**体验，并对底层消息管理逻辑进行了彻底重构。\r\n\r\n### 🌟 核心特性\r\n\r\n* **全新 AI 卡片 API 实现**：\r\n* 支持钉钉最新的 AI 卡片协议，提供更丰富的交互能力。\r\n* **流式渲染支持**：现在支持在卡片中实时更新 AI 生成的内容，提升用户等待体验。\r\n\r\n\r\n* **智能消息模式**：更新了消息发送逻辑，支持在 **Markdown 模式**与 **AI 卡片模式**之间灵活切换。\r\n* **卡片生命周期管理**：\r\n* 引入了 `AICardInstance` 状态机，追踪卡片的 `INPUTING`（输入中）、`FINISHED`（已完成）和 `FAILED`（失败）状态。\r\n* 优化了卡片缓存机制，支持自动清理已结束或失效的卡片实例。\r\n\r\n\r\n\r\n### ⚠️ 突破性变更 (Breaking Changes)\r\n\r\n* **移除旧版卡片支持**：彻底移除了所有 Legacy Card API 相关的代码，请确保您的钉钉机器人已配置支持新版互动卡片。\r\n* **精简消息类型**：从配置 Schema 中移除了 `text` 选项，进一步精简 API，推荐全面转向 Markdown 或 AI 卡片。\r\n* **配置项调整**：更新了 `config-schema` 和类型定义，以适配新的消息结构和 AI 卡片参数。\r\n\r\n### 🛠️ 性能与可靠性优化\r\n\r\n* **移除不安全的 `setInterval**`：废弃了 Node.js 中的全局定时器清理任务，改为在 `handleDingTalkMessage` 处理流程中按需触发缓存清理，降低内存泄露风险。\r\n* **更健壮的错误处理**：\r\n* 改进了卡片操作的日志记录和异常捕获。\r\n* 当卡片更新失败时会自动标记为 `FAILED` 状态，防止进入死循环重试。\r\n* 移除了不稳定的回退逻辑，当卡片创建失败时会快速失败（Fail Fast）并尝试通过 Webhook 兜底。\r\n\r\n\r\n* **状态转移修复**：修正了 `INPUTING` 状态的切换时机，确保在调用 API 前正确锁定状态。\r\n\r\n### 📖 文档更新\r\n\r\n* **README 重构**：新增了 AI 卡片 API 的使用文档。\r\n* **迁移指南**：添加了从旧版卡片迁移至新版 AI 卡片的详细说明。\r\n\r\n---\r\n\r\n### 📦 升级建议\r\n\r\n由于移除了旧版卡片接口，**请在升级前确保您在钉钉开发者后台已创建并发布的互动卡片模板 ID 与新配置匹配**。\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fsoimy\u002Fopenclaw-channel-dingtalk\u002Fcompare\u002Fv2.1.3...v2.2.0","2026-02-01T15:38:08"]