{"id":"b25114eb-a13c-45ae-842e-f2225a08d333","entityType":"agent","slug":"clawhub-zpeng6834-arch-ss-requirements-to-teambition","name":"SS需求→Teambition任务","canonicalUrl":"https://www.xpersona.co/agent/clawhub-zpeng6834-arch-ss-requirements-to-teambition","canonicalPath":"/agent/clawhub-zpeng6834-arch-ss-requirements-to-teambition","generatedAt":"2026-10-10T13:34:57.019Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T11:21:40.713Z","emptyReason":null},"description":"从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客... Skill: SS需求→Teambition任务 Owner: zpeng6834-arch Summary: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-07-09T12:59:43.655Z | user 新增SS平台功能明确排除清单（素材库/话术库/渠道管理等），防止非AI需求误入HK项目；修复#638类误建 v1.0.3 | 2026-07-09T11:52:29.447Z | user config.json 移至工作区根目录 ss_config.","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17bz6sf0msd2h2zewdmwaey1x86ky9c:ss-requirements-to-teambition","sourceUrl":"https://clawhub.ai/zpeng6834-arch/ss-requirements-to-teambition","homepage":"https://clawhub.ai/zpeng6834-arch/skills/ss-requirements-to-teambition","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/zpeng6834-arch/ss-requirements-to-teambition","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/zpeng6834-arch/skills/ss-requirements-to-teambition","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:21:40.713Z","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-10T11:21:40.713Z","emptyReason":null},"stars":null,"forks":null,"downloads":1468,"packageName":null,"latestVersion":"1.0.4","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:21:40.712Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T11:21:40.713Z","lastCrawledAt":"2026-10-10T11:21:40.712Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T11:21:40.712Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.4","createdAt":"2026-07-09T12:59:43.655Z","changelog":"新增SS平台功能明确排除清单（素材库/话术库/渠道管理等），防止非AI需求误入HK项目；修复#638类误建","fileCount":11,"zipByteSize":19882},{"version":"1.0.3","createdAt":"2026-07-09T11:52:29.447Z","changelog":"config.json 移至工作区根目录 ss_config.json，避免 clawhub install --force 覆盖丢失；collect.py 优先读取工作区配置","fileCount":11,"zipByteSize":19797},{"version":"1.0.2","createdAt":"2026-07-09T08:49:49.350Z","changelog":"新增客户接受判定拦截规则：客服提供有效变通方案且客户明确接受/满意时，即使功能不支持也不再建单。修复#639类误建问题。","fileCount":9,"zipByteSize":18607},{"version":"1.0.1","createdAt":"2026-05-12T08:30:55.637Z","changelog":"修复群聊会话消息爆炸问题：限制最大5页(500条) + 客户端时间窗口过滤","fileCount":8,"zipByteSize":11138},{"version":"1.0.0","createdAt":"2026-05-12T08:10:12.408Z","changelog":"Initial release: SaleSmartly会话采集 → AI分析 → Teambition任务创建自动化","fileCount":7,"zipByteSize":9443}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17bz6sf0msd2h2zewdmwaey1x86ky9c:ss-requirements-to-teambition","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-zpeng6834-arch-ss-requirements-to-teambition/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/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-10T13:34:57.017Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zpeng6834-arch-ss-requirements-to-teambition/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":"high","updatedAt":"2026-10-10T11:21:40.713Z","emptyReason":null},"readme":"Skill: SS需求→Teambition任务\n\nOwner: zpeng6834-arch\n\nSummary: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客...\n\nTags: latest:1.0.4\n\nVersion history:\n\nv1.0.4 | 2026-07-09T12:59:43.655Z | user\n\n新增SS平台功能明确排除清单（素材库/话术库/渠道管理等），防止非AI需求误入HK项目；修复#638类误建\n\nv1.0.3 | 2026-07-09T11:52:29.447Z | user\n\nconfig.json 移至工作区根目录 ss_config.json，避免 clawhub install --force 覆盖丢失；collect.py 优先读取工作区配置\n\nv1.0.2 | 2026-07-09T08:49:49.350Z | user\n\n新增客户接受判定拦截规则：客服提供有效变通方案且客户明确接受/满意时，即使功能不支持也不再建单。修复#639类误建问题。\n\nv1.0.1 | 2026-05-12T08:30:55.637Z | user\n\n修复群聊会话消息爆炸问题：限制最大5页(500条) + 客户端时间窗口过滤\n\nv1.0.0 | 2026-05-12T08:10:12.408Z | user\n\nInitial release: SaleSmartly会话采集 → AI分析 → Teambition任务创建自动化\n\nArchive index:\n\nArchive v1.0.4: 11 files, 19882 bytes\n\nFiles: _meta.json (148b), references/analysis_template.md (13300b), references/config_fields.md (1330b), references/execution_guide.md (4818b), references/tb_mcp_setup.md (1402b), scripts/collect.py (10132b), scripts/config.example.json (2489b), scripts/config.json (1128b), scripts/state.json (25b), skill-card.md (2783b), SKILL.md (2441b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783601983655\n}\n\nFile v1.0.4:references/analysis_template.md\n\n# AI 分析 + 任务创建模板\n\n## ⚠️ 核心分类方法论（先读这个）\n\n所有进入分析的会话都已被打上「HelpKnow需求」或「AI员工」标签，**标签本身就是 AI 相关性保证**。不要因为会话后半段出现了 SS 平台话题（如导出、套餐、版本）就整条判为非 AI 相关。\n\n### 三层分类（一个会话可同时产出多类）\n\n| 层级 | 判断标准 | 产出 | 示例 |\n|------|---------|------|------|\n| ✅ FAQ/已解决 | 客服给出有效答案，客户确认理解 → 该条不建单 | 过滤 | 「AI怎么发PDF？」→ 客服教了，客户说OK |\n| 🐛 BUG | 功能异常、设置不生效、客服说「反馈技术排查」**或仍在排查中未解决** | 建 BUG | 人设禁止词不生效、离线AI还在发消息、AI转人工配置了但不执行 |\n| 🆕 需求 | 客户要的功能不存在、客服说「不支持/没有」→ 不管后面有没有 FAQ 部分，功能缺失就是需求 | 建需求 | 「AI能主动回访吗？」→ 客服说不支持 |\n\n**关键规则**：\n- **一个会话可以同时产出 BUG + 需求**，不是二选一\n- **标签保证**：有标签 → 必有 AI 相关内容，不要整条过滤\n- **SS 平台讨论不覆盖 AI 需求**：客户在问 AI 功能的同时问了 SS 平台功能，不能因为后者存在就把 AI 需求也过滤掉\n- **「不支持」= 需求信号**：客服回复功能不支持、做不到、没有 → 这就是产品需要补齐的能力\n- **「未解决」= 必须建单**：客户描述了明确的功能异常现象（如「配置了转人工但没转」「设置了但没生效」），即使客服回复「在排查/需授权/等技术确认」，只要问题未当场解决，就必须建 BUG。客服没解决 ≠ 没问题\n\n## 🔗 上下文会话（新增）\n\nctx JSON 中每个锚点会话可能带有 `context` 字段，包含同一客户在时间窗口内的相邻会话（前 2 后 1，按 `before_2`/`before_1`/`after_1` 标记）。\n\n**分析规则**：\n- **锚点会话是主数据源**：任务创建、session_id 填写均以锚点为准\n- **上下文会话是辅助信息**：帮助理解客户问题的完整背景（如之前的机器人对话、初次尝试过程）\n- **典型场景**：\n  - 上下文是机器人接待（agent=系统）→ 客户在上下文里描述过问题，在锚点里说「还是不行」→ 合并理解，不要因为锚点里问题描述不完整就判为信息不足\n  - 上下文是同客户多次转人工 → 看前面客服有没有交代背景，避免重复建单\n- **上下文会话不独立建单**：只用于辅助理解锚点会话，不要在 TB 中为上下文会话单独创建任务\n- **备注中引用**：如果上下文提供了关键信息（客户早期原话、尝试过的步骤），在 note 的「需求详情」中注明来源（如「客户在前序会话 [session_id] 中提到…」）\n\n## 字段配置(已确认)\n\n| 字段名 | cfId | 类型 |\n|--------|------|------|\n| 需求orBUG | `69df253e95d7ece67f2d6e94` | 单选 |\n| SS客服沟通会话ID | `69df25e800b8437a49b4840e` | 文本 |\n| SS客户名称 | `6a1422a4f4593ff6edd1ee63` | 文本 |\n| HK项目ID | `69e055b3f2ad64465068810e` | 文本 |\n\n> ⚠️ TQL 不支持按 `SS客户名称` 字段过滤,因此查重时先拉所有未完成任务(`isDone = false`),再在内存中按该字段匹配。\n\n---\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话,先拆分出 N 个独立的 demand\n3. 对每个 demand:\n   - 拉取所有「未完成」TB 任务(`isDone = false`)\n   - 在内存中按 `SS客户名称` 字段匹配\n   - 按内容相似性判断合并/新建\n   - 执行对应操作\n\n---\n\n## 🚫 强力红线(拦截机制与强制提取)\n\n在需求拆分(第一步)和执行操作(第三步)时,必须严格执行以下红线,违反任一条禁止建单或输出:\n\n1. **【纯答疑/已解决】严格拦截**:\n   - 必须仔细分析客服的消息。如果客户只是在咨询功能原理、机制、操作方法,且客服已经给予了明确解答、客户表示理解或问题已正常解决,**严禁新建任何 Teambition 任务**。\n   - **除非**满足以下任一条件:\n     - 客服明确承认是功能缺陷\n     - 客服承诺了未来要排期优化\n     - 客服明确表示\"我们去提个需求/反馈给研发\"\n     - **客服明确回复功能不支持/不可以/做不到/暂未开放**——功能缺失本身就是需求，不能因客服给出否定结论就拦截。这是产研需要补齐的能力。\n   - **⚠️ 客户接受判定（通用拦截）**：以下情况**即使满足上述任一建单条件，也必须拦截，禁止建单**：\n     - 客服承认限制后给出了**有效的变通方案**（如「可以用XX功能替代」「试试YY方式」），且客户明接受/满意（「好的谢谢」「明白了」「那也行」等）。——此类会话已闭环，无需建单。\n     - 判断关键：客服是否提供了可操作的替代方案 → 客户是否认可。只有「客服说做不到且无替代方案」或「客户不接受替代方案」时才建单。\n   - 咨询类问题仅在需要沉淀为文档/FAQ时，由人工手动整理，不允许自动化需求系统建单。\n\n3. **【非 AI 相关需求禁止建单】**：\n   - SaleSmartly 平台自身的功能（自动化工作流配置、通讯录/号码管理、权限角色设置、测试沙箱等），只要跟 HelpKnow AI 员工没有直接关系，**禁止在 HelpKnow 需求项目中创建任务**。\n   - 判断标准：这个需求/问题是 AI 员工的行为逻辑有问题、AI 员工缺失某项能力、还是单纯是 SaleSmartly 平台的操作/功能问题？只有前者可以建单。\n   - 如果客服确认平台暂时没有某个功能，但该功能与 AI 无关，也不属于可建单范围。\n   - **⚠️ SS 平台功能明确排除清单**：以下 SS 平台功能即使被打上「AI员工」标签，也**必须拦截，禁止建单**：\n     - **素材库**：文件夹管理、素材上传/下载/分类 → 属于 SS 平台文件管理，非 HK AI 能力\n     - **话术库**（非 AI 话术部分）：话术模板编辑、话术分类 → 属于 SS 平台内容管理\n     - **渠道管理**：WhatsApp/Facebook/Telegram 等渠道的接入和配置\n     - **自动化规则/工作流**：非 AI 相关的自动回复、分配规则\n     - **其他 SS 平台操作**：套餐升级、导出限制、权限设置、号码管理等\n   - **⚠️ 混合会话处理**：当会话中同时讨论 AI 问题和非 AI 问题（如 Pro版导出限制、套餐升级），**只过滤非 AI 部分，AI 部分仍需按三层分类处理**。不要因会话后半段出现 SS 平台讨论就整条丢弃。\n\n2. **【客服处理结论】强制提取且禁止空泛**:\n   - 任何新建任务或备注追加中,`客服处理结果` **绝对禁止留空、禁止写\"处理中/待跟进/排查中/未给出明确结论\"等空话**。\n   - **核心原则：如实记录客服做了什么、说了什么**。目的不是判断问题是否解决，而是让你看到客服的应对方式——是否有异常、是否可优化、是否可作为培训素材。即使客服给了一个很简单很短的解答（如「分配给AI员工就行了」），也必须完整记录。\n   - **必须逐条引用客服的关键答复**：用「→ 客服回复：\"原文引用\"」格式，把客服针对该问题给出的答复逐条列出。如果是FAQ式简单答疑，就如实写FAQ式答疑——不要因为没有「反馈技术排查」就觉得没结论。\n   - **客户接受/拒绝状态必须记录**：客服给出方案后，客户说了「好的/明白了/谢谢」还是「还是有问题的/不行」，必须写明。这是判断客服处理质量的关键信息。\n   - **必须按需求维度精确匹配客服答复**:同一会话拆出多个 demand 时,不同 demand 可能对应客服不同的答复内容。禁止把所有客服消息一股脑塞给所有任务--必须根据需求内容,定位到客服针对该具体问题给出的那一段答复。\n   - 如果客服全程只发了系统消息/自动回复,未对需求进行人工回复,必须写明:\"客服未针对此需求进行人工介入;客户通过系统自动回复(引用自动回复摘要)了解到相关信息。\"\n3. **【备注格式规范】**:所有新建任务的 note 必须严格遵循以下章节顺序:\n   ```\n   ## 涉及客户\n   ## 客户业务场景\n   ## 需求详情\n   (具体条目列表,## 需求详情 后面必须空一行再写内容)\n   ## 客服处理结果\n   ## 用户提供的截图/文件\n   ## 会话信息\n   ```\n   每两个 `##` 标题之间保留一个空行,内容与标题之间保留一个空行。\n4. **【截图必须内嵌图片格式】**：`## 用户提供的截图/文件` 章节中的所有截图，**必须使用 `![描述](URL)` Markdown 图片语法嵌入**，禁止使用 `[文字](URL)` 链接语法、禁止用纯文字描述代替图片。\n   - ✅ 正确：`![客户截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`[截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`4张截图（AI未回复的记录）`\n   - 原始数据中客户消息的图片 URL（`sender_type=1` 且 text 以 `https://assets-cdn` 开头）和客服消息中的 `file_url`（`sender_type=2` 且 text 为 file 对象）都需要提取为 `![](url)` 格式。\n\n---\n\n## 第一步:拆分 demand\n\n**判断维度**(满足任一即拆分):\n1. 不同功能模块(批量导入 vs AI回复 vs 数据导出)\n2. 同一模块的不同问题(AI回复\"太慢\" vs AI回复\"答非所问\")\n3. 不同产品线\n4. 客户明确说了两件不相关的事\n\n**输出**:拆分决策 + 每个 demand 对应的客户消息\n\n---\n\n## 第二步:demand 分配\n\n### 2.1 拉取未完成任务\n\n```python\n# 查所有未完成任务\nsearchProjectTasksV3(\n    projectId=\"6959d07f4991ad9a71ca2afa\",\n    q=\"isDone = false\",\n    pageSize=100\n)\n```\n\n### 2.2 内存过滤\n\n从返回结果中,筛选 `SS客户名称`(cfId=`6a1422a4f4593ff6edd1ee63`)与当前会话 `customer_name` 匹配的任务。\n\n**匹配逻辑**:字段值包含 `customer_name` 即匹配(因为该字段格式如 `HelpKnow.ai 服务群 项目ID:27828`)。\n\n### 2.3 内容相似性判断\n\n对匹配到的已有任务,逐个与新 demand 做内容相似性判断:\n\n| 判断 | 条件 | 操作 |\n|------|------|------|\n| **同一件事** | 客户明确说「跟之前一样」/ 同一功能点 / 48h内同一操作目标且内容相关 | 追加到已有任务备注 |\n| **疑似相关** | 涉及同一模块但不确定 | 新建,备注标注「疑似与 [任务标题] 相关」 |\n| **完全新需求** | 新功能点 / 超过7天 / 内容无重叠 | 正常新建任务 |\n\n---\n\n## 第三步:执行操作\n\n### A. 追加备注(合并)\n\n1. 用 `queryTaskV3` 读取目标任务的当前 `note`\n2. 拼接新内容块\n3. 用 `updateTaskNoteV3` 整体写入\n\n**追加备注格式**(接在原 note 后):\n```\n--更新 [时间](session: [session_id],客服:[接待客服真实姓名])--\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n### B. 新建任务\n\n**标题格式**:\n- 有 `ss_project_id` 时:`[{ss_project_id}] {summary}`\n- `ss_project_id` 为空时:直接用 `{summary}`，不加 `[]` 前缀\n\n**任务参数**:\n- **stageId(必填):`69fed981a6333372a4b12b72`**——必须是「客户需求（AI记录）」列表\n- projectId:`6959d07f4991ad9a71ca2afa`\n- scenariofieldconfigId:`6959d080d242a000e6f0de59`\n\n**自定义字段**:\n- 需求orBUG(单选):`cfId=69df253e95d7ece67f2d6e94`\n  - 需求→`69df253e95d7ece67f2d6e95`\n  - BUG→`69df253e95d7ece67f2d6e96`\n- SS客服沟通会话ID(文本):`cfId=69df25e800b8437a49b4840e`,值=`session_id`\n- SS客户名称(文本):`cfId=6a1422a4f4593ff6edd1ee63`,值=`customer_name`\n- ⚠️ HK项目ID(文本):`cfId=69e055b3f2ad64465068810e`——**该字段始终留空，不要填写任何值**\n- ⚠️ **BUG 仅填问题分类**, cfId=`69e1cf00cedd6482fe39b0c1`（多选）\n- ⚠️ **需求仅填需求方向**, cfId=`69e07ac01888a925adbc27fc`（多选）\n- **这两个字段互斥，禁止同时设置！**\n\n**note 格式**:\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id，若为空则不写此行]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**:问题描述。客户原话。客服处理结果。\n2. **问题二标题**:问题描述。客户原话。客服处理结果。\n\n## 用户提供的截图/文件\n![截图1](URL) —— 所有截图必须用 ![](url) 内嵌，禁止文字描述或链接\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n---\n\n## 客服姓名映射\n\n使用 `scripts/hk_需求/agent_names.json` 中的 `uid_to_real` 字段:\n- key:消息中的 `sender`(sys_user_id)\n- value:客服真实姓名\n\n---\n\n## 示例:完整分析输出\n\n```\n会话 session_abc123(客户:北京XX公司,SS项目ID:26485)\n  → 拆分出 2 个 demand:\n    demand_1:AI回复太慢\n    demand_2:批量导入出错\n  → demand_1:匹配到 TB 任务 #123「[26485] AI回复太慢」→「同一件事」→ 追加备注\n  → demand_2:无匹配 → 新建任务\n```\n\nFile v1.0.4:references/config_fields.md\n\n# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。\n\nFile v1.0.4:references/execution_guide.md\n\n# HK 需求采集 — AI 执行指南\n\n## 数据文件\n\n路径：`scripts/hk_需求/data/hk_需求_YYYY-MM-DD.json`\n\n```json\n{\n  \"sessions\": [\n    {\n      \"session_id\": \"jgdxgrv\",\n      \"customer_name\": \"HelpKnow.ai 服务群\",\n      \"ss_project_id\": \"27828\",\n      \"messages\": [\n        {\n          \"sender_type\": 1,    // 1=客户, 2=客服\n          \"sender\": \"xxx\",     // sys_user_id（客服时用）\n          \"text\": \"客户消息内容\",\n          \"send_time\": 1748054400000  // 毫秒时间戳\n        }\n      ]\n    }\n  ]\n}\n```\n\n---\n\n## 客服姓名映射\n\n路径：`scripts/hk_需求/agent_names.json`\n\n```json\n{\n  \"uid_to_real\": {\n    \"187751\": \"游鸿凯\",\n    \"975520\": \"张梦非\",\n    ...\n  }\n}\n```\n\n接待客服真实姓名从 `uid_to_real` 查 `sender`（sys_user_id）。\n\n---\n\n## TB 任务创建\n\n**调用**：`teambition-mcp__createTaskV3`\n\n### 标准 note 格式（参考 TB#789-296）\n\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**：问题描述。客户原话。客服处理结果。\n2. **问题二标题**：问题描述。客户原话。客服处理结果。\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n### 示例\n\n```json\n{\n  \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n  \"scenariofieldconfigId\": \"6959d080d242a000e6f0de59\",\n  \"stageId\": \"69fed981a6333372a4b12b72\",\n  \"content\": \"[27828] 新建AI员工时找不到首次创建时的4种角色预设人设模板\",\n  \"note\": \"## 涉及客户\\nHelpKnow.ai 服务群 项目ID:27828 | SS项目ID: 568206,624697\\n\\n## 客户业务场景\\n客户在HelpKnow服务群中咨询AI员工功能。客户首次创建AI员工时有4种角色模板（含预设提示词），但第二次创建时找不到这些预设模板，导致需要手动编写完整人设，体验不佳。\\n\\n## 需求详情\\n1. **预设角色模板消失**：客户反馈\\\"我刚刚创建第一个AI员工的时候，好像有4种角色可以选，里面自带了提示词。现在找不到了\\\"。客服确认第一个是旧版AI机器人（旧版回复AI员工），新版AI员工没有预设角色模板。\\n2. **旧版机器人用途**：客户询问旧版机器人是否还有用。客服建议使用新版AI员工回复，旧版已不推荐使用。\\n3. **人设需要手动编写**：客户表示新创建的AI员工人设要自己写，\\\"我又懒得写\\\"。客服建议编辑之前的AI员工复制人设内容。客户反馈之前没有创建成功，所以没有可复制的内容。客服建议在旧版机器人的设置中查看是否有人设内容。\\n\\n## 会话信息\\n- SS会话ID: jgdxgrv\\n- 接待客服: 游鸿凯\\n- 时间: 2026-05-23\\n- 标签: HelpKnow需求\",\n  \"customfields\": [\n    {\n      \"customfieldName\": \"需求orBUG\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"jgdxgrv\"}]\n    },\n    {\n      \"cfId\": \"6a1422a4f4593ff6edd1ee63\",\n      \"value\": [{\"title\": \"HelpKnow.ai 服务群 项目ID:27828\"}]\n    },\n    {\n      \"cfId\": \"69e055b3f2ad64465068810e\",\n      \"value\": [{\"title\": \"27828\"}]\n    }\n  ]\n}\n```\n\n**字段填写规范**：\n- `需求orBUG`：单选，用 `customfieldName` + `value.id`\n- 文本字段（会话ID/客户名称/项目ID）：用 `cfId` + `value.title`\n\n---\n\n## TB 追加备注\n\n**调用**：`teambition-mcp__updateTaskNoteV3`\n\n追加格式（接在原 note 内容后）：\n```\n——更新 [时间]（session: [session_id]，客服：[接待客服真实姓名]）——\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n**操作**：先 `queryTaskV3` 读出原 note，再拼接，最后 `updateTaskNoteV3` 整体写入。\n\n---\n\n## 搜索未完成任务\n\n**调用**：`teambition-mcp__searchProjectTasksV3`\n\n```\nprojectId: 6959d07f4991ad9a71ca2afa\nq: stageId = \"69fed981a6333372a4b12b72\"\npageSize: 100\n```\n\n返回后内存过滤 `isDone = false`。\n\n---\n\n## 读取任务备注\n\n**调用**：`teambition-mcp__queryTaskV3`\n\n```\nshortIds: \"789-296\"\n```\n\n返回的 `result[0].note` 即为当前备注内容。\n\n---\n\n## 执行流程\n\n```\n1. 读取 scripts/hk_需求/data/analysis_context.json\n2. 对每个会话：\n   a. 完整读取客户消息，分析是否有实质需求\n   b. 搜索 TB 未完成任务（按 stageId 拉，内存过滤 isDone）\n   c. 按 customer_name 过滤已有任务\n   d. 各 demand 逐一判断：\n      - 同一件事 → queryTaskV3 读 note → 拼接 → updateTaskNoteV3\n      - 疑似相关 → createTaskV3（备注标注疑似与哪个任务相关）\n      - 新需求   → createTaskV3（按标准 note 格式）\n3. 输出执行汇总（创建 X 个，追加 Y 个）\n```\n\nFile v1.0.4:references/tb_mcp_setup.md\n\n# TB MCP 配置指南\n\n## 1. 获取 User Token\n\n打开 https://open.teambition.com/user-mcp ，登录后页面会显示你的 User Token，格式类似：\n\n```\nu-W8ASWDui25gI8KqHFKpo8VMzfxnkIVh3Tsyx7aE3UYTzzt8y\n```\n\n复制这个 Token。\n\n## 2. 安装 CLI 工具\n\n```bash\nnpm install -g teambition-openapi-mcp\n```\n\n## 3. 配置 OpenClaw MCP\n\n在 `~/.openclaw/openclaw.json` 的 `mcp.servers` 中添加：\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"teambition-mcp\": {\n        \"command\": \"teambition-openapi-mcp\",\n        \"args\": [\"user-mcp\", \"-u\", \"你的UserToken\"]\n      }\n    }\n  }\n}\n```\n\n> 如果 npm global bin 不在 PATH 中，用完整路径：`/home/你的用户名/.npm-global/bin/teambition-openapi-mcp`\n\n## 4. 重启 Gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## 5. 验证\n\n重启后对 AI 说「帮我查一下 TB 项目列表」，如果 AI 能调用 `teambition-mcp__listUserProjectsV3` 就说明配置成功。\n\n## 可用的 MCP 工具\n\n配置完成后，AI 可以调用以下工具（skill 主要用到 `createTaskV3`）：\n\n| 工具 | 用途 |\n|------|------|\n| `createTaskV3` | 创建任务 |\n| `searchProjectTasksV3` | 搜索项目任务 |\n| `queryTaskV3` | 查询任务详情 |\n| `updateTaskStatusV3` | 更新任务状态 |\n| `updateTaskNoteV3` | 更新任务备注 |\n| `updateTaskCusomFieldV3` | 更新自定义字段 |\n| `listUserProjectsV3` | 列出用户参与的项目 |\n\nFile v1.0.4:scripts/config.example.json\n\n{\n  \"_说明\": \"复制本文件为 config.json，填入你的实际配置。config.json 不会被提交到版本控制。\",\n\n  \"ss\": {\n    \"_说明\": \"SaleSmartly API 配置。API Key 在 SS 后台 → 设置 → API 管理 获取。\",\n    \"apiKey\": \"你的SS_API_Key\",\n    \"projectId\": \"你的SS项目ID（数字）\",\n\n    \"tags\": [\n      {\"name\": \"你的标签名1\", \"id\": \"标签ID1\"},\n      {\"name\": \"你的标签名2\", \"id\": \"标签ID2\"}\n    ],\n    \"_tags说明\": \"筛选会话用的标签。会话含任一标签即匹配（OR 逻辑）。标签 ID 在 SS 后台 → 设置 → 会话标签 查看。\",\n\n    \"customFieldKey\": \"项目ID（填明文ID,多个用英文逗号,分隔）\",\n    \"_customFieldKey说明\": \"客户自定义字段中存储项目 ID 的字段名。在 SS 后台 → 客户 → 自定义字段 查看。\"\n  },\n\n  \"tb\": {\n    \"_说明\": \"Teambition 任务创建配置。所有 ID 从 TB 项目界面获取，详见 references/config_fields.md。\",\n\n    \"projectId\": \"你的TB项目ID\",\n    \"sfcId\": \"任务类型ID\",\n    \"stageId\": \"任务列表ID（放到哪个列）\",\n\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"自定义字段ID\",\n        \"valueId\": \"字段值ID（如'需求'对应的ID）\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储 SS 会话 ID 的字段\"\n      },\n      \"项目ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储客户项目 ID 的字段\"\n      }\n    },\n    \"_customfields说明\": \"按你的 TB 项目实际自定义字段填写。不需要的字段可以删除，需要的可以新增。\"\n  },\n\n  \"analysis\": {\n    \"_说明\": \"AI 分析阶段的配置。\",\n\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\",\n    \"_taskTitleFormat说明\": \"TB 任务标题格式。可用变量：{ss_project_id}、{customer_name}、{summary}。\"\n  },\n\n  \"schedule\": {\n    \"_说明\": \"定时任务配置（可选）。不配则手动触发。\",\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true,\n    \"_skipHolidays说明\": \"是否跳过中国法定节假日。需要安装 chinesecalendar 库。\"\n  }\n}\n\nFile v1.0.4:scripts/config.json\n\n{\n  \"ss\": {\n    \"apiKey\": \"19vLWeRmwTBscpES\",\n    \"projectId\": \"b87x3n\",\n    \"tags\": [\n      {\"name\": \"AI记需求\", \"id\": \"26192\"}\n    ],\n    \"customFieldKey\": \"项目ID\"\n  },\n  \"tb\": {\n    \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n    \"sfcId\": \"6959d080d242a000e6f0de59\",\n    \"stageId\": \"69fed981a6333372a4b12b72\",\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"69df253e95d7ece67f2d6e94\",\n        \"valueId\": \"69df253e95d7ece67f2d6e95\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"69df25e800b8437a49b4840e\"\n      },\n      \"客户名称\": {\n        \"cfId\": \"6a1422a4f4593ff6edd1ee63\"\n      }\n    }\n  },\n  \"analysis\": {\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\"\n  },\n  \"schedule\": {\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true\n  }\n}\n\nFile v1.0.4:scripts/state.json\n\n{\"lastRunAt\": 1783597964}\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\nCollects tagged SaleSmartly support conversations, analyzes them for customer requirements or bugs, and creates Teambition tasks for feedback-to-requirements automation.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zpeng6834-arch](https://clawhub.ai/user/zpeng6834-arch)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSupport and product operations teams use this skill to turn tagged SaleSmartly conversations into structured Teambition requirements or bug tasks. It supports incremental collection, AI-assisted conversation analysis, duplicate checks, and task creation or note updates.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A likely real SaleSmartly API key is bundled in the artifact configuration.\n\nMitigation: Revoke and remove the bundled key before installation, then provide SaleSmartly credentials through a protected secret mechanism.\n\nRisk: Customer conversation content may be copied into local JSON files and Teambition tasks.\n\nMitigation: Restrict access to the generated data directory and Teambition project, and add human review or redaction before customer conversations are copied into tasks.\n\nRisk: The workflow depends on a Teambition MCP package and user token with task-write permissions.\n\nMitigation: Pin and review the MCP package, store Teambition tokens outside the artifact, and limit token permissions and access where possible.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/zpeng6834-arch/skills/ss-requirements-to-teambition)\n- [AI Analysis and Task Creation Template](references/analysis_template.md)\n- [Configuration Fields Guide](references/config_fields.md)\n- [Execution Guide](references/execution_guide.md)\n- [Teambition MCP Setup Guide](references/tb_mcp_setup.md)\n- [Teambition User MCP](https://open.teambition.com/user-mcp)\n- [SaleSmartly API Endpoint](https://api.salesmartly.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, API calls]\n\n**Output Format:** [Markdown guidance, JSON configuration, shell commands, SaleSmartly session JSON files, and Teambition task or note update requests.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The collection script writes dated session JSON files under scripts/data and keeps them for seven days; task creation depends on SaleSmartly API access and a configured Teambition MCP server.]\n\n## Skill Version(s):\n\n1.0.4 (source: 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.0.3: 11 files, 19797 bytes\n\nFiles: _meta.json (148b), references/analysis_template.md (12654b), references/config_fields.md (1330b), references/execution_guide.md (4818b), references/tb_mcp_setup.md (1402b), scripts/collect.py (10132b), scripts/config.example.json (2489b), scripts/config.json (1128b), scripts/state.json (25b), skill-card.md (2958b), SKILL.md (2441b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783597949447\n}\n\nFile v1.0.3:references/analysis_template.md\n\n# AI 分析 + 任务创建模板\n\n## ⚠️ 核心分类方法论（先读这个）\n\n所有进入分析的会话都已被打上「HelpKnow需求」或「AI员工」标签，**标签本身就是 AI 相关性保证**。不要因为会话后半段出现了 SS 平台话题（如导出、套餐、版本）就整条判为非 AI 相关。\n\n### 三层分类（一个会话可同时产出多类）\n\n| 层级 | 判断标准 | 产出 | 示例 |\n|------|---------|------|------|\n| ✅ FAQ/已解决 | 客服给出有效答案，客户确认理解 → 该条不建单 | 过滤 | 「AI怎么发PDF？」→ 客服教了，客户说OK |\n| 🐛 BUG | 功能异常、设置不生效、客服说「反馈技术排查」**或仍在排查中未解决** | 建 BUG | 人设禁止词不生效、离线AI还在发消息、AI转人工配置了但不执行 |\n| 🆕 需求 | 客户要的功能不存在、客服说「不支持/没有」→ 不管后面有没有 FAQ 部分，功能缺失就是需求 | 建需求 | 「AI能主动回访吗？」→ 客服说不支持 |\n\n**关键规则**：\n- **一个会话可以同时产出 BUG + 需求**，不是二选一\n- **标签保证**：有标签 → 必有 AI 相关内容，不要整条过滤\n- **SS 平台讨论不覆盖 AI 需求**：客户在问 AI 功能的同时问了 SS 平台功能，不能因为后者存在就把 AI 需求也过滤掉\n- **「不支持」= 需求信号**：客服回复功能不支持、做不到、没有 → 这就是产品需要补齐的能力\n- **「未解决」= 必须建单**：客户描述了明确的功能异常现象（如「配置了转人工但没转」「设置了但没生效」），即使客服回复「在排查/需授权/等技术确认」，只要问题未当场解决，就必须建 BUG。客服没解决 ≠ 没问题\n\n## 🔗 上下文会话（新增）\n\nctx JSON 中每个锚点会话可能带有 `context` 字段，包含同一客户在时间窗口内的相邻会话（前 2 后 1，按 `before_2`/`before_1`/`after_1` 标记）。\n\n**分析规则**：\n- **锚点会话是主数据源**：任务创建、session_id 填写均以锚点为准\n- **上下文会话是辅助信息**：帮助理解客户问题的完整背景（如之前的机器人对话、初次尝试过程）\n- **典型场景**：\n  - 上下文是机器人接待（agent=系统）→ 客户在上下文里描述过问题，在锚点里说「还是不行」→ 合并理解，不要因为锚点里问题描述不完整就判为信息不足\n  - 上下文是同客户多次转人工 → 看前面客服有没有交代背景，避免重复建单\n- **上下文会话不独立建单**：只用于辅助理解锚点会话，不要在 TB 中为上下文会话单独创建任务\n- **备注中引用**：如果上下文提供了关键信息（客户早期原话、尝试过的步骤），在 note 的「需求详情」中注明来源（如「客户在前序会话 [session_id] 中提到…」）\n\n## 字段配置(已确认)\n\n| 字段名 | cfId | 类型 |\n|--------|------|------|\n| 需求orBUG | `69df253e95d7ece67f2d6e94` | 单选 |\n| SS客服沟通会话ID | `69df25e800b8437a49b4840e` | 文本 |\n| SS客户名称 | `6a1422a4f4593ff6edd1ee63` | 文本 |\n| HK项目ID | `69e055b3f2ad64465068810e` | 文本 |\n\n> ⚠️ TQL 不支持按 `SS客户名称` 字段过滤,因此查重时先拉所有未完成任务(`isDone = false`),再在内存中按该字段匹配。\n\n---\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话,先拆分出 N 个独立的 demand\n3. 对每个 demand:\n   - 拉取所有「未完成」TB 任务(`isDone = false`)\n   - 在内存中按 `SS客户名称` 字段匹配\n   - 按内容相似性判断合并/新建\n   - 执行对应操作\n\n---\n\n## 🚫 强力红线(拦截机制与强制提取)\n\n在需求拆分(第一步)和执行操作(第三步)时,必须严格执行以下红线,违反任一条禁止建单或输出:\n\n1. **【纯答疑/已解决】严格拦截**:\n   - 必须仔细分析客服的消息。如果客户只是在咨询功能原理、机制、操作方法,且客服已经给予了明确解答、客户表示理解或问题已正常解决,**严禁新建任何 Teambition 任务**。\n   - **除非**满足以下任一条件:\n     - 客服明确承认是功能缺陷\n     - 客服承诺了未来要排期优化\n     - 客服明确表示\"我们去提个需求/反馈给研发\"\n     - **客服明确回复功能不支持/不可以/做不到/暂未开放**——功能缺失本身就是需求，不能因客服给出否定结论就拦截。这是产研需要补齐的能力。\n   - **⚠️ 客户接受判定（通用拦截）**：以下情况**即使满足上述任一建单条件，也必须拦截，禁止建单**：\n     - 客服承认限制后给出了**有效的变通方案**（如「可以用XX功能替代」「试试YY方式」），且客户明接受/满意（「好的谢谢」「明白了」「那也行」等）。——此类会话已闭环，无需建单。\n     - 判断关键：客服是否提供了可操作的替代方案 → 客户是否认可。只有「客服说做不到且无替代方案」或「客户不接受替代方案」时才建单。\n   - 咨询类问题仅在需要沉淀为文档/FAQ时，由人工手动整理，不允许自动化需求系统建单。\n\n3. **【非 AI 相关需求禁止建单】**：\n   - SaleSmartly 平台自身的功能（自动化工作流配置、通讯录/号码管理、权限角色设置、测试沙箱等），只要跟 HelpKnow AI 员工没有直接关系，**禁止在 HelpKnow 需求项目中创建任务**。\n   - 判断标准：这个需求/问题是 AI 员工的行为逻辑有问题、AI 员工缺失某项能力、还是单纯是 SaleSmartly 平台的操作/功能问题？只有前者可以建单。\n   - 如果客服确认平台暂时没有某个功能，但该功能与 AI 无关，也不属于可建单范围。\n   - **⚠️ 混合会话处理**：当会话中同时讨论 AI 问题和非 AI 问题（如 Pro版导出限制、套餐升级），**只过滤非 AI 部分，AI 部分仍需按三层分类处理**。不要因会话后半段出现 SS 平台讨论就整条丢弃。\n\n2. **【客服处理结论】强制提取且禁止空泛**:\n   - 任何新建任务或备注追加中,`客服处理结果` **绝对禁止留空、禁止写\"处理中/待跟进/排查中/未给出明确结论\"等空话**。\n   - **核心原则：如实记录客服做了什么、说了什么**。目的不是判断问题是否解决，而是让你看到客服的应对方式——是否有异常、是否可优化、是否可作为培训素材。即使客服给了一个很简单很短的解答（如「分配给AI员工就行了」），也必须完整记录。\n   - **必须逐条引用客服的关键答复**：用「→ 客服回复：\"原文引用\"」格式，把客服针对该问题给出的答复逐条列出。如果是FAQ式简单答疑，就如实写FAQ式答疑——不要因为没有「反馈技术排查」就觉得没结论。\n   - **客户接受/拒绝状态必须记录**：客服给出方案后，客户说了「好的/明白了/谢谢」还是「还是有问题的/不行」，必须写明。这是判断客服处理质量的关键信息。\n   - **必须按需求维度精确匹配客服答复**:同一会话拆出多个 demand 时,不同 demand 可能对应客服不同的答复内容。禁止把所有客服消息一股脑塞给所有任务--必须根据需求内容,定位到客服针对该具体问题给出的那一段答复。\n   - 如果客服全程只发了系统消息/自动回复,未对需求进行人工回复,必须写明:\"客服未针对此需求进行人工介入;客户通过系统自动回复(引用自动回复摘要)了解到相关信息。\"\n3. **【备注格式规范】**:所有新建任务的 note 必须严格遵循以下章节顺序:\n   ```\n   ## 涉及客户\n   ## 客户业务场景\n   ## 需求详情\n   (具体条目列表,## 需求详情 后面必须空一行再写内容)\n   ## 客服处理结果\n   ## 用户提供的截图/文件\n   ## 会话信息\n   ```\n   每两个 `##` 标题之间保留一个空行,内容与标题之间保留一个空行。\n4. **【截图必须内嵌图片格式】**：`## 用户提供的截图/文件` 章节中的所有截图，**必须使用 `![描述](URL)` Markdown 图片语法嵌入**，禁止使用 `[文字](URL)` 链接语法、禁止用纯文字描述代替图片。\n   - ✅ 正确：`![客户截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`[截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`4张截图（AI未回复的记录）`\n   - 原始数据中客户消息的图片 URL（`sender_type=1` 且 text 以 `https://assets-cdn` 开头）和客服消息中的 `file_url`（`sender_type=2` 且 text 为 file 对象）都需要提取为 `![](url)` 格式。\n\n---\n\n## 第一步:拆分 demand\n\n**判断维度**(满足任一即拆分):\n1. 不同功能模块(批量导入 vs AI回复 vs 数据导出)\n2. 同一模块的不同问题(AI回复\"太慢\" vs AI回复\"答非所问\")\n3. 不同产品线\n4. 客户明确说了两件不相关的事\n\n**输出**:拆分决策 + 每个 demand 对应的客户消息\n\n---\n\n## 第二步:demand 分配\n\n### 2.1 拉取未完成任务\n\n```python\n# 查所有未完成任务\nsearchProjectTasksV3(\n    projectId=\"6959d07f4991ad9a71ca2afa\",\n    q=\"isDone = false\",\n    pageSize=100\n)\n```\n\n### 2.2 内存过滤\n\n从返回结果中,筛选 `SS客户名称`(cfId=`6a1422a4f4593ff6edd1ee63`)与当前会话 `customer_name` 匹配的任务。\n\n**匹配逻辑**:字段值包含 `customer_name` 即匹配(因为该字段格式如 `HelpKnow.ai 服务群 项目ID:27828`)。\n\n### 2.3 内容相似性判断\n\n对匹配到的已有任务,逐个与新 demand 做内容相似性判断:\n\n| 判断 | 条件 | 操作 |\n|------|------|------|\n| **同一件事** | 客户明确说「跟之前一样」/ 同一功能点 / 48h内同一操作目标且内容相关 | 追加到已有任务备注 |\n| **疑似相关** | 涉及同一模块但不确定 | 新建,备注标注「疑似与 [任务标题] 相关」 |\n| **完全新需求** | 新功能点 / 超过7天 / 内容无重叠 | 正常新建任务 |\n\n---\n\n## 第三步:执行操作\n\n### A. 追加备注(合并)\n\n1. 用 `queryTaskV3` 读取目标任务的当前 `note`\n2. 拼接新内容块\n3. 用 `updateTaskNoteV3` 整体写入\n\n**追加备注格式**(接在原 note 后):\n```\n--更新 [时间](session: [session_id],客服:[接待客服真实姓名])--\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n### B. 新建任务\n\n**标题格式**:\n- 有 `ss_project_id` 时:`[{ss_project_id}] {summary}`\n- `ss_project_id` 为空时:直接用 `{summary}`，不加 `[]` 前缀\n\n**任务参数**:\n- **stageId(必填):`69fed981a6333372a4b12b72`**——必须是「客户需求（AI记录）」列表\n- projectId:`6959d07f4991ad9a71ca2afa`\n- scenariofieldconfigId:`6959d080d242a000e6f0de59`\n\n**自定义字段**:\n- 需求orBUG(单选):`cfId=69df253e95d7ece67f2d6e94`\n  - 需求→`69df253e95d7ece67f2d6e95`\n  - BUG→`69df253e95d7ece67f2d6e96`\n- SS客服沟通会话ID(文本):`cfId=69df25e800b8437a49b4840e`,值=`session_id`\n- SS客户名称(文本):`cfId=6a1422a4f4593ff6edd1ee63`,值=`customer_name`\n- ⚠️ HK项目ID(文本):`cfId=69e055b3f2ad64465068810e`——**该字段始终留空，不要填写任何值**\n- ⚠️ **BUG 仅填问题分类**, cfId=`69e1cf00cedd6482fe39b0c1`（多选）\n- ⚠️ **需求仅填需求方向**, cfId=`69e07ac01888a925adbc27fc`（多选）\n- **这两个字段互斥，禁止同时设置！**\n\n**note 格式**:\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id，若为空则不写此行]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**:问题描述。客户原话。客服处理结果。\n2. **问题二标题**:问题描述。客户原话。客服处理结果。\n\n## 用户提供的截图/文件\n![截图1](URL) —— 所有截图必须用 ![](url) 内嵌，禁止文字描述或链接\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n---\n\n## 客服姓名映射\n\n使用 `scripts/hk_需求/agent_names.json` 中的 `uid_to_real` 字段:\n- key:消息中的 `sender`(sys_user_id)\n- value:客服真实姓名\n\n---\n\n## 示例:完整分析输出\n\n```\n会话 session_abc123(客户:北京XX公司,SS项目ID:26485)\n  → 拆分出 2 个 demand:\n    demand_1:AI回复太慢\n    demand_2:批量导入出错\n  → demand_1:匹配到 TB 任务 #123「[26485] AI回复太慢」→「同一件事」→ 追加备注\n  → demand_2:无匹配 → 新建任务\n```\n\nFile v1.0.3:references/config_fields.md\n\n# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。\n\nFile v1.0.3:references/execution_guide.md\n\n# HK 需求采集 — AI 执行指南\n\n## 数据文件\n\n路径：`scripts/hk_需求/data/hk_需求_YYYY-MM-DD.json`\n\n```json\n{\n  \"sessions\": [\n    {\n      \"session_id\": \"jgdxgrv\",\n      \"customer_name\": \"HelpKnow.ai 服务群\",\n      \"ss_project_id\": \"27828\",\n      \"messages\": [\n        {\n          \"sender_type\": 1,    // 1=客户, 2=客服\n          \"sender\": \"xxx\",     // sys_user_id（客服时用）\n          \"text\": \"客户消息内容\",\n          \"send_time\": 1748054400000  // 毫秒时间戳\n        }\n      ]\n    }\n  ]\n}\n```\n\n---\n\n## 客服姓名映射\n\n路径：`scripts/hk_需求/agent_names.json`\n\n```json\n{\n  \"uid_to_real\": {\n    \"187751\": \"游鸿凯\",\n    \"975520\": \"张梦非\",\n    ...\n  }\n}\n```\n\n接待客服真实姓名从 `uid_to_real` 查 `sender`（sys_user_id）。\n\n---\n\n## TB 任务创建\n\n**调用**：`teambition-mcp__createTaskV3`\n\n### 标准 note 格式（参考 TB#789-296）\n\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**：问题描述。客户原话。客服处理结果。\n2. **问题二标题**：问题描述。客户原话。客服处理结果。\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n### 示例\n\n```json\n{\n  \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n  \"scenariofieldconfigId\": \"6959d080d242a000e6f0de59\",\n  \"stageId\": \"69fed981a6333372a4b12b72\",\n  \"content\": \"[27828] 新建AI员工时找不到首次创建时的4种角色预设人设模板\",\n  \"note\": \"## 涉及客户\\nHelpKnow.ai 服务群 项目ID:27828 | SS项目ID: 568206,624697\\n\\n## 客户业务场景\\n客户在HelpKnow服务群中咨询AI员工功能。客户首次创建AI员工时有4种角色模板（含预设提示词），但第二次创建时找不到这些预设模板，导致需要手动编写完整人设，体验不佳。\\n\\n## 需求详情\\n1. **预设角色模板消失**：客户反馈\\\"我刚刚创建第一个AI员工的时候，好像有4种角色可以选，里面自带了提示词。现在找不到了\\\"。客服确认第一个是旧版AI机器人（旧版回复AI员工），新版AI员工没有预设角色模板。\\n2. **旧版机器人用途**：客户询问旧版机器人是否还有用。客服建议使用新版AI员工回复，旧版已不推荐使用。\\n3. **人设需要手动编写**：客户表示新创建的AI员工人设要自己写，\\\"我又懒得写\\\"。客服建议编辑之前的AI员工复制人设内容。客户反馈之前没有创建成功，所以没有可复制的内容。客服建议在旧版机器人的设置中查看是否有人设内容。\\n\\n## 会话信息\\n- SS会话ID: jgdxgrv\\n- 接待客服: 游鸿凯\\n- 时间: 2026-05-23\\n- 标签: HelpKnow需求\",\n  \"customfields\": [\n    {\n      \"customfieldName\": \"需求orBUG\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"jgdxgrv\"}]\n    },\n    {\n      \"cfId\": \"6a1422a4f4593ff6edd1ee63\",\n      \"value\": [{\"title\": \"HelpKnow.ai 服务群 项目ID:27828\"}]\n    },\n    {\n      \"cfId\": \"69e055b3f2ad64465068810e\",\n      \"value\": [{\"title\": \"27828\"}]\n    }\n  ]\n}\n```\n\n**字段填写规范**：\n- `需求orBUG`：单选，用 `customfieldName` + `value.id`\n- 文本字段（会话ID/客户名称/项目ID）：用 `cfId` + `value.title`\n\n---\n\n## TB 追加备注\n\n**调用**：`teambition-mcp__updateTaskNoteV3`\n\n追加格式（接在原 note 内容后）：\n```\n——更新 [时间]（session: [session_id]，客服：[接待客服真实姓名]）——\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n**操作**：先 `queryTaskV3` 读出原 note，再拼接，最后 `updateTaskNoteV3` 整体写入。\n\n---\n\n## 搜索未完成任务\n\n**调用**：`teambition-mcp__searchProjectTasksV3`\n\n```\nprojectId: 6959d07f4991ad9a71ca2afa\nq: stageId = \"69fed981a6333372a4b12b72\"\npageSize: 100\n```\n\n返回后内存过滤 `isDone = false`。\n\n---\n\n## 读取任务备注\n\n**调用**：`teambition-mcp__queryTaskV3`\n\n```\nshortIds: \"789-296\"\n```\n\n返回的 `result[0].note` 即为当前备注内容。\n\n---\n\n## 执行流程\n\n```\n1. 读取 scripts/hk_需求/data/analysis_context.json\n2. 对每个会话：\n   a. 完整读取客户消息，分析是否有实质需求\n   b. 搜索 TB 未完成任务（按 stageId 拉，内存过滤 isDone）\n   c. 按 customer_name 过滤已有任务\n   d. 各 demand 逐一判断：\n      - 同一件事 → queryTaskV3 读 note → 拼接 → updateTaskNoteV3\n      - 疑似相关 → createTaskV3（备注标注疑似与哪个任务相关）\n      - 新需求   → createTaskV3（按标准 note 格式）\n3. 输出执行汇总（创建 X 个，追加 Y 个）\n```\n\nFile v1.0.3:references/tb_mcp_setup.md\n\n# TB MCP 配置指南\n\n## 1. 获取 User Token\n\n打开 https://open.teambition.com/user-mcp ，登录后页面会显示你的 User Token，格式类似：\n\n```\nu-W8ASWDui25gI8KqHFKpo8VMzfxnkIVh3Tsyx7aE3UYTzzt8y\n```\n\n复制这个 Token。\n\n## 2. 安装 CLI 工具\n\n```bash\nnpm install -g teambition-openapi-mcp\n```\n\n## 3. 配置 OpenClaw MCP\n\n在 `~/.openclaw/openclaw.json` 的 `mcp.servers` 中添加：\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"teambition-mcp\": {\n        \"command\": \"teambition-openapi-mcp\",\n        \"args\": [\"user-mcp\", \"-u\", \"你的UserToken\"]\n      }\n    }\n  }\n}\n```\n\n> 如果 npm global bin 不在 PATH 中，用完整路径：`/home/你的用户名/.npm-global/bin/teambition-openapi-mcp`\n\n## 4. 重启 Gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## 5. 验证\n\n重启后对 AI 说「帮我查一下 TB 项目列表」，如果 AI 能调用 `teambition-mcp__listUserProjectsV3` 就说明配置成功。\n\n## 可用的 MCP 工具\n\n配置完成后，AI 可以调用以下工具（skill 主要用到 `createTaskV3`）：\n\n| 工具 | 用途 |\n|------|------|\n| `createTaskV3` | 创建任务 |\n| `searchProjectTasksV3` | 搜索项目任务 |\n| `queryTaskV3` | 查询任务详情 |\n| `updateTaskStatusV3` | 更新任务状态 |\n| `updateTaskNoteV3` | 更新任务备注 |\n| `updateTaskCusomFieldV3` | 更新自定义字段 |\n| `listUserProjectsV3` | 列出用户参与的项目 |\n\nFile v1.0.3:scripts/config.example.json\n\n{\n  \"_说明\": \"复制本文件为 config.json，填入你的实际配置。config.json 不会被提交到版本控制。\",\n\n  \"ss\": {\n    \"_说明\": \"SaleSmartly API 配置。API Key 在 SS 后台 → 设置 → API 管理 获取。\",\n    \"apiKey\": \"你的SS_API_Key\",\n    \"projectId\": \"你的SS项目ID（数字）\",\n\n    \"tags\": [\n      {\"name\": \"你的标签名1\", \"id\": \"标签ID1\"},\n      {\"name\": \"你的标签名2\", \"id\": \"标签ID2\"}\n    ],\n    \"_tags说明\": \"筛选会话用的标签。会话含任一标签即匹配（OR 逻辑）。标签 ID 在 SS 后台 → 设置 → 会话标签 查看。\",\n\n    \"customFieldKey\": \"项目ID（填明文ID,多个用英文逗号,分隔）\",\n    \"_customFieldKey说明\": \"客户自定义字段中存储项目 ID 的字段名。在 SS 后台 → 客户 → 自定义字段 查看。\"\n  },\n\n  \"tb\": {\n    \"_说明\": \"Teambition 任务创建配置。所有 ID 从 TB 项目界面获取，详见 references/config_fields.md。\",\n\n    \"projectId\": \"你的TB项目ID\",\n    \"sfcId\": \"任务类型ID\",\n    \"stageId\": \"任务列表ID（放到哪个列）\",\n\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"自定义字段ID\",\n        \"valueId\": \"字段值ID（如'需求'对应的ID）\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储 SS 会话 ID 的字段\"\n      },\n      \"项目ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储客户项目 ID 的字段\"\n      }\n    },\n    \"_customfields说明\": \"按你的 TB 项目实际自定义字段填写。不需要的字段可以删除，需要的可以新增。\"\n  },\n\n  \"analysis\": {\n    \"_说明\": \"AI 分析阶段的配置。\",\n\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\",\n    \"_taskTitleFormat说明\": \"TB 任务标题格式。可用变量：{ss_project_id}、{customer_name}、{summary}。\"\n  },\n\n  \"schedule\": {\n    \"_说明\": \"定时任务配置（可选）。不配则手动触发。\",\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true,\n    \"_skipHolidays说明\": \"是否跳过中国法定节假日。需要安装 chinesecalendar 库。\"\n  }\n}\n\nFile v1.0.3:scripts/config.json\n\n{\n  \"ss\": {\n    \"apiKey\": \"19vLWeRmwTBscpES\",\n    \"projectId\": \"b87x3n\",\n    \"tags\": [\n      {\"name\": \"AI记需求\", \"id\": \"26192\"}\n    ],\n    \"customFieldKey\": \"项目ID\"\n  },\n  \"tb\": {\n    \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n    \"sfcId\": \"6959d080d242a000e6f0de59\",\n    \"stageId\": \"69fed981a6333372a4b12b72\",\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"69df253e95d7ece67f2d6e94\",\n        \"valueId\": \"69df253e95d7ece67f2d6e95\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"69df25e800b8437a49b4840e\"\n      },\n      \"客户名称\": {\n        \"cfId\": \"6a1422a4f4593ff6edd1ee63\"\n      }\n    }\n  },\n  \"analysis\": {\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\"\n  },\n  \"schedule\": {\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true\n  }\n}\n\nFile v1.0.3:scripts/state.json\n\n{\"lastRunAt\": 1783597914}\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\n从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zpeng6834-arch](https://clawhub.ai/user/zpeng6834-arch) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nCustomer support, product operations, and product management teams use this skill to convert tagged SaleSmartly customer conversations into analyzed Teambition requirement or bug tasks. It supports incremental collection, duplicate checks, structured task notes, and optional scheduled execution. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The package includes sensitive-looking SaleSmartly and Teambition configuration values. <br>\nMitigation: Replace the bundled configuration with your own workspace configuration before use, rotate the SaleSmartly key if it is real, and avoid publishing live credentials in skill artifacts. <br>\nRisk: The skill can expose customer conversations and related project identifiers to the agent during analysis. <br>\nMitigation: Limit collection to necessary tags and projects, review or redact sensitive conversation content before analysis, and retain output data only as long as operationally required. <br>\nRisk: Configured Teambition MCP tools can create and update tasks and notes, including in scheduled workflows. <br>\nMitigation: Use the narrowest Teambition access available, keep automated runs isolated, and require human review or monitoring before enabling recurring task creation. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/zpeng6834-arch/skills/ss-requirements-to-teambition) <br>\n- [AI Analysis and Task Creation Template](references/analysis_template.md) <br>\n- [Configuration Fields Guide](references/config_fields.md) <br>\n- [Execution Guide](references/execution_guide.md) <br>\n- [Teambition MCP Setup Guide](references/tb_mcp_setup.md) <br>\n- [Teambition User MCP](https://open.teambition.com/user-mcp) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, JSON, shell commands, configuration, API calls, guidance] <br>\n**Output Format:** [JSON session exports, Markdown task notes, shell commands, and Teambition task API calls] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Collects tagged SaleSmartly sessions into dated JSON files, then guides an agent to classify requirements or bugs and create or update Teambition tasks.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: evidence.release.version; artifact _meta.json reports 1.0.2) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.2: 9 files, 18607 bytes\n\nFiles: references/analysis_template.md (12654b), references/config_fields.md (1330b), references/execution_guide.md (4818b), references/tb_mcp_setup.md (1402b), scripts/collect.py (9922b), scripts/config.example.json (2489b), skill-card.md (2567b), SKILL.md (2441b), _meta.json (148b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1783586989350\n}\n\nFile v1.0.2:references/analysis_template.md\n\n# AI 分析 + 任务创建模板\n\n## ⚠️ 核心分类方法论（先读这个）\n\n所有进入分析的会话都已被打上「HelpKnow需求」或「AI员工」标签，**标签本身就是 AI 相关性保证**。不要因为会话后半段出现了 SS 平台话题（如导出、套餐、版本）就整条判为非 AI 相关。\n\n### 三层分类（一个会话可同时产出多类）\n\n| 层级 | 判断标准 | 产出 | 示例 |\n|------|---------|------|------|\n| ✅ FAQ/已解决 | 客服给出有效答案，客户确认理解 → 该条不建单 | 过滤 | 「AI怎么发PDF？」→ 客服教了，客户说OK |\n| 🐛 BUG | 功能异常、设置不生效、客服说「反馈技术排查」**或仍在排查中未解决** | 建 BUG | 人设禁止词不生效、离线AI还在发消息、AI转人工配置了但不执行 |\n| 🆕 需求 | 客户要的功能不存在、客服说「不支持/没有」→ 不管后面有没有 FAQ 部分，功能缺失就是需求 | 建需求 | 「AI能主动回访吗？」→ 客服说不支持 |\n\n**关键规则**：\n- **一个会话可以同时产出 BUG + 需求**，不是二选一\n- **标签保证**：有标签 → 必有 AI 相关内容，不要整条过滤\n- **SS 平台讨论不覆盖 AI 需求**：客户在问 AI 功能的同时问了 SS 平台功能，不能因为后者存在就把 AI 需求也过滤掉\n- **「不支持」= 需求信号**：客服回复功能不支持、做不到、没有 → 这就是产品需要补齐的能力\n- **「未解决」= 必须建单**：客户描述了明确的功能异常现象（如「配置了转人工但没转」「设置了但没生效」），即使客服回复「在排查/需授权/等技术确认」，只要问题未当场解决，就必须建 BUG。客服没解决 ≠ 没问题\n\n## 🔗 上下文会话（新增）\n\nctx JSON 中每个锚点会话可能带有 `context` 字段，包含同一客户在时间窗口内的相邻会话（前 2 后 1，按 `before_2`/`before_1`/`after_1` 标记）。\n\n**分析规则**：\n- **锚点会话是主数据源**：任务创建、session_id 填写均以锚点为准\n- **上下文会话是辅助信息**：帮助理解客户问题的完整背景（如之前的机器人对话、初次尝试过程）\n- **典型场景**：\n  - 上下文是机器人接待（agent=系统）→ 客户在上下文里描述过问题，在锚点里说「还是不行」→ 合并理解，不要因为锚点里问题描述不完整就判为信息不足\n  - 上下文是同客户多次转人工 → 看前面客服有没有交代背景，避免重复建单\n- **上下文会话不独立建单**：只用于辅助理解锚点会话，不要在 TB 中为上下文会话单独创建任务\n- **备注中引用**：如果上下文提供了关键信息（客户早期原话、尝试过的步骤），在 note 的「需求详情」中注明来源（如「客户在前序会话 [session_id] 中提到…」）\n\n## 字段配置(已确认)\n\n| 字段名 | cfId | 类型 |\n|--------|------|------|\n| 需求orBUG | `69df253e95d7ece67f2d6e94` | 单选 |\n| SS客服沟通会话ID | `69df25e800b8437a49b4840e` | 文本 |\n| SS客户名称 | `6a1422a4f4593ff6edd1ee63` | 文本 |\n| HK项目ID | `69e055b3f2ad64465068810e` | 文本 |\n\n> ⚠️ TQL 不支持按 `SS客户名称` 字段过滤,因此查重时先拉所有未完成任务(`isDone = false`),再在内存中按该字段匹配。\n\n---\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话,先拆分出 N 个独立的 demand\n3. 对每个 demand:\n   - 拉取所有「未完成」TB 任务(`isDone = false`)\n   - 在内存中按 `SS客户名称` 字段匹配\n   - 按内容相似性判断合并/新建\n   - 执行对应操作\n\n---\n\n## 🚫 强力红线(拦截机制与强制提取)\n\n在需求拆分(第一步)和执行操作(第三步)时,必须严格执行以下红线,违反任一条禁止建单或输出:\n\n1. **【纯答疑/已解决】严格拦截**:\n   - 必须仔细分析客服的消息。如果客户只是在咨询功能原理、机制、操作方法,且客服已经给予了明确解答、客户表示理解或问题已正常解决,**严禁新建任何 Teambition 任务**。\n   - **除非**满足以下任一条件:\n     - 客服明确承认是功能缺陷\n     - 客服承诺了未来要排期优化\n     - 客服明确表示\"我们去提个需求/反馈给研发\"\n     - **客服明确回复功能不支持/不可以/做不到/暂未开放**——功能缺失本身就是需求，不能因客服给出否定结论就拦截。这是产研需要补齐的能力。\n   - **⚠️ 客户接受判定（通用拦截）**：以下情况**即使满足上述任一建单条件，也必须拦截，禁止建单**：\n     - 客服承认限制后给出了**有效的变通方案**（如「可以用XX功能替代」「试试YY方式」），且客户明接受/满意（「好的谢谢」「明白了」「那也行」等）。——此类会话已闭环，无需建单。\n     - 判断关键：客服是否提供了可操作的替代方案 → 客户是否认可。只有「客服说做不到且无替代方案」或「客户不接受替代方案」时才建单。\n   - 咨询类问题仅在需要沉淀为文档/FAQ时，由人工手动整理，不允许自动化需求系统建单。\n\n3. **【非 AI 相关需求禁止建单】**：\n   - SaleSmartly 平台自身的功能（自动化工作流配置、通讯录/号码管理、权限角色设置、测试沙箱等），只要跟 HelpKnow AI 员工没有直接关系，**禁止在 HelpKnow 需求项目中创建任务**。\n   - 判断标准：这个需求/问题是 AI 员工的行为逻辑有问题、AI 员工缺失某项能力、还是单纯是 SaleSmartly 平台的操作/功能问题？只有前者可以建单。\n   - 如果客服确认平台暂时没有某个功能，但该功能与 AI 无关，也不属于可建单范围。\n   - **⚠️ 混合会话处理**：当会话中同时讨论 AI 问题和非 AI 问题（如 Pro版导出限制、套餐升级），**只过滤非 AI 部分，AI 部分仍需按三层分类处理**。不要因会话后半段出现 SS 平台讨论就整条丢弃。\n\n2. **【客服处理结论】强制提取且禁止空泛**:\n   - 任何新建任务或备注追加中,`客服处理结果` **绝对禁止留空、禁止写\"处理中/待跟进/排查中/未给出明确结论\"等空话**。\n   - **核心原则：如实记录客服做了什么、说了什么**。目的不是判断问题是否解决，而是让你看到客服的应对方式——是否有异常、是否可优化、是否可作为培训素材。即使客服给了一个很简单很短的解答（如「分配给AI员工就行了」），也必须完整记录。\n   - **必须逐条引用客服的关键答复**：用「→ 客服回复：\"原文引用\"」格式，把客服针对该问题给出的答复逐条列出。如果是FAQ式简单答疑，就如实写FAQ式答疑——不要因为没有「反馈技术排查」就觉得没结论。\n   - **客户接受/拒绝状态必须记录**：客服给出方案后，客户说了「好的/明白了/谢谢」还是「还是有问题的/不行」，必须写明。这是判断客服处理质量的关键信息。\n   - **必须按需求维度精确匹配客服答复**:同一会话拆出多个 demand 时,不同 demand 可能对应客服不同的答复内容。禁止把所有客服消息一股脑塞给所有任务--必须根据需求内容,定位到客服针对该具体问题给出的那一段答复。\n   - 如果客服全程只发了系统消息/自动回复,未对需求进行人工回复,必须写明:\"客服未针对此需求进行人工介入;客户通过系统自动回复(引用自动回复摘要)了解到相关信息。\"\n3. **【备注格式规范】**:所有新建任务的 note 必须严格遵循以下章节顺序:\n   ```\n   ## 涉及客户\n   ## 客户业务场景\n   ## 需求详情\n   (具体条目列表,## 需求详情 后面必须空一行再写内容)\n   ## 客服处理结果\n   ## 用户提供的截图/文件\n   ## 会话信息\n   ```\n   每两个 `##` 标题之间保留一个空行,内容与标题之间保留一个空行。\n4. **【截图必须内嵌图片格式】**：`## 用户提供的截图/文件` 章节中的所有截图，**必须使用 `![描述](URL)` Markdown 图片语法嵌入**，禁止使用 `[文字](URL)` 链接语法、禁止用纯文字描述代替图片。\n   - ✅ 正确：`![客户截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`[截图1](https://assets-cdn.salesmartly.com/...)`\n   - ❌ 错误：`4张截图（AI未回复的记录）`\n   - 原始数据中客户消息的图片 URL（`sender_type=1` 且 text 以 `https://assets-cdn` 开头）和客服消息中的 `file_url`（`sender_type=2` 且 text 为 file 对象）都需要提取为 `![](url)` 格式。\n\n---\n\n## 第一步:拆分 demand\n\n**判断维度**(满足任一即拆分):\n1. 不同功能模块(批量导入 vs AI回复 vs 数据导出)\n2. 同一模块的不同问题(AI回复\"太慢\" vs AI回复\"答非所问\")\n3. 不同产品线\n4. 客户明确说了两件不相关的事\n\n**输出**:拆分决策 + 每个 demand 对应的客户消息\n\n---\n\n## 第二步:demand 分配\n\n### 2.1 拉取未完成任务\n\n```python\n# 查所有未完成任务\nsearchProjectTasksV3(\n    projectId=\"6959d07f4991ad9a71ca2afa\",\n    q=\"isDone = false\",\n    pageSize=100\n)\n```\n\n### 2.2 内存过滤\n\n从返回结果中,筛选 `SS客户名称`(cfId=`6a1422a4f4593ff6edd1ee63`)与当前会话 `customer_name` 匹配的任务。\n\n**匹配逻辑**:字段值包含 `customer_name` 即匹配(因为该字段格式如 `HelpKnow.ai 服务群 项目ID:27828`)。\n\n### 2.3 内容相似性判断\n\n对匹配到的已有任务,逐个与新 demand 做内容相似性判断:\n\n| 判断 | 条件 | 操作 |\n|------|------|------|\n| **同一件事** | 客户明确说「跟之前一样」/ 同一功能点 / 48h内同一操作目标且内容相关 | 追加到已有任务备注 |\n| **疑似相关** | 涉及同一模块但不确定 | 新建,备注标注「疑似与 [任务标题] 相关」 |\n| **完全新需求** | 新功能点 / 超过7天 / 内容无重叠 | 正常新建任务 |\n\n---\n\n## 第三步:执行操作\n\n### A. 追加备注(合并)\n\n1. 用 `queryTaskV3` 读取目标任务的当前 `note`\n2. 拼接新内容块\n3. 用 `updateTaskNoteV3` 整体写入\n\n**追加备注格式**(接在原 note 后):\n```\n--更新 [时间](session: [session_id],客服:[接待客服真实姓名])--\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n### B. 新建任务\n\n**标题格式**:\n- 有 `ss_project_id` 时:`[{ss_project_id}] {summary}`\n- `ss_project_id` 为空时:直接用 `{summary}`，不加 `[]` 前缀\n\n**任务参数**:\n- **stageId(必填):`69fed981a6333372a4b12b72`**——必须是「客户需求（AI记录）」列表\n- projectId:`6959d07f4991ad9a71ca2afa`\n- scenariofieldconfigId:`6959d080d242a000e6f0de59`\n\n**自定义字段**:\n- 需求orBUG(单选):`cfId=69df253e95d7ece67f2d6e94`\n  - 需求→`69df253e95d7ece67f2d6e95`\n  - BUG→`69df253e95d7ece67f2d6e96`\n- SS客服沟通会话ID(文本):`cfId=69df25e800b8437a49b4840e`,值=`session_id`\n- SS客户名称(文本):`cfId=6a1422a4f4593ff6edd1ee63`,值=`customer_name`\n- ⚠️ HK项目ID(文本):`cfId=69e055b3f2ad64465068810e`——**该字段始终留空，不要填写任何值**\n- ⚠️ **BUG 仅填问题分类**, cfId=`69e1cf00cedd6482fe39b0c1`（多选）\n- ⚠️ **需求仅填需求方向**, cfId=`69e07ac01888a925adbc27fc`（多选）\n- **这两个字段互斥，禁止同时设置！**\n\n**note 格式**:\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id，若为空则不写此行]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**:问题描述。客户原话。客服处理结果。\n2. **问题二标题**:问题描述。客户原话。客服处理结果。\n\n## 用户提供的截图/文件\n![截图1](URL) —— 所有截图必须用 ![](url) 内嵌，禁止文字描述或链接\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n---\n\n## 客服姓名映射\n\n使用 `scripts/hk_需求/agent_names.json` 中的 `uid_to_real` 字段:\n- key:消息中的 `sender`(sys_user_id)\n- value:客服真实姓名\n\n---\n\n## 示例:完整分析输出\n\n```\n会话 session_abc123(客户:北京XX公司,SS项目ID:26485)\n  → 拆分出 2 个 demand:\n    demand_1:AI回复太慢\n    demand_2:批量导入出错\n  → demand_1:匹配到 TB 任务 #123「[26485] AI回复太慢」→「同一件事」→ 追加备注\n  → demand_2:无匹配 → 新建任务\n```\n\nFile v1.0.2:references/config_fields.md\n\n# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。\n\nFile v1.0.2:references/execution_guide.md\n\n# HK 需求采集 — AI 执行指南\n\n## 数据文件\n\n路径：`scripts/hk_需求/data/hk_需求_YYYY-MM-DD.json`\n\n```json\n{\n  \"sessions\": [\n    {\n      \"session_id\": \"jgdxgrv\",\n      \"customer_name\": \"HelpKnow.ai 服务群\",\n      \"ss_project_id\": \"27828\",\n      \"messages\": [\n        {\n          \"sender_type\": 1,    // 1=客户, 2=客服\n          \"sender\": \"xxx\",     // sys_user_id（客服时用）\n          \"text\": \"客户消息内容\",\n          \"send_time\": 1748054400000  // 毫秒时间戳\n        }\n      ]\n    }\n  ]\n}\n```\n\n---\n\n## 客服姓名映射\n\n路径：`scripts/hk_需求/agent_names.json`\n\n```json\n{\n  \"uid_to_real\": {\n    \"187751\": \"游鸿凯\",\n    \"975520\": \"张梦非\",\n    ...\n  }\n}\n```\n\n接待客服真实姓名从 `uid_to_real` 查 `sender`（sys_user_id）。\n\n---\n\n## TB 任务创建\n\n**调用**：`teambition-mcp__createTaskV3`\n\n### 标准 note 格式（参考 TB#789-296）\n\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**：问题描述。客户原话。客服处理结果。\n2. **问题二标题**：问题描述。客户原话。客服处理结果。\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n### 示例\n\n```json\n{\n  \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n  \"scenariofieldconfigId\": \"6959d080d242a000e6f0de59\",\n  \"stageId\": \"69fed981a6333372a4b12b72\",\n  \"content\": \"[27828] 新建AI员工时找不到首次创建时的4种角色预设人设模板\",\n  \"note\": \"## 涉及客户\\nHelpKnow.ai 服务群 项目ID:27828 | SS项目ID: 568206,624697\\n\\n## 客户业务场景\\n客户在HelpKnow服务群中咨询AI员工功能。客户首次创建AI员工时有4种角色模板（含预设提示词），但第二次创建时找不到这些预设模板，导致需要手动编写完整人设，体验不佳。\\n\\n## 需求详情\\n1. **预设角色模板消失**：客户反馈\\\"我刚刚创建第一个AI员工的时候，好像有4种角色可以选，里面自带了提示词。现在找不到了\\\"。客服确认第一个是旧版AI机器人（旧版回复AI员工），新版AI员工没有预设角色模板。\\n2. **旧版机器人用途**：客户询问旧版机器人是否还有用。客服建议使用新版AI员工回复，旧版已不推荐使用。\\n3. **人设需要手动编写**：客户表示新创建的AI员工人设要自己写，\\\"我又懒得写\\\"。客服建议编辑之前的AI员工复制人设内容。客户反馈之前没有创建成功，所以没有可复制的内容。客服建议在旧版机器人的设置中查看是否有人设内容。\\n\\n## 会话信息\\n- SS会话ID: jgdxgrv\\n- 接待客服: 游鸿凯\\n- 时间: 2026-05-23\\n- 标签: HelpKnow需求\",\n  \"customfields\": [\n    {\n      \"customfieldName\": \"需求orBUG\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"jgdxgrv\"}]\n    },\n    {\n      \"cfId\": \"6a1422a4f4593ff6edd1ee63\",\n      \"value\": [{\"title\": \"HelpKnow.ai 服务群 项目ID:27828\"}]\n    },\n    {\n      \"cfId\": \"69e055b3f2ad64465068810e\",\n      \"value\": [{\"title\": \"27828\"}]\n    }\n  ]\n}\n```\n\n**字段填写规范**：\n- `需求orBUG`：单选，用 `customfieldName` + `value.id`\n- 文本字段（会话ID/客户名称/项目ID）：用 `cfId` + `value.title`\n\n---\n\n## TB 追加备注\n\n**调用**：`teambition-mcp__updateTaskNoteV3`\n\n追加格式（接在原 note 内容后）：\n```\n——更新 [时间]（session: [session_id]，客服：[接待客服真实姓名]）——\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n**操作**：先 `queryTaskV3` 读出原 note，再拼接，最后 `updateTaskNoteV3` 整体写入。\n\n---\n\n## 搜索未完成任务\n\n**调用**：`teambition-mcp__searchProjectTasksV3`\n\n```\nprojectId: 6959d07f4991ad9a71ca2afa\nq: stageId = \"69fed981a6333372a4b12b72\"\npageSize: 100\n```\n\n返回后内存过滤 `isDone = false`。\n\n---\n\n## 读取任务备注\n\n**调用**：`teambition-mcp__queryTaskV3`\n\n```\nshortIds: \"789-296\"\n```\n\n返回的 `result[0].note` 即为当前备注内容。\n\n---\n\n## 执行流程\n\n```\n1. 读取 scripts/hk_需求/data/analysis_context.json\n2. 对每个会话：\n   a. 完整读取客户消息，分析是否有实质需求\n   b. 搜索 TB 未完成任务（按 stageId 拉，内存过滤 isDone）\n   c. 按 customer_name 过滤已有任务\n   d. 各 demand 逐一判断：\n      - 同一件事 → queryTaskV3 读 note → 拼接 → updateTaskNoteV3\n      - 疑似相关 → createTaskV3（备注标注疑似与哪个任务相关）\n      - 新需求   → createTaskV3（按标准 note 格式）\n3. 输出执行汇总（创建 X 个，追加 Y 个）\n```\n\nFile v1.0.2:references/tb_mcp_setup.md\n\n# TB MCP 配置指南\n\n## 1. 获取 User Token\n\n打开 https://open.teambition.com/user-mcp ，登录后页面会显示你的 User Token，格式类似：\n\n```\nu-W8ASWDui25gI8KqHFKpo8VMzfxnkIVh3Tsyx7aE3UYTzzt8y\n```\n\n复制这个 Token。\n\n## 2. 安装 CLI 工具\n\n```bash\nnpm install -g teambition-openapi-mcp\n```\n\n## 3. 配置 OpenClaw MCP\n\n在 `~/.openclaw/openclaw.json` 的 `mcp.servers` 中添加：\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"teambition-mcp\": {\n        \"command\": \"teambition-openapi-mcp\",\n        \"args\": [\"user-mcp\", \"-u\", \"你的UserToken\"]\n      }\n    }\n  }\n}\n```\n\n> 如果 npm global bin 不在 PATH 中，用完整路径：`/home/你的用户名/.npm-global/bin/teambition-openapi-mcp`\n\n## 4. 重启 Gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## 5. 验证\n\n重启后对 AI 说「帮我查一下 TB 项目列表」，如果 AI 能调用 `teambition-mcp__listUserProjectsV3` 就说明配置成功。\n\n## 可用的 MCP 工具\n\n配置完成后，AI 可以调用以下工具（skill 主要用到 `createTaskV3`）：\n\n| 工具 | 用途 |\n|------|------|\n| `createTaskV3` | 创建任务 |\n| `searchProjectTasksV3` | 搜索项目任务 |\n| `queryTaskV3` | 查询任务详情 |\n| `updateTaskStatusV3` | 更新任务状态 |\n| `updateTaskNoteV3` | 更新任务备注 |\n| `updateTaskCusomFieldV3` | 更新自定义字段 |\n| `listUserProjectsV3` | 列出用户参与的项目 |\n\nFile v1.0.2:scripts/config.example.json\n\n{\n  \"_说明\": \"复制本文件为 config.json，填入你的实际配置。config.json 不会被提交到版本控制。\",\n\n  \"ss\": {\n    \"_说明\": \"SaleSmartly API 配置。API Key 在 SS 后台 → 设置 → API 管理 获取。\",\n    \"apiKey\": \"你的SS_API_Key\",\n    \"projectId\": \"你的SS项目ID（数字）\",\n\n    \"tags\": [\n      {\"name\": \"你的标签名1\", \"id\": \"标签ID1\"},\n      {\"name\": \"你的标签名2\", \"id\": \"标签ID2\"}\n    ],\n    \"_tags说明\": \"筛选会话用的标签。会话含任一标签即匹配（OR 逻辑）。标签 ID 在 SS 后台 → 设置 → 会话标签 查看。\",\n\n    \"customFieldKey\": \"项目ID（填明文ID,多个用英文逗号,分隔）\",\n    \"_customFieldKey说明\": \"客户自定义字段中存储项目 ID 的字段名。在 SS 后台 → 客户 → 自定义字段 查看。\"\n  },\n\n  \"tb\": {\n    \"_说明\": \"Teambition 任务创建配置。所有 ID 从 TB 项目界面获取，详见 references/config_fields.md。\",\n\n    \"projectId\": \"你的TB项目ID\",\n    \"sfcId\": \"任务类型ID\",\n    \"stageId\": \"任务列表ID（放到哪个列）\",\n\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"自定义字段ID\",\n        \"valueId\": \"字段值ID（如'需求'对应的ID）\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储 SS 会话 ID 的字段\"\n      },\n      \"项目ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储客户项目 ID 的字段\"\n      }\n    },\n    \"_customfields说明\": \"按你的 TB 项目实际自定义字段填写。不需要的字段可以删除，需要的可以新增。\"\n  },\n\n  \"analysis\": {\n    \"_说明\": \"AI 分析阶段的配置。\",\n\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\",\n    \"_taskTitleFormat说明\": \"TB 任务标题格式。可用变量：{ss_project_id}、{customer_name}、{summary}。\"\n  },\n\n  \"schedule\": {\n    \"_说明\": \"定时任务配置（可选）。不配则手动触发。\",\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true,\n    \"_skipHolidays说明\": \"是否跳过中国法定节假日。需要安装 chinesecalendar 库。\"\n  }\n}\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\n从 SaleSmartly 客服会话中采集带标签的对话，提取需求并创建 Teambition 任务，用于客服反馈到需求管理的自动化。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zpeng6834-arch](https://clawhub.ai/user/zpeng6834-arch) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nSupport, product, and engineering teams use this skill to turn tagged SaleSmartly customer conversations into structured Teambition requirement or bug tasks. It supports collection, AI-assisted analysis, duplicate checks, task creation, and note updates. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles SaleSmartly API keys and Teambition access tokens. <br>\nMitigation: Store credentials only in local configuration or secret storage, restrict access to config and data folders, avoid syncing them to shared storage, and rotate exposed tokens. <br>\nRisk: Customer conversations may contain personal or confidential information. <br>\nMitigation: Use the skill only when authorized to process the conversations, limit collection to necessary tagged sessions, and confirm that copying conversation content into Teambition fits privacy and retention requirements. <br>\nRisk: AI-extracted requirements may be incomplete, duplicated, or inaccurate. <br>\nMitigation: Review generated task content before relying on it and use the documented duplicate-check step before creating Teambition tasks. <br>\n\n\n## Reference(s): <br>\n- [Teambition MCP setup guide](references/tb_mcp_setup.md) <br>\n- [Configuration fields guide](references/config_fields.md) <br>\n- [Analysis template](references/analysis_template.md) <br>\n- [Execution guide](references/execution_guide.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, API Calls, Code, Shell commands, Configuration] <br>\n**Output Format:** [Markdown guidance with JSON configuration and shell command examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces local SaleSmartly session JSON files and Teambition task-creation instructions for the agent to execute.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.1: 8 files, 11138 bytes\n\nFiles: references/analysis_template.md (1700b), references/config_fields.md (1330b), references/tb_mcp_setup.md (1402b), scripts/collect.py (10433b), scripts/config.example.json (2489b), skill-card.md (2834b), SKILL.md (2441b), _meta.json (148b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778574655637\n}\n\nFile v1.0.1:references/analysis_template.md\n\n# AI 分析 + 任务创建模板\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话，按 `config.json` 中 `analysis.dimensions` 提取信息\n3. 汇总后，用 `teambition-mcp__createTaskV3` 创建任务\n\n## 任务创建规则\n\n### 标题格式\n按 `config.json` 中 `analysis.taskTitleFormat` 生成，默认 `[{ss_project_id}] {summary}`\n\n### 必填字段（从 config.json 读取映射）\n- `projectId`: `config.tb.projectId`\n- `scenariofieldconfigId`: `config.tb.sfcId`\n- `stageId`: `config.tb.stageId`\n- `content`: 按 taskTitleFormat 生成\n\n### 自定义字段\n遍历 `config.tb.customfields`，按类型填充：\n\n- **需求类型**（单选）：填 `cfId` + `valueId`\n- **会话ID**（文本）：填 `cfId` + 会话 ID 字符串\n- **项目ID**（文本）：填 `cfId` + SS 项目 ID\n\n### 备注（note）\nMarkdown 格式，包含：\n- 客户名称\n- 问题描述\n- 期望方案\n- 最终结论\n- 原始会话链接（如有）\n\n## 去重\n\n创建前先调用 `teambition-mcp__searchProjectTasksV3` 搜索是否已有相同会话 ID 的任务，避免重复创建。\n\n## 示例调用\n\n```json\n{\n  \"projectId\": \"从config读取\",\n  \"content\": \"[26485] 客户反馈AI回复不准确\",\n  \"scenariofieldconfigId\": \"从config读取\",\n  \"stageId\": \"从config读取\",\n  \"customfields\": [\n    {\n      \"cfId\": \"69df253e95d7ece67f2d6e94\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"session_abc123\"}]\n    }\n  ],\n  \"note\": \"## 客户反馈\\n\\n**客户**: xxx公司\\n**问题**: AI回复不准确\\n**期望**: 提高准确率\\n**结论**: 待跟进\"\n}\n```\n\nFile v1.0.1:references/config_fields.md\n\n# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。\n\nFile v1.0.1:references/tb_mcp_setup.md\n\n# TB MCP 配置指南\n\n## 1. 获取 User Token\n\n打开 https://open.teambition.com/user-mcp ，登录后页面会显示你的 User Token，格式类似：\n\n```\nu-W8ASWDui25gI8KqHFKpo8VMzfxnkIVh3Tsyx7aE3UYTzzt8y\n```\n\n复制这个 Token。\n\n## 2. 安装 CLI 工具\n\n```bash\nnpm install -g teambition-openapi-mcp\n```\n\n## 3. 配置 OpenClaw MCP\n\n在 `~/.openclaw/openclaw.json` 的 `mcp.servers` 中添加：\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"teambition-mcp\": {\n        \"command\": \"teambition-openapi-mcp\",\n        \"args\": [\"user-mcp\", \"-u\", \"你的UserToken\"]\n      }\n    }\n  }\n}\n```\n\n> 如果 npm global bin 不在 PATH 中，用完整路径：`/home/你的用户名/.npm-global/bin/teambition-openapi-mcp`\n\n## 4. 重启 Gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## 5. 验证\n\n重启后对 AI 说「帮我查一下 TB 项目列表」，如果 AI 能调用 `teambition-mcp__listUserProjectsV3` 就说明配置成功。\n\n## 可用的 MCP 工具\n\n配置完成后，AI 可以调用以下工具（skill 主要用到 `createTaskV3`）：\n\n| 工具 | 用途 |\n|------|------|\n| `createTaskV3` | 创建任务 |\n| `searchProjectTasksV3` | 搜索项目任务 |\n| `queryTaskV3` | 查询任务详情 |\n| `updateTaskStatusV3` | 更新任务状态 |\n| `updateTaskNoteV3` | 更新任务备注 |\n| `updateTaskCusomFieldV3` | 更新自定义字段 |\n| `listUserProjectsV3` | 列出用户参与的项目 |\n\nFile v1.0.1:scripts/config.example.json\n\n{\n  \"_说明\": \"复制本文件为 config.json，填入你的实际配置。config.json 不会被提交到版本控制。\",\n\n  \"ss\": {\n    \"_说明\": \"SaleSmartly API 配置。API Key 在 SS 后台 → 设置 → API 管理 获取。\",\n    \"apiKey\": \"你的SS_API_Key\",\n    \"projectId\": \"你的SS项目ID（数字）\",\n\n    \"tags\": [\n      {\"name\": \"你的标签名1\", \"id\": \"标签ID1\"},\n      {\"name\": \"你的标签名2\", \"id\": \"标签ID2\"}\n    ],\n    \"_tags说明\": \"筛选会话用的标签。会话含任一标签即匹配（OR 逻辑）。标签 ID 在 SS 后台 → 设置 → 会话标签 查看。\",\n\n    \"customFieldKey\": \"项目ID（填明文ID,多个用英文逗号,分隔）\",\n    \"_customFieldKey说明\": \"客户自定义字段中存储项目 ID 的字段名。在 SS 后台 → 客户 → 自定义字段 查看。\"\n  },\n\n  \"tb\": {\n    \"_说明\": \"Teambition 任务创建配置。所有 ID 从 TB 项目界面获取，详见 references/config_fields.md。\",\n\n    \"projectId\": \"你的TB项目ID\",\n    \"sfcId\": \"任务类型ID\",\n    \"stageId\": \"任务列表ID（放到哪个列）\",\n\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"自定义字段ID\",\n        \"valueId\": \"字段值ID（如'需求'对应的ID）\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储 SS 会话 ID 的字段\"\n      },\n      \"项目ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储客户项目 ID 的字段\"\n      }\n    },\n    \"_customfields说明\": \"按你的 TB 项目实际自定义字段填写。不需要的字段可以删除，需要的可以新增。\"\n  },\n\n  \"analysis\": {\n    \"_说明\": \"AI 分析阶段的配置。\",\n\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\",\n    \"_taskTitleFormat说明\": \"TB 任务标题格式。可用变量：{ss_project_id}、{customer_name}、{summary}。\"\n  },\n\n  \"schedule\": {\n    \"_说明\": \"定时任务配置（可选）。不配则手动触发。\",\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true,\n    \"_skipHolidays说明\": \"是否跳过中国法定节假日。需要安装 chinesecalendar 库。\"\n  }\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nCollects tagged SaleSmartly customer-support conversations, uses AI analysis to extract product requirements, and creates Teambition tasks for customer feedback management. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zpeng6834-arch](https://clawhub.ai/user/zpeng6834-arch) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nCustomer-support and product operations teams use this skill to turn tagged SaleSmartly conversations into structured Teambition requirement tasks. It supports a workflow from conversation collection through AI-assisted requirement extraction and task creation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Customer-support conversations and local transcript exports may expose customer or personal data. <br>\nMitigation: Use only in an environment approved for customer-support data, redact unnecessary customer fields before analysis or task creation, and keep retention short for generated session files. <br>\nRisk: SaleSmartly and Teambition credentials are required for collection and task creation. <br>\nMitigation: Restrict credential permissions and store tokens outside plaintext project files where possible. <br>\nRisk: Automated Teambition task creation can create unwanted or duplicate work items if run unattended. <br>\nMitigation: Keep duplicate checks enabled and review retention, access controls, and task approval behavior before enabling cron automation. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/zpeng6834-arch/ss-requirements-to-teambition) <br>\n- [AI analysis and task creation template](references/analysis_template.md) <br>\n- [Configuration fields guide](references/config_fields.md) <br>\n- [Teambition MCP setup guide](references/tb_mcp_setup.md) <br>\n- [Teambition user MCP page](https://open.teambition.com/user-mcp) <br>\n- [SaleSmartly API endpoint](https://api.salesmartly.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance, JSON files, API calls] <br>\n**Output Format:** [Markdown guidance, shell commands, JSON session exports, and Teambition task creation requests] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces local SaleSmartly session exports, AI analysis notes, duplicate-aware Teambition task creation requests, and optional cron automation guidance.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.0: 7 files, 9443 bytes\n\nFiles: references/analysis_template.md (1700b), references/config_fields.md (1330b), references/tb_mcp_setup.md (1402b), scripts/collect.py (9532b), scripts/config.example.json (2489b), SKILL.md (2441b), _meta.json (148b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778573412408\n}\n\nFile v1.0.0:references/analysis_template.md\n\n# AI 分析 + 任务创建模板\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话，按 `config.json` 中 `analysis.dimensions` 提取信息\n3. 汇总后，用 `teambition-mcp__createTaskV3` 创建任务\n\n## 任务创建规则\n\n### 标题格式\n按 `config.json` 中 `analysis.taskTitleFormat` 生成，默认 `[{ss_project_id}] {summary}`\n\n### 必填字段（从 config.json 读取映射）\n- `projectId`: `config.tb.projectId`\n- `scenariofieldconfigId`: `config.tb.sfcId`\n- `stageId`: `config.tb.stageId`\n- `content`: 按 taskTitleFormat 生成\n\n### 自定义字段\n遍历 `config.tb.customfields`，按类型填充：\n\n- **需求类型**（单选）：填 `cfId` + `valueId`\n- **会话ID**（文本）：填 `cfId` + 会话 ID 字符串\n- **项目ID**（文本）：填 `cfId` + SS 项目 ID\n\n### 备注（note）\nMarkdown 格式，包含：\n- 客户名称\n- 问题描述\n- 期望方案\n- 最终结论\n- 原始会话链接（如有）\n\n## 去重\n\n创建前先调用 `teambition-mcp__searchProjectTasksV3` 搜索是否已有相同会话 ID 的任务，避免重复创建。\n\n## 示例调用\n\n```json\n{\n  \"projectId\": \"从config读取\",\n  \"content\": \"[26485] 客户反馈AI回复不准确\",\n  \"scenariofieldconfigId\": \"从config读取\",\n  \"stageId\": \"从config读取\",\n  \"customfields\": [\n    {\n      \"cfId\": \"69df253e95d7ece67f2d6e94\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"session_abc123\"}]\n    }\n  ],\n  \"note\": \"## 客户反馈\\n\\n**客户**: xxx公司\\n**问题**: AI回复不准确\\n**期望**: 提高准确率\\n**结论**: 待跟进\"\n}\n```\n\nFile v1.0.0:references/config_fields.md\n\n# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。\n\nFile v1.0.0:references/tb_mcp_setup.md\n\n# TB MCP 配置指南\n\n## 1. 获取 User Token\n\n打开 https://open.teambition.com/user-mcp ，登录后页面会显示你的 User Token，格式类似：\n\n```\nu-W8ASWDui25gI8KqHFKpo8VMzfxnkIVh3Tsyx7aE3UYTzzt8y\n```\n\n复制这个 Token。\n\n## 2. 安装 CLI 工具\n\n```bash\nnpm install -g teambition-openapi-mcp\n```\n\n## 3. 配置 OpenClaw MCP\n\n在 `~/.openclaw/openclaw.json` 的 `mcp.servers` 中添加：\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"teambition-mcp\": {\n        \"command\": \"teambition-openapi-mcp\",\n        \"args\": [\"user-mcp\", \"-u\", \"你的UserToken\"]\n      }\n    }\n  }\n}\n```\n\n> 如果 npm global bin 不在 PATH 中，用完整路径：`/home/你的用户名/.npm-global/bin/teambition-openapi-mcp`\n\n## 4. 重启 Gateway\n\n```bash\nopenclaw gateway restart\n```\n\n## 5. 验证\n\n重启后对 AI 说「帮我查一下 TB 项目列表」，如果 AI 能调用 `teambition-mcp__listUserProjectsV3` 就说明配置成功。\n\n## 可用的 MCP 工具\n\n配置完成后，AI 可以调用以下工具（skill 主要用到 `createTaskV3`）：\n\n| 工具 | 用途 |\n|------|------|\n| `createTaskV3` | 创建任务 |\n| `searchProjectTasksV3` | 搜索项目任务 |\n| `queryTaskV3` | 查询任务详情 |\n| `updateTaskStatusV3` | 更新任务状态 |\n| `updateTaskNoteV3` | 更新任务备注 |\n| `updateTaskCusomFieldV3` | 更新自定义字段 |\n| `listUserProjectsV3` | 列出用户参与的项目 |\n\nFile v1.0.0:scripts/config.example.json\n\n{\n  \"_说明\": \"复制本文件为 config.json，填入你的实际配置。config.json 不会被提交到版本控制。\",\n\n  \"ss\": {\n    \"_说明\": \"SaleSmartly API 配置。API Key 在 SS 后台 → 设置 → API 管理 获取。\",\n    \"apiKey\": \"你的SS_API_Key\",\n    \"projectId\": \"你的SS项目ID（数字）\",\n\n    \"tags\": [\n      {\"name\": \"你的标签名1\", \"id\": \"标签ID1\"},\n      {\"name\": \"你的标签名2\", \"id\": \"标签ID2\"}\n    ],\n    \"_tags说明\": \"筛选会话用的标签。会话含任一标签即匹配（OR 逻辑）。标签 ID 在 SS 后台 → 设置 → 会话标签 查看。\",\n\n    \"customFieldKey\": \"项目ID（填明文ID,多个用英文逗号,分隔）\",\n    \"_customFieldKey说明\": \"客户自定义字段中存储项目 ID 的字段名。在 SS 后台 → 客户 → 自定义字段 查看。\"\n  },\n\n  \"tb\": {\n    \"_说明\": \"Teambition 任务创建配置。所有 ID 从 TB 项目界面获取，详见 references/config_fields.md。\",\n\n    \"projectId\": \"你的TB项目ID\",\n    \"sfcId\": \"任务类型ID\",\n    \"stageId\": \"任务列表ID（放到哪个列）\",\n\n    \"customfields\": {\n      \"需求类型\": {\n        \"cfId\": \"自定义字段ID\",\n        \"valueId\": \"字段值ID（如'需求'对应的ID）\",\n        \"valueTitle\": \"需求\"\n      },\n      \"会话ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储 SS 会话 ID 的字段\"\n      },\n      \"项目ID\": {\n        \"cfId\": \"自定义字段ID\",\n        \"_说明\": \"存储客户项目 ID 的字段\"\n      }\n    },\n    \"_customfields说明\": \"按你的 TB 项目实际自定义字段填写。不需要的字段可以删除，需要的可以新增。\"\n  },\n\n  \"analysis\": {\n    \"_说明\": \"AI 分析阶段的配置。\",\n\n    \"goal\": \"从客服对话中提取客户需求，判断优先级，生成 TB 任务\",\n    \"dimensions\": [\n      \"客户遇到了什么问题\",\n      \"客户的期望方案是什么\",\n      \"问题的最终结论（已解决/待跟进/需开发）\",\n      \"紧急程度（高/中/低）\"\n    ],\n    \"taskTitleFormat\": \"[{ss_project_id}] {summary}\",\n    \"_taskTitleFormat说明\": \"TB 任务标题格式。可用变量：{ss_project_id}、{customer_name}、{summary}。\"\n  },\n\n  \"schedule\": {\n    \"_说明\": \"定时任务配置（可选）。不配则手动触发。\",\n    \"cron\": \"0 10 * * *\",\n    \"timezone\": \"Asia/Shanghai\",\n    \"skipHolidays\": true,\n    \"_skipHolidays说明\": \"是否跳过中国法定节假日。需要安装 chinesecalendar 库。\"\n  }\n}","readmeExcerpt":"Skill: SS需求→Teambition任务 Owner: zpeng6834-arch Summary: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-07-09T12:59:43.655Z | user 新增SS平台功能明确排除清单（素材库/话术库/渠道管理等），防止非AI需求误入HK项目；修复#638类误建 v1.0.3 | 2026-07-09T11:52:29.447Z | user config.json 移至工作区根目录 ss_config.","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"cp scripts/config.example.json scripts/config.json"},{"language":"bash","snippet":"cd scripts && python3 collect.py"},{"language":"json","snippet":"{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}"},{"language":"text","snippet":"scripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板"},{"language":"text","snippet":"## 涉及客户\n   ## 客户业务场景\n   ## 需求详情\n   (具体条目列表,## 需求详情 后面必须空一行再写内容)\n   ## 客服处理结果\n   ## 用户提供的截图/文件\n   ## 会话信息"},{"language":"python","snippet":"# 查所有未完成任务\nsearchProjectTasksV3(\n    projectId=\"6959d07f4991ad9a71ca2afa\",\n    q=\"isDone = false\",\n    pageSize=100\n)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ss-requirements-to-teambition\ndescription: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客户会话整理成 Teambition 需求任务时使用。\n---\n\n# SS Requirements → Teambition\n\n从 SaleSmartly 客服会话中采集对话 → AI 分析提取需求 → 自动创建 Teambition 任务。\n\n## 前置条件\n\n1. **SaleSmartly API Key** — SS 后台 → 设置 → API 管理\n2. **Teambition MCP** — 见 [tb_mcp_setup.md](references/tb_mcp_setup.md)\n\n## 快速开始\n\n### 1. 配置\n\n```bash\ncp scripts/config.example.json scripts/config.json\n```\n\n编辑 `scripts/config.json`，填入你的配置。各字段含义和获取方式见 [config_fields.md](references/config_fields.md)。\n\n### 2. 采集数据（纯脚本，0 token）\n\n```bash\ncd scripts && python3 collect.py\n```\n\n输出：`scripts/data/ss_sessions_YYYY-MM-DD.json`\n\n### 3. AI 分析 + 创建任务\n\n对 AI 说：「读取 `scripts/data/` 下最新的 JSON，分析会话内容，按 config.json 配置创建 TB 任务」\n\nAI 会按 [analysis_template.md](references/analysis_template.md) 中的规则执行。\n\n## 定时自动化（可选）\n\n在 OpenClaw 中配置 cron：\n\n```json\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 10 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"sessionTarget\": \"isolated\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"执行 SS 需求采集：1) cd scripts && python3 collect.py 2) 读取 data/ 下最新 JSON 3) 按 config.json 配置分析并创建 TB 任务\"\n  }\n}\n```\n\n## 文件结构\n\n```\nscripts/\n├── collect.py              # 数据采集（0 token）\n├── config.example.json     # 配置模板\n└── config.json             # 你的配置（不入库）\nreferences/\n├── tb_mcp_setup.md         # TB MCP 配置指南\n├── config_fields.md        # 配置项获取指南\n└── analysis_template.md    # AI 分析 + 任务创建模板\n```\n\n## 关键约束\n\n- SS API 限流 10 QPS，脚本内置 200ms 间隔\n- 增量采集：`state.json` 记录上次时间戳，下次从该点开始\n- 创建任务前先查重，避免同一会话重复建任务\n- 数据文件保留 7 天自动清理"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn75b1bc3z67ej9wt7n1s70z8n86ka37\",\n  \"slug\": \"ss-requirements-to-teambition\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783601983655\n}"},{"path":"references/analysis_template.md","content":"# AI 分析 + 任务创建模板\n\n## ⚠️ 核心分类方法论（先读这个）\n\n所有进入分析的会话都已被打上「HelpKnow需求」或「AI员工」标签，**标签本身就是 AI 相关性保证**。不要因为会话后半段出现了 SS 平台话题（如导出、套餐、版本）就整条判为非 AI 相关。\n\n### 三层分类（一个会话可同时产出多类）\n\n| 层级 | 判断标准 | 产出 | 示例 |\n|------|---------|------|------|\n| ✅ FAQ/已解决 | 客服给出有效答案，客户确认理解 → 该条不建单 | 过滤 | 「AI怎么发PDF？」→ 客服教了，客户说OK |\n| 🐛 BUG | 功能异常、设置不生效、客服说「反馈技术排查」**或仍在排查中未解决** | 建 BUG | 人设禁止词不生效、离线AI还在发消息、AI转人工配置了但不执行 |\n| 🆕 需求 | 客户要的功能不存在、客服说「不支持/没有」→ 不管后面有没有 FAQ 部分，功能缺失就是需求 | 建需求 | 「AI能主动回访吗？」→ 客服说不支持 |\n\n**关键规则**：\n- **一个会话可以同时产出 BUG + 需求**，不是二选一\n- **标签保证**：有标签 → 必有 AI 相关内容，不要整条过滤\n- **SS 平台讨论不覆盖 AI 需求**：客户在问 AI 功能的同时问了 SS 平台功能，不能因为后者存在就把 AI 需求也过滤掉\n- **「不支持」= 需求信号**：客服回复功能不支持、做不到、没有 → 这就是产品需要补齐的能力\n- **「未解决」= 必须建单**：客户描述了明确的功能异常现象（如「配置了转人工但没转」「设置了但没生效」），即使客服回复「在排查/需授权/等技术确认」，只要问题未当场解决，就必须建 BUG。客服没解决 ≠ 没问题\n\n## 🔗 上下文会话（新增）\n\nctx JSON 中每个锚点会话可能带有 `context` 字段，包含同一客户在时间窗口内的相邻会话（前 2 后 1，按 `before_2`/`before_1`/`after_1` 标记）。\n\n**分析规则**：\n- **锚点会话是主数据源**：任务创建、session_id 填写均以锚点为准\n- **上下文会话是辅助信息**：帮助理解客户问题的完整背景（如之前的机器人对话、初次尝试过程）\n- **典型场景**：\n  - 上下文是机器人接待（agent=系统）→ 客户在上下文里描述过问题，在锚点里说「还是不行」→ 合并理解，不要因为锚点里问题描述不完整就判为信息不足\n  - 上下文是同客户多次转人工 → 看前面客服有没有交代背景，避免重复建单\n- **上下文会话不独立建单**：只用于辅助理解锚点会话，不要在 TB 中为上下文会话单独创建任务\n- **备注中引用**：如果上下文提供了关键信息（客户早期原话、尝试过的步骤），在 note 的「需求详情」中注明来源（如「客户在前序会话 [session_id] 中提到…」）\n\n## 字段配置(已确认)\n\n| 字段名 | cfId | 类型 |\n|--------|------|------|\n| 需求orBUG | `69df253e95d7ece67f2d6e94` | 单选 |\n| SS客服沟通会话ID | `69df25e800b8437a49b4840e` | 文本 |\n| SS客户名称 | `6a1422a4f4593ff6edd1ee63` | 文本 |\n| HK项目ID | `69e055b3f2ad64465068810e` | 文本 |\n\n> ⚠️ TQL 不支持按 `SS客户名称` 字段过滤,因此查重时先拉所有未完成任务(`isDone = false`),再在内存中按该字段匹配。\n\n---\n\n## 分析流程\n\n1. 读取 `scripts/data/` 下最新的 JSON 文件\n2. 对每个会话,先拆分出 N 个独立的 demand\n3. 对每个 demand:\n   - 拉取所有「未完成」TB 任务(`isDone = false`)\n   - 在内存中按 `SS客户名称` 字段匹配\n   - 按内容相似性判断合并/新建\n   - 执行对应操作\n\n---\n\n## 🚫 强力红线(拦截机制与强制提取)\n\n在需求拆分(第一步)和执行操作(第三步)时,必须严格执行以下红线,违反任一条禁止建单或输出:\n\n1. **【纯答疑/已解决】严格拦截**:\n   - 必须仔细分析客服的消息。如果客户只是在咨询功能原理、机制、操作方法,且客服已经给予了明确解答、客户表示理解或问题已正常解决,**严禁新建任何 Teambition 任务**。\n   - **除非**满足以下任一条件:\n     - 客服明确承认是功能缺陷\n     - 客服承诺了未来要排期优化\n     - 客服明确表示\"我们去提个需求/反馈给研发\"\n     - **客服明确回复功能不支持/不可以/做不到/暂未开放**——功能缺失本身就是需求，不能因客服给出否定结论就拦截。这是产研需要补齐的能力。\n   - **⚠️ 客户接受判定（通用拦截）**：以下情况**即使满足上述任一建单条件，也必须拦截，禁止建单**：\n     - 客服承认限制后给出了**有效的变通方案**（如「可以用XX功能替代」「试试YY方式」），且客户明接受/满意（「好的谢谢」「明白了」「那也行」等）。——此类会话已闭环，无需建单。\n     - 判断关键：客服是否提供了可操作的替代方案 → 客户是否认可。只有「客服说做不到且无替代方案」或「客户不接受替代方案」时才建单。\n   - 咨询类问题仅在需要沉淀为文档/FAQ时，由人工手动整理，不允许自动化需求系统建单。\n\n3. **【非 AI 相关需求禁止建单】**：\n   - SaleSmartly 平台自身的功能（自动化工作流配置、通讯录/号码管理、权限角色设置、测试沙箱等），只要跟 HelpKnow AI 员工没有直接关系，**禁止在 HelpKnow 需求项目中创建任务**。\n   - 判断标准：这个需求/问题是 AI 员工的行为逻辑有问题、AI 员工缺失某项能力、还是单纯是 SaleSmartly 平台的操作/功能问题？只有前者可以建单。\n   - 如果客服确认平台暂时没有某个功能，但该功能与 AI 无关，也不属于可建单范围。\n   - **⚠️ SS 平台功能明确排除清单**：以下 SS 平台功能即使被打上「AI员工」标签，也**必须拦截，禁止建单**：\n     - **素材库**：文件夹管理、素材上传/下载/分类 → 属于 SS 平台文件管理，非 HK AI 能力\n     - **话术库**（非 AI 话术部分）：话术模板编辑、话术分类 → 属于 SS 平台内容管理\n     - **渠道管理**：WhatsApp/Facebook/Telegram 等渠道的接入和配置\n     - **自动化规则/工作流**：非 AI 相关的自动回复、分配规则\n     - **其他 SS 平台操作**：套餐升级、导出限制、权限设置、号码管理等\n   - **⚠️ 混合会话处理**：当会话中同时讨"},{"path":"references/config_fields.md","content":"# 配置项获取指南\n\n## SaleSmartly 配置\n\n### API Key\nSS 后台 → 设置 → API 管理 → 创建/查看 API Key\n\n### Project ID\nSS 后台 URL 中的数字，如 `https://xxx.salesmartly.com/project/1/...` 中的 `1`\n\n### 标签 ID\nSS 后台 → 设置 → 会话标签 → 点击标签，URL 中可见 tagId\n\n### 自定义字段 Key\nSS 后台 → 客户 → 自定义字段 → 查看字段名称（如\"项目ID\"），填入 `customFieldKey`\n\n---\n\n## Teambition 配置\n\n### projectId\n打开 TB 项目 → URL 中 `projectId=xxx` 或 `/project/xxx` 的部分\n\n### sfcId（任务类型 ID）\nTB 项目 → 项目设置 → 任务类型 → 点击类型，URL 中可见 sfcId\n\n### stageId（任务列表 ID）\nTB 项目看板 → 点击目标列的列头设置 → URL 中可见 stageId\n\n### 自定义字段 ID（cfId）\nTB 项目 → 项目设置 → 自定义字段 → 点击字段，URL 中可见 cfId\n\n### 自定义字段值 ID（valueId）\n对于单选/多选字段，在自定义字段设置中点击选项，URL 中可见 valueId\n\n---\n\n## 快速获取技巧\n\n如果不想手动找 ID，可以直接对 AI 说：\n\n> 「帮我查一下 TB 项目『XXX』的任务类型有哪些，列出 sfcId」\n> 「帮我查一下 TB 项目『XXX』的自定义字段有哪些，列出 cfId」\n\nAI 会通过 MCP 工具帮你查。"},{"path":"references/execution_guide.md","content":"# HK 需求采集 — AI 执行指南\n\n## 数据文件\n\n路径：`scripts/hk_需求/data/hk_需求_YYYY-MM-DD.json`\n\n```json\n{\n  \"sessions\": [\n    {\n      \"session_id\": \"jgdxgrv\",\n      \"customer_name\": \"HelpKnow.ai 服务群\",\n      \"ss_project_id\": \"27828\",\n      \"messages\": [\n        {\n          \"sender_type\": 1,    // 1=客户, 2=客服\n          \"sender\": \"xxx\",     // sys_user_id（客服时用）\n          \"text\": \"客户消息内容\",\n          \"send_time\": 1748054400000  // 毫秒时间戳\n        }\n      ]\n    }\n  ]\n}\n```\n\n---\n\n## 客服姓名映射\n\n路径：`scripts/hk_需求/agent_names.json`\n\n```json\n{\n  \"uid_to_real\": {\n    \"187751\": \"游鸿凯\",\n    \"975520\": \"张梦非\",\n    ...\n  }\n}\n```\n\n接待客服真实姓名从 `uid_to_real` 查 `sender`（sys_user_id）。\n\n---\n\n## TB 任务创建\n\n**调用**：`teambition-mcp__createTaskV3`\n\n### 标准 note 格式（参考 TB#789-296）\n\n```\n## 涉及客户\n[客户名称] | SS项目ID: [ss_project_id]\n\n## 客户业务场景\n[客户背景、当前使用情况]\n\n## 需求详情\n1. **问题一标题**：问题描述。客户原话。客服处理结果。\n2. **问题二标题**：问题描述。客户原话。客服处理结果。\n\n## 会话信息\n- SS会话ID: [session_id]\n- 接待客服: [真实姓名]\n- 时间: [YYYY-MM-DD]\n- 标签: [标签名]\n```\n\n### 示例\n\n```json\n{\n  \"projectId\": \"6959d07f4991ad9a71ca2afa\",\n  \"scenariofieldconfigId\": \"6959d080d242a000e6f0de59\",\n  \"stageId\": \"69fed981a6333372a4b12b72\",\n  \"content\": \"[27828] 新建AI员工时找不到首次创建时的4种角色预设人设模板\",\n  \"note\": \"## 涉及客户\\nHelpKnow.ai 服务群 项目ID:27828 | SS项目ID: 568206,624697\\n\\n## 客户业务场景\\n客户在HelpKnow服务群中咨询AI员工功能。客户首次创建AI员工时有4种角色模板（含预设提示词），但第二次创建时找不到这些预设模板，导致需要手动编写完整人设，体验不佳。\\n\\n## 需求详情\\n1. **预设角色模板消失**：客户反馈\\\"我刚刚创建第一个AI员工的时候，好像有4种角色可以选，里面自带了提示词。现在找不到了\\\"。客服确认第一个是旧版AI机器人（旧版回复AI员工），新版AI员工没有预设角色模板。\\n2. **旧版机器人用途**：客户询问旧版机器人是否还有用。客服建议使用新版AI员工回复，旧版已不推荐使用。\\n3. **人设需要手动编写**：客户表示新创建的AI员工人设要自己写，\\\"我又懒得写\\\"。客服建议编辑之前的AI员工复制人设内容。客户反馈之前没有创建成功，所以没有可复制的内容。客服建议在旧版机器人的设置中查看是否有人设内容。\\n\\n## 会话信息\\n- SS会话ID: jgdxgrv\\n- 接待客服: 游鸿凯\\n- 时间: 2026-05-23\\n- 标签: HelpKnow需求\",\n  \"customfields\": [\n    {\n      \"customfieldName\": \"需求orBUG\",\n      \"value\": [{\"id\": \"69df253e95d7ece67f2d6e95\", \"title\": \"需求\"}]\n    },\n    {\n      \"cfId\": \"69df25e800b8437a49b4840e\",\n      \"value\": [{\"title\": \"jgdxgrv\"}]\n    },\n    {\n      \"cfId\": \"6a1422a4f4593ff6edd1ee63\",\n      \"value\": [{\"title\": \"HelpKnow.ai 服务群 项目ID:27828\"}]\n    },\n    {\n      \"cfId\": \"69e055b3f2ad64465068810e\",\n      \"value\": [{\"title\": \"27828\"}]\n    }\n  ]\n}\n```\n\n**字段填写规范**：\n- `需求orBUG`：单选，用 `customfieldName` + `value.id`\n- 文本字段（会话ID/客户名称/项目ID）：用 `cfId` + `value.title`\n\n---\n\n## TB 追加备注\n\n**调用**：`teambition-mcp__updateTaskNoteV3`\n\n追加格式（接在原 note 内容后）：\n```\n——更新 [时间]（session: [session_id]，客服：[接待客服真实姓名]）——\n[本次新增的需求详情]\n\n---\n[原有 note 完整保留]\n```\n\n**操作**：先 `queryTaskV3` 读出原 note，再拼接，最后 `updateTaskNoteV3` 整体写入。\n\n---\n\n## 搜索未完成任务\n\n**调用**：`teambition-mcp__searchProjectTasksV3`\n\n```\nprojectId: 6959d07f4991ad9a71ca2afa\nq: stageId = \"69fed981a6333372a4b12b72\"\npageSize: 100\n```\n\n返回后内存过滤 `isDone = false`。\n\n---\n\n## 读取任务备注\n\n**调用**：`teambition-mcp__queryTaskV3`\n\n```\nshortIds: \"789-296\"\n```\n\n返回的 `result[0].note` 即为当前备注内容。\n\n---\n\n## 执行流程\n\n```\n1. 读取 scripts/hk_需求/data/analysis_context.json\n2. 对每个会话：\n   a. 完整读取客户消息，分析是否有实质需求\n   b. 搜索 TB 未完成任务（按 stageId 拉，内存过滤 isDone）\n   c. 按 customer_name 过滤已有任务\n   d. 各 demand 逐一判断：\n      - "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客... Skill: SS需求→Teambition任务 Owner: zpeng6834-arch Summary: 从 SaleSmartly 客服会话中自动采集带标签的对话，经 AI 分析提取需求，创建 Teambition 任务。用于客服反馈→需求管理自动化。触发词：SS需求采集、客服需求整理、SaleSmartly会话转任务、聊天记录转需求、客户反馈建任务、采集会话创建TB任务。当用户想把 SaleSmartly 中的客... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-07-09T12:59:43.655Z | user 新增SS平台功能明确排除清单（素材库/话术库/渠道管理等），防止非AI需求误入HK项目；修复#638类误建 v1.0.3 | 2026-07-09T11:52:29.447Z | user config.json 移至工作区根目录 ss_config.","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":668,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:21:40.713Z","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-10T11:21:40.713Z","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-10T13:34:57.019Z","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"}]}}}