{"id":"70e9142d-3f43-4be5-b01a-1ac8930125ad","entityType":"agent","slug":"clawhub-tencent-adm-tencent-channel-community","name":"腾讯频道Skill","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tencent-adm-tencent-channel-community","canonicalPath":"/agent/clawhub-tencent-adm-tencent-channel-community","generatedAt":"2026-10-10T08:10:14.337Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":null},"description":"腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3.7K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s171cxjdnjyqjxa91pj2bfmr6x83gyg1:tencent-channel-community","sourceUrl":"https://clawhub.ai/tencent-adm/tencent-channel-community","homepage":"https://clawhub.ai/tencent-adm/skills/tencent-channel-community","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/tencent-adm/tencent-channel-community","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/tencent-adm/skills/tencent-channel-community","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"腾讯频道Skill technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":null},"stars":null,"forks":null,"downloads":3660,"packageName":null,"latestVersion":"1.1.5","tractionLabel":"3.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T07:18:20.877Z","lastCrawledAt":"2026-10-09T07:18:20.877Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T07:18:20.877Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.5","createdAt":"2026-04-29T10:25:58.032Z","changelog":"tencent-channel-community v1.1.5 🚀 升级扫码授权登录流程，登录处理更清晰安全。 ✍️ 优化 Markdown 发帖与编辑说明，补充 Markdown 内容发布和 @ 用户规则。 🔔 更新通知订阅说明，重新登录或更换账号时会自动停止通知服务并清理本地订阅状态。 🚀 Updated the QR-code authorization login flow for clearer and safer authentication handling. ✍️ Improved Markdown publishing and editing guidance, including Markdown content and mention rules. 🔔 Updated notification subscription behavior: re-login or account switching now stops the daemon and clears local subscription state.","fileCount":7,"zipByteSize":25572},{"version":"1.1.4","createdAt":"2026-04-22T17:55:43.315Z","changelog":"⭐️优化频道消息订阅的体验 ------------------------------- ⭐️optimize the pindao message subscription experience","fileCount":6,"zipByteSize":21460},{"version":"1.1.3","createdAt":"2026-04-17T14:26:17.977Z","changelog":"🎉 v1.1.3 更新公告 🔔 全新：频道消息通知 💬 一键开启频道消息通知：互动消息（点赞 / 评论 / 回复 / @）、系统消息（加入申请等）、私信通知全部自动推送 ↩️ 引用通知即可快捷操作：引用通知后说「回复他」「评论他」「同意」「拒绝」「回复私信」即可一步完成 🧹 关闭通知时自动清理本地状态，更换凭证后通知会自动暂停，避免误推送 ✍️ 发帖体验升级 🔗 正文直接写 显示文字 就能生成可点击链接，不用再单独配置 👤 正文直接写 @昵称 就能 @人，位置精确，和链接可自由混排 🏷️ 明确话题标签规则：仅短贴支持 #话题，长贴传话题会被直接拦截 💬 评论 / 回复也支持上述内联语法，并可通过通知编号从通知中自动填充 🛠️ 频道管理增强 🆔 新增修改频道号能力（10~14 位英文 / 数字，需频道主权限） 📩 回复收到的私信通知更顺手，引用通知即可一键回复；主动发私信的路径保持不变，两种场景边界更清晰 🔐 隐私与安全 🛡️ 重写敏感信息策略：区分用户隐私数据、非面向用户字段、默认摘要化展示三类，凭证 / 身份证 / 手机号等默认不展示、不复述、非必要不透传 👀 展示给用户时优先使用「目标用户 / 目标帖子」等自然表达，不再回显内部 ID — — — — — — — — — — 🎉 v1.1.3 Release Notes 🔔 New: Channel Notifications 💬 One-click subscription to channel notifications — likes, comments, replies, @ mentions, join requests and DMs are pushed automatically ↩️ Quote a notification and say \"reply\", \"comment\", \"approve\", \"refuse\" or \"reply DM\" to act in one step 🧹 Turning notifications off cleans up local state, and switching credentials auto-pauses notifications to prevent mis-delivery ✍️ Better Posting Experience 🔗 Inline clickable links via text directly in the post body — no extra setup 👤 Inline @name mentions with precise placement, freely mixed with links 🏷️ Clear topic-tag rule: #topic is supported on short posts only; long posts with topic tags are rejected up front 💬 Comments and replies support the same inline syntax, and can auto-fill from a notification by its number 🛠️ Guild Management 🆔 New ability to change the public guild number (10–14 alphanumerics, owner only) 📩 Replying to a received DM notification is now one step by quoting it; the active-DM flow stays the same, making the two scenarios cleaner 🔐 Privacy & Safety 🛡️ Revamped sensitive-data policy with three tiers — user privacy, non-user-facing fields, and summarized display; credentials, ID numbers and phone numbers are never echoed or relayed unless strictly required 👀 Summaries now prefer natural phrases like \"target user / target post\" instead of raw internal IDs","fileCount":6,"zipByteSize":20518},{"version":"1.1.2","createdAt":"2026-04-15T12:19:01.609Z","changelog":"CHANGELOG ✨ 新增帖子移动能力：现在支持将帖子移动到其他版块。 🪟 优化 Windows / PowerShell 使用体验：补充了更可靠的命令调用和 JSON 传参示例。 🛡️ 完善发帖与管理规则：新增全局发帖身份确认、移动帖子权限确认等说明，减少误操作风险。 🔁 优化异常处理说明：补充接口限流后的自动重试规则，提升使用稳定性。 ⚡ 强化快捷命令指引：明确 status: \"waiting\" 时必须继续执行 resume_command，避免误判为卡住。 ✨ Added post moving support: posts can now be moved to another channel section. 🪟 Improved Windows / PowerShell guidance: added safer command usage and JSON input examples. 🛡️ Refined posting and management rules: clarified author-role checks for global posting and permission checks for moving posts. 🔁 Improved error-handling guidance: documented automatic retry behavior for rate-limit scenarios. ⚡ Enhanced shortcut command guidance: clarified that resume_command must be continued when status: \"waiting\" is returned.","fileCount":5,"zipByteSize":14601},{"version":"1.1.1","createdAt":"2026-04-10T09:30:26.992Z","changelog":"v1.1.1 — 2026-04-10 新功能 支持退出频道、发送频道私信、查看与修改频道加入设置 优化 明确最低 CLI 版本要求（1.0.2），新增版本更新检测 New Features Support leave guild, send guild DMs, and manage join settings Improvements Enforced min CLI version (1.0.2) and added version update detection","fileCount":5,"zipByteSize":13356},{"version":"1.1.0","createdAt":"2026-04-09T13:25:12.823Z","changelog":"v1.1.0 更新日志 新增 1. 快捷命令：搜索并加入频道、快速发帖、搜索帖子并评论、删帖并禁言、获取最新/热门帖子详情，多步操作一次完成 2. 版块管理：支持创建、修改、删除子版块 3. 管理员管理：支持批量设置和移除频道管理员 4. 精华与置顶：设置/取消精华、置顶帖子，并可推送精华通知 5. 互动消息：查看点赞、评论、回复、@等互动通知 6. 分享链接解析：自动解析 pd.qq.com 分享链接识别目标内容 7. 频道内帖子搜索：在指定频道内按关键词搜索帖子 8. 帖子内嵌超链接：发帖/改帖支持嵌入可点击链接 改进 1. 加入频道自动预检验证方式，按情况引导填写答案 2. 改帖支持 --clear-images / --clear-videos 清除原有媒体后再替换 3. 成员时间字段（加入时间、禁言到期等）自动转换为可读格式 4. 其他体验优化 架构 底层从 Python MCP 脚本迁移至 tencent-channel-cli，调用更稳定，支持 schema 命令实时查询参数定义。 --- v1.1.0 Changelog New 1. Shortcut commands: Search & join channel, quick publish, search & comment, delete & mute, fetch latest/hot post details — multi-step flows in one call 2. Sub-channel management: Create, modify, and delete sub-channels 3. Admin management: Batch set or remove channel admins 4. Essence & pinning: Mark/unmark essence, pin/unpin posts, push essence notifications 5. Interaction notifications: View likes, comments, replies, and mentions 6. Share link parsing: Auto-parse pd.qq.com links to identify the target 7. In-channel post search: Search posts by keyword within a specific channel 8. Embedded hyperlinks: Add clickable links when publishing or editing posts Improvements 1. join-guild auto-detects verification mode and guides through the flow accordingly 2. alter-feed supports --clear-images / --clear-videos for true media replacement 3. Member time fields (join time, mute expiry, etc.) are auto-formatted to human-readable values 4. Other optimizations Architecture Migrated from Python MCP scripts to tencent-channel-cli for more stable invocations and real-time parameter schema queries.","fileCount":5,"zipByteSize":11810},{"version":"1.0.2","createdAt":"2026-03-27T08:45:27.009Z","changelog":"✨ 新增 分享链接解析工具 get_share_info 🔧 优化 加入频道时自动校验验证方式，避免参数错误 视频上传自动识别旋转角度，修复竖拍视频显示问题 图片上传仅使用公网CDN，过滤内网地址 🐛 修复 视频时长单位转换错误 成员列表获取优化 ✨ New Share link parser tool get_share_info 🔧 Improvements Auto-validate join verification mode to prevent parameter errors Auto-detect video rotation for correct portrait display Use public CDN only for images, filter internal addresses 🐛 Fixes Video duration unit conversion Member list retrieval optimization","fileCount":54,"zipByteSize":155790},{"version":"1.0.1","createdAt":"2026-03-25T16:08:24.817Z","changelog":"📢 更新日志 - v1.0.1 ✨ 新功能 📬 互动消息通知 新增获取互动消息功能，现在可以查看： 帖子被点赞/表态的通知 评论被点赞的通知 回复被点赞的通知 帖子收到新评论的提醒 评论收到新回复的提醒 被@提及的通知 支持翻页查看历史互动消息 可按频道筛选或查看全局通知 🔧 优化改进 📚 文档优化 重新整理了使用文档结构，查找功能说明更方便 频道管理和成员管理说明分类更清晰 ⚙️ 性能提升 优化了帖子发布和编辑的底层逻辑 减少了重复代码，提升运行效率 🧹 其他改进 清理了开发测试文件，安装包体积更小 📢 Changelog - v1.0.1 ✨ New Features 📬 Interaction Notifications Added interaction message retrieval feature, now you can view: Notifications when your posts are liked/reacted Notifications when your comments are liked Notifications when your replies are liked Alerts for new comments on your posts Alerts for new replies to your comments Notifications when you're mentioned with @ Support pagination for viewing historical interactions Filter by channel or view global notifications 🔧 Improvements 📚 Documentation Enhancement Reorganized documentation structure for easier feature lookup Clearer categorization of channel management and member management guides ⚙️ Performance Boost Optimized underlying logic for post publishing and editing Reduced code duplication for improved efficiency 🧹 Other Updates Cleaned up development test files for a smaller installation package","fileCount":53,"zipByteSize":148441}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171cxjdnjyqjxa91pj2bfmr6x83gyg1:tencent-channel-community","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171cxjdnjyqjxa91pj2bfmr6x83gyg1:tencent-channel-community` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/tencent-adm/tencent-channel-community before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:10:14.332Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tencent-adm-tencent-channel-community/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":null},"readme":"Skill: 腾讯频道Skill\n\nOwner: tencent-adm\n\nSummary: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。\n\nTags: latest:1.1.5\n\nVersion history:\n\nv1.1.5 | 2026-04-29T10:25:58.032Z | user\n\ntencent-channel-community v1.1.5\n\n🚀 升级扫码授权登录流程，登录处理更清晰安全。\n✍️ 优化 Markdown 发帖与编辑说明，补充 Markdown 内容发布和 @ 用户规则。\n🔔 更新通知订阅说明，重新登录或更换账号时会自动停止通知服务并清理本地订阅状态。\n\n🚀 Updated the QR-code authorization login flow for clearer and safer authentication handling. \n✍️ Improved Markdown publishing and editing guidance, including Markdown content and mention rules. \n🔔 Updated notification subscription behavior: re-login or account switching now stops the daemon and clears local subscription state.\n\nv1.1.4 | 2026-04-22T17:55:43.315Z | user\n\n⭐️优化频道消息订阅的体验\n-------------------------------\n⭐️optimize the pindao message subscription experience\n\nv1.1.3 | 2026-04-17T14:26:17.977Z | user\n\n🎉 v1.1.3 更新公告\n\n🔔 全新：频道消息通知\n\n💬 一键开启频道消息通知：互动消息（点赞 / 评论 / 回复 / @）、系统消息（加入申请等）、私信通知全部自动推送\n↩️ 引用通知即可快捷操作：引用通知后说「回复他」「评论他」「同意」「拒绝」「回复私信」即可一步完成\n🧹 关闭通知时自动清理本地状态，更换凭证后通知会自动暂停，避免误推送\n✍️ 发帖体验升级\n\n🔗 正文直接写 显示文字 就能生成可点击链接，不用再单独配置\n👤 正文直接写 @昵称 就能 @人，位置精确，和链接可自由混排\n🏷️ 明确话题标签规则：仅短贴支持 #话题，长贴传话题会被直接拦截\n💬 评论 / 回复也支持上述内联语法，并可通过通知编号从通知中自动填充\n🛠️ 频道管理增强\n\n🆔 新增修改频道号能力（10~14 位英文 / 数字，需频道主权限）\n📩 回复收到的私信通知更顺手，引用通知即可一键回复；主动发私信的路径保持不变，两种场景边界更清晰\n🔐 隐私与安全\n\n🛡️ 重写敏感信息策略：区分用户隐私数据、非面向用户字段、默认摘要化展示三类，凭证 / 身份证 / 手机号等默认不展示、不复述、非必要不透传\n👀 展示给用户时优先使用「目标用户 / 目标帖子」等自然表达，不再回显内部 ID\n— — — — — — — — — —\n\n🎉 v1.1.3 Release Notes\n\n🔔 New: Channel Notifications\n\n💬 One-click subscription to channel notifications — likes, comments, replies, @ mentions, join requests and DMs are pushed automatically\n↩️ Quote a notification and say \"reply\", \"comment\", \"approve\", \"refuse\" or \"reply DM\" to act in one step\n🧹 Turning notifications off cleans up local state, and switching credentials auto-pauses notifications to prevent mis-delivery\n✍️ Better Posting Experience\n\n🔗 Inline clickable links via text directly in the post body — no extra setup\n👤 Inline @name mentions with precise placement, freely mixed with links\n🏷️ Clear topic-tag rule: #topic is supported on short posts only; long posts with topic tags are rejected up front\n💬 Comments and replies support the same inline syntax, and can auto-fill from a notification by its number\n🛠️ Guild Management\n\n🆔 New ability to change the public guild number (10–14 alphanumerics, owner only)\n📩 Replying to a received DM notification is now one step by quoting it; the active-DM flow stays the same, making the two scenarios cleaner\n🔐 Privacy & Safety\n\n🛡️ Revamped sensitive-data policy with three tiers — user privacy, non-user-facing fields, and summarized display; credentials, ID numbers and phone numbers are never echoed or relayed unless strictly required\n👀 Summaries now prefer natural phrases like \"target user / target post\" instead of raw internal IDs\n\nv1.1.2 | 2026-04-15T12:19:01.609Z | user\n\nCHANGELOG\n\n\n✨ 新增帖子移动能力：现在支持将帖子移动到其他版块。\n🪟 优化 Windows / PowerShell 使用体验：补充了更可靠的命令调用和 JSON 传参示例。\n🛡️ 完善发帖与管理规则：新增全局发帖身份确认、移动帖子权限确认等说明，减少误操作风险。\n🔁 优化异常处理说明：补充接口限流后的自动重试规则，提升使用稳定性。\n⚡ 强化快捷命令指引：明确 status: \"waiting\" 时必须继续执行 resume_command，避免误判为卡住。\n\n✨ Added post moving support: posts can now be moved to another channel section.\n🪟 Improved Windows / PowerShell guidance: added safer command usage and JSON input examples.\n🛡️ Refined posting and management rules: clarified author-role checks for global posting and permission checks for moving posts.\n🔁 Improved error-handling guidance: documented automatic retry behavior for rate-limit scenarios.\n⚡ Enhanced shortcut command guidance: clarified that resume_command must be continued when status: \"waiting\" is returned.\n\nv1.1.1 | 2026-04-10T09:30:26.992Z | user\n\nv1.1.1 — 2026-04-10\n新功能\n\n支持退出频道、发送频道私信、查看与修改频道加入设置\n优化\n\n明确最低 CLI 版本要求（1.0.2），新增版本更新检测\nNew Features\n\nSupport leave guild, send guild DMs, and manage join settings\nImprovements\n\nEnforced min CLI version (1.0.2) and added version update detection\n\nv1.1.0 | 2026-04-09T13:25:12.823Z | user\n\nv1.1.0 更新日志\n\n新增\n1. 快捷命令：搜索并加入频道、快速发帖、搜索帖子并评论、删帖并禁言、获取最新/热门帖子详情，多步操作一次完成\n2. 版块管理：支持创建、修改、删除子版块\n3. 管理员管理：支持批量设置和移除频道管理员\n4. 精华与置顶：设置/取消精华、置顶帖子，并可推送精华通知\n5. 互动消息：查看点赞、评论、回复、@等互动通知\n6. 分享链接解析：自动解析 pd.qq.com 分享链接识别目标内容\n7. 频道内帖子搜索：在指定频道内按关键词搜索帖子\n8. 帖子内嵌超链接：发帖/改帖支持嵌入可点击链接\n\n改进\n1. 加入频道自动预检验证方式，按情况引导填写答案\n2. 改帖支持 --clear-images / --clear-videos 清除原有媒体后再替换\n3. 成员时间字段（加入时间、禁言到期等）自动转换为可读格式\n4. 其他体验优化\n\n架构\n底层从 Python MCP 脚本迁移至 tencent-channel-cli，调用更稳定，支持 schema 命令实时查询参数定义。\n\n---\n\nv1.1.0 Changelog\n\nNew\n1. Shortcut commands: Search & join channel, quick publish, search & comment, delete & mute, fetch latest/hot post details — multi-step flows in one call\n2. Sub-channel management: Create, modify, and delete sub-channels\n3. Admin management: Batch set or remove channel admins\n4. Essence & pinning: Mark/unmark essence, pin/unpin posts, push essence notifications\n5. Interaction notifications: View likes, comments, replies, and mentions\n6. Share link parsing: Auto-parse pd.qq.com links to identify the target\n7. In-channel post search: Search posts by keyword within a specific channel\n8. Embedded hyperlinks: Add clickable links when publishing or editing posts\n\nImprovements\n1. join-guild auto-detects verification mode and guides through the flow accordingly\n2. alter-feed supports --clear-images / --clear-videos for true media replacement\n3. Member time fields (join time, mute expiry, etc.) are auto-formatted to human-readable values\n4. Other optimizations\n\nArchitecture\nMigrated from Python MCP scripts to tencent-channel-cli for more stable invocations and real-time parameter schema queries.\n\nv1.0.2 | 2026-03-27T08:45:27.009Z | user\n\n✨ 新增\n分享链接解析工具 get_share_info\n🔧 优化\n加入频道时自动校验验证方式，避免参数错误\n视频上传自动识别旋转角度，修复竖拍视频显示问题\n图片上传仅使用公网CDN，过滤内网地址\n🐛 修复\n视频时长单位转换错误\n成员列表获取优化\n\n✨ New\nShare link parser tool get_share_info\n🔧 Improvements\nAuto-validate join verification mode to prevent parameter errors\nAuto-detect video rotation for correct portrait display\nUse public CDN only for images, filter internal addresses\n🐛 Fixes\nVideo duration unit conversion\nMember list retrieval optimization\n\nv1.0.1 | 2026-03-25T16:08:24.817Z | user\n\n📢 更新日志 - v1.0.1\n✨ 新功能\n📬 互动消息通知\n\n新增获取互动消息功能，现在可以查看：\n帖子被点赞/表态的通知\n评论被点赞的通知\n回复被点赞的通知\n帖子收到新评论的提醒\n评论收到新回复的提醒\n被@提及的通知\n支持翻页查看历史互动消息\n可按频道筛选或查看全局通知\n🔧 优化改进\n📚 文档优化\n\n重新整理了使用文档结构，查找功能说明更方便\n频道管理和成员管理说明分类更清晰\n⚙️ 性能提升\n\n优化了帖子发布和编辑的底层逻辑\n减少了重复代码，提升运行效率\n🧹 其他改进\n清理了开发测试文件，安装包体积更小\n\n📢 Changelog - v1.0.1\n✨ New Features\n📬 Interaction Notifications\n\nAdded interaction message retrieval feature, now you can view:\nNotifications when your posts are liked/reacted\nNotifications when your comments are liked\nNotifications when your replies are liked\nAlerts for new comments on your posts\nAlerts for new replies to your comments\nNotifications when you're mentioned with @\nSupport pagination for viewing historical interactions\nFilter by channel or view global notifications\n🔧 Improvements\n📚 Documentation Enhancement\n\nReorganized documentation structure for easier feature lookup\nClearer categorization of channel management and member management guides\n⚙️ Performance Boost\n\nOptimized underlying logic for post publishing and editing\nReduced code duplication for improved efficiency\n🧹 Other Updates\nCleaned up development test files for a smaller installation package\n\nv1.0.0 | 2026-03-24T06:31:02.416Z | user\n\nAll notable changes to this project will be documented in this file.\n\n---\n\n[1.0.0] - 2026-03-24\n\n🎉Initial Release\n\nFirst release of Tencent Channel Community Skills.\n\nFeatures:\n- Discover channels\n- Join channels\n- Search posts\n- Publish posts\n- Comment and interact\n- Create channels\n- Member management\n- Content management\n\n---\n\n首次发布腾讯频道社区Skills。\n\n功能：\n- 发现频道\n- 加入频道\n- 搜索帖子\n- 发布帖子\n- 评论互动\n- 创建频道\n- 成员管理\n- 内容管理\n\nArchive index:\n\nArchive v1.1.5: 7 files, 25572 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (15381b), references/manage-guild.md (8271b), references/manage-member.md (2065b), references/notification-reference.md (14975b), skill-card.md (2821b), SKILL.md (14168b)\n\nFile v1.1.5:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.5 \nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\nWindows / PowerShell 使用要求：\n\n- 如果在执行过程中提示相关命令、依赖没有安装，可以先在powershell里执行`Get-Command`或者`where.exe`命令，查找并确认是否真的没有安装\n- 执行`tencent-channel-cli`命令时，默认会使用`.ps1`脚本，但是windows可能默认的执行策略禁止运行`.ps1`脚本，会导致无交互的环境永久卡住，可以使用`.cmd`路径来调用\n- 能用 flag 时优先用 flag；只有复杂对象、数组、分页透传等场景再用 stdin JSON，**PowerShell JSON格式**：`$body = @{ guild_id = \"123\" } | ConvertTo-Json -Compress; $body | & tencent-channel-cli manage get-guild-info --json`\n\n请每天使用这个SKILL前检测下SKILL是否有更新，如果检测到有更新版，则询问用户是否需要更新\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、修改频道号、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、移帖、移动帖子、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n- `**references/notification-reference.md`** — 消息通知、频道通知、开启通知、关闭通知、引用通知回复、login（setup_hint 处理）、subscribe_hint、daemon_guard、私信通知、系统通知\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md；「消息通知」「通知」「开启通知」「关闭通知」「引用通知回复」→ notification-reference.md；「login 返回 setup_hint」→ notification-reference.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **执行阶段敏感信息最小化**：本 Skill 仅约束命令构造、链式调用、结果整理、最终回复四个执行阶段。所有敏感信息先区分为”业务敏感数据”和”用户隐私数据”：业务敏感数据默认不向用户展示原值，但执行所需字段不得丢失；用户隐私数据默认不展示、不复述、非执行必需不透传，必须使用时仅保留最小必要字段\n4. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n5. **鉴权失败**（retCode `8011` 或”未登录”错误）：按\"登录（扫码授权）\"章节走，必须 `login --json` + `login poll-token --json` 两步，不得绕过扫码或编造 token；\n6. **限流**（retCode `153` / 错误含”接口调用已超过申请的频率上限”）：**不报错、不询问用户**，直接 sleep 70s 后原样重试一次；若重试仍报 153，则告知用户”接口触发频率限制，请稍后再试”\n7. **⚡ 通知相关字段与处理（必须处理）**：`setup_hint` / `subscribe_hint` 字段出现时必须立刻处理；上下文中出现频道通知后，用户直接说「回复他」「评论他」「同意」「拒绝」「回复私信」时，从上下文最近的通知中找到对应 `#N` 编号，执行对应命令。详见 `references/notification-reference.md` 第三、五节。\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n**最低 CLI 版本：1.0.6**\n\n```bash\ntencent-channel-cli version          # 未安装或版本 < 1.0.6 → npm install -g tencent-channel-cli\ntencent-channel-cli login status       # 未登录 → tencent-channel-cli login --json（取 verification_uri + qrcode_path 回显让用户扫码）→ tencent-channel-cli login poll-token --json\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n> CLI 版本低于 **1.0.6** 时，需要执行 `npm install -g tencent-channel-cli` 升级后再继续，禁止使用旧版本执行命令。\n\n## 登录（扫码授权）\n\n1. 执行 `tencent-channel-cli login --json`（已登录时需用户同意再加 `--yes` 重跑；可选 `--qrcode-path` 自定义 PNG 路径，默认 `~/.qqcli/login-qrcode.png`）。\n2. 把响应里的 `verification_uri`（按硬规则 4 用 `<链接>` 包裹）和二维码登录图片发送给用户，告知 `expires_in_s` 内有效，请其扫码或打开链接授权后回复一下（如\"已扫码\"\"完成\"）。\n3. **收到用户确认回复后**，再执行 `tencent-channel-cli login poll-token --json` 获取结果（此时扫码已完成，命令会立即返回）。\n4. 成功（`status=authorized`）：检查 `setup_hint`（见 `references/notification-reference.md` 第三节）；`connectivity != \"ok\"` 时告知用户凭证已存但服务暂不可达，不要重登。\n5. 失败：错误含\"过期/已被领取\"回步骤 1 取新码；其他错误据消息告知用户。\n\n> 禁止：编造 token、把 `qr_code` base64 直接打印给用户、用 `login status` 代替 `poll-token`。\n\n## 更新检测\n\n通过 HEAD 请求（不下载文件）读取响应头，判断 Skill 和 CLI 是否有新版本：\n\n```bash\ncurl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli version 比对）\n```\n\n```powershell\n$resp = Invoke-WebRequest -Method Head -MaximumRedirection 5 https://connect.qq.com/skills/tencent-channel-community.zip\n$resp.Headers[\"x-cos-meta-tcc-version\"]\n$resp.Headers[\"x-cos-meta-tcc-cli-version\"]\n```\n\nSKILL有新版本时，从以下渠道获取更新：\n\n- CDN：[https://connect.qq.com/skills/tencent-channel-community.zip](https://connect.qq.com/skills/tencent-channel-community.zip)\n- GitHub：[https://github.com/tencent-connect/tencent-channel-community](https://github.com/tencent-connect/tencent-channel-community)\n- ClawHub：[https://clawhub.ai/tencent-adm/tencent-channel-community](https://clawhub.ai/tencent-adm/tencent-channel-community)\n\n## 执行阶段敏感信息策略\n\n本节仅约束 Skill 的执行阶段：命令构造、链式调用、结果整理、最终回复。所有敏感信息先区分为“用户隐私数据”和“业务敏感数据”，再按以下规则处理。\n\n### 1. 总原则\n\n- 用户隐私数据：默认不展示、不复述、非执行必需不透传；若命令确需使用，仅保留最小必要字段\n- 业务敏感数据：默认不向用户展示原值，但执行所需字段不得丢失，可在 Skill 内部链式调用中透传\n- 能用内部 ID 或上下文字段完成定位时，禁止额外传递姓名、QQ号、手机号、邮箱、详细地址等个人信息\n- 总结、表格、示例命令、resume 描述中，不得重新拼接、展开或推断完整敏感信息\n\n### 2. 用户隐私数据\n\n以下信息属于用户隐私数据（依据《个人信息保护法》第28条敏感个人信息分类）：\n\n**一般个人信息（默认不展示，脱敏后可提及）：**\n\n- 真实姓名\n- 手机号、邮箱\n- 详细地址（精确到街道/门牌）\n\n**敏感个人信息：**\n\n- 身份证号、护照号等身份证件号码\n- 银行卡号、支付账户等金融账户信息\n- 生物识别信息（人脸数据、指纹等）\n- 医疗健康信息\n- 行踪轨迹（精确位置信息）\n- 未成年人（14周岁以下）的任何个人信息\n- 宗教信仰、特定身份信息\n\n**登录凭证（最高保护级别，任何情况下不得展示、不得透传）：**\n\n- token、cookie、登录凭证\n\n处理规则：\n\n- 默认不在最终回复中展示原文，不在总结、表格、示例命令、resume 描述中回显\n- 非执行必需不透传；命令确需使用时，仅保留最小必要字段\n- 若必须提及，只允许脱敏或泛化表达，不给出完整值\n\n### 3. `非面向用户字段`\n\n这些字段主要服务于 Skill 的内部执行和结果衔接，普通用户通常不需要理解或查看其原始值。：\n\n- `guild_id`、`channel_id`、`tiny_id`\n- `feed_id`、`comment_id`、`reply_id`\n- `author_id`、`target_user_id`\n- `face_seq` / `avatar_seq`、`role_id`、`level_role_id`\n- `channelInfo` / `channelSign`、`raw`\n- `create_time_raw`、`attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie`\n\n处理规则：\n\n- 默认不向用户展示原值,用户并不理解,向用户说明时优先使用中文业务语义，不直接暴露内部字段值\n- 允许在 Skill 内部链式调用中保留和透传\n\n### 4. 默认摘要化展示\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n> 优先使用“目标用户”“目标帖子”“目标频道”“已匹配到对应对象”等摘要化表达，不直接回显字段原值\n\n### 6. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳；禁言时间戳为 `0` 时显示\"无禁言\"\n\n## 快捷命令\n\n当匹配下列意图时，优先使用快捷命令。一次调用替代多次 tool_call，提高处理速度。\n\n\n| 意图           | 命令                                                                                                    |\n| ------------ | ----------------------------------------------------------------------------------------------------- |\n| 搜索频道并加入      | `tencent-channel-cli manage search-and-join --keyword \"<关键词>\" --json`                                 |\n| 在频道内发帖        | `tencent-channel-cli feed quick-publish --content \"<内容>\" --json`（含 Markdown 语法时改用 `--markdown-content`） |\n| 搜索帖子并评论      | `tencent-channel-cli feed search-and-comment --guild-id <ID> --query \"<关键词>\" --content \"<评论>\" --json` |\n| 删帖并禁言        | `tencent-channel-cli feed delete-and-mute --guild-id <ID> --query \"<关键词>\" --json`                     |\n| 获取最新帖子详情并且总结 | `tencent-channel-cli feed latest-feeds-detail --json`                                                 |\n| 获取热门帖子详情并且总结 | `tencent-channel-cli feed hot-feeds-detail --json`                                                    |\n\n\n快捷命令是多轮交互：返回 `status: \"waiting\"` 时**不要放弃、不要改用单命令、不要误判为卡住**，必须继续执行返回里的 `resume_command`。`--resume-id` 全程不变。\n\n`latest-feeds-detail` 和`hot-feeds-detail` 默认返回的是帖子详情，需要再自行进行总结\n\n### 交互协议示例\n\n```\n# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}\n```\n\n> **重要**：所有快捷命令调用必须加 `--json` flag。`status: \"done\"` 表示完成，`status: \"waiting\"` 表示必须继续 resume。\n> **PowerShell**：如果返回里的 `resume_command` 是裸命令，优先手动替换成 `tencent-channel-cli ...`（绝对路径或已加入 PATH）后再执行；不要尝试在同一个命令里交互式按键选择。\n\nFile v1.1.5:_meta.json\n\n{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.5\",\n  \"publishedAt\": 1777458358032\n}\n\nFile v1.1.5:references/feed-reference.md\n\n# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链；**需已加入该频道**，否则报 retCode=130000 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链；**Markdown 帖子可编辑**（用 `--markdown-content`，见「陷阱」） |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n| 移动帖子到其他版块 | `move-feed` | 需提供原版块 ID 和目标版块 ID |\n\n## 核心规则\n\n### get-guild-feeds\n\n- **前置条件**：满足以下任一条件才可调用；否则告知用户并引导加入：\n  - 该频道为**公开频道**（无需加入即可浏览）\n  - 当前账号已是该频道的**成员**（可通过 `get-my-join-guild-info` 确认）\n  - 不确定是否公开时，**直接执行**，报错再引导——返回 `retCode=20047` 时，告知用户该频道需先加入才能浏览，引导通过 `manage search-and-join` 加入后重试\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回空列表（data 为空数组）→ 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **全局发帖身份确认**：不传 guild_id/channel_id 时为「作者身份全局发帖」，要求账号具有「作者」角色，普通成员**无法**使用。执行前必须向用户确认其具有作者身份，确认后加 `--yes` 执行；未确认则引导用户传入 guild_id 和 channel_id 以普通成员身份发帖\n3. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n4. **话题标签（#话题）**：仅**短贴**（feed_type=1）支持话题标签。**长贴（feed_type=2）不支持话题标签**。CLI 对长贴传入话题参数（`topic_names` / `--topic-name` / 正文中的 `#[话题]()` 语法）会直接报错拦截\n5. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n6. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n7. **内容格式（⚠️ 重要）**：\n   - `--content` 是**纯文本模式**，后端不渲染任何 Markdown 语法——`##`、`**粗体**`、`- 列表`、`> 引用`、代码块等均原样显示为符号\n   - 内容含任何 Markdown 语法时，**必须改用 `--markdown-content`**（后端设置 `is_markdown=true`，客户端才会按 Markdown 渲染）\n   - CLI 会在运行时检测 `--content` 里的 Markdown 语法并直接报错，引导改用 `--markdown-content`\n   - `--content` 与 `--markdown-content` 互斥，不可同时传\n8. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `publish-feed` / `alter-feed` 自动补取\n- 帖子分享链接用 `get-feed-share-url`，**频道**分享链接用 `get-guild-share-url`\n\n### 链式字段：replies_preview\n\n每条回复含：`reply_id`（删除/回复该回复时用）、`author_id`（回复时传 target_user_id）、`target_reply_id` / `target_user_id`（楼中楼关系）、`create_time_raw`\n\n## 翻页字段速查（命令→字段名）\n\n| 命令 | stdin JSON 字段名 | CLI flag | 注意 |\n|------|-------------------|----------|------|\n| `get-guild-feeds` | `feed_attach_info` | `--feed-attach-info` | |\n| `get-channel-timeline-feeds` | `feed_attch_info`（少个 **a**） | `--feed-attach-info` | stdin JSON 拼写与其他命令不同 |\n| `get-feed-comments` | `attach_info` | `--attach-info` | |\n| `get-notices` | `attach_info` | `--attach-info` | |\n| `get-next-page-replies` | `attach_info` | `--attach-info` | 首次值从 get-feed-comments 评论对象获取 |\n| `search-guild-feeds` | `cookie` | `--next-page-cookie` | stdin JSON 字段名与 CLI flag 差异大；**需已加入该频道** |\n\n> **翻页安全规则**：翻页时严格用上次返回的字段名和值原样传回，不要跨命令复用翻页令牌。\n\n### move-feed（移动帖子）\n\n执行前必须向用户确认其在**目标频道**的身份，用户明确确认自己是该频道的 **超级管理员** 或 **频道主** 后，方可继续执行。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 图片/视频路径 | `file_paths`(JSON) 仅传图片，`video_paths`(JSON) 仅传视频，混用导致上传失败（business_type 错误）。推荐 `--image` / `--video`；**短贴**中 `--image` 与 `--video` 互斥，同时传入会被本地拦截；**长贴**（有标题 / feed_type=2）允许图片与视频同时存在 |\n| alter-feed 替换媒体 | 默认**保留**原帖所有图片/视频并追加新增内容。要**替换**时必须先清除：`--clear-images` 清除原帖所有图片，`--clear-videos` 清除原帖所有视频；可与 `--image`/`--video` 连用实现\"先清后加\" |\n| alter-feed 帖子类型 | `alter-feed` **不接受** `feed_type` 参数，帖子类型始终从原帖自动继承。不存在\"编辑后变成短贴\"的风险 |\n| images 字段名 | 已有 CDN URL 时用 `images`，每项字段名为 `url`，**不是** `picUrl` |\n| 板块置顶 | `top-feed` 的 `top_type=2/3`（板块置顶）时 `channel_id` 必填，需通过 stdin JSON 传入 |\n| 删除评论必须 --yes | `do-comment --comment-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必须 --yes | `do-reply --reply-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必填字段 | 除 reply_id 外还需：`replier_id`、`feed_id`、`feed_author_id`、`feed_create_time`、`comment_id`、`comment_author_id`、`comment_create_time`、`guild_id`、`channel_id` |\n| @用户 ID 格式 | `at_users[].id` 必须是 tinyid（通常 >10 位数字），**严禁**传 QQ 号（≤10 位），CLI 会直接报错拦截 |\n| alter-feed @用户 | 支持 `--at-user tinyid:昵称` CLI flag（可多次指定），与 publish-feed 一致 |\n| 裸 URL 写入正文 | **禁止**在 `content` 里直接拼入裸 URL（如 `https://example.com`）——裸 URL 在帖子里原样显示为纯文本，不可点击。可点击链接必须用内联语法或 `--link` / `urls` 传入 |\n| 长贴不支持话题标签 | CLI 在发帖/编辑时如检测到话题参数（`topic_names` / `--topic-name` / `#[话题]()` 语法）会直接报错拦截，请改用短贴或移除话题参数 |\n| alter-feed 编辑 Markdown 帖子 | `alter-feed` 获取原帖后检测 `is_markdown=true` 时：(1) `--content` / `content_file` 会被直接拒绝（报错：Markdown 帖子不可用纯文本模式编辑，请改用 `--markdown-content`）；(2) 提供 `--markdown-content` 则以新 Markdown 内容更新；(3) 不传任何内容参数则自动继承原 Markdown 源码（仅改标题/媒体/话题等）。反之，**纯文本帖子不接受 `--markdown-content`** |\n| Markdown 短贴不能嵌入媒体 | **短贴**（feed_type=1）的 `--markdown-content` 中**禁止**使用 `[(0,N)](@img)`、`[video:N]`、`[](mqqapi://markdown/node?id=video...)` 等嵌入语法——这些语法仅用于**长贴**。短贴的图片/视频必须通过 `--image`/`--video` 传入，以附件形式附到帖子尾部。在 markdown 正文中嵌入后又通过 `--video` 传入同一视频，会导致视频在帖子中出现两次（markdown 渲染一次 + 附件一次）。CLI 会直接报错拦截 |\n| `search-guild-feeds` 需加入频道 | `search-guild-feeds` 只能搜索**已加入**的频道。对未加入的频道执行会返回 `retCode=130000`（搜索失败）。遇到此错误时，提示用户先通过 `search-and-join` 或 `manage search-guild-content` 找到并加入目标频道，再重试搜索 |\n| 评论/回复无互动权限 | `do-comment` / `do-reply` 返回 `retCode=20006`（\"加入频道后可互动\"）时，说明该频道未开放访客互动。**不做前置检查**，报错后告知用户：该频道需先加入才能评论/回复，可通过 `manage search-and-join` 加入后重试 |\n\n## 内嵌链接与 @ 语法\n\n`publish-feed` / `alter-feed` / `do-comment` / `do-reply` 均支持两种方式混入可点击链接和 @用户，**推荐使用内联语法**，更直观且位置精确。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123\"\n  channel_id = \"456\"\n  content = \"本周技术分享已更新，点击查看详情了解更多。\"\n  urls = @(@{ url = \"https://example.com/weekly\"; displayText = \"查看详情\" })\n} | ConvertTo-Json -Depth 6 -Compress\n$body | tencent-channel-cli feed publish-feed\n```\n\n**字段：**\n### 内联语法（推荐）\n\n直接在 `--content` / `content` 正文中使用：\n\n| 语法 | 说明 |\n|------|------|\n| `[显示文字](https://url)` | 可点击超链接，链接出现在正文对应位置 |\n| `@[昵称](tinyid)` | @提及用户，@出现在正文对应位置 |\n\n两者可自由混排：\n\n```bash\ntencent-channel-cli feed publish-feed \\\n  --guild-id 123 --channel-id 456 \\\n  --content \"本周技术分享见 [详情页](https://example.com/weekly)，@[张三](144115219800577368) 请查收。\"\n```\n\n```bash\ntencent-channel-cli feed do-comment \\\n  --feed-id B_xxx --feed-create-time 1700000000 \\\n  --content \"参考 [官方文档](https://docs.example.com) 里的说明，@[李四](144115219800577369) 也看看。\"\n```\n\n### 独立参数（备选）\n\n需要批量传入、或链接/@ 出现在正文末尾时，也可用单独参数：\n\n| 参数 | 语法 | 适用命令 |\n|------|------|---------|\n| `--link url\\|显示文字` | CLI flag，可多次指定 | 所有写入命令 |\n| `--at-user tinyid:昵称` | CLI flag，可多次指定 | 所有写入命令（**Markdown 模式除外**） |\n| `urls` (stdin JSON) | `[{\"url\":\"…\",\"displayText\":\"…\"}]` | 所有写入命令 |\n| `at_users` (stdin JSON) | `[{\"id\":\"tinyid\",\"nick\":\"昵称\"}]` | 所有写入命令（**Markdown 模式除外**） |\n\n**注意**：独立参数中的链接/@ 被追加在正文**末尾**，位置不可控；如需精确控制位置，用内联语法。\n\n### Markdown 模式 @用户\n\n`--markdown-content` 中 @用户的语法与纯文本模式**不同**，裸 `@昵称` 不会蓝显。必须使用：\n\n| 语法 | 示例 |\n|------|------|\n| `[@昵称](mqqapi://markdown/mention?at_type=1&at_tinyid=<tinyid>)` | `[@张三](mqqapi://markdown/mention?at_type=1&at_tinyid=144115219800577368)` |\n\n缺少 tinyid 时，先调 `guild_member_search` 按昵称查询获取。\n\n> ⚠️ Markdown 模式下传 `--at-user` 或 `at_users` 会被 CLI 直接报错拦截，必须改用上面的 mqqapi 格式。\n\n**用户自然语言 → 参数组装规则：**\n\n- 用户说「链接是 X，显示文本是 Y」→ 内联写 `[Y](X)` 放入 content\n- 用户说「把 X 做成超链接」→ 内联写 `[X](X)` 或根据上下文取文案\n- 用户说「@张三」→ 先查 `tiny_id`，再内联写 `@[张三](tinyid)` 放入 content\n- `content` 字段只写正文文字和内联标记，**禁止**把裸 URL 拼入正文\n- **用户只提供了 URL、未给显示文字时**：用 WebFetch 抓取该页面的 `<title>` 作为显示文字，再内联写入 content 或组装 `urls`/`--link`。抓取失败时以 URL 本身兜底\n- **用户消息或提供的内容里包含裸 URL 时**：主动识别，询问用户是否转换为可点击链接；确认后用 WebFetch 抓取页面标题作为显示文字，从正文中移除裸 URL，改用内联语法或 `urls`/`--link` 传入\n\n## 自动化运营\n\n以下能力通过组合已有原子命令实现，适合结合定时任务做周期性自动化。\n\n### 内容巡检\n\n扫描频道帖子，AI 判断是否违规，违规则删除。\n\n**推荐路径：**\n1. `get-guild-feeds`（get_type=2，最新）或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整标题和正文\n3. AI 根据内容判断是否违规（水帖、广告、外链、交友、风险等）\n4. 对违规帖子调 `del-feed --yes` 删除（高风险，需确认）\n\n**参数建议：**\n- 通过 `count` 控制每次扫描数量（建议 20~50）\n- 可指定 `channel-id` 限定版块范围\n- 定时调度间隔建议 30~60 分钟\n\n### 问答自动回复\n\n扫描频道帖子，识别求助帖，搜索相关内容后自动回复。\n\n**推荐路径：**\n1. `get-guild-feeds` 或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整内容\n3. AI 判断是否为求助帖（含提问意图：问号、\"怎么\"、\"如何\"、\"求助\"等）\n4. 对求助帖提取关键词，调 `search-guild-feeds` 搜索频道内相关帖子\n5. 整理相关帖子内容生成回复，调 `do-comment` 发布评论\n6. 无相关内容时发布礼貌提示\n\n**参数建议：**\n- `scan_count` 建议 20，每次处理适量帖子\n- 每条回复引用的参考帖子建议 ≤3 条\n- 支持 dry_run 模式：先分析不发布，确认后再正式运行\n\nFile v1.1.5:references/manage-guild.md\n\n# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 修改频道号 | `modify-guild-number` | 10~14 位英文/数字，需频道主权限；别和 `guild_id` 混淆 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直接加入 | 否，CLI flag 即可 |\n| `JOIN_GUILD_TYPE_ADMIN_AUDIT` | 发送验证消息，管理员审核 | 否 |\n| `JOIN_GUILD_TYPE_DISABLE` | 不允许任何人加入 | 否 |\n| `JOIN_GUILD_TYPE_QUESTION_WITH_ADMIN_AUDIT` | 回答问题 + 管理员审核 | 是，需 `setting.question.items` |\n| `JOIN_GUILD_TYPE_MULTI_QUESTION` | 正确回答问题 | 是，需 `setting.question.items`（含 answer） |\n| `JOIN_GUILD_TYPE_QUIZ` | 答题（选择题） | 是，需 `setting.quiz` 完整结构 |\n\n> 高级类型（后三种）必须通过 stdin JSON 传入完整 `setting` 对象，CLI flag 仅支持前三种基础类型。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123456\"\n  join_type = \"JOIN_GUILD_TYPE_MULTI_QUESTION\"\n  setting = @{\n    question = @{\n      items = @(\n        @{ title = \"问题1\"; answer = \"A\" },\n        @{ title = \"问题2\"; answer = \"B\" }\n      )\n    }\n  }\n} | ConvertTo-Json -Depth 8 -Compress\n$body | tencent-channel-cli manage update-join-guild-setting\n```\n\n## 频道私信规则\n\n`push-group-dm-msg` 发送普通私信消息到指定用户。支持两种模式：\n\n**⚠️ 模式选择决策规则（必须遵守）：**\n- 用户**引用了一条私信通知**并说\"回复私信\" → 使用**模式 2**（`--ref`）\n- 用户说\"给某人发私信\"/\"发私信给某人\"（**没有引用私信通知**） → 使用**模式 1**（先查 `tiny_id`，再直接发送）\n- **严禁**在主动发私信场景使用 `--ref`，`--ref` 仅用于回复已收到的私信通知\n\n**模式 1：直接发送（主动发私信）**\n1. 先通过 `guild-member-search` 或 `get-guild-member-list` 查到目标用户的 `tiny_id`\n2. 确定来源频道的 `guild_id`（即你和目标用户共同所在的频道）\n3. 调用：`tencent-channel-cli manage push-group-dm-msg --peer-tiny-id <tiny_id> --source-guild-id <guild_id> --text \"内容\" --json`\n\n**模式 2：回复私信通知（通过 --ref 自动填充）**\n- `ref`：通知编号（如 #1），CLI 自动从本地通知记录查找私信会话信息，并通过消息漫游获取对方 tinyId 和 sourceGuildId\n- 调用：`tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n- **限制**：对方未回复之前只能发送 1 条消息（retCode `100707`）\n- **严禁**在未获取用户同意的情况下批量发送私信\n\n## 退出频道规则\n\n`leave-guild` 退出指定频道，**不可逆**操作。退出后需要重新加入，且如果频道有验证设置，需重新通过验证。高风险操作，需 `--yes` 确认。\n\n## 陷阱（schema 不体现）\n\n- **频道号 ≠ guild_id**：用户可见的频道号（如 `pd20589127`）是展示层标识，不能当作 `guild_id` 使用。获取真实 guild_id 的方式：通过 `get-share-info` 解析分享链接，或从 `get-my-join-guild-info` 返回中提取。修改频道号用 `modify-guild-number --guild-id <ID> --guild-number <新频道号>`（10~14 位英文/数字）\n- `get-share-info` 仅限 `pd.qq.com` 域名链接\n- `join-guild` 的 `join_guild_answers` 和 `join_guild_comment` 仅 stdin JSON 可传\n- `push-group-dm-msg` 的 `source-guild-id` 不是目标用户所在频道，而是发送者所在的来源频道\n- `update-join-guild-setting` 高级类型未传 `setting` 对象会直接报错\n- Windows / PowerShell 下不要直接照抄 bash 的 `echo '{...}' | ...`；复杂对象优先用 `ConvertTo-Json`\n\nFile v1.1.5:references/manage-member.md\n\n# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |\n\nFile v1.1.5:references/notification-reference.md\n\n# 频道消息通知参考\n\n## 一、概述\n\n频道消息通知覆盖所有频道级通知，包括帖子互动（点赞/评论/回复/@）、系统消息（加入申请等）、私信通知等。\n\n> ⚠️ **当前仅支持 OpenClaw 平台**，非 OpenClaw 环境下无法自动推送通知。\n\n## 二、命令路由表\n\n| 用户意图 | CLI 命令 | 关键约束 |\n|---------|----------|---------|\n| 开启频道消息通知 / 帮我开启通知 | `notices-on` → `notices-on --confirm` | 两步：先测试推送，用户确认收到后加 `--confirm` 正式开启 |\n| 关闭/取消频道消息通知 | `notices-off --session-key \"<sessionKey>\"` | 带 sessionKey 时仅移除该通道；不带时全量关闭 |\n| 查看通知状态 | `notices-status` | 查看是否开启、推送模式、已注册通道列表（`registered_routes`）等 |\n| 检查有没有新通知 | `check-notices` | 增量检查是否有新通知，需先开启通知 |\n| 获取最近通知记录（本地） | `get-recent-notices` | 纯本地读取，用于按编号查找通知上下文 |\n| 评论帖子（评论他） | `do-comment --ref <编号> --content \"内容\"` | 评论帖子本身，按通知编号自动填充 feed 信息 |\n| 回复评论（回复他） | `do-reply --ref <编号> --content \"内容\"` | 回复该用户的评论，自动查找对应评论并回复 |\n| 回复私信（处理通知） | `push-group-dm-msg --ref <编号> --text \"内容\"` | 仅用于回复已收到的私信通知，`--ref` 自动查找对方信息 |\n| 主动发私信（非通知） | `push-group-dm-msg --peer-tiny-id <id> --source-guild-id <id> --text \"内容\"` | 先通过 `guild-member-search` 查到 tiny_id，详见 manage-guild.md |\n\n## 三、自动引导（⚠️ 必须遵守！）\n\nCLI 在**首次安装或版本升级后**第一次使用时引导用户开启频道消息通知（同一版本只提示一次）。\n\n以下 hint 字段出现在 CLI 返回的 JSON 中时，Agent **必须立刻处理**，不得忽略：\n\n**`setup_hint` 字段**（出现在 `login` / `login poll-token` 返回结果中）：\n- 表示用户刚完成登录但尚未开启频道消息通知\n- Agent 收到此字段时**必须**：\n  1. 向用户展示 `setup_hint.message` 内容（如\"登录成功！建议开启频道消息通知\"）\n  2. 主动询问用户是否要开启\n  3. 如果用户同意，执行 `setup_hint.command` 中的命令\n- **示例**：收到 `\"setup_hint\": {\"action\":\"subscribe_notices\", \"command\":\"tencent-channel-cli manage notices-on\", \"message\":\"登录成功！建议开启「频道消息通知」...\"}`，应回复类似：\"登录成功！建议开启频道消息通知，有新互动时自动推送给你。要开启吗？\"\n\n**`subscribe_hint` 字段**（出现在任意命令返回结果中）：\n- 表示用户尚未开启频道消息通知（仅在首次安装或版本升级后出现一次）\n- Agent 收到此字段时**必须**：\n  1. 告知用户可以开启频道消息通知，有新互动时自动推送\n  2. 如果用户同意，执行 `subscribe_hint.command` 中的命令开启\n  3. 此 hint 每天最多出现一次，如果用户明确关闭了通知，则不会再出现\n\n## 四、开启/关闭流程规则（重要！两步开启 + 根据返回字段区分状态）\n\n**重要：通知是全局的，一次开启覆盖用户已加入的所有频道。不需要按频道单独开启，也不需要在加入新频道时重新开启。**\n\n**⚠️ 多通道注意事项（必须遵守！）：**\n- 通知服务是全局的，但**推送路由是按通道（sessionKey）注册的**。即使通知已开启（`active=true`），当前通道也可能未注册推送路由\n- **Agent 不能仅凭 `active=true` 就跳过 `notices-on` 调用**。用户说\"开启频道消息通知\"时，必须执行 `notices-on --session-key <当前通道sessionKey>` 注册当前通道\n- 可通过 `notices-status` 查看 `registered_routes` 字段确认哪些通道已注册\n\n1. **开启通知（两步流程）**：用户说\"帮我开启频道消息通知\"时，**必须带上当前会话的 sessionKey**：\n\n   **第一步：推送测试**\n   ```bash\n   tencent-channel-cli manage notices-on --session-key \"<sessionKey>\" --json\n   ```\n   - `--session-key`：当前会话的 sessionKey（格式 `agent:<agentid>:`，如 `agent:main:`、`agent:agent2:`），优先通过 session_status 工具获取，获取不到时从当前会话的 Agent 上下文 systemPrompt 中提取，严禁自行拼接或猜测\n   - ⚠️ **幻觉检查**：如果获取到的 sessionKey 形如 `agent:main:main...`（冒号后有多余重复内容），极可能是 Agent 产生了幻觉，请重新通过 session_status 工具获取，不要直接使用\n   - 此步**不会开启订阅**，仅发送一条测试消息验证推送通道是否正常\n\n   **根据返回的 `status` 字段判断**：\n   - `status = \"test_sent\"` → 测试消息已发出。返回中包含 `confirm_cmd` 字段（确认命令）。**Agent 必须告诉用户\"已发送测试推送，请确认是否收到\"，然后等待用户明确回复（如\"收到了\"、\"确认开启\"等），严禁自动执行 confirm_cmd。** 只有用户主动确认后才执行 `confirm_cmd` 中的命令\n   - `status = \"test_failed\"` → 推送失败。**Agent 告知用户推送失败原因（`error` 和 `suggestions` 字段），不继续第二步**\n   - `status = \"unsupported\"` → 非 OpenClaw 环境，无法开启\n\n   **第二步：正式开启**（用户确认收到测试消息后）\n   ```bash\n   tencent-channel-cli manage notices-on --session-key \"<sessionKey>\" --confirm --json\n   ```\n   - 多 Agent 场景：用户可以从不同通道分别开启订阅，每个通道的路由独立注册，互不覆盖\n\n2. **根据正式开启后返回结果的 `platform` 字段决定后续行为**：\n\n   **情况 A：`platform = \"openclaw\"`（OpenClaw 环境）**\n   - 通知已开启，有新互动时会自动推送到上下文\n   - 多 Agent 多通道：用户从 QQBot 开启订阅 → QQBot 收到通知；再从飞书开启 → 飞书也收到通知；多通道并行推送\n   - **向用户报告时，只需简洁告知\"频道消息通知已开启，有新互动会自动推送\"即可，不需要展示 PID、进程状态等内部信息**\n\n   **情况 B：`platform = \"other\"`（非 OpenClaw 环境）**\n   - 无法自动推送通知\n   - 告知用户：当前环境未检测到 OpenClaw Cli，无法自动推送频道通知。\n\n3. **关闭通知**：用户说\"关闭频道消息通知\"/\"取消频道消息通知\"时，**必须带上当前会话的 sessionKey**：\n\n   ```bash\n   tencent-channel-cli manage notices-off --session-key \"<sessionKey>\" --json\n   ```\n   - `--session-key`：当前会话的 sessionKey（格式 `agent:<agentid>:`），优先通过 session_status 工具获取，获取不到时从当前会话的 Agent 上下文 systemPrompt 中提取，严禁自行拼接或猜测\n\n   **根据返回的 `status` 字段判断**：\n   - `status = \"route_removed\"` → 已移除该通道，其他通道继续接收通知。`remaining_count` 表示剩余通道数\n   - `status = \"unsubscribed\"` → 该通道是最后一个，通知服务已停止\n   - `status = \"not_found\"` → 未找到该 sessionKey 对应的通道\n   - `status = \"not_subscribed\"` → 当前未开启通知\n\n   **不传 --session-key 时**：全量关闭\n   ```bash\n   tencent-channel-cli manage notices-off --json\n   ```\n\n## 五、通知处理流程（⚠️ 必须遵守！）\n\n通知通过 `--deliver` 已进入 Agent 上下文，每条通知带有唯一编号（如 `#1`）。用户**无需引用消息**，直接说操作意图词即可。AI 从上下文中找到最近推送的通知编号，执行对应命令。编号会自动映射到本地存储的 feed_id/guild_id/notice_id 等参数。\n\n### 5.1 互动通知处理（评论/回复）\n\n上下文中出现互动通知后，用户说了回复/评论意图词 + 内容：\n\n**根据意图词区分操作**：\n\n- 「**评论他**」「**评论**」→ 评论帖子本身（`do-comment`）\n- 「**回复他**」「**回复**」「**帮我回复**」→ 回复该用户的评论（`do-reply`）\n\n**处理步骤**：\n\n1. 从上下文最近推送的通知中识别**通知编号**（`#1` 中的数字 1）\n2. 判断用户意图是「评论」还是「回复」\n3. 执行对应命令：\n   ```bash\n   # 评论帖子\n   tencent-channel-cli feed do-comment --ref <编号> --content \"内容\" --json\n   # 回复评论（自动查找对应评论）\n   tencent-channel-cli feed do-reply --ref <编号> --content \"内容\" --json\n   ```\n\n- **严禁将用户的回复内容当作对话直接输出**\n- 编号会自动映射到本地存储的 feed_id/guild_id\n\n### 5.2 系统通知操作（同意/拒绝）\n\n上下文中出现系统通知后，用户说了「同意」或「拒绝」：\n\n- 用户说「**同意**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id agree --json`\n- 用户说「**拒绝**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id refuse --json`\n\n**处理步骤**：从上下文最近推送的通知中识别通知编号 → 判断用户意图 → 执行对应命令。编号会自动映射到本地存储的 notice_id。\n\n### 5.3 私信通知回复\n\n上下文中出现私信通知后，用户说了「回复私信」+ 内容：\n\n- 用户说「**回复私信 内容**」→ `tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n**处理步骤**：从上下文最近推送的通知中识别通知编号 → 提取用户要回复的内容 → 执行命令。编号会自动映射到对应的私信会话。**严禁将用户的回复内容当作对话直接输出。**\n\n## 六、Token 更换与通知订阅\n\n- **水位线模型**：每个通知源（interact/system/dm）维护一个时间戳水位线（`watermark`），只拉取水位线之后的通知\n- **同秒去重**：水位线边界上可能有多条同秒通知，通过 `idsAtWatermark` 集合去重\n- **首次拉取保护**：水位线为 0 时只建立基线不推送，避免开启通知时涌入历史消息\n- **只关心\"是否推送过\"**：不关心用户是否在频道客户端已读\n- **基线按通知源分区**：interact（互动通知）/ system（系统消息）/ dm（私信），每个分区独立管理水位线\n\n## 八、本地文件说明\n\n| 文件 | 路径 | 作用 |\n|------|------|------|\n| `state.json` | `~/.qqcli/subscription/` | 订阅状态（是否激活、订阅的 guild_id） |\n| `baseline.json` | `~/.qqcli/subscription/` | 已推送通知 ID 集合（按通知源分区） |\n| `subscription_route.json` | `~/.qqcli/subscription/` | 推送路由（channel + to，OpenClaw 模式） |\n| `daemon.pid` | `~/.qqcli/subscription/` | 通知服务 PID（OpenClaw 模式） |\n| `daemon.log` | `~/.qqcli/subscription/` | 通知服务运行日志（OpenClaw 模式） |\n| `heartbeat` | `~/.qqcli/subscription/` | 通知服务心跳时间戳 |\n\n## 九、Token 更换与通知订阅\n\n当用户更换 token（通过 `login` / `login logout` 后重新登录等任何方式）时，CLI 会**自动停止通知服务并清理所有订阅文件**。\n\n**Agent 行为规范（⚠️ 必须遵守！）**：\n- Token 更换后，**不要自动重新订阅通知**\n- 只需告知用户：凭证已更新，频道消息通知已关闭，如需继续接收通知请说\"帮我开启频道消息通知\"\n- 由用户自己决定是否重新开启\n\n## 七、Daemon 拉取与推送时序图\n\nDaemon 进程包含两个并发协程：**主循环**负责拉取和推送，**心跳协程**每 10s 独立写心跳文件（不受主循环阻塞影响）。\n\n```\n心跳协程: 每 10s 写心跳文件 (独立运行, 超时窗口 60s)\n─────────────────────────────────────────────────────\n\n主循环 (单线程, 循环执行):\n\n  ┌─────────────────────────────────────────────┐\n  │ ① 摘要检测 digestHasUpdate()                │\n  │    → 返回 interactChanged, systemChanged    │\n  │    → 返回 serverDelay (下次轮询间隔)         │\n  ├─────────────────────────────────────────────┤\n  │ ② 按需拉取 (摘要有变化才拉详情)              │\n  │    interactChanged → pollOnce()             │\n  │    systemChanged   → pollSystemNotices()    │\n  │    私信每轮都拉     → pollDMNotices()        │\n  ├─────────────────────────────────────────────┤\n  │ ③ 逐条推送 pushNotifications()              │\n  │    FormatNoticeCard() → 格式化卡片           │\n  │    deliverOneNotification() → 逐条推送       │\n  │      └─ openclaw agent --deliver (阻塞15~30s)│\n  │    推送成功 → MarkRecentNoticePushed()       │\n  │    重推之前失败的通知                         │\n  ├─────────────────────────────────────────────┤\n  │ ④ 保存基线 bm.Save(baseline)                │\n  ├─────────────────────────────────────────────┤\n  │ ⑤ 检查: CLI版本更新 / 订阅状态 / push_route  │\n  ├─────────────────────────────────────────────┤\n  │ ⑥ time.Sleep(nextPoll) 通常 5s              │\n  └──────────────── 回到 ① ─────────────────────┘\n```\n\n### GuardDaemon 守护机制\n\n任意 CLI 命令执行后触发 `runGuardDaemon()`：\n1. 读取心跳文件 mtime\n2. mtime < 60s 且进程存活 → 不做操作\n3. mtime >= 60s 或进程不存在 → `ForkDaemon()` 启动新实例\n\n### 关键设计点\n\n| 设计 | 说明 |\n|------|------|\n| 摘要门控 | 互动/系统通知由摘要前置检测，有变化才拉详情；私信无摘要，每轮都拉 |\n| 推送阻塞 | `openclaw agent --deliver` 同步阻塞 15-30s（LLM 处理） |\n| 心跳独立 | 心跳协程每 10s 写一次，不受推送阻塞影响 |\n| 逐条推送 | 每条通知独立推送，成功标记 pushed，失败下轮重试 |\n| 基线最后保存 | 三类通知全部完成后才保存，确保一致性 |\n\n## 八、问题定位\n\n| 提示 / 错误 | 处理 |\n|-------------|------|\n| MCP 鉴权失败（retCode `8011`） | 执行 `tencent-channel-cli login` 重新登录（agent 用 `login --json` 获取 `verification_uri` / `qrcode_path` 回显给用户扫码 → `login poll-token --json`）→ `tencent-channel-cli doctor` 确认 |\n\nFile v1.1.5:skill-card.md\n\n## Description:\n\n腾讯频道(QQ频道)社区管理 skill（CLI 版），用于频道创建、设置、搜索、成员管理、发帖、评论、通知、私信、内容巡检和问答自动回复等任务。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[tencent-adm](https://clawhub.ai/user/tencent-adm)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and community managers use this skill to operate QQ/Tencent channels through the Tencent channel CLI, including channel administration, member actions, content publishing, notifications, private messages, moderation review, and assisted Q&A workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill relies on a globally installed Tencent channel CLI that may change outside the skill package.\n\nMitigation: Use a pinned and verified CLI version before granting account access or executing management commands.\n\nRisk: The skill can perform public posting, deletions, member kicks, mutes, approvals, DMs, and notification actions.\n\nMitigation: Require explicit user confirmation before destructive, permission-changing, private-message, or public-posting operations.\n\nRisk: Some workflows use command strings returned at runtime, including login and notification setup flows.\n\nMitigation: Review returned commands before execution and avoid blindly running command strings.\n\nRisk: The skill may fetch or transform user-provided URLs for posting workflows.\n\nMitigation: Avoid automatic URL fetching unless the URL is clearly safe and relevant to the user's requested post.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/tencent-adm/skills/tencent-channel-community)\n- [Tencent Connect AI](https://connect.qq.com/ai)\n- [频道管理（manage-guild）](artifact/references/manage-guild.md)\n- [成员管理（manage-member）](artifact/references/manage-member.md)\n- [内容管理（feed）](artifact/references/feed-reference.md)\n- [频道消息通知参考](artifact/references/notification-reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with Tencent channel CLI commands and JSON command inputs when needed]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include confirmation prompts for destructive actions, QR-code login guidance, notification setup steps, and summarized command results.]\n\n## Skill Version(s):\n\n1.1.5 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.4: 6 files, 21460 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (11568b), references/manage-guild.md (8271b), references/manage-member.md (2065b), references/notification-reference.md (13568b), SKILL.md (12995b)\n\nFile v1.1.4:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.4\nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\nWindows / PowerShell 使用要求：\n\n- 如果在执行过程中提示相关命令、依赖没有安装，可以先在powershell里执行`Get-Command`或者`where.exe`命令，查找并确认是否真的没有安装\n- 执行`tencent-channel-cli`命令时，默认会使用`.ps1`脚本，但是windows可能默认的执行策略禁止运行`.ps1`脚本，会导致无交互的环境永久卡住，可以使用`.cmd`路径来调用\n- 能用 flag 时优先用 flag；只有复杂对象、数组、分页透传等场景再用 stdin JSON，**PowerShell JSON格式**：`$body = @{ guild_id = \"123\" } | ConvertTo-Json -Compress; $body | & tencent-channel-cli manage get-guild-info --json`\n\n请每天使用这个SKILL前检测下SKILL是否有更新，如果检测到有更新版，则询问用户是否需要更新\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、修改频道号、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、移帖、移动帖子、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n- `**references/notification-reference.md`** — 消息通知、频道通知、开启通知、关闭通知、回复通知、处理通知、token setup（setup_hint 处理）、subscribe_hint、私信通知、系统通知\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md；「消息通知」「通知」「开启通知」「关闭通知」「回复通知」「处理通知」→ notification-reference.md；「token setup 返回 setup_hint」→ notification-reference.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **执行阶段敏感信息最小化**：本 Skill 仅约束命令构造、链式调用、结果整理、最终回复四个执行阶段。所有敏感信息先区分为”业务敏感数据”和”用户隐私数据”：业务敏感数据默认不向用户展示原值，但执行所需字段不得丢失；用户隐私数据默认不展示、不复述、非执行必需不透传，必须使用时仅保留最小必要字段\n4. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n5. **鉴权失败**（retCode `8011` 或”未登录”错误）：提示用户执行 `tencent-channel-cli token setup '<凭证>'` 重新配置凭证；\n6. **限流**（retCode `153` / 错误含”接口调用已超过申请的频率上限”）：**不报错、不询问用户**，直接 sleep 70s 后原样重试一次；若重试仍报 153，则告知用户”接口触发频率限制，请稍后再试”\n7. **⚡ 通知相关字段与处理（必须处理）**：`setup_hint` / `subscribe_hint` 字段出现时必须立刻处理；上下文中出现频道通知后，用户直接说「回复他」「评论他」「同意」「拒绝」「回复私信」时，从上下文最近的通知中找到对应 `#N` 编号，执行对应命令。详见 `references/notification-reference.md` 第三、五节。\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n**最低 CLI 版本：1.0.5**\n\n```bash\ntencent-channel-cli version          # 未安装或版本 < 1.0.5 → npm install -g tencent-channel-cli\ntencent-channel-cli token verify       # 未登录 → 优先执行 tencent-channel-cli token setup '<凭证>'\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n> CLI 版本低于 **1.0.5** 时，需要执行 `npm install -g tencent-channel-cli` 升级后再继续，禁止使用旧版本执行命令。\n\n## 更新检测\n\n通过 HEAD 请求（不下载文件）读取响应头，判断 Skill 和 CLI 是否有新版本：\n\n```bash\ncurl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli version 比对）\n```\n\n```powershell\n$resp = Invoke-WebRequest -Method Head -MaximumRedirection 5 https://connect.qq.com/skills/tencent-channel-community.zip\n$resp.Headers[\"x-cos-meta-tcc-version\"]\n$resp.Headers[\"x-cos-meta-tcc-cli-version\"]\n```\n\nSKILL有新版本时，从以下渠道获取更新：\n\n- CDN：[https://connect.qq.com/skills/tencent-channel-community.zip](https://connect.qq.com/skills/tencent-channel-community.zip)\n- GitHub：[https://github.com/tencent-connect/tencent-channel-community](https://github.com/tencent-connect/tencent-channel-community)\n- ClawHub：[https://clawhub.ai/tencent-adm/tencent-channel-community](https://clawhub.ai/tencent-adm/tencent-channel-community)\n\n## 执行阶段敏感信息策略\n\n本节仅约束 Skill 的执行阶段：命令构造、链式调用、结果整理、最终回复。所有敏感信息先区分为“用户隐私数据”和“业务敏感数据”，再按以下规则处理。\n\n### 1. 总原则\n\n- 用户隐私数据：默认不展示、不复述、非执行必需不透传；若命令确需使用，仅保留最小必要字段\n- 业务敏感数据：默认不向用户展示原值，但执行所需字段不得丢失，可在 Skill 内部链式调用中透传\n- 能用内部 ID 或上下文字段完成定位时，禁止额外传递姓名、QQ号、手机号、邮箱、详细地址等个人信息\n- 总结、表格、示例命令、resume 描述中，不得重新拼接、展开或推断完整敏感信息\n\n### 2. 用户隐私数据\n\n以下信息属于用户隐私数据（依据《个人信息保护法》第28条敏感个人信息分类）：\n\n**一般个人信息（默认不展示，脱敏后可提及）：**\n\n- 真实姓名\n- 手机号、邮箱\n- 详细地址（精确到街道/门牌）\n\n**敏感个人信息：**\n\n- 身份证号、护照号等身份证件号码\n- 银行卡号、支付账户等金融账户信息\n- 生物识别信息（人脸数据、指纹等）\n- 医疗健康信息\n- 行踪轨迹（精确位置信息）\n- 未成年人（14周岁以下）的任何个人信息\n- 宗教信仰、特定身份信息\n\n**登录凭证（最高保护级别，任何情况下不得展示、不得透传）：**\n\n- token、cookie、登录凭证\n\n处理规则：\n\n- 默认不在最终回复中展示原文，不在总结、表格、示例命令、resume 描述中回显\n- 非执行必需不透传；命令确需使用时，仅保留最小必要字段\n- 若必须提及，只允许脱敏或泛化表达，不给出完整值\n\n### 3. `非面向用户字段`\n\n这些字段主要服务于 Skill 的内部执行和结果衔接，普通用户通常不需要理解或查看其原始值。：\n\n- `guild_id`、`channel_id`、`tiny_id`\n- `feed_id`、`comment_id`、`reply_id`\n- `author_id`、`target_user_id`\n- `face_seq` / `avatar_seq`、`role_id`、`level_role_id`\n- `channelInfo` / `channelSign`、`raw`\n- `create_time_raw`、`attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie`\n\n处理规则：\n\n- 默认不向用户展示原值,用户并不理解,向用户说明时优先使用中文业务语义，不直接暴露内部字段值\n- 允许在 Skill 内部链式调用中保留和透传\n\n### 4. 默认摘要化展示\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n> 优先使用“目标用户”“目标帖子”“目标频道”“已匹配到对应对象”等摘要化表达，不直接回显字段原值\n\n### 6. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳；禁言时间戳为 `0` 时显示\"无禁言\"\n\n## 快捷命令\n\n当匹配下列意图时，优先使用快捷命令。一次调用替代多次 tool_call，提高处理速度。\n\n\n| 意图           | 命令                                                                                                    |\n| ------------ | ----------------------------------------------------------------------------------------------------- |\n| 搜索频道并加入      | `tencent-channel-cli manage search-and-join --keyword \"<关键词>\" --json`                                 |\n| 在频道内发帖       | `tencent-channel-cli feed quick-publish --content \"<内容>\" --json`                                      |\n| 搜索帖子并评论      | `tencent-channel-cli feed search-and-comment --guild-id <ID> --query \"<关键词>\" --content \"<评论>\" --json` |\n| 删帖并禁言        | `tencent-channel-cli feed delete-and-mute --guild-id <ID> --query \"<关键词>\" --json`                     |\n| 获取最新帖子详情并且总结 | `tencent-channel-cli feed latest-feeds-detail --json`                                                 |\n| 获取热门帖子详情并且总结 | `tencent-channel-cli feed hot-feeds-detail --json`                                                    |\n\n\n快捷命令是多轮交互：返回 `status: \"waiting\"` 时**不要放弃、不要改用单命令、不要误判为卡住**，必须继续执行返回里的 `resume_command`。`--resume-id` 全程不变。\n\n`latest-feeds-detail` 和`hot-feeds-detail` 默认返回的是帖子详情，需要再自行进行总结\n\n### 交互协议示例\n\n```\n# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}\n```\n\n> **重要**：所有快捷命令调用必须加 `--json` flag。`status: \"done\"` 表示完成，`status: \"waiting\"` 表示必须继续 resume。\n> **PowerShell**：如果返回里的 `resume_command` 是裸命令，优先手动替换成 `tencent-channel-cli ...`（绝对路径或已加入 PATH）后再执行；不要尝试在同一个命令里交互式按键选择。\n\nFile v1.1.4:_meta.json\n\n{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.4\",\n  \"publishedAt\": 1776880543315\n}\n\nFile v1.1.4:references/feed-reference.md\n\n# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链 |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n| 移动帖子到其他版块 | `move-feed` | 需提供原版块 ID 和目标版块 ID |\n\n## 核心规则\n\n### get-guild-feeds\n\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回 retCode `20047` → 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **全局发帖身份确认**：不传 guild_id/channel_id 时为「作者身份全局发帖」，要求账号具有「作者」角色，普通成员**无法**使用。执行前必须向用户确认其具有作者身份，确认后加 `--yes` 执行；未确认则引导用户传入 guild_id 和 channel_id 以普通成员身份发帖\n3. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n4. **话题标签（#话题）**：仅**短贴**（feed_type=1）支持话题标签。**长贴（feed_type=2）不支持话题标签**。CLI 对长贴传入话题参数（`topic_names` / `--topic-name` / 正文中的 `#[话题]()` 语法）会直接报错拦截\n5. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n6. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n7. 正文为纯文本，不渲染 Markdown\n8. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `publish-feed` / `alter-feed` 自动补取\n- 帖子分享链接用 `get-feed-share-url`，**频道**分享链接用 `get-guild-share-url`\n\n### 链式字段：replies_preview\n\n每条回复含：`reply_id`（删除/回复该回复时用）、`author_id`（回复时传 target_user_id）、`target_reply_id` / `target_user_id`（楼中楼关系）、`create_time_raw`\n\n## 翻页字段速查（命令→字段名）\n\n| 命令 | stdin JSON 字段名 | CLI flag | 注意 |\n|------|-------------------|----------|------|\n| `get-guild-feeds` | `feed_attach_info` | `--feed-attach-info` | |\n| `get-channel-timeline-feeds` | `feed_attch_info`（少个 **a**） | `--feed-attach-info` | stdin JSON 拼写与其他命令不同 |\n| `get-feed-comments` | `attach_info` | `--attach-info` | |\n| `get-notices` | `attach_info` | `--attach-info` | |\n| `get-next-page-replies` | `attach_info` | `--attach-info` | 首次值从 get-feed-comments 评论对象获取 |\n| `search-guild-feeds` | `cookie` | `--next-page-cookie` | stdin JSON 字段名与 CLI flag 差异大 |\n\n> **翻页安全规则**：翻页时严格用上次返回的字段名和值原样传回，不要跨命令复用翻页令牌。\n\n### move-feed（移动帖子）\n\n执行前必须向用户确认其在**目标频道**的身份，用户明确确认自己是该频道的 **超级管理员** 或 **频道主** 后，方可继续执行。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 图片/视频路径 | `file_paths`(JSON) 仅传图片，`video_paths`(JSON) 仅传视频，混用导致上传失败（business_type 错误）。推荐 `--image` / `--video`；**短贴**中 `--image` 与 `--video` 互斥，同时传入会被本地拦截；**长贴**（有标题 / feed_type=2）允许图片与视频同时存在 |\n| alter-feed 替换媒体 | 默认**保留**原帖所有图片/视频并追加新增内容。要**替换**时必须先清除：`--clear-images` 清除原帖所有图片，`--clear-videos` 清除原帖所有视频；可与 `--image`/`--video` 连用实现\"先清后加\" |\n| alter-feed 帖子类型 | `alter-feed` **不接受** `feed_type` 参数，帖子类型始终从原帖自动继承。不存在\"编辑后变成短贴\"的风险 |\n| images 字段名 | 已有 CDN URL 时用 `images`，每项字段名为 `url`，**不是** `picUrl` |\n| 板块置顶 | `top-feed` 的 `top_type=2/3`（板块置顶）时 `channel_id` 必填，需通过 stdin JSON 传入 |\n| 删除评论必须 --yes | `do-comment --comment-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必须 --yes | `do-reply --reply-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必填字段 | 除 reply_id 外还需：`replier_id`、`feed_id`、`feed_author_id`、`feed_create_time`、`comment_id`、`comment_author_id`、`comment_create_time`、`guild_id`、`channel_id` |\n| @用户 ID 格式 | `at_users[].id` 必须是 tinyid（通常 >10 位数字），**严禁**传 QQ 号（≤10 位），CLI 会直接报错拦截 |\n| alter-feed @用户 | 支持 `--at-user tinyid:昵称` CLI flag（可多次指定），与 publish-feed 一致 |\n| 裸 URL 写入正文 | **禁止**在 `content` 里直接拼入裸 URL（如 `https://example.com`）——裸 URL 在帖子里原样显示为纯文本，不可点击。可点击链接必须用内联语法或 `--link` / `urls` 传入 |\n| 长贴不支持话题标签 | CLI 在发帖/编辑时如检测到话题参数（`topic_names` / `--topic-name` / `#[话题]()` 语法）会直接报错拦截，请改用短贴或移除话题参数 |\n\n## 内嵌链接与 @ 语法\n\n`publish-feed` / `alter-feed` / `do-comment` / `do-reply` 均支持两种方式混入可点击链接和 @用户，**推荐使用内联语法**，更直观且位置精确。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123\"\n  channel_id = \"456\"\n  content = \"本周技术分享已更新，点击查看详情了解更多。\"\n  urls = @(@{ url = \"https://example.com/weekly\"; displayText = \"查看详情\" })\n} | ConvertTo-Json -Depth 6 -Compress\n$body | tencent-channel-cli feed publish-feed\n```\n\n**字段：**\n### 内联语法（推荐）\n\n直接在 `--content` / `content` 正文中使用：\n\n| 语法 | 说明 |\n|------|------|\n| `[显示文字](https://url)` | 可点击超链接，链接出现在正文对应位置 |\n| `@[昵称](tinyid)` | @提及用户，@出现在正文对应位置 |\n\n两者可自由混排：\n\n```bash\ntencent-channel-cli feed publish-feed \\\n  --guild-id 123 --channel-id 456 \\\n  --content \"本周技术分享见 [详情页](https://example.com/weekly)，@[张三](144115219800577368) 请查收。\"\n```\n\n```bash\ntencent-channel-cli feed do-comment \\\n  --feed-id B_xxx --feed-create-time 1700000000 \\\n  --content \"参考 [官方文档](https://docs.example.com) 里的说明，@[李四](144115219800577369) 也看看。\"\n```\n\n### 独立参数（备选）\n\n需要批量传入、或链接/@ 出现在正文末尾时，也可用单独参数：\n\n| 参数 | 语法 | 适用命令 |\n|------|------|---------|\n| `--link url\\|显示文字` | CLI flag，可多次指定 | 所有写入命令 |\n| `--at-user tinyid:昵称` | CLI flag，可多次指定 | 所有写入命令 |\n| `urls` (stdin JSON) | `[{\"url\":\"…\",\"displayText\":\"…\"}]` | 所有写入命令 |\n| `at_users` (stdin JSON) | `[{\"id\":\"tinyid\",\"nick\":\"昵称\"}]` | 所有写入命令 |\n\n**注意**：独立参数中的链接/@ 被追加在正文**末尾**，位置不可控；如需精确控制位置，用内联语法。\n\n**用户自然语言 → 参数组装规则：**\n\n- 用户说「链接是 X，显示文本是 Y」→ 内联写 `[Y](X)` 放入 content\n- 用户说「把 X 做成超链接」→ 内联写 `[X](X)` 或根据上下文取文案\n- 用户说「@张三」→ 先查 `tiny_id`，再内联写 `@[张三](tinyid)` 放入 content\n- `content` 字段只写正文文字和内联标记，**禁止**把裸 URL 拼入正文\n\n## 自动化运营\n\n以下能力通过组合已有原子命令实现，适合结合定时任务做周期性自动化。\n\n### 内容巡检\n\n扫描频道帖子，AI 判断是否违规，违规则删除。\n\n**推荐路径：**\n1. `get-guild-feeds`（get_type=2，最新）或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整标题和正文\n3. AI 根据内容判断是否违规（水帖、广告、外链、交友、风险等）\n4. 对违规帖子调 `del-feed --yes` 删除（高风险，需确认）\n\n**参数建议：**\n- 通过 `count` 控制每次扫描数量（建议 20~50）\n- 可指定 `channel-id` 限定版块范围\n- 定时调度间隔建议 30~60 分钟\n\n### 问答自动回复\n\n扫描频道帖子，识别求助帖，搜索相关内容后自动回复。\n\n**推荐路径：**\n1. `get-guild-feeds` 或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整内容\n3. AI 判断是否为求助帖（含提问意图：问号、\"怎么\"、\"如何\"、\"求助\"等）\n4. 对求助帖提取关键词，调 `search-guild-feeds` 搜索频道内相关帖子\n5. 整理相关帖子内容生成回复，调 `do-comment` 发布评论\n6. 无相关内容时发布礼貌提示\n\n**参数建议：**\n- `scan_count` 建议 20，每次处理适量帖子\n- 每条回复引用的参考帖子建议 ≤3 条\n- 支持 dry_run 模式：先分析不发布，确认后再正式运行\n\nFile v1.1.4:references/manage-guild.md\n\n# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 修改频道号 | `modify-guild-number` | 10~14 位英文/数字，需频道主权限；别和 `guild_id` 混淆 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直接加入 | 否，CLI flag 即可 |\n| `JOIN_GUILD_TYPE_ADMIN_AUDIT` | 发送验证消息，管理员审核 | 否 |\n| `JOIN_GUILD_TYPE_DISABLE` | 不允许任何人加入 | 否 |\n| `JOIN_GUILD_TYPE_QUESTION_WITH_ADMIN_AUDIT` | 回答问题 + 管理员审核 | 是，需 `setting.question.items` |\n| `JOIN_GUILD_TYPE_MULTI_QUESTION` | 正确回答问题 | 是，需 `setting.question.items`（含 answer） |\n| `JOIN_GUILD_TYPE_QUIZ` | 答题（选择题） | 是，需 `setting.quiz` 完整结构 |\n\n> 高级类型（后三种）必须通过 stdin JSON 传入完整 `setting` 对象，CLI flag 仅支持前三种基础类型。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123456\"\n  join_type = \"JOIN_GUILD_TYPE_MULTI_QUESTION\"\n  setting = @{\n    question = @{\n      items = @(\n        @{ title = \"问题1\"; answer = \"A\" },\n        @{ title = \"问题2\"; answer = \"B\" }\n      )\n    }\n  }\n} | ConvertTo-Json -Depth 8 -Compress\n$body | tencent-channel-cli manage update-join-guild-setting\n```\n\n## 频道私信规则\n\n`push-group-dm-msg` 发送普通私信消息到指定用户。支持两种模式：\n\n**⚠️ 模式选择决策规则（必须遵守）：**\n- 用户**引用了一条私信通知**并说\"回复私信\" → 使用**模式 2**（`--ref`）\n- 用户说\"给某人发私信\"/\"发私信给某人\"（**没有引用私信通知**） → 使用**模式 1**（先查 `tiny_id`，再直接发送）\n- **严禁**在主动发私信场景使用 `--ref`，`--ref` 仅用于回复已收到的私信通知\n\n**模式 1：直接发送（主动发私信）**\n1. 先通过 `guild-member-search` 或 `get-guild-member-list` 查到目标用户的 `tiny_id`\n2. 确定来源频道的 `guild_id`（即你和目标用户共同所在的频道）\n3. 调用：`tencent-channel-cli manage push-group-dm-msg --peer-tiny-id <tiny_id> --source-guild-id <guild_id> --text \"内容\" --json`\n\n**模式 2：回复私信通知（通过 --ref 自动填充）**\n- `ref`：通知编号（如 #1），CLI 自动从本地通知记录查找私信会话信息，并通过消息漫游获取对方 tinyId 和 sourceGuildId\n- 调用：`tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n- **限制**：对方未回复之前只能发送 1 条消息（retCode `100707`）\n- **严禁**在未获取用户同意的情况下批量发送私信\n\n## 退出频道规则\n\n`leave-guild` 退出指定频道，**不可逆**操作。退出后需要重新加入，且如果频道有验证设置，需重新通过验证。高风险操作，需 `--yes` 确认。\n\n## 陷阱（schema 不体现）\n\n- **频道号 ≠ guild_id**：用户可见的频道号（如 `pd20589127`）是展示层标识，不能当作 `guild_id` 使用。获取真实 guild_id 的方式：通过 `get-share-info` 解析分享链接，或从 `get-my-join-guild-info` 返回中提取。修改频道号用 `modify-guild-number --guild-id <ID> --guild-number <新频道号>`（10~14 位英文/数字）\n- `get-share-info` 仅限 `pd.qq.com` 域名链接\n- `join-guild` 的 `join_guild_answers` 和 `join_guild_comment` 仅 stdin JSON 可传\n- `push-group-dm-msg` 的 `source-guild-id` 不是目标用户所在频道，而是发送者所在的来源频道\n- `update-join-guild-setting` 高级类型未传 `setting` 对象会直接报错\n- Windows / PowerShell 下不要直接照抄 bash 的 `echo '{...}' | ...`；复杂对象优先用 `ConvertTo-Json`\n\nFile v1.1.4:references/manage-member.md\n\n# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |\n\nFile v1.1.4:references/notification-reference.md\n\n# 频道消息通知参考\n\n## 一、概述\n\n频道消息通知覆盖所有频道级通知，包括帖子互动（点赞/评论/回复/@）、系统消息（加入申请等）、私信通知等。\n\n> ⚠️ **当前仅支持 OpenClaw 平台**，非 OpenClaw 环境下无法自动推送通知。\n\n## 二、命令路由表\n\n| 用户意图 | CLI 命令 | 关键约束 |\n|---------|----------|---------|\n| 开启频道消息通知 / 帮我开启通知 | `notices-on` → `notices-on --confirm` | 两步：先测试推送，用户确认收到后加 `--confirm` 正式开启 |\n| 关闭/取消频道消息通知 | `notices-off --session-key \"<sessionKey>\"` | 带 sessionKey 时仅移除该通道；不带时全量关闭 |\n| 查看通知状态 | `notices-status` | 查看是否开启、推送模式、已注册通道列表（`registered_routes`）等 |\n| 检查有没有新通知 | `check-notices` | 增量检查是否有新通知，需先开启通知 |\n| 获取最近通知记录（本地） | `get-recent-notices` | 纯本地读取，用于按编号查找通知上下文 |\n| 评论帖子（评论他） | `do-comment --ref <编号> --content \"内容\"` | 评论帖子本身，按通知编号自动填充 feed 信息 |\n| 回复评论（回复他） | `do-reply --ref <编号> --content \"内容\"` | 回复该用户的评论，自动查找对应评论并回复 |\n| 回复私信（处理通知） | `push-group-dm-msg --ref <编号> --text \"内容\"` | 仅用于回复已收到的私信通知，`--ref` 自动查找对方信息 |\n| 主动发私信（非通知） | `push-group-dm-msg --peer-tiny-id <id> --source-guild-id <id> --text \"内容\"` | 先通过 `guild-member-search` 查到 tiny_id，详见 manage-guild.md |\n\n## 三、自动引导（⚠️ 必须遵守！）\n\nCLI 在**首次安装或版本升级后**第一次使用时引导用户开启频道消息通知（同一版本只提示一次）。\n\n以下 hint 字段出现在 CLI 返回的 JSON 中时，Agent **必须立刻处理**，不得忽略：\n\n**`setup_hint` 字段**（出现在 `token setup` 返回结果中）：\n- 表示用户刚完成登录但尚未开启频道消息通知\n- Agent 收到此字段时**必须**：\n  1. 向用户展示 `setup_hint.message` 内容（如\"登录成功！建议开启频道消息通知\"）\n  2. 主动询问用户是否要开启\n  3. 如果用户同意，执行 `setup_hint.command` 中的命令\n- **示例**：收到 `\"setup_hint\": {\"action\":\"subscribe_notices\", \"command\":\"tencent-channel-cli manage notices-on\", \"message\":\"登录成功！建议开启「频道消息通知」...\"}`，应回复类似：\"登录成功！建议开启频道消息通知，有新互动时自动推送给你。要开启吗？\"\n\n**`subscribe_hint` 字段**（出现在任意命令返回结果中）：\n- 表示用户尚未开启频道消息通知（仅在首次安装或版本升级后出现一次）\n- Agent 收到此字段时**必须**：\n  1. 告知用户可以开启频道消息通知，有新互动时自动推送\n  2. 如果用户同意，执行 `subscribe_hint.command` 中的命令开启\n  3. 此 hint 每天最多出现一次，如果用户明确关闭了通知，则不会再出现\n\n## 四、开启/关闭流程规则（重要！两步开启 + 根据返回字段区分状态）\n\n**重要：通知是全局的，一次开启覆盖用户已加入的所有频道。不需要按频道单独开启，也不需要在加入新频道时重新开启。**\n\n**⚠️ 多通道注意事项（必须遵守！）：**\n- 通知服务是全局的，但**推送路由是按通道（sessionKey）注册的**。即使通知已开启（`active=true`），当前通道也可能未注册推送路由\n- **Agent 不能仅凭 `active=true` 就跳过 `notices-on` 调用**。用户说\"开启频道消息通知\"时，必须执行 `notices-on --session-key <当前通道sessionKey>` 注册当前通道\n- 可通过 `notices-status` 查看 `registered_routes` 字段确认哪些通道已注册\n\n1. **开启通知（两步流程）**：用户说\"帮我开启频道消息通知\"时，**必须带上当前会话的 sessionKey**：\n\n   **第一步：推送测试**\n   ```bash\n   tencent-channel-cli manage notices-on --session-key \"<sessionKey>\" --json\n   ```\n   - `--session-key`：当前会话的 sessionKey（格式 `agent:<agentid>:`，如 `agent:main:`、`agent:agent2:`），优先通过 session_status 工具获取，获取不到时从当前会话的 Agent 上下文 systemPrompt 中提取，严禁自行拼接或猜测\n   - ⚠️ **幻觉检查**：如果获取到的 sessionKey 形如 `agent:main:main...`（冒号后有多余重复内容），极可能是 Agent 产生了幻觉，请重新通过 session_status 工具获取，不要直接使用\n   - 此步**不会开启订阅**，仅发送一条测试消息验证推送通道是否正常\n\n   **根据返回的 `status` 字段判断**：\n   - `status = \"test_sent\"` → 测试消息已发出。返回中包含 `confirm_cmd` 字段（确认命令）。**Agent 必须告诉用户\"已发送测试推送，请确认是否收到\"，然后等待用户明确回复（如\"收到了\"、\"确认开启\"等），严禁自动执行 confirm_cmd。** 只有用户主动确认后才执行 `confirm_cmd` 中的命令\n   - `status = \"test_failed\"` → 推送失败。**Agent 告知用户推送失败原因（`error` 和 `suggestions` 字段），不继续第二步**\n   - `status = \"unsupported\"` → 非 OpenClaw 环境，无法开启\n\n   **第二步：正式开启**（用户确认收到测试消息后）\n   ```bash\n   tencent-channel-cli manage notices-on --session-key \"<sessionKey>\" --confirm --json\n   ```\n   - 多 Agent 场景：用户可以从不同通道分别开启订阅，每个通道的路由独立注册，互不覆盖\n\n2. **根据正式开启后返回结果的 `platform` 字段决定后续行为**：\n\n   **情况 A：`platform = \"openclaw\"`（OpenClaw 环境）**\n   - 通知已开启，有新互动时会自动推送到上下文\n   - 多 Agent 多通道：用户从 QQBot 开启订阅 → QQBot 收到通知；再从飞书开启 → 飞书也收到通知；多通道并行推送\n   - **向用户报告时，只需简洁告知\"频道消息通知已开启，有新互动会自动推送\"即可，不需要展示 PID、进程状态等内部信息**\n\n   **情况 B：`platform = \"other\"`（非 OpenClaw 环境）**\n   - 无法自动推送通知\n   - 告知用户：当前环境未检测到 OpenClaw Cli，无法自动推送频道通知。\n\n3. **关闭通知**：用户说\"关闭频道消息通知\"/\"取消频道消息通知\"时，**必须带上当前会话的 sessionKey**：\n\n   ```bash\n   tencent-channel-cli manage notices-off --session-key \"<sessionKey>\" --json\n   ```\n   - `--session-key`：当前会话的 sessionKey（格式 `agent:<agentid>:`），优先通过 session_status 工具获取，获取不到时从当前会话的 Agent 上下文 systemPrompt 中提取，严禁自行拼接或猜测\n\n   **根据返回的 `status` 字段判断**：\n   - `status = \"route_removed\"` → 已移除该通道，其他通道继续接收通知。`remaining_count` 表示剩余通道数\n   - `status = \"unsubscribed\"` → 该通道是最后一个，通知服务已停止\n   - `status = \"not_found\"` → 未找到该 sessionKey 对应的通道\n   - `status = \"not_subscribed\"` → 当前未开启通知\n\n   **不传 --session-key 时**：全量关闭\n   ```bash\n   tencent-channel-cli manage notices-off --json\n   ```\n\n## 五、通知处理流程（⚠️ 必须遵守！）\n\n通知通过 `--deliver` 已进入 Agent 上下文，每条通知带有唯一编号（如 `#1`）。用户**无需引用消息**，直接说操作意图词即可。AI 从上下文中找到最近推送的通知编号，执行对应命令。编号会自动映射到本地存储的 feed_id/guild_id/notice_id 等参数。\n\n### 5.1 互动通知处理（评论/回复）\n\n上下文中出现互动通知后，用户说了回复/评论意图词 + 内容：\n\n**根据意图词区分操作**：\n\n- 「**评论他**」「**评论**」→ 评论帖子本身（`do-comment`）\n- 「**回复他**」「**回复**」「**帮我回复**」→ 回复该用户的评论（`do-reply`）\n\n**处理步骤**：\n\n1. 从上下文最近推送的通知中识别**通知编号**（`#1` 中的数字 1）\n2. 判断用户意图是「评论」还是「回复」\n3. 执行对应命令：\n   ```bash\n   # 评论帖子\n   tencent-channel-cli feed do-comment --ref <编号> --content \"内容\" --json\n   # 回复评论（自动查找对应评论）\n   tencent-channel-cli feed do-reply --ref <编号> --content \"内容\" --json\n   ```\n\n- **严禁将用户的回复内容当作对话直接输出**\n- 编号会自动映射到本地存储的 feed_id/guild_id\n\n### 5.2 系统通知操作（同意/拒绝）\n\n上下文中出现系统通知后，用户说了「同意」或「拒绝」：\n\n- 用户说「**同意**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id agree --json`\n- 用户说「**拒绝**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id refuse --json`\n\n**处理步骤**：从上下文最近推送的通知中识别通知编号 → 判断用户意图 → 执行对应命令。编号会自动映射到本地存储的 notice_id。\n\n### 5.3 私信通知回复\n\n上下文中出现私信通知后，用户说了「回复私信」+ 内容：\n\n- 用户说「**回复私信 内容**」→ `tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n**处理步骤**：从上下文最近推送的通知中识别通知编号 → 提取用户要回复的内容 → 执行命令。编号会自动映射到对应的私信会话。**严禁将用户的回复内容当作对话直接输出。**\n\n## 六、Token 更换与通知订阅\n\n当用户更换 token（通过 `token setup`、`login`、`login token` 等任何方式）时，**频道消息通知会被自动关闭**。\n\n**Agent 行为规范（⚠️ 必须遵守！）**：\n- Token 更换后，**不要自动重新订阅通知**\n- 只需告知用户：凭证已更新，频道消息通知已关闭，如需继续接收通知请说\"帮我开启频道消息通知\"\n- 由用户自己决定是否重新开启\n\n## 七、Daemon 拉取与推送时序图\n\nDaemon 进程包含两个并发协程：**主循环**负责拉取和推送，**心跳协程**每 10s 独立写心跳文件（不受主循环阻塞影响）。\n\n```\n心跳协程: 每 10s 写心跳文件 (独立运行, 超时窗口 60s)\n─────────────────────────────────────────────────────\n\n主循环 (单线程, 循环执行):\n\n  ┌─────────────────────────────────────────────┐\n  │ ① 摘要检测 digestHasUpdate()                │\n  │    → 返回 interactChanged, systemChanged    │\n  │    → 返回 serverDelay (下次轮询间隔)         │\n  ├─────────────────────────────────────────────┤\n  │ ② 按需拉取 (摘要有变化才拉详情)              │\n  │    interactChanged → pollOnce()             │\n  │    systemChanged   → pollSystemNotices()    │\n  │    私信每轮都拉     → pollDMNotices()        │\n  ├─────────────────────────────────────────────┤\n  │ ③ 逐条推送 pushNotifications()              │\n  │    FormatNoticeCard() → 格式化卡片           │\n  │    deliverOneNotification() → 逐条推送       │\n  │      └─ openclaw agent --deliver (阻塞15~30s)│\n  │    推送成功 → MarkRecentNoticePushed()       │\n  │    重推之前失败的通知                         │\n  ├─────────────────────────────────────────────┤\n  │ ④ 保存基线 bm.Save(baseline)                │\n  ├─────────────────────────────────────────────┤\n  │ ⑤ 检查: CLI版本更新 / 订阅状态 / push_route  │\n  ├─────────────────────────────────────────────┤\n  │ ⑥ time.Sleep(nextPoll) 通常 5s              │\n  └──────────────── 回到 ① ─────────────────────┘\n```\n\n### GuardDaemon 守护机制\n\n任意 CLI 命令执行后触发 `runGuardDaemon()`：\n1. 读取心跳文件 mtime\n2. mtime < 60s 且进程存活 → 不做操作\n3. mtime >= 60s 或进程不存在 → `ForkDaemon()` 启动新实例\n\n### 关键设计点\n\n| 设计 | 说明 |\n|------|------|\n| 摘要门控 | 互动/系统通知由摘要前置检测，有变化才拉详情；私信无摘要，每轮都拉 |\n| 推送阻塞 | `openclaw agent --deliver` 同步阻塞 15-30s（LLM 处理） |\n| 心跳独立 | 心跳协程每 10s 写一次，不受推送阻塞影响 |\n| 逐条推送 | 每条通知独立推送，成功标记 pushed，失败下轮重试 |\n| 基线最后保存 | 三类通知全部完成后才保存，确保一致性 |\n\n## 八、问题定位\n\n| 提示 / 错误 | 处理 |\n|-------------|------|\n| MCP 鉴权失败（retCode `8011`） | 执行 `tencent-channel-cli token setup` 重新配置凭证 → `tencent-channel-cli doctor` 确认 |\n\nArchive v1.1.3: 6 files, 20518 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (11568b), references/manage-guild.md (8271b), references/manage-member.md (2065b), references/notification-reference.md (9816b), SKILL.md (12919b)\n\nFile v1.1.3:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.3  \nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\nWindows / PowerShell 使用要求：\n\n- 如果在执行过程中提示相关命令、依赖没有安装，可以先在powershell里执行`Get-Command`或者`where.exe`命令，查找并确认是否真的没有安装\n- 执行`tencent-channel-cli`命令时，默认会使用`.ps1`脚本，但是windows可能默认的执行策略禁止运行`.ps1`脚本，会导致无交互的环境永久卡住，可以使用`.cmd`路径来调用\n- 能用 flag 时优先用 flag；只有复杂对象、数组、分页透传等场景再用 stdin JSON，**PowerShell JSON格式**：`$body = @{ guild_id = \"123\" } | ConvertTo-Json -Compress; $body | & tencent-channel-cli manage get-guild-info --json`\n\n请每天使用这个SKILL前检测下SKILL是否有更新，如果检测到有更新版，则询问用户是否需要更新\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、修改频道号、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、移帖、移动帖子、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n- `**references/notification-reference.md`** — 消息通知、频道通知、开启通知、关闭通知、引用通知回复、token setup（setup_hint 处理）、subscribe_hint、daemon_guard、私信通知、系统通知\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md；「消息通知」「通知」「开启通知」「关闭通知」「引用通知回复」→ notification-reference.md；「token setup 返回 setup_hint」→ notification-reference.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **执行阶段敏感信息最小化**：本 Skill 仅约束命令构造、链式调用、结果整理、最终回复四个执行阶段。所有敏感信息先区分为”业务敏感数据”和”用户隐私数据”：业务敏感数据默认不向用户展示原值，但执行所需字段不得丢失；用户隐私数据默认不展示、不复述、非执行必需不透传，必须使用时仅保留最小必要字段\n4. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n5. **鉴权失败**（retCode `8011` 或”未登录”错误）：提示用户执行 `tencent-channel-cli token setup '<凭证>'` 重新配置凭证；\n6. **限流**（retCode `153` / 错误含”接口调用已超过申请的频率上限”）：**不报错、不询问用户**，直接 sleep 70s 后原样重试一次；若重试仍报 153，则告知用户”接口触发频率限制，请稍后再试”\n7. **⚡ 通知相关字段与引用回复（必须处理）**：`setup_hint` / `subscribe_hint` 字段出现时必须立刻处理；用户引用通知消息说「回复他」「评论他」「同意」「拒绝」「回复私信」时必须执行对应命令。详见 `references/notification-reference.md` 第三、六节。\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n**最低 CLI 版本：1.0.4**\n\n```bash\ntencent-channel-cli version          # 未安装或版本 < 1.0.4 → npm install -g tencent-channel-cli\ntencent-channel-cli token verify       # 未登录 → 优先执行 tencent-channel-cli token setup '<凭证>'\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n> CLI 版本低于 **1.0.4** 时，需要执行 `npm install -g tencent-channel-cli` 升级后再继续，禁止使用旧版本执行命令。\n\n## 更新检测\n\n通过 HEAD 请求（不下载文件）读取响应头，判断 Skill 和 CLI 是否有新版本：\n\n```bash\ncurl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli version 比对）\n```\n\n```powershell\n$resp = Invoke-WebRequest -Method Head -MaximumRedirection 5 https://connect.qq.com/skills/tencent-channel-community.zip\n$resp.Headers[\"x-cos-meta-tcc-version\"]\n$resp.Headers[\"x-cos-meta-tcc-cli-version\"]\n```\n\nSKILL有新版本时，从以下渠道获取更新：\n\n- CDN：[https://connect.qq.com/skills/tencent-channel-community.zip](https://connect.qq.com/skills/tencent-channel-community.zip)\n- GitHub：[https://github.com/tencent-connect/tencent-channel-community](https://github.com/tencent-connect/tencent-channel-community)\n- ClawHub：[https://clawhub.ai/tencent-adm/tencent-channel-community](https://clawhub.ai/tencent-adm/tencent-channel-community)\n\n## 执行阶段敏感信息策略\n\n本节仅约束 Skill 的执行阶段：命令构造、链式调用、结果整理、最终回复。所有敏感信息先区分为“用户隐私数据”和“业务敏感数据”，再按以下规则处理。\n\n### 1. 总原则\n\n- 用户隐私数据：默认不展示、不复述、非执行必需不透传；若命令确需使用，仅保留最小必要字段\n- 业务敏感数据：默认不向用户展示原值，但执行所需字段不得丢失，可在 Skill 内部链式调用中透传\n- 能用内部 ID 或上下文字段完成定位时，禁止额外传递姓名、QQ号、手机号、邮箱、详细地址等个人信息\n- 总结、表格、示例命令、resume 描述中，不得重新拼接、展开或推断完整敏感信息\n\n### 2. 用户隐私数据\n\n以下信息属于用户隐私数据（依据《个人信息保护法》第28条敏感个人信息分类）：\n\n**一般个人信息（默认不展示，脱敏后可提及）：**\n\n- 真实姓名\n- 手机号、邮箱\n- 详细地址（精确到街道/门牌）\n\n**敏感个人信息：**\n\n- 身份证号、护照号等身份证件号码\n- 银行卡号、支付账户等金融账户信息\n- 生物识别信息（人脸数据、指纹等）\n- 医疗健康信息\n- 行踪轨迹（精确位置信息）\n- 未成年人（14周岁以下）的任何个人信息\n- 宗教信仰、特定身份信息\n\n**登录凭证（最高保护级别，任何情况下不得展示、不得透传）：**\n\n- token、cookie、登录凭证\n\n处理规则：\n\n- 默认不在最终回复中展示原文，不在总结、表格、示例命令、resume 描述中回显\n- 非执行必需不透传；命令确需使用时，仅保留最小必要字段\n- 若必须提及，只允许脱敏或泛化表达，不给出完整值\n\n### 3. `非面向用户字段`\n\n这些字段主要服务于 Skill 的内部执行和结果衔接，普通用户通常不需要理解或查看其原始值。：\n\n- `guild_id`、`channel_id`、`tiny_id`\n- `feed_id`、`comment_id`、`reply_id`\n- `author_id`、`target_user_id`\n- `face_seq` / `avatar_seq`、`role_id`、`level_role_id`\n- `channelInfo` / `channelSign`、`raw`\n- `create_time_raw`、`attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie`\n\n处理规则：\n\n- 默认不向用户展示原值,用户并不理解,向用户说明时优先使用中文业务语义，不直接暴露内部字段值\n- 允许在 Skill 内部链式调用中保留和透传\n\n### 4. 默认摘要化展示\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n> 优先使用“目标用户”“目标帖子”“目标频道”“已匹配到对应对象”等摘要化表达，不直接回显字段原值\n\n### 6. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳；禁言时间戳为 `0` 时显示\"无禁言\"\n\n## 快捷命令\n\n当匹配下列意图时，优先使用快捷命令。一次调用替代多次 tool_call，提高处理速度。\n\n\n| 意图           | 命令                                                                                                    |\n| ------------ | ----------------------------------------------------------------------------------------------------- |\n| 搜索频道并加入      | `tencent-channel-cli manage search-and-join --keyword \"<关键词>\" --json`                                 |\n| 在频道内发帖       | `tencent-channel-cli feed quick-publish --content \"<内容>\" --json`                                      |\n| 搜索帖子并评论      | `tencent-channel-cli feed search-and-comment --guild-id <ID> --query \"<关键词>\" --content \"<评论>\" --json` |\n| 删帖并禁言        | `tencent-channel-cli feed delete-and-mute --guild-id <ID> --query \"<关键词>\" --json`                     |\n| 获取最新帖子详情并且总结 | `tencent-channel-cli feed latest-feeds-detail --json`                                                 |\n| 获取热门帖子详情并且总结 | `tencent-channel-cli feed hot-feeds-detail --json`                                                    |\n\n\n快捷命令是多轮交互：返回 `status: \"waiting\"` 时**不要放弃、不要改用单命令、不要误判为卡住**，必须继续执行返回里的 `resume_command`。`--resume-id` 全程不变。\n\n`latest-feeds-detail` 和`hot-feeds-detail` 默认返回的是帖子详情，需要再自行进行总结\n\n### 交互协议示例\n\n```\n# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}\n```\n\n> **重要**：所有快捷命令调用必须加 `--json` flag。`status: \"done\"` 表示完成，`status: \"waiting\"` 表示必须继续 resume。\n> **PowerShell**：如果返回里的 `resume_command` 是裸命令，优先手动替换成 `tencent-channel-cli ...`（绝对路径或已加入 PATH）后再执行；不要尝试在同一个命令里交互式按键选择。\n\nFile v1.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.3\",\n  \"publishedAt\": 1776435977977\n}\n\nFile v1.1.3:references/feed-reference.md\n\n# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链 |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n| 移动帖子到其他版块 | `move-feed` | 需提供原版块 ID 和目标版块 ID |\n\n## 核心规则\n\n### get-guild-feeds\n\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回 retCode `20047` → 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **全局发帖身份确认**：不传 guild_id/channel_id 时为「作者身份全局发帖」，要求账号具有「作者」角色，普通成员**无法**使用。执行前必须向用户确认其具有作者身份，确认后加 `--yes` 执行；未确认则引导用户传入 guild_id 和 channel_id 以普通成员身份发帖\n3. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n4. **话题标签（#话题）**：仅**短贴**（feed_type=1）支持话题标签。**长贴（feed_type=2）不支持话题标签**。CLI 对长贴传入话题参数（`topic_names` / `--topic-name` / 正文中的 `#[话题]()` 语法）会直接报错拦截\n5. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n6. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n7. 正文为纯文本，不渲染 Markdown\n8. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `publish-feed` / `alter-feed` 自动补取\n- 帖子分享链接用 `get-feed-share-url`，**频道**分享链接用 `get-guild-share-url`\n\n### 链式字段：replies_preview\n\n每条回复含：`reply_id`（删除/回复该回复时用）、`author_id`（回复时传 target_user_id）、`target_reply_id` / `target_user_id`（楼中楼关系）、`create_time_raw`\n\n## 翻页字段速查（命令→字段名）\n\n| 命令 | stdin JSON 字段名 | CLI flag | 注意 |\n|------|-------------------|----------|------|\n| `get-guild-feeds` | `feed_attach_info` | `--feed-attach-info` | |\n| `get-channel-timeline-feeds` | `feed_attch_info`（少个 **a**） | `--feed-attach-info` | stdin JSON 拼写与其他命令不同 |\n| `get-feed-comments` | `attach_info` | `--attach-info` | |\n| `get-notices` | `attach_info` | `--attach-info` | |\n| `get-next-page-replies` | `attach_info` | `--attach-info` | 首次值从 get-feed-comments 评论对象获取 |\n| `search-guild-feeds` | `cookie` | `--next-page-cookie` | stdin JSON 字段名与 CLI flag 差异大 |\n\n> **翻页安全规则**：翻页时严格用上次返回的字段名和值原样传回，不要跨命令复用翻页令牌。\n\n### move-feed（移动帖子）\n\n执行前必须向用户确认其在**目标频道**的身份，用户明确确认自己是该频道的 **超级管理员** 或 **频道主** 后，方可继续执行。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 图片/视频路径 | `file_paths`(JSON) 仅传图片，`video_paths`(JSON) 仅传视频，混用导致上传失败（business_type 错误）。推荐 `--image` / `--video`；**短贴**中 `--image` 与 `--video` 互斥，同时传入会被本地拦截；**长贴**（有标题 / feed_type=2）允许图片与视频同时存在 |\n| alter-feed 替换媒体 | 默认**保留**原帖所有图片/视频并追加新增内容。要**替换**时必须先清除：`--clear-images` 清除原帖所有图片，`--clear-videos` 清除原帖所有视频；可与 `--image`/`--video` 连用实现\"先清后加\" |\n| alter-feed 帖子类型 | `alter-feed` **不接受** `feed_type` 参数，帖子类型始终从原帖自动继承。不存在\"编辑后变成短贴\"的风险 |\n| images 字段名 | 已有 CDN URL 时用 `images`，每项字段名为 `url`，**不是** `picUrl` |\n| 板块置顶 | `top-feed` 的 `top_type=2/3`（板块置顶）时 `channel_id` 必填，需通过 stdin JSON 传入 |\n| 删除评论必须 --yes | `do-comment --comment-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必须 --yes | `do-reply --reply-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必填字段 | 除 reply_id 外还需：`replier_id`、`feed_id`、`feed_author_id`、`feed_create_time`、`comment_id`、`comment_author_id`、`comment_create_time`、`guild_id`、`channel_id` |\n| @用户 ID 格式 | `at_users[].id` 必须是 tinyid（通常 >10 位数字），**严禁**传 QQ 号（≤10 位），CLI 会直接报错拦截 |\n| alter-feed @用户 | 支持 `--at-user tinyid:昵称` CLI flag（可多次指定），与 publish-feed 一致 |\n| 裸 URL 写入正文 | **禁止**在 `content` 里直接拼入裸 URL（如 `https://example.com`）——裸 URL 在帖子里原样显示为纯文本，不可点击。可点击链接必须用内联语法或 `--link` / `urls` 传入 |\n| 长贴不支持话题标签 | CLI 在发帖/编辑时如检测到话题参数（`topic_names` / `--topic-name` / `#[话题]()` 语法）会直接报错拦截，请改用短贴或移除话题参数 |\n\n## 内嵌链接与 @ 语法\n\n`publish-feed` / `alter-feed` / `do-comment` / `do-reply` 均支持两种方式混入可点击链接和 @用户，**推荐使用内联语法**，更直观且位置精确。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123\"\n  channel_id = \"456\"\n  content = \"本周技术分享已更新，点击查看详情了解更多。\"\n  urls = @(@{ url = \"https://example.com/weekly\"; displayText = \"查看详情\" })\n} | ConvertTo-Json -Depth 6 -Compress\n$body | tencent-channel-cli feed publish-feed\n```\n\n**字段：**\n### 内联语法（推荐）\n\n直接在 `--content` / `content` 正文中使用：\n\n| 语法 | 说明 |\n|------|------|\n| `[显示文字](https://url)` | 可点击超链接，链接出现在正文对应位置 |\n| `@[昵称](tinyid)` | @提及用户，@出现在正文对应位置 |\n\n两者可自由混排：\n\n```bash\ntencent-channel-cli feed publish-feed \\\n  --guild-id 123 --channel-id 456 \\\n  --content \"本周技术分享见 [详情页](https://example.com/weekly)，@[张三](144115219800577368) 请查收。\"\n```\n\n```bash\ntencent-channel-cli feed do-comment \\\n  --feed-id B_xxx --feed-create-time 1700000000 \\\n  --content \"参考 [官方文档](https://docs.example.com) 里的说明，@[李四](144115219800577369) 也看看。\"\n```\n\n### 独立参数（备选）\n\n需要批量传入、或链接/@ 出现在正文末尾时，也可用单独参数：\n\n| 参数 | 语法 | 适用命令 |\n|------|------|---------|\n| `--link url\\|显示文字` | CLI flag，可多次指定 | 所有写入命令 |\n| `--at-user tinyid:昵称` | CLI flag，可多次指定 | 所有写入命令 |\n| `urls` (stdin JSON) | `[{\"url\":\"…\",\"displayText\":\"…\"}]` | 所有写入命令 |\n| `at_users` (stdin JSON) | `[{\"id\":\"tinyid\",\"nick\":\"昵称\"}]` | 所有写入命令 |\n\n**注意**：独立参数中的链接/@ 被追加在正文**末尾**，位置不可控；如需精确控制位置，用内联语法。\n\n**用户自然语言 → 参数组装规则：**\n\n- 用户说「链接是 X，显示文本是 Y」→ 内联写 `[Y](X)` 放入 content\n- 用户说「把 X 做成超链接」→ 内联写 `[X](X)` 或根据上下文取文案\n- 用户说「@张三」→ 先查 `tiny_id`，再内联写 `@[张三](tinyid)` 放入 content\n- `content` 字段只写正文文字和内联标记，**禁止**把裸 URL 拼入正文\n\n## 自动化运营\n\n以下能力通过组合已有原子命令实现，适合结合定时任务做周期性自动化。\n\n### 内容巡检\n\n扫描频道帖子，AI 判断是否违规，违规则删除。\n\n**推荐路径：**\n1. `get-guild-feeds`（get_type=2，最新）或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整标题和正文\n3. AI 根据内容判断是否违规（水帖、广告、外链、交友、风险等）\n4. 对违规帖子调 `del-feed --yes` 删除（高风险，需确认）\n\n**参数建议：**\n- 通过 `count` 控制每次扫描数量（建议 20~50）\n- 可指定 `channel-id` 限定版块范围\n- 定时调度间隔建议 30~60 分钟\n\n### 问答自动回复\n\n扫描频道帖子，识别求助帖，搜索相关内容后自动回复。\n\n**推荐路径：**\n1. `get-guild-feeds` 或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整内容\n3. AI 判断是否为求助帖（含提问意图：问号、\"怎么\"、\"如何\"、\"求助\"等）\n4. 对求助帖提取关键词，调 `search-guild-feeds` 搜索频道内相关帖子\n5. 整理相关帖子内容生成回复，调 `do-comment` 发布评论\n6. 无相关内容时发布礼貌提示\n\n**参数建议：**\n- `scan_count` 建议 20，每次处理适量帖子\n- 每条回复引用的参考帖子建议 ≤3 条\n- 支持 dry_run 模式：先分析不发布，确认后再正式运行\n\nFile v1.1.3:references/manage-guild.md\n\n# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 修改频道号 | `modify-guild-number` | 10~14 位英文/数字，需频道主权限；别和 `guild_id` 混淆 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直接加入 | 否，CLI flag 即可 |\n| `JOIN_GUILD_TYPE_ADMIN_AUDIT` | 发送验证消息，管理员审核 | 否 |\n| `JOIN_GUILD_TYPE_DISABLE` | 不允许任何人加入 | 否 |\n| `JOIN_GUILD_TYPE_QUESTION_WITH_ADMIN_AUDIT` | 回答问题 + 管理员审核 | 是，需 `setting.question.items` |\n| `JOIN_GUILD_TYPE_MULTI_QUESTION` | 正确回答问题 | 是，需 `setting.question.items`（含 answer） |\n| `JOIN_GUILD_TYPE_QUIZ` | 答题（选择题） | 是，需 `setting.quiz` 完整结构 |\n\n> 高级类型（后三种）必须通过 stdin JSON 传入完整 `setting` 对象，CLI flag 仅支持前三种基础类型。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123456\"\n  join_type = \"JOIN_GUILD_TYPE_MULTI_QUESTION\"\n  setting = @{\n    question = @{\n      items = @(\n        @{ title = \"问题1\"; answer = \"A\" },\n        @{ title = \"问题2\"; answer = \"B\" }\n      )\n    }\n  }\n} | ConvertTo-Json -Depth 8 -Compress\n$body | tencent-channel-cli manage update-join-guild-setting\n```\n\n## 频道私信规则\n\n`push-group-dm-msg` 发送普通私信消息到指定用户。支持两种模式：\n\n**⚠️ 模式选择决策规则（必须遵守）：**\n- 用户**引用了一条私信通知**并说\"回复私信\" → 使用**模式 2**（`--ref`）\n- 用户说\"给某人发私信\"/\"发私信给某人\"（**没有引用私信通知**） → 使用**模式 1**（先查 `tiny_id`，再直接发送）\n- **严禁**在主动发私信场景使用 `--ref`，`--ref` 仅用于回复已收到的私信通知\n\n**模式 1：直接发送（主动发私信）**\n1. 先通过 `guild-member-search` 或 `get-guild-member-list` 查到目标用户的 `tiny_id`\n2. 确定来源频道的 `guild_id`（即你和目标用户共同所在的频道）\n3. 调用：`tencent-channel-cli manage push-group-dm-msg --peer-tiny-id <tiny_id> --source-guild-id <guild_id> --text \"内容\" --json`\n\n**模式 2：回复私信通知（通过 --ref 自动填充）**\n- `ref`：通知编号（如 #1），CLI 自动从本地通知记录查找私信会话信息，并通过消息漫游获取对方 tinyId 和 sourceGuildId\n- 调用：`tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n- **限制**：对方未回复之前只能发送 1 条消息（retCode `100707`）\n- **严禁**在未获取用户同意的情况下批量发送私信\n\n## 退出频道规则\n\n`leave-guild` 退出指定频道，**不可逆**操作。退出后需要重新加入，且如果频道有验证设置，需重新通过验证。高风险操作，需 `--yes` 确认。\n\n## 陷阱（schema 不体现）\n\n- **频道号 ≠ guild_id**：用户可见的频道号（如 `pd20589127`）是展示层标识，不能当作 `guild_id` 使用。获取真实 guild_id 的方式：通过 `get-share-info` 解析分享链接，或从 `get-my-join-guild-info` 返回中提取。修改频道号用 `modify-guild-number --guild-id <ID> --guild-number <新频道号>`（10~14 位英文/数字）\n- `get-share-info` 仅限 `pd.qq.com` 域名链接\n- `join-guild` 的 `join_guild_answers` 和 `join_guild_comment` 仅 stdin JSON 可传\n- `push-group-dm-msg` 的 `source-guild-id` 不是目标用户所在频道，而是发送者所在的来源频道\n- `update-join-guild-setting` 高级类型未传 `setting` 对象会直接报错\n- Windows / PowerShell 下不要直接照抄 bash 的 `echo '{...}' | ...`；复杂对象优先用 `ConvertTo-Json`\n\nFile v1.1.3:references/manage-member.md\n\n# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |\n\nFile v1.1.3:references/notification-reference.md\n\n# 频道消息通知参考\n\n## 一、概述\n\n频道消息通知覆盖所有频道级通知，包括帖子互动（点赞/评论/回复/@）、系统消息（加入申请等）、私信通知等。\n\n## 二、命令路由表\n\n| 用户意图 | CLI 命令 | 关键约束 |\n|---------|----------|---------|\n| 开启频道消息通知 / 帮我开启通知 | `notices-on` | 初始化基线 + 根据平台自动选择推送模式 |\n| 关闭/取消频道消息通知 | `notices-off` | 停止通知服务 + 清理所有相关文件 |\n| 查看通知状态 | `notices-status` | 查看是否开启、推送模式、服务状态等 |\n| 检查有没有新通知 | `check-notices` | 与本地基线增量对比，需先开启通知 |\n| 获取最近通知记录（本地） | `get-recent-notices` | 纯本地读取，用于匹配引用的通知消息 |\n| 评论帖子（评论他） | `do-comment --ref <编号> --content \"内容\"` | 评论帖子本身，按通知编号自动填充 feed 信息 |\n| 回复评论（回复他） | `do-reply --ref <编号> --content \"内容\"` | 回复该用户的评论，自动查找对应评论并回复 |\n| 回复私信（引用通知） | `push-group-dm-msg --ref <编号> --text \"内容\"` | 仅用于回复已收到的私信通知，`--ref` 自动查找对方信息 |\n| 主动发私信（非通知） | `push-group-dm-msg --peer-tiny-id <id> --source-guild-id <id> --text \"内容\"` | 先通过 `guild-member-search` 查到 tiny_id，详见 manage-guild.md |\n\n## 三、自动引导（⚠️ 必须遵守！）\n\nCLI 在**首次安装或版本升级后**第一次使用时引导用户开启频道消息通知（同一版本只提示一次）。\n\n以下 hint 字段出现在 CLI 返回的 JSON 中时，Agent **必须立刻处理**，不得忽略：\n\n**`setup_hint` 字段**（出现在 `token setup` 返回结果中）：\n- 表示用户刚完成登录但尚未开启频道消息通知\n- Agent 收到此字段时**必须**：\n  1. 向用户展示 `setup_hint.message` 内容（如\"登录成功！建议开启频道消息通知\"）\n  2. 主动询问用户是否要开启\n  3. 如果用户同意，执行 `setup_hint.command` 中的命令\n- **示例**：收到 `\"setup_hint\": {\"action\":\"subscribe_notices\", \"command\":\"tencent-channel-cli manage notices-on\", \"message\":\"登录成功！建议开启「频道消息通知」...\"}`，应回复类似：\"登录成功！建议开启频道消息通知，有新互动时自动推送给你。要开启吗？\"\n\n**`subscribe_hint` 字段**（出现在任意命令返回结果中）：\n- 表示用户尚未开启频道消息通知（仅在首次安装或版本升级后出现一次）\n- Agent 收到此字段时**必须**：\n  1. 告知用户可以开启频道消息通知，有新互动时自动推送\n  2. 如果用户同意，执行 `subscribe_hint.command` 中的命令开启\n  3. 此 hint 每天最多出现一次，如果用户明确关闭了通知，则不会再出现\n\n## 四、开启/关闭流程规则（重要！根据返回的 platform 字段区分两种模式）\n\n**重要：通知是全局的，一次开启覆盖用户已加入的所有频道。不需要按频道单独开启，也不需要在加入新频道时重新开启。**\n\n1. **开启通知**：用户说\"帮我开启频道消息通知\"时，直接执行：\n   ```bash\n   tencent-channel-cli manage notices-on --json\n   ```\n   不需要传任何额外参数。开启后，用户加入的所有频道的互动通知都会生效。\n\n2. **根据返回结果的 `platform` 字段决定后续行为**：\n\n   **情况 A：`platform = \"openclaw\"`（OpenClaw 环境）**\n   - CLI 已自动启动后台通知服务，每 5 秒拉取新通知\n   - 有新通知时自动通过 `openclaw agent --deliver` 推送给用户（经过大模型，出现在上下文中）\n   - 推送路由（channel + target）从 OpenClaw session 文件自动读取，无需手动配置\n   - **自动恢复机制**：如果通知服务因机器重启/异常退出中断，用户下次使用 CLI 时会自动检测并重新拉起，无需额外操作\n   - **向用户报告时，只需简洁告知\"频道消息通知已开启，有新互动会自动推送\"即可，不需要展示 PID、进程状态等内部信息**\n\n   **情况 B：`platform = \"other\"`（非 OpenClaw 环境）**\n   - CLI **不会**启动后台通知服务，无法自动推送通知\n   - 告知用户：当前环境未检测到 OpenClaw Cli，无法自动推送频道通知。\n\n3. **关闭通知**：用户说\"关闭频道消息通知\"/\"取消频道消息通知\"时，执行 `tencent-channel-cli manage notices-off --json`\n   - 停止通知服务（OpenClaw 模式）\n   - 删除所有相关文件\n\n## 五、通知推送消息格式（OpenClaw 模式）\n\n通知推送到 Agent 时，消息包含：\n\n1. **可读通知内容**：人类可读的通知列表（频道名、操作者、动作、内容、时间）\n2. **引用回复提示**：如果有可回复类通知（评论/回复/@我），末尾提示用户\"引用本条消息并输入内容即可回复\"\n\n推送消息示例：\n\n```\n💬 互动消息通知\n频道名：灵感小站\nhalleyyang 评论了你的帖子：内容  (15:39)\n#1 引用本条消息，说「回复他 [内容]」或「评论他 [内容]」即可操作\n\n📢 系统消息通知\n频道名：灵感小站\nhalleyyang 申请加入频道  (22:08)\n申请理由：哈哈哈\n#2 引用本条消息，说「拒绝」或「同意」即可操作\n\n📩 私信消息通知\nhalleyyang给你发了私信：你好  (11:10)\n```\n\n> 每条通知带有唯一编号（如 #1），编号与本地 baseline.json 中的 RecentNotice 对应，Agent 通过编号查找 feed_id/guild_id 等参数。\n\n## 六、引用通知回复流程（⚠️ 必须遵守！）\n\n当用户**引用了一条包含频道通知内容的消息**，并说了操作意图词时，该内容是用户要发送到频道的互动操作，**不是对 Agent 说的话**。\n\n### 6.1 互动通知回复（评论/回复）\n\n引用含 💬 互动通知的消息，用户说了回复/评论意图词 + 内容：\n\n**根据意图词区分操作**：\n\n- 「**评论他**」「**评论**」→ 评论帖子本身（`do-comment`）\n- 「**回复他**」「**回复**」「**帮我回复**」→ 回复该用户的评论（`do-reply`）\n\n**处理步骤**：\n\n1. 从引用消息中提取**通知编号**（`#1` 中的数字 1）\n2. 判断用户意图是「评论」还是「回复」\n3. 执行对应命令：\n   ```bash\n   # 评论帖子\n   tencent-channel-cli feed do-comment --ref <编号> --content \"内容\" --json\n   # 回复评论（自动查找对应评论）\n   tencent-channel-cli feed do-reply --ref <编号> --content \"内容\" --json\n   ```\n\n- **严禁将用户的回复内容当作对话直接输出**\n- 编号会自动映射到本地存储的 feed_id/guild_id\n\n### 6.2 系统通知操作（同意/拒绝）\n\n引用含 📢 系统通知的消息，用户说了「同意」或「拒绝」：\n\n- 用户说「**同意**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id agree --json`\n- 用户说「**拒绝**」→ `tencent-channel-cli manage deal-notice --ref <编号> --action-id refuse --json`\n\n**处理步骤**：从引用消息中提取通知编号 → 判断用户意图 → 执行对应命令。编号会自动映射到本地存储的 notice_id。\n\n### 6.3 私信通知回复\n\n引用含 📩 私信通知的消息，用户说了「回复私信」+ 内容：\n\n- 用户说「**回复私信 内容**」→ `tencent-channel-cli manage push-group-dm-msg --ref <编号> --text \"内容\" --json`\n\n**处理步骤**：从引用消息中提取通知编号 → 提取用户要回复的内容 → 执行命令。CLI 会自动通过编号查找本地私信会话信息，并调用消息漫游 API 获取对方的 tinyId 和 sourceGuildId，然后发送私信。**严禁将用户的回复内容当作对话直接输出。**\n\n## 七、增量判断规则\n\n- **水位线模型**：每个通知源（interact/system/dm）维护一个时间戳水位线（`watermark`），只拉取水位线之后的通知\n- **同秒去重**：水位线边界上可能有多条同秒通知，通过 `idsAtWatermark` 集合去重\n- **首次拉取保护**：水位线为 0 时只建立基线不推送，避免开启通知时涌入历史消息\n- **只关心\"是否推送过\"**：不关心用户是否在频道客户端已读\n- **基线按通知源分区**：interact（互动通知）/ system（系统消息）/ dm（私信），每个分区独立管理水位线\n\n## 八、本地文件说明\n\n| 文件 | 路径 | 作用 |\n|------|------|------|\n| `state.json` | `~/.qqcli/subscription/` | 订阅状态（是否激活、订阅的 guild_id） |\n| `baseline.json` | `~/.qqcli/subscription/` | 已推送通知 ID 集合（按通知源分区） |\n| `subscription_route.json` | `~/.qqcli/subscription/` | 推送路由（channel + to，OpenClaw 模式） |\n| `daemon.pid` | `~/.qqcli/subscription/` | 通知服务 PID（OpenClaw 模式） |\n| `daemon.log` | `~/.qqcli/subscription/` | 通知服务运行日志（OpenClaw 模式） |\n| `heartbeat` | `~/.qqcli/subscription/` | 通知服务心跳时间戳 |\n\n## 九、Token 更换与通知订阅\n\n当用户更换 token（通过 `token setup`、`login`、`login token` 等任何方式）时，CLI 会**自动停止通知服务并清理所有订阅文件**。\n\n**Agent 行为规范（⚠️ 必须遵守！）**：\n- Token 更换后，**不要自动重新订阅通知**\n- 只需告知用户：凭证已更新，频道消息通知已关闭，如需继续接收通知请说\"帮我开启频道消息通知\"\n- 由用户自己决定是否重新开启\n\n## 十、问题定位\n\n| 提示 / 错误 | 处理 |\n|-------------|------|\n| MCP 鉴权失败（retCode `8011`） | 执行 `tencent-channel-cli token setup` 重新配置凭证 → `tencent-channel-cli doctor` 确认 |\n\nArchive v1.1.2: 5 files, 14601 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (10294b), references/manage-guild.md (7160b), references/manage-member.md (2065b), SKILL.md (12904b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.2  \nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\nWindows / PowerShell 使用要求：\n\n- 如果在执行过程中提示相关命令、依赖没有安装，可以先在powershell里执行`Get-Command`或者`where.exe`命令，查找并确认是否真的没有安装\n- 执行`tencent-channel-cli`命令时，默认会使用`.ps1`脚本，但是windows可能默认的执行策略禁止运行`.ps1`脚本，会导致无交互的环境永久卡住，可以使用`.cmd`路径来调用\n- 能用 flag 时优先用 flag；只有复杂对象、数组、分页透传等场景再用 stdin JSON，**PowerShell JSON格式**：`$body = @{ guild_id = \"123\" } | ConvertTo-Json -Compress; $body | & tencent-channel-cli manage get-guild-info --json`\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、移帖、移动帖子、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n4. **鉴权失败**（retCode `8011` 或\"未登录\"错误）：提示用户执行 `tencent-channel-cli token setup '<凭证>'` 重新配置凭证；\n5. **限流**（retCode `153` / 错误含\"接口调用已超过申请的频率上限\"）：**不报错、不询问用户**，直接 sleep 70s 后原样重试一次；若重试仍报 153，则告知用户\"接口触发频率限制，请稍后再试\"\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n**最低 CLI 版本：1.0.3**\n\n```bash\ntencent-channel-cli version          # 未安装或版本 < 1.0.3 → npm install -g tencent-channel-cli\ntencent-channel-cli token verify       # 未登录 → 优先执行 tencent-channel-cli token setup '<凭证>'\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n> CLI 版本低于 **1.0.3** 时，需要执行 `npm install -g tencent-channel-cli` 升级后再继续，禁止使用旧版本执行命令。\n\n## 更新检测\n\n通过 HEAD 请求（不下载文件）读取响应头，判断 Skill 和 CLI 是否有新版本：\n\n```bash\ncurl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli version 比对）\n```\n\n```powershell\n$resp = Invoke-WebRequest -Method Head -MaximumRedirection 5 https://connect.qq.com/skills/tencent-channel-community.zip\n$resp.Headers[\"x-cos-meta-tcc-version\"]\n$resp.Headers[\"x-cos-meta-tcc-cli-version\"]\n```\n\nSKILL有新版本时，从以下渠道获取更新：\n\n- CDN：[https://connect.qq.com/skills/tencent-channel-community.zip](https://connect.qq.com/skills/tencent-channel-community.zip)\n- GitHub：[https://github.com/tencent-connect/tencent-channel-community](https://github.com/tencent-connect/tencent-channel-community)\n- ClawHub：[https://clawhub.ai/tencent-adm/tencent-channel-community](https://clawhub.ai/tencent-adm/tencent-channel-community)\n\n## 敏感字段策略\n\n工具输出已统一为语义化字段名，按以下策略决定是否向用户展示。\n\n### 1. 绝对不展示\n\n\n| 字段                                       | 原因           |\n| ---------------------------------------- | ------------ |\n| `member_uin` / `uin` / `uint64MemberUin` | 用户 QQ 号，隐私敏感 |\n\n\n### 2. 内部链式字段（不展示，但不得丢弃）\n\nagent 在多步骤操作中必须透传这些字段，**不向用户展示，也不得在清洗时丢弃**：\n\n\n| 字段                                                                          | 来源命令                                                                                                        | 用于哪些写操作                                                                   |\n| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |\n| `feed_id`                                                                   | 所有 feed 读取命令                                                                                                | `get-feed-detail` / `do-comment` / `do-reply` / `del-feed` / `alter-feed` |\n| `create_time_raw`                                                           | 所有 feed 读取命令                                                                                                | `do-comment` / `do-reply` / `del-feed` / `alter-feed`                     |\n| `author_id`（帖子级）                                                            | `get-guild-feeds` / `get-channel-timeline-feeds` / `get-feed-detail` / `search-guild-feeds` / `get-notices` | `do-comment` / `del-feed`                                                 |\n| `comment_id`                                                                | `get-feed-comments`                                                                                         | `do-reply` / `do-like`（评论点赞）                                              |\n| `author_id`（评论级）                                                            | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `create_time_raw`（评论级）                                                      | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `reply_id`                                                                  | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `del-feed`（删除回复）/ `do-reply`（回复某条回复）                                      |\n| `target_reply_id`                                                           | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`（回复某条回复时**必须**传入，否则楼层关系丢失）                                      |\n| `target_user_id`                                                            | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`                                                                |\n| `attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie` | 各翻页命令                                                                                                       | 翻页时原样传回对应命令                                                               |\n\n\n### 3. 默认不展示（除非用户明确要求）\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n\n### 4. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳；禁言时间戳为 `0` 时显示\"无禁言\"\n\n## 快捷命令\n\n当匹配下列意图时，优先使用快捷命令。一次调用替代多次 tool_call，提高处理速度。\n\n\n| 意图           | 命令                                                                                                    |\n| ------------ | ----------------------------------------------------------------------------------------------------- |\n| 搜索频道并加入      | `tencent-channel-cli manage search-and-join --keyword \"<关键词>\" --json`                                 |\n| 在频道内发帖       | `tencent-channel-cli feed quick-publish --content \"<内容>\" --json`                                      |\n| 搜索帖子并评论      | `tencent-channel-cli feed search-and-comment --guild-id <ID> --query \"<关键词>\" --content \"<评论>\" --json` |\n| 删帖并禁言        | `tencent-channel-cli feed delete-and-mute --guild-id <ID> --query \"<关键词>\" --json`                     |\n| 获取最新帖子详情并且总结 | `tencent-channel-cli feed latest-feeds-detail --json`                                                 |\n| 获取热门帖子详情并且总结 | `tencent-channel-cli feed hot-feeds-detail --json`                                                    |\n\n\n快捷命令是多轮交互：返回 `status: \"waiting\"` 时**不要放弃、不要改用单命令、不要误判为卡住**，必须继续执行返回里的 `resume_command`。`--resume-id` 全程不变。\n\n`latest-feeds-detail` 和`hot-feeds-detail` 默认返回的是帖子详情，需要再自行进行总结\n\n### 交互协议示例\n\n```\n# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}\n```\n\n> **重要**：所有快捷命令调用必须加 `--json` flag。`status: \"done\"` 表示完成，`status: \"waiting\"` 表示必须继续 resume。\n> **PowerShell**：如果返回里的 `resume_command` 是裸命令，优先手动替换成 `tencent-channel-cli ...`（绝对路径或已加入 PATH）后再执行；不要尝试在同一个命令里交互式按键选择。\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1776255541609\n}\n\nFile v1.1.2:references/feed-reference.md\n\n# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链 |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n| 移动帖子到其他版块 | `move-feed` | 需提供原版块 ID 和目标版块 ID |\n\n## 核心规则\n\n### get-guild-feeds\n\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回 retCode `20047` → 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **全局发帖身份确认**：不传 guild_id/channel_id 时为「作者身份全局发帖」，要求账号具有「作者」角色，普通成员**无法**使用。执行前必须向用户确认其具有作者身份，确认后加 `--yes` 执行；未确认则引导用户传入 guild_id 和 channel_id 以普通成员身份发帖\n3. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n4. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n5. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n6. 正文为纯文本，不渲染 Markdown\n7. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `publish-feed` / `alter-feed` 自动补取\n- 帖子分享链接用 `get-feed-share-url`，**频道**分享链接用 `get-guild-share-url`\n\n### 链式字段：replies_preview\n\n每条回复含：`reply_id`（删除/回复该回复时用）、`author_id`（回复时传 target_user_id）、`target_reply_id` / `target_user_id`（楼中楼关系）、`create_time_raw`\n\n## 翻页字段速查（命令→字段名）\n\n| 命令 | stdin JSON 字段名 | CLI flag | 注意 |\n|------|-------------------|----------|------|\n| `get-guild-feeds` | `feed_attach_info` | `--feed-attach-info` | |\n| `get-channel-timeline-feeds` | `feed_attch_info`（少个 **a**） | `--feed-attach-info` | stdin JSON 拼写与其他命令不同 |\n| `get-feed-comments` | `attach_info` | `--attach-info` | |\n| `get-notices` | `attach_info` | `--attach-info` | |\n| `get-next-page-replies` | `attach_info` | `--attach-info` | 首次值从 get-feed-comments 评论对象获取 |\n| `search-guild-feeds` | `cookie` | `--next-page-cookie` | stdin JSON 字段名与 CLI flag 差异大 |\n\n> **翻页安全规则**：翻页时严格用上次返回的字段名和值原样传回，不要跨命令复用翻页令牌。\n\n### move-feed（移动帖子）\n\n执行前必须向用户确认其在**目标频道**的身份，用户明确确认自己是该频道的 **超级管理员** 或 **频道主** 后，方可继续执行。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 图片/视频路径 | `file_paths`(JSON) 仅传图片，`video_paths`(JSON) 仅传视频，混用导致上传失败（business_type 错误）。推荐 `--image` / `--video`；**短贴**中 `--image` 与 `--video` 互斥，同时传入会被本地拦截；**长贴**（有标题 / feed_type=2）允许图片与视频同时存在 |\n| alter-feed 替换媒体 | 默认**保留**原帖所有图片/视频并追加新增内容。要**替换**时必须先清除：`--clear-images` 清除原帖所有图片，`--clear-videos` 清除原帖所有视频；可与 `--image`/`--video` 连用实现\"先清后加\" |\n| alter-feed 帖子类型 | `alter-feed` **不接受** `feed_type` 参数，帖子类型始终从原帖自动继承。不存在\"编辑后变成短贴\"的风险 |\n| images 字段名 | 已有 CDN URL 时用 `images`，每项字段名为 `url`，**不是** `picUrl` |\n| 板块置顶 | `top-feed` 的 `top_type=2/3`（板块置顶）时 `channel_id` 必填，需通过 stdin JSON 传入 |\n| 删除评论必须 --yes | `do-comment --comment-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必须 --yes | `do-reply --reply-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必填字段 | 除 reply_id 外还需：`replier_id`、`feed_id`、`feed_author_id`、`feed_create_time`、`comment_id`、`comment_author_id`、`comment_create_time`、`guild_id`、`channel_id` |\n| @用户 ID 格式 | `at_users[].id` 必须是 tinyid（通常 >10 位数字），**严禁**传 QQ 号（≤10 位），CLI 会直接报错拦截 |\n| alter-feed @用户 | 支持 `--at-user tinyid:昵称` CLI flag（可多次指定），与 publish-feed 一致 |\n| 正文中禁止写链接 | **禁止**在 `content` 里用 Markdown 语法 `[文案](URL)` 或裸 URL 表示链接——Markdown 语法在帖子里原样显示为纯文本，链接不可点击。帖子内嵌链接必须通过 `urls` 数组（⚡stdin JSON）声明 |\n\n## 帖子内嵌链接（⚡stdin JSON）\n\n`publish-feed` / `alter-feed` 支持内嵌可点击超链接，通过 **stdin JSON 的 `urls` 数组**传入，CLI flag 不支持。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123\"\n  channel_id = \"456\"\n  content = \"本周技术分享已更新，点击查看详情了解更多。\"\n  urls = @(@{ url = \"https://example.com/weekly\"; displayText = \"查看详情\" })\n} | ConvertTo-Json -Depth 6 -Compress\n$body | tencent-channel-cli feed publish-feed\n```\n\n**字段：**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `url` | string | 链接地址（必填） |\n| `displayText` | string | 显示文本；传空字符串时客户端显示原始 URL |\n| `type` | int | 链接类型；不传时短贴默认 `10`（富文本卡片），长贴默认 `0`（普通链接） |\n\n**用户自然语言 → 参数组装规则：**\n\n- 用户说「链接是 X，显示文本是 Y」→ `{\"url\":\"X\",\"displayText\":\"Y\"}`\n- 用户说「把 X 做成超链接」→ `{\"url\":\"X\",\"displayText\":\"X\"}`（或根据上下文取合适文案）\n- 用户在正文中写了 `[文案](URL)` → 识别为链接意图，拆成 `{\"url\":\"URL\",\"displayText\":\"文案\"}`，正文中保留「文案」纯文本\n- `content` 字段只写正文文字，不要把 URL 拼入正文\n\n**示例：**\n\n```bash\necho '{\n  \"guild_id\": \"123\", \"channel_id\": \"456\",\n  \"content\": \"本周技术分享已更新，点击查看详情了解更多。\",\n  \"urls\": [{\"url\": \"https://example.com/weekly\", \"displayText\": \"查看详情\"}]\n}' | tencent-channel-cli feed publish-feed\n```\n\n## 自动化运营\n\n以下能力通过组合已有原子命令实现，适合结合定时任务做周期性自动化。\n\n### 内容巡检\n\n扫描频道帖子，AI 判断是否违规，违规则删除。\n\n**推荐路径：**\n1. `get-guild-feeds`（get_type=2，最新）或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整标题和正文\n3. AI 根据内容判断是否违规（水帖、广告、外链、交友、风险等）\n4. 对违规帖子调 `del-feed --yes` 删除（高风险，需确认）\n\n**参数建议：**\n- 通过 `count` 控制每次扫描数量（建议 20~50）\n- 可指定 `channel-id` 限定版块范围\n- 定时调度间隔建议 30~60 分钟\n\n### 问答自动回复\n\n扫描频道帖子，识别求助帖，搜索相关内容后自动回复。\n\n**推荐路径：**\n1. `get-guild-feeds` 或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整内容\n3. AI 判断是否为求助帖（含提问意图：问号、\"怎么\"、\"如何\"、\"求助\"等）\n4. 对求助帖提取关键词，调 `search-guild-feeds` 搜索频道内相关帖子\n5. 整理相关帖子内容生成回复，调 `do-comment` 发布评论\n6. 无相关内容时发布礼貌提示\n\n**参数建议：**\n- `scan_count` 建议 20，每次处理适量帖子\n- 每条回复引用的参考帖子建议 ≤3 条\n- 支持 dry_run 模式：先分析不发布，确认后再正式运行\n\nFile v1.1.2:references/manage-guild.md\n\n# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直接加入 | 否，CLI flag 即可 |\n| `JOIN_GUILD_TYPE_ADMIN_AUDIT` | 发送验证消息，管理员审核 | 否 |\n| `JOIN_GUILD_TYPE_DISABLE` | 不允许任何人加入 | 否 |\n| `JOIN_GUILD_TYPE_QUESTION_WITH_ADMIN_AUDIT` | 回答问题 + 管理员审核 | 是，需 `setting.question.items` |\n| `JOIN_GUILD_TYPE_MULTI_QUESTION` | 正确回答问题 | 是，需 `setting.question.items`（含 answer） |\n| `JOIN_GUILD_TYPE_QUIZ` | 答题（选择题） | 是，需 `setting.quiz` 完整结构 |\n\n> 高级类型（后三种）必须通过 stdin JSON 传入完整 `setting` 对象，CLI flag 仅支持前三种基础类型。\n\nWindows / PowerShell 推荐写法：\n\n```powershell\n$body = @{\n  guild_id = \"123456\"\n  join_type = \"JOIN_GUILD_TYPE_MULTI_QUESTION\"\n  setting = @{\n    question = @{\n      items = @(\n        @{ title = \"问题1\"; answer = \"A\" },\n        @{ title = \"问题2\"; answer = \"B\" }\n      )\n    }\n  }\n} | ConvertTo-Json -Depth 8 -Compress\n$body | tencent-channel-cli manage update-join-guild-setting\n```\n\n## 频道私信规则\n\n`push-group-dm-msg` 发送普通私信消息到指定用户。\n\n- `peer-tiny-id`：目标用户 tiny_id（必须先通过 `guild-member-search` 或 `get-guild-member-list` 查到）\n- `source-guild-id`：来源频道 ID（私信消息关联的频道）\n- `text`：消息文本，≤1900 字符\n- **限制**：对方未回复之前只能发送 1 条消息（retCode `100707`）\n- **严禁**在未获取用户同意的情况下批量发送私信\n\n## 退出频道规则\n\n`leave-guild` 退出指定频道，**不可逆**操作。退出后需要重新加入，且如果频道有验证设置，需重新通过验证。高风险操作，需 `--yes` 确认。\n\n## 陷阱（schema 不体现）\n\n- **频道号 ≠ guild_id**：用户可见的频道号（如 `pd20589127`）是展示层标识，不能当作 `guild_id` 使用。获取真实 guild_id 的方式：通过 `get-share-info` 解析分享链接，或从 `get-my-join-guild-info` 返回中提取\n- `get-share-info` 仅限 `pd.qq.com` 域名链接\n- `join-guild` 的 `join_guild_answers` 和 `join_guild_comment` 仅 stdin JSON 可传\n- `push-group-dm-msg` 的 `source-guild-id` 不是目标用户所在频道，而是发送者所在的来源频道\n- `update-join-guild-setting` 高级类型未传 `setting` 对象会直接报错\n- Windows / PowerShell 下不要直接照抄 bash 的 `echo '{...}' | ...`；复杂对象优先用 `ConvertTo-Json`\n\nFile v1.1.2:references/manage-member.md\n\n# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |\n\nArchive v1.1.1: 5 files, 13356 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (9312b), references/manage-guild.md (6649b), references/manage-member.md (2065b), SKILL.md (11680b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.1  \nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n4. **鉴权失败**（retCode `8011` 或\"未登录\"错误）：提示用户执行 `tencent-channel-cli token setup` 重新配置凭证\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n**最低 CLI 版本：1.0.2**\n\n```bash\ntencent-channel-cli --version          # 未安装或版本 < 1.0.2 → npm install -g tencent-channel-cli\ntencent-channel-cli token verify       # 未登录 → tencent-channel-cli token setup（交互式输入凭证）或 tencent-channel-cli token setup '<凭证>' （直接传入）\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n> CLI 版本低于 **1.0.2** 时，需要执行 `npm install -g tencent-channel-cli` 升级后再继续，禁止使用旧版本执行命令。\n\n## 更新检测\n\n通过 HEAD 请求（不下载文件）读取响应头，判断 Skill 和 CLI 是否有新版本：\n\n```bash\ncurl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli --version 比对）\n```\n\nSKILL有新版本时，从以下渠道获取更新：\n\n- CDN：[https://connect.qq.com/skills/tencent-channel-community.zip](https://connect.qq.com/skills/tencent-channel-community.zip)\n- GitHub：[https://github.com/tencent-connect/tencent-channel-community](https://github.com/tencent-connect/tencent-channel-community)\n- ClawHub：[https://clawhub.ai/tencent-adm/tencent-channel-community](https://clawhub.ai/tencent-adm/tencent-channel-community)\n\n## 敏感字段策略\n\n工具输出已统一为语义化字段名，按以下策略决定是否向用户展示。\n\n### 1. 绝对不展示\n\n\n| 字段                                       | 原因           |\n| ---------------------------------------- | ------------ |\n| `member_uin` / `uin` / `uint64MemberUin` | 用户 QQ 号，隐私敏感 |\n\n\n### 2. 内部链式字段（不展示，但不得丢弃）\n\nagent 在多步骤操作中必须透传这些字段，**不向用户展示，也不得在清洗时丢弃**：\n\n\n| 字段                                                                          | 来源命令                                                                                                        | 用于哪些写操作                                                                   |\n| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |\n| `feed_id`                                                                   | 所有 feed 读取命令                                                                                                | `get-feed-detail` / `do-comment` / `do-reply` / `del-feed` / `alter-feed` |\n| `create_time_raw`                                                           | 所有 feed 读取命令                                                                                                | `do-comment` / `do-reply` / `del-feed` / `alter-feed`                     |\n| `author_id`（帖子级）                                                            | `get-guild-feeds` / `get-channel-timeline-feeds` / `get-feed-detail` / `search-guild-feeds` / `get-notices` | `do-comment` / `del-feed`                                                 |\n| `comment_id`                                                                | `get-feed-comments`                                                                                         | `do-reply` / `do-like`（评论点赞）                                              |\n| `author_id`（评论级）                                                            | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `create_time_raw`（评论级）                                                      | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `reply_id`                                                                  | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `del-feed`（删除回复）/ `do-reply`（回复某条回复）                                      |\n| `target_reply_id`                                                           | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`（回复某条回复时**必须**传入，否则楼层关系丢失）                                      |\n| `target_user_id`                                                            | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`                                                                |\n| `attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie` | 各翻页命令                                                                                                       | 翻页时原样传回对应命令                                                               |\n\n\n### 3. 默认不展示（除非用户明确要求）\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n\n### 4. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳；禁言时间戳为 `0` 时显示\"无禁言\"\n\n### 5. 特殊名称规则\n\n- **严禁向用户提及\"帖子广场\"**，统一显示为 **\"频道主页\"**\n\n## 快捷命令\n\n当匹配下列意图时，优先使用快捷命令。一次调用替代多次 tool_call，提高处理速度。\n\n\n| 意图           | 命令                                                                                                    |\n| ------------ | ----------------------------------------------------------------------------------------------------- |\n| 搜索频道并加入      | `tencent-channel-cli manage search-and-join --keyword \"<关键词>\" --json`                                 |\n| 在频道内发帖       | `tencent-channel-cli feed quick-publish --content \"<内容>\" --json`                                      |\n| 搜索帖子并评论      | `tencent-channel-cli feed search-and-comment --guild-id <ID> --query \"<关键词>\" --content \"<评论>\" --json` |\n| 删帖并禁言        | `tencent-channel-cli feed delete-and-mute --guild-id <ID> --query \"<关键词>\" --json`                     |\n| 获取最新帖子详情并且总结 | `tencent-channel-cli feed latest-feeds-detail --json`                                                 |\n| 获取热门帖子详情并且总结 | `tencent-channel-cli feed hot-feeds-detail --json`                                                    |\n\n\n快捷命令是多轮交互：返回 `status: \"waiting\"` 时**不要放弃改用单命令**，按返回的 `resume_command` 中的模板填写 `--pick <INDEX>` 或 `--set key=value` 后执行即可（`--resume-id` 全程不变）。\n\n`latest-feeds-detail` 和`hot-feeds-detail` 默认返回的是帖子详情，需要再自行进行总结\n\n### 交互协议示例\n\n```\n# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}\n```\n\n> **重要**：所有快捷命令调用必须加 `--json` flag。`status: \"done\"` 表示完成，`status: \"waiting\"` 表示需要继续交互。\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1775813426992\n}\n\nFile v1.1.1:references/feed-reference.md\n\n# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链 |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n\n## 核心规则\n\n### get-guild-feeds\n\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回 retCode `20047` → 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n3. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n4. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n5. 正文为纯文本，不渲染 Markdown\n6. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `publish-feed` / `alter-feed` 自动补取\n- 帖子分享链接用 `get-feed-share-url`，**频道**分享链接用 `get-guild-share-url`\n\n### 链式字段：replies_preview\n\n每条回复含：`reply_id`（删除/回复该回复时用）、`author_id`（回复时传 target_user_id）、`target_reply_id` / `target_user_id`（楼中楼关系）、`create_time_raw`\n\n## 翻页字段速查（命令→字段名）\n\n| 命令 | stdin JSON 字段名 | CLI flag | 注意 |\n|------|-------------------|----------|------|\n| `get-guild-feeds` | `feed_attach_info` | `--feed-attach-info` | |\n| `get-channel-timeline-feeds` | `feed_attch_info`（少个 **a**） | `--feed-attach-info` | stdin JSON 拼写与其他命令不同 |\n| `get-feed-comments` | `attach_info` | `--attach-info` | |\n| `get-notices` | `attach_info` | `--attach-info` | |\n| `get-next-page-replies` | `attach_info` | `--attach-info` | 首次值从 get-feed-comments 评论对象获取 |\n| `search-guild-feeds` | `cookie` | `--next-page-cookie` | stdin JSON 字段名与 CLI flag 差异大 |\n\n> **翻页安全规则**：翻页时严格用上次返回的字段名和值原样传回，不要跨命令复用翻页令牌。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 图片/视频路径 | `file_paths`(JSON) 仅传图片，`video_paths`(JSON) 仅传视频，混用导致上传失败（business_type 错误）。推荐 `--image` / `--video`；**短贴**中 `--image` 与 `--video` 互斥，同时传入会被本地拦截；**长贴**（有标题 / feed_type=2）允许图片与视频同时存在 |\n| alter-feed 替换媒体 | 默认**保留**原帖所有图片/视频并追加新增内容。要**替换**时必须先清除：`--clear-images` 清除原帖所有图片，`--clear-videos` 清除原帖所有视频；可与 `--image`/`--video` 连用实现\"先清后加\" |\n| alter-feed 帖子类型 | `alter-feed` **不接受** `feed_type` 参数，帖子类型始终从原帖自动继承。不存在\"编辑后变成短贴\"的风险 |\n| images 字段名 | 已有 CDN URL 时用 `images`，每项字段名为 `url`，**不是** `picUrl` |\n| 板块置顶 | `top-feed` 的 `top_type=2/3`（板块置顶）时 `channel_id` 必填，需通过 stdin JSON 传入 |\n| 删除评论必须 --yes | `do-comment --comment-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必须 --yes | `do-reply --reply-type 0/2` 为不可逆操作，CLI 强制要求 `--yes`，不传直接报错 |\n| 删除回复必填字段 | 除 reply_id 外还需：`replier_id`、`feed_id`、`feed_author_id`、`feed_create_time`、`comment_id`、`comment_author_id`、`comment_create_time`、`guild_id`、`channel_id` |\n| @用户 ID 格式 | `at_users[].id` 必须是 tinyid（通常 >10 位数字），**严禁**传 QQ 号（≤10 位），CLI 会直接报错拦截 |\n| alter-feed @用户 | 支持 `--at-user tinyid:昵称` CLI flag（可多次指定），与 publish-feed 一致 |\n| 正文中禁止写链接 | **禁止**在 `content` 里用 Markdown 语法 `[文案](URL)` 或裸 URL 表示链接——Markdown 语法在帖子里原样显示为纯文本，链接不可点击。帖子内嵌链接必须通过 `urls` 数组（⚡stdin JSON）声明 |\n\n## 帖子内嵌链接（⚡stdin JSON）\n\n`publish-feed` / `alter-feed` 支持内嵌可点击超链接，通过 **stdin JSON 的 `urls` 数组**传入，CLI flag 不支持。\n\n**字段：**\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| `url` | string | 链接地址（必填） |\n| `displayText` | string | 显示文本；传空字符串时客户端显示原始 URL |\n| `type` | int | 链接类型；不传时短贴默认 `10`（富文本卡片），长贴默认 `0`（普通链接） |\n\n**用户自然语言 → 参数组装规则：**\n\n- 用户说「链接是 X，显示文本是 Y」→ `{\"url\":\"X\",\"displayText\":\"Y\"}`\n- 用户说「把 X 做成超链接」→ `{\"url\":\"X\",\"displayText\":\"X\"}`（或根据上下文取合适文案）\n- 用户在正文中写了 `[文案](URL)` → 识别为链接意图，拆成 `{\"url\":\"URL\",\"displayText\":\"文案\"}`，正文中保留「文案」纯文本\n- `content` 字段只写正文文字，不要把 URL 拼入正文\n\n**示例：**\n\n```bash\necho '{\n  \"guild_id\": \"123\", \"channel_id\": \"456\",\n  \"content\": \"本周技术分享已更新，点击查看详情了解更多。\",\n  \"urls\": [{\"url\": \"https://example.com/weekly\", \"displayText\": \"查看详情\"}]\n}' | tencent-channel-cli feed publish-feed\n```\n\n## 自动化运营\n\n以下能力通过组合已有原子命令实现，适合结合定时任务做周期性自动化。\n\n### 内容巡检\n\n扫描频道帖子，AI 判断是否违规，违规则删除。\n\n**推荐路径：**\n1. `get-guild-feeds`（get_type=2，最新）或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整标题和正文\n3. AI 根据内容判断是否违规（水帖、广告、外链、交友、风险等）\n4. 对违规帖子调 `del-feed --yes` 删除（高风险，需确认）\n\n**参数建议：**\n- 通过 `count` 控制每次扫描数量（建议 20~50）\n- 可指定 `channel-id` 限定版块范围\n- 定时调度间隔建议 30~60 分钟\n\n### 问答自动回复\n\n扫描频道帖子，识别求助帖，搜索相关内容后自动回复。\n\n**推荐路径：**\n1. `get-guild-feeds` 或 `get-channel-timeline-feeds` 拉取帖子列表\n2. 逐条 `get-feed-detail` 获取完整内容\n3. AI 判断是否为求助帖（含提问意图：问号、\"怎么\"、\"如何\"、\"求助\"等）\n4. 对求助帖提取关键词，调 `search-guild-feeds` 搜索频道内相关帖子\n5. 整理相关帖子内容生成回复，调 `do-comment` 发布评论\n6. 无相关内容时发布礼貌提示\n\n**参数建议：**\n- `scan_count` 建议 20，每次处理适量帖子\n- 每条回复引用的参考帖子建议 ≤3 条\n- 支持 dry_run 模式：先分析不发布，确认后再正式运行\n\nFile v1.1.1:references/manage-guild.md\n\n# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直接加入 | 否，CLI flag 即可 |\n| `JOIN_GUILD_TYPE_ADMIN_AUDIT` | 发送验证消息，管理员审核 | 否 |\n| `JOIN_GUILD_TYPE_DISABLE` | 不允许任何人加入 | 否 |\n| `JOIN_GUILD_TYPE_QUESTION_WITH_ADMIN_AUDIT` | 回答问题 + 管理员审核 | 是，需 `setting.question.items` |\n| `JOIN_GUILD_TYPE_MULTI_QUESTION` | 正确回答问题 | 是，需 `setting.question.items`（含 answer） |\n| `JOIN_GUILD_TYPE_QUIZ` | 答题（选择题） | 是，需 `setting.quiz` 完整结构 |\n\n> 高级类型（后三种）必须通过 stdin JSON 传入完整 `setting` 对象，CLI flag 仅支持前三种基础类型。\n\n## 频道私信规则\n\n`push-group-dm-msg` 发送普通私信消息到指定用户。\n\n- `peer-tiny-id`：目标用户 tiny_id（必须先通过 `guild-member-search` 或 `get-guild-member-list` 查到）\n- `source-guild-id`：来源频道 ID（私信消息关联的频道）\n- `text`：消息文本，≤1900 字符\n- **限制**：对方未回复之前只能发送 1 条消息（retCode `100707`）\n- **严禁**在未获取用户同意的情况下批量发送私信\n\n## 退出频道规则\n\n`leave-guild` 退出指定频道，**不可逆**操作。退出后需要重新加入，且如果频道有验证设置，需重新通过验证。高风险操作，需 `--yes` 确认。\n\n## 陷阱（schema 不体现）\n\n- **频道号 ≠ guild_id**：用户可见的频道号（如 `pd20589127`）是展示层标识，不能当作 `guild_id` 使用。获取真实 guild_id 的方式：通过 `get-share-info` 解析分享链接，或从 `get-my-join-guild-info` 返回中提取\n- `get-share-info` 仅限 `pd.qq.com` 域名链接\n- `join-guild` 的 `join_guild_answers` 和 `join_guild_comment` 仅 stdin JSON 可传\n- `push-group-dm-msg` 的 `source-guild-id` 不是目标用户所在频道，而是发送者所在的来源频道\n- `update-join-guild-setting` 高级类型未传 `setting` 对象会直接报错\n\nFile v1.1.1:references/manage-member.md\n\n# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |\n\nArchive v1.1.0: 5 files, 11810 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (9312b), references/manage-guild.md (3724b), references/manage-member.md (2065b), SKILL.md (10493b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入，成员管理/禁言/踢人，帖子发布/编辑/删除/搜索，评论/回复/点赞，版块管理，分享链接解析，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.0\nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md**` — 帖子、评论、回复、点赞、发帖、改帖、删帖、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n4. **鉴权失败**（retCode `8011` 或\"未登录\"错误）：提示用户执行 `tencent-channel-cli token setup` 重新配置凭证\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum / default / desc + 示例\n\n## 环境与认证\n\n```bash\ntencent-channel-cli --version          # 未安装 → npm install -g tencent-channel-cli\ntencent-channel-cli token verify       # 未登录 → tencent-channel-cli token setup（交互式输入凭证）或 tencent-channel-cli token setup '<凭证>' （直接传入）\ntencent-channel-cli doctor             # 自检连通性\n```\n\n> tencent-channel-cli 不存在时必须先提示安装，禁止执行任何 tencent-channel-cli 命令。\n\n## 敏感字段策略\n\n工具输出已统一为语义化字段名，按以下策略决定是否向用户展示。\n\n### 1. 绝对不展示\n\n\n| 字段                                       | 原因           |\n| ---------------------------------------- | ------------ |\n| `member_uin` / `uin` / `uint64MemberUin` | 用户 QQ 号，隐私敏感 |\n\n\n### 2. 内部链式字段（不展示，但不得丢弃）\n\nagent 在多步骤操作中必须透传这些字段，**不向用户展示，也不得在清洗时丢弃**：\n\n\n| 字段                                                                          | 来源命令                                                                                                        | 用于哪些写操作                                                                   |\n| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |\n| `feed_id`                                                                   | 所有 feed 读取命令                                                                                                | `get-feed-detail` / `do-comment` / `do-reply` / `del-feed` / `alter-feed` |\n| `create_time_raw`                                                           | 所有 feed 读取命令                                                                                                | `do-comment` / `do-reply` / `del-feed` / `alter-feed`                     |\n| `author_id`（帖子级）                                                            | `get-guild-feeds` / `get-channel-timeline-feeds` / `get-feed-detail` / `search-guild-feeds` / `get-notices` | `do-comment` / `del-feed`                                                 |\n| `comment_id`                                                                | `get-feed-comments`                                                                                         | `do-reply` / `do-like`（评论点赞）                                              |\n| `author_id`（评论级）                                                            | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `create_time_raw`（评论级）                                                      | `get-feed-comments`                                                                                         | `do-reply`                                                                |\n| `reply_id`                                                                  | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `del-feed`（删除回复）/ `do-reply`（回复某条回复）                                      |\n| `target_reply_id`                                                           | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`（回复某条回复时**必须**传入，否则楼层关系丢失）                                      |\n| `target_user_id`                                                            | `get-feed-comments`.`replies_preview` / `get-next-page-replies`                                             | `do-reply`                                                                |\n| `attach_info` / `feed_attach_info` / `feed_attch_info` / `next_page_cookie` | 各翻页命令                                                                                                       | 翻页时原样传回对应命令                                                               |\n\n\n### 3. 默认不展示（除非用户明确要求）\n\n**频道管理类：**`guild_id`、`channel_id`、`tiny_id`、`face_seq` / `avatar_seq`、`role_id`、`level_role_id`、`raw`\n\n**内容管理类：**`feed_id`、`comment_id`、`reply_id`、`author_id`、`channelInfo` / `channelSign`、`create_time_raw`\n\n> 向用户提及上述概念时，使用以下中文名：`guild_id`→频道ID、`channel_id`→版块ID、`tiny_id`→用户ID、`feed_id`→帖子ID、`comment_id`→评论ID、`reply_id`→回复ID\n\n### 4. 时间戳\n\n- 内容管理命令：`create_time` 已格式化为北京时间（`YYYY-MM-DD HH:MM:SS`），直接展示；`create_time_raw` 为原始秒级时间戳，仅供链式操作使用，不展示\n- 频道管理命令：原始秒级字段（如 `joinTime`、`\n\nArchive v1.0.2: 54 files, 155790 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (29943b), references/manage-guild.md (15493b), references/manage-member.md (7586b), scripts/feed/_mcp_client.py (8991b), scripts/feed/_richtext.py (16901b), scripts/feed/_skill_runner.py (6620b), scripts/feed/operation/__init__.py (55b), scripts/feed/operation/auto_clean_channel_feeds.py (12200b), scripts/feed/operation/channel_qa_responder.py (18048b), scripts/feed/read/__init__.py (50b), scripts/feed/read/get_channel_timeline_feeds.py (9186b), scripts/feed/read/get_feed_comments.py (11891b), scripts/feed/read/get_feed_detail.py (9916b), scripts/feed/read/get_feed_share_url.py (2851b), scripts/feed/read/get_guild_feeds.py (10407b), scripts/feed/read/get_next_page_replies.py (8777b), scripts/feed/read/get_notices.py (12173b), scripts/feed/read/search_guild_feeds.py (7979b), scripts/feed/write/__init__.py (51b), scripts/feed/write/_feed_common.py (11438b), scripts/feed/write/_upload_util.py (22138b), scripts/feed/write/alter_feed.py (25131b), scripts/feed/write/del_feed.py (3660b), scripts/feed/write/do_comment.py (11007b), scripts/feed/write/do_feed_prefer.py (3822b), scripts/feed/write/do_like.py (9161b), scripts/feed/write/do_reply.py (13756b), scripts/feed/write/publish_feed.py (29038b), scripts/feed/write/upload_image.py (25486b), scripts/manage/common.py (25948b), scripts/manage/read/get_guild_channel_list.py (559b), scripts/manage/read/get_guild_info.py (2684b), scripts/manage/read/get_guild_member_list.py (11248b), scripts/manage/read/get_guild_share_url.py (763b), scripts/manage/read/get_join_guild_setting.py (614b), scripts/manage/read/get_my_join_guild_info.py (4528b), scripts/manage/read/get_share_info.py (1564b), scripts/manage/read/get_user_info.py (1667b), scripts/manage/read/guild_member_search.py (1937b), scripts/manage/read/preview_theme_private_guild.py (5030b), scripts/manage/read/search_guild_content.py (5524b), scripts/manage/read/verify_qq_ai_connect_token.py (422b), scripts/manage/write/create_theme_private_guild.py (7793b), scripts/manage/write/join_guild.py (8612b), scripts/manage/write/kick_guild_member.py (985b), scripts/manage/write/modify_member_shut_up.py (1308b), scripts/manage/write/push_qq_msg.py (1333b), scripts/manage/write/update_guild_info.py (1795b), scripts/manage/write/upload_guild_avatar.py (890b), scripts/requirements.txt (14b), scripts/token/setup.sh (2560b), scripts/token/verify.sh (635b), SKILL.md (7448b)\n\nArchive v1.0.1: 53 files, 148441 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (28305b), references/manage-guild.md (13397b), references/manage-member.md (6947b), scripts/feed/_mcp_client.py (8991b), scripts/feed/_richtext.py (16901b), scripts/feed/_skill_runner.py (6620b), scripts/feed/operation/__init__.py (55b), scripts/feed/operation/auto_clean_channel_feeds.py (12200b), scripts/feed/operation/channel_qa_responder.py (18148b), scripts/feed/read/__init__.py (50b), scripts/feed/read/get_channel_timeline_feeds.py (9186b), scripts/feed/read/get_feed_comments.py (11500b), scripts/feed/read/get_feed_detail.py (9916b), scripts/feed/read/get_feed_share_url.py (2851b), scripts/feed/read/get_guild_feeds.py (9992b), scripts/feed/read/get_next_page_replies.py (8759b), scripts/feed/read/get_notices.py (12173b), scripts/feed/read/search_guild_feeds.py (7979b), scripts/feed/write/__init__.py (51b), scripts/feed/write/_feed_common.py (10006b), scripts/feed/write/_upload_util.py (20116b), scripts/feed/write/alter_feed.py (24698b), scripts/feed/write/del_feed.py (3660b), scripts/feed/write/do_comment.py (9771b), scripts/feed/write/do_feed_prefer.py (3483b), scripts/feed/write/do_like.py (9057b), scripts/feed/write/do_reply.py (12402b), scripts/feed/write/publish_feed.py (28217b), scripts/feed/write/upload_image.py (23173b), scripts/manage/common.py (25801b), scripts/manage/read/get_guild_channel_list.py (559b), scripts/manage/read/get_guild_info.py (2684b), scripts/manage/read/get_guild_member_list.py (12201b), scripts/manage/read/get_guild_share_url.py (763b), scripts/manage/read/get_join_guild_setting.py (614b), scripts/manage/read/get_my_join_guild_info.py (4528b), scripts/manage/read/get_user_info.py (1667b), scripts/manage/read/guild_member_search.py (1937b), scripts/manage/read/preview_theme_private_guild.py (5030b), scripts/manage/read/search_guild_content.py (5524b), scripts/manage/read/verify_qq_ai_connect_token.py (422b), scripts/manage/write/create_theme_private_guild.py (7793b), scripts/manage/write/join_guild.py (5368b), scripts/manage/write/kick_guild_member.py (985b), scripts/manage/write/modify_member_shut_up.py (1308b), scripts/manage/write/push_qq_msg.py (1333b), scripts/manage/write/update_guild_info.py (1795b), scripts/manage/write/upload_guild_avatar.py (890b), scripts/requirements.txt (14b), scripts/token/setup.sh (2560b), scripts/token/verify.sh (635b), SKILL.md (6287b)\n\nArchive v1.0.0: 51 files, 134632 bytes\n\nFiles: _meta.json (144b), references/feed-reference.md (17234b), references/manage-reference.md (19310b), scripts/feed/_mcp_client.py (6576b), scripts/feed/_richtext.py (17504b), scripts/feed/_skill_runner.py (6022b), scripts/feed/operation/__init__.py (55b), scripts/feed/operation/auto_clean_channel_feeds.py (12091b), scripts/feed/operation/channel_qa_responder.py (17998b), scripts/feed/read/__init__.py (50b), scripts/feed/read/get_channel_timeline_feeds.py (6044b), scripts/feed/read/get_feed_comments.py (9188b), scripts/feed/read/get_feed_detail.py (7375b), scripts/feed/read/get_feed_share_url.py (2714b), scripts/feed/read/get_guild_feeds.py (7110b), scripts/feed/read/get_next_page_replies.py (7912b), scripts/feed/read/search_guild_feeds.py (5095b), scripts/feed/read/test_get_guild_feeds.py (2422b), scripts/feed/read/test_get_next_page_replies.py (5687b), scripts/feed/write/__init__.py (51b), scripts/feed/write/alter_feed.py (43061b), scripts/feed/write/del_feed.py (3451b), scripts/feed/write/do_comment.py (10484b), scripts/feed/write/do_feed_prefer.py (3328b), scripts/feed/write/do_like.py (8282b), scripts/feed/write/do_reply.py (11667b), scripts/feed/write/publish_feed.py (46890b), scripts/feed/write/test_do_feed_prefer.py (2619b), scripts/feed/write/test_do_like.py (3256b), scripts/feed/write/upload_image.py (21655b), scripts/manage/common.py (23427b), scripts/manage/read/get_guild_channel_list.py (559b), scripts/manage/read/get_guild_info.py (1791b), scripts/manage/read/get_guild_member_list.py (8194b), scripts/manage/read/get_guild_share_url.py (763b), scripts/manage/read/get_my_join_guild_info.py (4482b), scripts/manage/read/get_user_info.py (1301b), scripts/manage/read/preview_theme_private_guild.py (5030b), scripts/manage/read/search_guild_content.py (5482b), scripts/manage/read/verify_qq_ai_connect_token.py (422b), scripts/manage/write/create_theme_private_guild.py (7793b), scripts/manage/write/join_guild.py (1180b), scripts/manage/write/kick_guild_member.py (985b), scripts/manage/write/modify_member_shut_up.py (1327b), scripts/manage/write/push_qq_msg.py (1333b), scripts/manage/write/update_guild_info.py (1795b), scripts/manage/write/upload_guild_avatar.py (890b), scripts/requirements.txt (14b), scripts/token/setup.sh (2560b), scripts/token/verify.sh (635b), SKILL.md (13919b)","readmeExcerpt":"Skill: 腾讯频道Skill Owner: tencent-adm Summary: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。 Tags: latest:1.1.5 Version history: v1.1.5 | 2026-04-29T10:25:58.032Z | user tencent-channel-community v1.1.5 🚀 升级扫码授权登录流程，登录处理更清晰安全。 ✍️ 优化 Markdown 发帖与编辑说明，补充 Markdown 内容发布和 @ 用户规则。 🔔 更新通知订阅说明，重新登录或更换账号时会自动停止通知服务并清理本地订阅状态。 🚀 ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"tencent-channel-cli version          # 未安装或版本 < 1.0.6 → npm install -g tencent-channel-cli\ntencent-channel-cli login status       # 未登录 → tencent-channel-cli login --json（取 verification_uri + qrcode_path 回显让用户扫码）→ tencent-channel-cli login poll-token --json\ntencent-channel-cli doctor             # 自检连通性"},{"language":"bash","snippet":"curl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip"},{"language":"bash","snippet":"curl -sI -L https://connect.qq.com/skills/tencent-channel-community.zip\n# 检查 x-cos-meta-tcc-version     → Skill 最新版本（与本文件 frontmatter version 比对）\n# 检查 x-cos-meta-tcc-cli-version → 最新 CLI 版本（与 tencent-channel-cli version 比对）"},{"language":"powershell","snippet":"$resp = Invoke-WebRequest -Method Head -MaximumRedirection 5 https://connect.qq.com/skills/tencent-channel-community.zip\n$resp.Headers[\"x-cos-meta-tcc-version\"]\n$resp.Headers[\"x-cos-meta-tcc-cli-version\"]"},{"language":"text","snippet":"# Step 1: 发起快捷命令\ntencent-channel-cli feed quick-publish --content \"测试帖子\" --json\n# → {\"data\":{\"status\":\"waiting\",\"id\":\"s-abc12345\",\"step\":\"1/5\",\"pending\":{\"type\":\"pick\",\"hint\":\"选择要发帖的频道\",\"options\":[...],\"resume_command\":\"tencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick <INDEX> --json\"}}}\n\n# Step 2: 选择选项后 resume\ntencent-channel-cli feed quick-publish --resume-id s-abc12345 --pick 0 --json\n# → {\"data\":{\"status\":\"waiting\",...}} 或 {\"data\":{\"status\":\"done\",\"result\":{...}}}"},{"language":"powershell","snippet":"$body = @{\n  guild_id = \"123\"\n  channel_id = \"456\"\n  content = \"本周技术分享已更新，点击查看详情了解更多。\"\n  urls = @(@{ url = \"https://example.com/weekly\"; displayText = \"查看详情\" })\n} | ConvertTo-Json -Depth 6 -Compress\n$body | tencent-channel-cli feed publish-feed"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: tencent-channel-community\ndescription: 腾讯频道(QQ频道)社区管理 skill（CLI 版）。频道创建/设置/搜索/加入/退出，成员管理/禁言/踢人，帖子发布/编辑/删除/移动/搜索，评论/回复/点赞，版块管理，分享链接解析，频道私信，加入设置管理，内容巡检，问答自动回复。涉及腾讯频道、频道帖子、频道成员相关任务时应优先使用。  \nhomepage: https://connect.qq.com/ai\nversion: 1.1.5 \nmetadata: {\"openclaw\":{\"emoji\":\"📢\"}}\n---\n\n所有操作通过 `tencent-channel-cli <domain> <action>` 调用。两种传参模式：\n\n- **stdin JSON**：`echo '{\"guild_id\":\"123\"}' | tencent-channel-cli manage get-guild-info`\n- **CLI flag**：`tencent-channel-cli manage get-guild-info --guild-id 123`\n\nWindows / PowerShell 使用要求：\n\n- 如果在执行过程中提示相关命令、依赖没有安装，可以先在powershell里执行`Get-Command`或者`where.exe`命令，查找并确认是否真的没有安装\n- 执行`tencent-channel-cli`命令时，默认会使用`.ps1`脚本，但是windows可能默认的执行策略禁止运行`.ps1`脚本，会导致无交互的环境永久卡住，可以使用`.cmd`路径来调用\n- 能用 flag 时优先用 flag；只有复杂对象、数组、分页透传等场景再用 stdin JSON，**PowerShell JSON格式**：`$body = @{ guild_id = \"123\" } | ConvertTo-Json -Compress; $body | & tencent-channel-cli manage get-guild-info --json`\n\n请每天使用这个SKILL前检测下SKILL是否有更新，如果检测到有更新版，则询问用户是否需要更新\n\n## 场景路由\n\n根据用户意图关键词，读取对应参考文档：\n\n- `**references/manage-guild.md`** — 频道、版块、创建频道、修改频道、修改频道号、头像、搜索频道、搜索作者、全局搜索帖子、加入频道、频道分享链接、解析分享链接、加入设置、修改加入设置、私信、发私信、退出频道\n- `**references/manage-member.md`** — 成员、禁言、踢人、搜索成员、个人资料\n- `**references/feed-reference.md`** — 帖子、评论、回复、点赞、发帖、改帖、删帖、移帖、移动帖子、帖子分享链接、互动消息、@用户、内容巡检、问答自动回复\n- `**references/notification-reference.md`** — 消息通知、频道通知、开启通知、关闭通知、引用通知回复、login（setup_hint 处理）、subscribe_hint、daemon_guard、私信通知、系统通知\n\n> 「帖子」「评论」「回复」「帖子分享链接」→ feed-reference.md；「频道分享链接」→ manage-guild.md；「消息通知」「通知」「开启通知」「关闭通知」「引用通知回复」→ notification-reference.md；「login 返回 setup_hint」→ notification-reference.md。\n> 帖子搜索有两种：跨频道全局搜索（`search-guild-content scope=feed`）→ manage-guild.md；频道内搜索（`search-guild-feeds`）→ feed-reference.md。\n\n## 全局硬规则\n\n1. **@用户**：必须先 `guild-member-search` 或 `get-guild-member-list` 查到 `tiny_id`，填入 `at_users`（`id`=tiny_id, `nick`=昵称）。**严禁**在 content 中手写 `@昵称`，严禁用 QQ 号或猜测值\n2. **高风险操作**（`del-feed` / `kick-guild-member` / `modify-member-shut-up` / `do-comment`(type=0/2) / `do-reply`(type=0/2) / `remove-admin` / `leave-guild`）：先说明影响 → 等用户同意 → 加 `--yes` 执行\n3. **执行阶段敏感信息最小化**：本 Skill 仅约束命令构造、链式调用、结果整理、最终回复四个执行阶段。所有敏感信息先区分为”业务敏感数据”和”用户隐私数据”：业务敏感数据默认不向用户展示原值，但执行所需字段不得丢失；用户隐私数据默认不展示、不复述、非执行必需不透传，必须使用时仅保留最小必要字段\n4. **URL 输出**：必须用 `<链接>` 包裹（如 `<https://pd.qq.com/s/xxx>`），不用 markdown 语法\n5. **鉴权失败**（retCode `8011` 或”未登录”错误）：按\"登录（扫码授权）\"章节走，必须 `login --json` + `login poll-token --json` 两步，不得绕过扫码或编造 token；\n6. **限流**（retCode `153` / 错误含”接口调用已超过申请的频率上限”）：**不报错、不询问用户**，直接 sleep 70s 后原样重试一次；若重试仍报 153，则告知用户”接口触发频率限制，请稍后再试”\n7. **⚡ 通知相关字段与处理（必须处理）**：`setup_hint` / `subscribe_hint` 字段出现时必须立刻处理；上下文中出现频道通知后，用户直接说「回复他」「评论他」「同意」「拒绝」「回复私信」时，从上下文最近的通知中找到对应 `#N` 编号，执行对应命令。详见 `references/notification-reference.md` 第三、五节。\n\n## 链接识别\n\n用户消息含 `pd.qq.com/s/<code>` 或 `pd.qq.com/...?inviteCode=<code>` → 先 `tencent-channel-cli manage get-share-info` 解析，再按意图继续。其他链接不走解析。\n\n## 参数查询\n\n参数定义和示例通过 CLI 实时查询（返回机器可解析的 JSON，比 --help 更适合 agent）：\n\n- `tencent-channel-cli schema <domain>.<action>` — flags 的 name / type / required / enum "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77cw5hbmapf54rv89jdqwp7x835m4k\",\n  \"slug\": \"tencent-channel-community\",\n  \"version\": \"1.1.5\",\n  \"publishedAt\": 1777458358032\n}"},{"path":"references/feed-reference.md","content":"# 内容管理（feed）\n\n> **参数定义用 `tencent-channel-cli schema feed.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n**关键提醒**：发帖/评论/回复涉及 @用户时，必须先查 `tiny_id` 填入 `at_users`，严禁在 content 中手写 `@昵称`（详见 SKILL.md 硬规则）。\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 浏览频道主页帖子 | `get-guild-feeds` | **不是** `get-channel-timeline-feeds`；必须传 `get_type` |\n| 浏览指定版块帖子 | `get-channel-timeline-feeds` | 需同时传 guild_id + channel_id |\n| 帖子详情 | `get-feed-detail` | 自动补取分享短链 |\n| 帖子评论 | `get-feed-comments` | 回复预览在 `replies_preview` 字段 |\n| 评论回复翻页 | `get-next-page-replies` | 首次 attach_info 从 get-feed-comments 评论对象获取 |\n| 搜索帖子 | `search-guild-feeds` | 结果补充频道名称与分享短链；**需已加入该频道**，否则报 retCode=130000 |\n| 互动消息 | `get-notices` | 类型: 1=顶帖 2=赞评论 3=赞回复 4=收到评论 5=收到回复 6=被@ |\n| 评论帖子 / \"回复帖子\" | `do-comment` | **禁止**用 do-reply 替代；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 回复已有评论或回复 | `do-reply` | 需 comment_id，仅用于回复已有评论/回复；删除时需 --yes；支持 `--ref` 从通知自动填充 |\n| 发帖 | `publish-feed` | 见「发帖规则」 |\n| 删帖 | `del-feed` | 高风险，需 --yes |\n| 编辑帖子 / 改帖 | `alter-feed` | 自动补取分享短链；**Markdown 帖子可编辑**（用 `--markdown-content`，见「陷阱」） |\n| 帖子点赞 / 取消点赞 | `do-feed-prefer` | action: 1=点赞 3=取消 |\n| 评论/回复点赞 | `do-like` | like-type: 3=赞评论 4=取消 5=赞回复 6=取消；需 comment_id |\n| 精华/置顶 | `set-feed-essence` / `top-feed` | 需管理权限 |\n| 推送精华通知 | `push-essence-feed` | 每天限 3 次，每帖仅 1 次，需先加精 |\n| 移动帖子到其他版块 | `move-feed` | 需提供原版块 ID 和目标版块 ID |\n\n## 核心规则\n\n### get-guild-feeds\n\n- **前置条件**：满足以下任一条件才可调用；否则告知用户并引导加入：\n  - 该频道为**公开频道**（无需加入即可浏览）\n  - 当前账号已是该频道的**成员**（可通过 `get-my-join-guild-info` 确认）\n  - 不确定是否公开时，**直接执行**，报错再引导——返回 `retCode=20047` 时，告知用户该频道需先加入才能浏览，引导通过 `manage search-and-join` 加入后重试\n- `get_type` **必须显式传入**，不传或传 0 返回空数据。1=热门 2=最新，不确定时默认 2\n- 用户说\"全部\"/\"所有帖子\"/\"按时间\" → `get_type=2`\n- **翻页时必须保持相同 get_type**，游标与排序模式绑定\n- 返回空列表（data 为空数组）→ 如实告知\"暂无帖子数据\"，不切换其他工具重试\n\n### 发帖规则\n\n1. **确认频道**：有 guild_id + channel_id → 直接发。没有 → **必须先问用户**是指定频道还是全局发帖；选指定频道 → 查 `get-my-join-guild-info` → 选频道 → 查 `get-guild-channel-list` → 排除非帖子类版块，找到「帖子广场」作为默认「全部」版块直接发帖。**严禁**未经确认走全局发帖\n2. **全局发帖身份确认**：不传 guild_id/channel_id 时为「作者身份全局发帖」，要求账号具有「作者」角色，普通成员**无法**使用。执行前必须向用户确认其具有作者身份，确认后加 `--yes` 执行；未确认则引导用户传入 guild_id 和 channel_id 以普通成员身份发帖\n3. **短贴 vs 长贴**：正文 ≤1000 加权字 → 短贴(feed_type=1)无需标题；>1000 → 长贴(feed_type=2)需标题。用户要求长贴时先索取标题。禁止未提供 title 时擅自用 feed_type=2。**加权字**：中文/中文标点=1字，英文/数字/半角=0.5字\n4. **话题标签（#话题）**：仅**短贴**（feed_type=1）支持话题标签。**长贴（feed_type=2）不支持话题标签**。CLI 对长贴传入话题参数（`topic_names` / `--topic-name` / 正文中的 `#[话题]()` 语法）会直接报错拦截\n5. **数量限制**：短贴 ≤1000字/≤18图/≤1视频；长贴 ≤10000字/≤50图/≤5视频；评论回复 ≤1图。超限 CLI 直接报错\n6. **超限拆分**：严禁自行拆分发布，必须先告知用户 → 提出拆分方案 → 获得确认后执行\n7. **内容格式（⚠️ 重要）**：\n   - `--content` 是**纯文本模式**，后端不渲染任何 Markdown 语法——`##`、`**粗体**`、`- 列表`、`> 引用`、代码块等均原样显示为符号\n   - 内容含任何 Markdown 语法时，**必须改用 `--markdown-content`**（后端设置 `is_markdown=true`，客户端才会按 Markdown 渲染）\n   - CLI 会在运行时检测 `--content` 里的 Markdown 语法并直接报错，引导改用 `--markdown-content`\n   - `--content` 与 `--markdown-content` 互斥，不可同时传\n8. 成功后自动补取分享短链，展示短链即可，**不返回 feed_id**\n\n### 分享链接\n\n- 帖子**列表**不自动补取短链，需要时调 `get-feed-share-url`\n- `get-feed-detail` / `pub"},{"path":"references/manage-guild.md","content":"# 频道管理（manage-guild）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 我的频道列表 / 列出频道 / 查看已加入的频道 | `get-my-join-guild-info` | 返回三类：created / managed / joined（列表级摘要） |\n| 频道详情 / 频道详细信息 / 频道资料 / 成员数 / 公告 | `get-guild-info` | 返回成员数、公告、设置等详情；缺 guild_id → 先 `get-my-join-guild-info` 定位 |\n| 子版块列表 | `get-guild-channel-list` | 只查版块，不查帖子 |\n| 跨频道搜索频道/帖子/作者 | `search-guild-content` | scope: channel(默认) / feed / author / all；搜帖子用 scope=feed，频道内搜帖子用 feed 域 `search-guild-feeds` |\n| 频道分享链接 | `get-guild-share-url` | 仅频道链接，帖子链接用 feed 域 |\n| 解析分享链接 | `get-share-info` | 仅限 pd.qq.com 域名链接 |\n| 加入频道 | `join-guild` | 内部自动预检，见下文 |\n| 修改头像 | `upload-guild-avatar` | 需本地图片路径 |\n| 修改名称/简介 | `update-guild-info` | 可只改其一 |\n| 修改频道号 | `modify-guild-number` | 10~14 位英文/数字，需频道主权限；别和 `guild_id` 混淆 |\n| 创建频道 | `create-theme-private-guild` | 未指定私密则默认公开 |\n| 创建/删除/修改版块 | `create-channel` / `delete-channel` / `modify-channel` | delete 不可逆，高风险 |\n| 查看加入设置 | `get-join-guild-setting` | 返回加入方式类型及验证问题 |\n| 修改加入设置 | `update-join-guild-setting` | 6 种加入方式，高级类型需 stdin JSON |\n| 发送频道私信 | `push-group-dm-msg` | 对方未回复前只能发 1 条 |\n| 退出频道 | `leave-guild` | 不可逆，高风险，需 --yes |\n| **帖子类任务** | **→ feed-reference.md** | |\n| **成员类任务** | **→ manage-member.md** | |\n\n### 分流误区\n\n- \"看频道有哪些帖子\" → **feed-reference.md**，不是 manage\n- \"查成员/禁言/踢人\" → **manage-member.md**\n- \"找频道\"区分：搜未知频道 → `search-guild-content`，查已加入 → `get-my-join-guild-info`\n- **帖子搜索**区分：跨频道全局搜索帖子 → `search-guild-content scope=feed`；已知频道内搜索帖子 → feed 域 `search-guild-feeds`\n- **频道列表 vs 频道详情**：「列出我的频道」「我加入了哪些频道」→ `get-my-join-guild-info`（只返回名称、ID 等摘要）；「查看某个频道的详细信息」「频道有多少成员」「频道公告是什么」→ 先定位 guild_id 再调 `get-guild-info`（返回成员数、公告、设置等完整详情）。**拿到列表后不要停下来**，如果用户意图是看详情，必须继续调 `get-guild-info`\n\n## 频道创建规则\n\n- `community_type`：`public`（默认）或 `private`，仅用户明确要求时传 `private`\n- 频道名称 ≤15 字；公开频道仅中英数，私密无限制；简介 ≤300 字符\n- 需 `theme` 或 `guild_name` 至少其一\n- 补取分享链接失败不回滚频道，在返回中给出告警\n\n## 加入频道规则\n\n`join-guild` 内部自动预检加入设置，**无需**手动分两步。\n\n| JoinGuildType | 含义 | AI 行为 |\n|---------------|------|---------|\n| 1 (DIRECT) | 直接加入 | 自动完成 |\n| 2 (ADMIN_AUDIT) | 管理员验证 | 返回 `need_verification` → 向用户收集附言 `join_guild_comment` → 再次调用 |\n| 3 (DISABLE) | 不允许 | 报错 |\n| 4/5 (QUESTION*) | 回答问题 | 返回问题 → 收集答案填入 `join_guild_comment` → 再次调用 |\n| 6 (MULTI_QUESTION) | 多题 | 返回问题列表 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n| 7 (QUIZ) | 测试题 | 返回选择题 → 收集 `join_guild_answers`(⚡JSON) → 再次调用 |\n\n> **收到 `need_verification` 必须先展示问题给用户、收集答案后才能再次调用。禁止自行编造答案。**\n\n## 查询规则\n\n- `get-my-join-guild-info` 返回 `created_guilds` / `managed_guilds` / `joined_guilds` 三类，用户说\"我的频道\"展示全部；前 10 个自动补取分享短链\n- `search-guild-content` 的 `author` scope 搜的是「频道创作者」，**不是**帖子发布人也**不是**频道主；搜频道结果 ≤10 自动补取资料和短链\n\n## 加入设置规则\n\n### get-join-guild-setting\n\n返回频道当前的加入方式（`joinType`）及对应验证问题/答题配置。可用于 `join-guild` 前判断需要提供哪些验证信息。\n\n### update-join-guild-setting\n\n修改频道加入方式，需频道主/管理员权限。\n\n| join-type 枚举 | 含义 | 是否需要 stdin JSON |\n|---------------|------|-------------------|\n| `JOIN_GUILD_TYPE_DIRECT` | 无需审核，直"},{"path":"references/manage-member.md","content":"# 成员管理（manage-member）\n\n> **参数用 `tencent-channel-cli schema manage.<action>` 查，示例用 `--help` 看。本文档只写 schema 不体现的规则。**\n\n## 意图→命令速查\n\n| 意图 | 命令 | 注意 |\n|------|------|------|\n| 成员列表 / 找管理员 / 查机器人 | `get-guild-member-list` | 返回 owners / admins / robots / members 四类，自动去重 |\n| 按昵称搜成员 / 查 tiny_id | `guild-member-search` | **优先用这个**，比翻页遍历快 |\n| 个人资料 | `get-user-info` | 见参数组合 |\n| 禁言/解禁 | `modify-member-shut-up` | time_stamp=0 解禁，见陷阱 |\n| 踢成员 | `kick-guild-member` | 高风险，需 --yes |\n| 设置/移除管理员 | `add-admin` / `remove-admin` | 支持批量 tiny_ids；remove 高风险 |\n| **频道类任务** | **→ manage-guild.md** | |\n| **帖子类任务** | **→ feed-reference.md** | |\n\n### 分流误区\n\n- 只是找某人的 tiny_id → **优先** `guild-member-search`，不要翻页遍历成员列表\n- `get-user-info` 查个人资料，`get-guild-member-list` 查频道成员列表，别混淆\n\n## get-user-info 参数组合\n\n| 传参 | 效果 |\n|------|------|\n| `{}` | 查自己全局资料 |\n| `{guild_id}` | 查自己在频道内资料 |\n| `{guild_id, tiny_id}` | 查他人在频道内资料 |\n\n> `isGuildAuthor` = 频道创作者，**不是**帖子发布人也**不是**频道主\n\n## 时间戳展示\n\n原始秒级字段（如 `joinTime`、`shutupExpireTime`）自动附带 `{字段名}_human` 可读值，向用户展示 `_human` 字段，不展示原始时间戳。禁言时间戳为 `0` 时显示\"无禁言\"。\n\n## 陷阱（schema 不体现）\n\n| 陷阱 | 说明 |\n|------|------|\n| 禁言 time_stamp | 必须传**绝对 Unix 时间戳**（当前时间 + 时长秒数），不是时长。`0` = 立即解禁 |\n| 批量踢人 | `tiny_id`（单个）和 `member_tinyids`（⚡JSON 批量）二选一 |\n| 成员搜索翻页 | `--next-pos` 原样传回上一页返回值 |\n| 成员列表翻页 | `next_page_token` 不透明令牌，必须原样传回 |"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1784,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T07:18:20.877Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:10:14.337Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}