{"id":"4d35d742-14c4-4bea-aa67-793c82d8089e","entityType":"agent","slug":"clawhub-qianchen94-tcm-face-tongue","name":"tcm-face-tongue","canonicalUrl":"https://www.xpersona.co/agent/clawhub-qianchen94-tcm-face-tongue","canonicalPath":"/agent/clawhub-qianchen94-tcm-face-tongue","generatedAt":"2026-10-11T14:17:03.138Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T10:09:33.945Z","emptyReason":null},"description":"中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 Skill: tcm-face-tongue Owner: qianchen94 Summary: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(face-tcm-analyse)、「望舌」(tongue-diagnosis)、「面舌辨证」(comprehensive-interpretation) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-31T08:58:57.365Z | user - 切换默认接口网关为正式环境 https://gateway","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s171yt7cn3hnxnz753rsh9b9yd86b5rb:tcm-face-tongue","sourceUrl":"https://clawhub.ai/qianchen94/tcm-face-tongue","homepage":"https://clawhub.ai/qianchen94/skills/tcm-face-tongue","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/qianchen94/tcm-face-tongue","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/qianchen94/skills/tcm-face-tongue","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:09:33.945Z","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-11T10:09:33.945Z","emptyReason":null},"stars":null,"forks":null,"downloads":1091,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:09:33.932Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T10:09:33.945Z","lastCrawledAt":"2026-10-11T10:09:33.932Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T10:09:33.932Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-07-31T08:58:57.365Z","changelog":"- 切换默认接口网关为正式环境 https://gateway.ragehealth.cn/openapi-prod - 更新凭证注册网址说明，改为 https://ragehealth.cn/client - 新增 .env.example 文件，提供环境变量模板 - 移除冗余文档 skill-card.md - 其它文档描述小幅修订优化","fileCount":8,"zipByteSize":21441},{"version":"1.0.5","createdAt":"2026-07-31T08:51:23.982Z","changelog":"tcm-face-tongue 1.0.5 - 切换默认接口网关至正式环境 `gateway.ragehealth.cn/openapi-prod` - 新增示例环境配置文件 `scripts/.env.example` - 删除冗余文件 `skill-card.md` - 更新 AK/SK 注册指引链接至 <https://ragehealth.cn/client>","fileCount":8,"zipByteSize":21113},{"version":"1.0.4","createdAt":"2026-05-08T10:22:44.950Z","changelog":"No changes detected since the previous version (1.0.0). Version bumped to 1.0.4 with no code or documentation updates.","fileCount":6,"zipByteSize":14422},{"version":"1.0.3","createdAt":"2026-05-08T10:20:24.507Z","changelog":"- Fixed: Improved robustness in scripts/call_tcm.py for handling input and fallback logic. - No changes to skill functionality or user-facing behavior.","fileCount":5,"zipByteSize":12888},{"version":"1.0.2","createdAt":"2026-05-08T10:14:23.561Z","changelog":"- Internal changes in scripts/call_tcm.py; no user-facing impact or feature changes. - Documentation (SKILL.md) remains unchanged except for version metadata.","fileCount":5,"zipByteSize":13468},{"version":"1.0.1","createdAt":"2026-05-08T10:12:58.402Z","changelog":"tcm-face-tongue 1.0.1 - No file changes detected; version bumped with no code or documentation updates. - No functional or user-facing differences from previous version (1.0.0).","fileCount":5,"zipByteSize":12870},{"version":"1.0.0","createdAt":"2026-05-08T09:50:31.928Z","changelog":"tcm-face-tongue v1.0.0 - 首发上线：实现中医面舌辨证图片分析功能。 - 支持三种图片分析模式：「望面」、「望舌」、「面舌辨证」可自动判别。 - 输出体质、五脏阴阳得分、症状、面色/舌象分类、推荐食谱与综合解读等指标。 - 调用 RageHealth 开放接口，支持 URL 和本地图（自动 fallback）。 - 提供详细用法参数、调用脚本和返回结果字段说明。 - 强调安全合规提示，供健康参考不替代线下面诊。","fileCount":5,"zipByteSize":12870}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171yt7cn3hnxnz753rsh9b9yd86b5rb:tcm-face-tongue","setupComplexity":"medium","setupSteps":["Python environment detected. Create a strict virtual environment (`python -m venv .venv`) before installing dependencies to prevent system-level package conflicts.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","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-qianchen94-tcm-face-tongue/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/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-11T14:17:03.135Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-qianchen94-tcm-face-tongue/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-11T10:09:33.945Z","emptyReason":null},"readme":"Skill: tcm-face-tongue\n\nOwner: qianchen94\n\nSummary: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-07-31T08:58:57.365Z | user\n\n- 切换默认接口网关为正式环境 https://gateway.ragehealth.cn/openapi-prod\n- 更新凭证注册网址说明，改为 https://ragehealth.cn/client\n- 新增 .env.example 文件，提供环境变量模板\n- 移除冗余文档 skill-card.md\n- 其它文档描述小幅修订优化\n\nv1.0.5 | 2026-07-31T08:51:23.982Z | user\n\ntcm-face-tongue 1.0.5\n\n- 切换默认接口网关至正式环境 `gateway.ragehealth.cn/openapi-prod`\n- 新增示例环境配置文件 `scripts/.env.example`\n- 删除冗余文件 `skill-card.md`\n- 更新 AK/SK 注册指引链接至 <https://ragehealth.cn/client>\n\nv1.0.4 | 2026-05-08T10:22:44.950Z | auto\n\nNo changes detected since the previous version (1.0.0).  \nVersion bumped to 1.0.4 with no code or documentation updates.\n\nv1.0.3 | 2026-05-08T10:20:24.507Z | auto\n\n- Fixed: Improved robustness in scripts/call_tcm.py for handling input and fallback logic.\n- No changes to skill functionality or user-facing behavior.\n\nv1.0.2 | 2026-05-08T10:14:23.561Z | auto\n\n- Internal changes in scripts/call_tcm.py; no user-facing impact or feature changes.\n- Documentation (SKILL.md) remains unchanged except for version metadata.\n\nv1.0.1 | 2026-05-08T10:12:58.402Z | auto\n\ntcm-face-tongue 1.0.1\n\n- No file changes detected; version bumped with no code or documentation updates.\n- No functional or user-facing differences from previous version (1.0.0).\n\nv1.0.0 | 2026-05-08T09:50:31.928Z | auto\n\ntcm-face-tongue v1.0.0\n\n- 首发上线：实现中医面舌辨证图片分析功能。\n- 支持三种图片分析模式：「望面」、「望舌」、「面舌辨证」可自动判别。\n- 输出体质、五脏阴阳得分、症状、面色/舌象分类、推荐食谱与综合解读等指标。\n- 调用 RageHealth 开放接口，支持 URL 和本地图（自动 fallback）。\n- 提供详细用法参数、调用脚本和返回结果字段说明。\n- 强调安全合规提示，供健康参考不替代线下面诊。\n\nArchive index:\n\nArchive v1.0.6: 8 files, 21441 bytes\n\nFiles: references/response_schema.md (6111b), scripts/__pycache__/call_tcm.cpython-312.pyc (12953b), scripts/.env.example (302b), scripts/call_tcm.py (13459b), scripts/requirements.txt (95b), skill-card.md (3266b), SKILL.md (9943b), _meta.json (134b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：https://gateway.ragehealth.cn/openapi-prod\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1785488337365\n}\n\nFile v1.0.6:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.6:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\n中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[qianchen94](https://clawhub.ai/user/qianchen94) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to call RageHealth face, tongue, or combined face-and-tongue analysis APIs and turn the returned JSON into concise traditional Chinese medicine body-constitution, organ-balance, tongue-image, recipe, and care guidance. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends face or tongue photos, optional demographic or location details, and RageHealth API credentials to a configured external RageHealth endpoint. <br>\nMitigation: Confirm user consent, send only needed inputs, verify the intended base URL before use, and protect TCM_AK and TCM_SK as secrets. <br>\nRisk: Face ID detection can involve additional face-feature data handling. <br>\nMitigation: Enable faceIdDetect only when explicitly needed and authorized, and require a userGroup when it is enabled. <br>\nRisk: The skill produces traditional Chinese medicine interpretations and recipe suggestions that could be mistaken for clinical advice. <br>\nMitigation: Present results as reference-only wellness guidance, advise professional medical care for serious or persistent symptoms, and flag special populations or medication users to follow clinician advice. <br>\nRisk: Runtime dependencies are specified as minimum versions rather than a reviewed lockfile. <br>\nMitigation: Use pinned dependencies or a reviewed lockfile in sensitive environments. <br>\n\n\n## Reference(s): <br>\n- [tcm-face-tongue ClawHub Skill Page](https://clawhub.ai/qianchen94/skills/tcm-face-tongue) <br>\n- [Response Schema](artifact/references/response_schema.md) <br>\n- [RageHealth Credential Registration](https://ragehealth.cn/client) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell command examples and JSON API outputs] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write full API responses to JSON files; terminal output removes large landmark and polygon arrays unless full output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (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.5: 8 files, 21113 bytes\n\nFiles: references/response_schema.md (6111b), scripts/__pycache__/call_tcm.cpython-312.pyc (12953b), scripts/.env.example (302b), scripts/call_tcm.py (13459b), scripts/requirements.txt (95b), skill-card.md (3066b), SKILL.md (9943b), _meta.json (134b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：https://gateway.ragehealth.cn/openapi-prod\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1785487883982\n}\n\nFile v1.0.5:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.5:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nAnalyzes uploaded face and tongue images through RageHealth TCM APIs to support traditional Chinese medicine body-constitution, organ-balance, tongue-feature, symptom, recipe, and combined interpretation reports. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[qianchen94](https://clawhub.ai/user/qianchen94) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill when a user asks for TCM-style face diagnosis, tongue diagnosis, body-constitution analysis, organ-balance interpretation, or food and lifestyle suggestions from face and tongue images. The skill helps choose the correct API mode, run the helper script, and summarize returned JSON into a human-readable report. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Face and tongue images, plus optional age, gender, IP, province, and city fields, are sent to a third-party API for analysis. <br>\nMitigation: Use the skill only with user consent, minimize optional personal fields, and avoid sending images or demographics that are not needed for the request. <br>\nRisk: faceIdDetect can involve biometric face-ID handling. <br>\nMitigation: Enable faceIdDetect only after explicit user authorization and only when the request requires face-ID continuity. <br>\nRisk: TCM outputs may be mistaken for medical diagnosis. <br>\nMitigation: Present results as informational support only and direct users with serious or persistent symptoms to a qualified clinician. <br>\nRisk: RageHealth API credentials are required to call the service. <br>\nMitigation: Keep TCM_AK and TCM_SK in environment variables or a local .env file and never include real keys in prompts, command arguments, logs, or committed files. <br>\nRisk: Runtime dependencies may change over time. <br>\nMitigation: Pin and update dependencies before production deployment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/qianchen94/skills/tcm-face-tongue) <br>\n- [Response schema](artifact/references/response_schema.md) <br>\n- [RageHealth credential registration](https://ragehealth.cn/client) <br>\n- [RageHealth production API gateway](https://gateway.ragehealth.cn/openapi-prod) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Guidance] <br>\n**Output Format:** [Markdown-style analysis with command examples and JSON API response summaries] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write full JSON API responses to an output file; terminal output strips large landmark and polygon arrays unless full stdout is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (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.4: 6 files, 14422 bytes\n\nFiles: references/response_schema.md (6111b), scripts/call_tcm.py (13477b), scripts/requirements.txt (95b), skill-card.md (2985b), SKILL.md (10057b), _meta.json (134b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\nversion: 1.0.0\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：`https://facepro.ragehealth.cn/openapi-test`（**测试环境**，正式环境为 `https://gateway.ragehealth.cn/openapi-prod`）\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://chayan-test.ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1778235764950\n}\n\nFile v1.0.4:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.4:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nCalls RageHealth face and tongue TCM APIs to analyze uploaded face or tongue photos and return constitution, organ yin-yang scores, symptoms, face or tongue classifications, recipes, and combined interpretations. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[qianchen94](https://clawhub.ai/user/qianchen94) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to run TCM-style face, tongue, or combined face-tongue analysis from user-provided images and produce an informational report with constitution, symptom, organ balance, tongue or face feature, and dietary guidance. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends sensitive face or tongue photos and optional age, gender, skin, IP, or location data to RageHealth for processing. <br>\nMitigation: Use the skill only with consent from the person in the images, send only the optional fields needed for the request, and keep TCM_AK and TCM_SK credentials private. <br>\nRisk: Outputs are health-adjacent TCM interpretations and may be mistaken for medical diagnosis. <br>\nMitigation: Present results as informational only, avoid definitive medical claims, and recommend licensed clinical care for severe, persistent, or concerning symptoms. <br>\nRisk: Enabling faceIdDetect can involve face feature data linked to a user group. <br>\nMitigation: Enable faceIdDetect only when specifically needed and explicitly authorized, and avoid creating persistent face identifiers by default. <br>\nRisk: Combined analysis with local image files falls back to separate face and tongue calls and does not include the service-generated comprehensive interpretation. <br>\nMitigation: Disclose when fallback output is used and avoid overstating any combined conclusion when comprehensiveInterpretation is missing. <br>\n\n\n## Reference(s): <br>\n- [Tcm Face Tongue on ClawHub](https://clawhub.ai/qianchen94/tcm-face-tongue) <br>\n- [Response schema](references/response_schema.md) <br>\n- [RageHealth credential portal](https://chayan-test.ragehealth.cn/client) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, JSON, shell commands, guidance] <br>\n**Output Format:** [Markdown guidance with shell command examples and JSON API responses.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Can write full API responses to JSON files; default terminal output omits large landmark and polygon arrays unless full output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server release evidence; artifact frontmatter is 1.0.0) <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.3: 5 files, 12888 bytes\n\nFiles: references/response_schema.md (6111b), scripts/call_tcm.py (13477b), scripts/requirements.txt (95b), SKILL.md (10057b), _meta.json (134b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\nversion: 1.0.0\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：`https://facepro.ragehealth.cn/openapi-test`（**测试环境**，正式环境为 `https://gateway.ragehealth.cn/openapi-prod`）\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://chayan-test.ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1778235624507\n}\n\nFile v1.0.3:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.3:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nArchive v1.0.2: 5 files, 13468 bytes\n\nFiles: references/response_schema.md (6111b), scripts/call_tcm.py (14969b), scripts/requirements.txt (95b), SKILL.md (10057b), _meta.json (134b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\nversion: 1.0.0\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：`https://facepro.ragehealth.cn/openapi-test`（**测试环境**，正式环境为 `https://gateway.ragehealth.cn/openapi-prod`）\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://chayan-test.ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778235263561\n}\n\nFile v1.0.2:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.2:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nArchive v1.0.1: 5 files, 12870 bytes\n\nFiles: references/response_schema.md (6111b), scripts/call_tcm.py (13459b), scripts/requirements.txt (95b), SKILL.md (10057b), _meta.json (134b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\nversion: 1.0.0\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：`https://facepro.ragehealth.cn/openapi-test`（**测试环境**，正式环境为 `https://gateway.ragehealth.cn/openapi-prod`）\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://chayan-test.ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778235178402\n}\n\nFile v1.0.1:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.1:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev\n\nArchive v1.0.0: 5 files, 12870 bytes\n\nFiles: references/response_schema.md (6111b), scripts/call_tcm.py (13459b), scripts/requirements.txt (95b), SKILL.md (10057b), _meta.json (134b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\nversion: 1.0.0\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：`https://facepro.ragehealth.cn/openapi-test`（**测试环境**，正式环境为 `https://gateway.ragehealth.cn/openapi-prod`）\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://chayan-test.ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）：\n     - 基础：`age` / `gender` / `display_img` / `face_color_region_show_url` / `occlusion.glasses`\n     - 大字段（默认会被脚本从 stdout 剥离，仅 `--output` 文件保留）：`landmarks` / `raw_landmarks`（478 个 [x,y] 关键点）\n     - 五脏分析：`report_items[]`（每项 `type` ∈ {体质,心,肝,脾,肺,肾}），含 `regions` / `syndromes` / `diseases` / `yin_score` / `yang_score` / `yin_yang_status` / `face_color` / `body_type` / `out_reason` / `emotion` / `analysis` / `suggests` / `disease_analysis` / `disease_suggests`\n     - 食谱：`recipes[]`（按 `type` 关联到对应 `report_items`），含 `food_name` / `effect` / `ingredients` / `way` / `notice` / `food_image_url`\n   - **tongue**（`data` 直接挂）：\n     - 综合：`score`（0~100，越高越健康）、`overview`\n     - 体质：`tiZhi.tizhiType` + `tiZhi.tiZhiReason`\n     - 症状：`symptomArray[].{symptom, symptomReason}`\n     - 舌象分类：`classify[].{className, classNameCn, category, score, resolution, deductionScore}`，按 `category` 分组：舌形 / 舌神 / 舌色 / 苔色 / 苔质\n     - 局部检测：`detection.{boxes, polygon, scores, labels, classnames, classNamesCn, resolutions, deductionScores}`（裂痕/齿痕/点刺；可能为空 dict 表示舌形正常）\n   - **combined**（`data` 直接挂）：\n     - `faceTcm` / `tongueTcm`：分别是 face / tongue 接口的完整响应（结构同上）\n     - `comprehensiveInterpretation`：**核心结论**（client-side fallback 时为 `null`）\n       - `tizhi`：综合体质（如 `\"湿热质\"`）\n       - `tizhi1` / `prop1`：主要体质 + 置信度\n       - `tizhi2` / `prop2`：次要体质 + 置信度\n       - `summary`：综合解读\n       - `mainSymptom`：主导体质的主要表现\n       - `auxiliarySymptom`：兼夹体质 / 次要病理特征\n     - `_clientFallback`：仅在 client-side fallback 时为 `true`，提示需要调用方自行综合 `faceTcm` + `tongueTcm` 给出解读\n\n## 字段枚举字典（face / combined 的 `report_items`）\n\n部分字符串字段是固定枚举，直译可能让用户困惑，建议解读时映射成自然语言：\n\n| 字段 | 取值 | 含义 |\n|:---|:---|:---|\n| `yin_yang_status` | `阴阳平和` | 阴阳得分接近，状态最佳 |\n| | `偏阴` / `偏阳` | 轻度偏离 |\n| | `阴虚` / `阳虚` | 一方明显不足 |\n| | `阴盛` / `阳盛` | 一方明显亢盛 |\n| `face_color` | `发红` | 多见热证、阳盛、心 / 肝火 |\n| | `发青` | 多见寒证、肝郁、瘀血 |\n| | `发黄` | 多见脾虚、湿证 |\n| | `发白` | 多见气虚、血虚、肺虚、寒证 |\n| | `发黑` | 多见肾虚、寒证、瘀血 |\n| `out_reason` | `风` / `寒` / `暑` / `湿` / `燥` / `火` | 六淫外邪侵袭表现 |\n| `emotion` | `喜` / `怒` / `忧` / `思` / `悲` / `恐` / `惊` | 七情对应的情志倾向（与五脏对应：心-喜、肝-怒、脾-思、肺-悲忧、肾-恐惊） |\n| `body_type` | `平和质` / `气虚质` / `阳虚质` / `阴虚质` / `痰湿质` / `湿热质` / `血瘀质` / `气郁质` / `特禀质` / `气阴两虚` | 中医九大体质（+气阴两虚） |\n| `regions` | `阙中`（眉间）/ `鼻柱` / `颜面`（额）/ `左颊` / `右颊` / `下颌` 等 | 面诊分区，对应五脏定位 |\n\n> 提示：当多个 `report_items` 的 `yin_score` / `yang_score` / `body_type` / `out_reason` / `emotion` 完全相同时，多半是接口用「整体体质」结论填充各脏腑默认值，单脏腑无需重复强调，可只在「综合体质」段引用一次。\n5. **生成报告**（建议骨架）：\n   - 综合体质 + 置信度（combined 用 `tizhi1/prop1`+`tizhi2/prop2`；单 face 用 `report_items[type=体质]`；单 tongue 用 `tiZhi.tizhiType`）\n   - 五脏失衡 Top（face/combined 才有）：按 `report_items` 中阴阳得分偏离平衡显著的脏器\n   - 舌象要点（tongue/combined 才有）：列出 `classify` 中 `classNameCn != '正常'` 的项 + 对应 `resolution`\n   - 推荐食谱 / 调理建议：face 直接取 `recipes`；tongue 提取 `symptomArray` 配合体质给通用建议\n   - 综合解读：combined 直接用 `comprehensiveInterpretation.summary`\n\n## 安全 & 合规\n⚠️ 必须提醒：\n- 中医辨证结果**仅供参考**，不能替代执业中医师面诊\n- 严重或持续症状应建议线下就诊\n- 食谱仅为日常调理建议，**特殊体质 / 孕产妇 / 慢病患者 / 服药人群应遵医嘱**\n- 不在响应中泄露 `AccessKey` / `SecretKey`\n- `face_id` / `userGroup` 涉及人脸特征数据，**仅在用户明确授权时启用** `faceIdDetect`，避免无差别记录\n\n## 示例\n\n**用户**：帮我看下这两张照片（人脸 + 伸舌），分析下我现在的体质。\n\n**操作**：\n```bash\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json\n```\n\n**回复（节选）**：\n- 综合体质：**湿热质**（主，置信度 0.62）+ **气郁质**（次，置信度 0.21）\n- 主要表现：面色偏黄、舌红苔黄腻、口苦\n- 五脏：肝阳偏盛，脾偏湿\n- 调理：清热祛湿 + 疏肝解郁；推荐食谱：薏苡仁赤小豆汤\n- 建议：清淡饮食、忌辛辣油腻、规律作息；持续不适请线下面诊\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778233831928\n}\n\nFile v1.0.0:references/response_schema.md\n\n# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `huangtai`(黄苔)\n- **苔质**：`zaotai`(燥苔) / `baotai`(剥苔) / `yougen`(有根) / `runtai`(润苔) / `futai`(腐苔) / `nitai`(腻苔) / `botai`(薄苔) / `houtai`(厚苔) / `wugen`(无根)\n\n### 5. 局部检测 `detection`\n\n> ⚠️ 可能为**空对象** `{}`，表示舌形检测均正常。\n\n各字段为等长数组，按索引一一对应：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `boxes` | Array | bbox 坐标 |\n| `polygon` | Array | 多边形坐标 |\n| `scores` | Array | 置信度 0~1 |\n| `labels` | Array | `0`=裂痕舌 / `1`=齿痕舌 / `2`=点刺舌 |\n| `classnames` | Array | 拼音：`liehen` / `chihen` / `dianci` |\n| `classNamesCn` | Array | 中文：裂痕舌 / 齿痕舌 / 点刺舌 |\n| `resolutions` | Array | 解析 |\n| `deductionScores` | Array | 扣分（已计入 `classify`，避免重复扣分） |\n\n---\n\n## 三、面舌辨证 `/face/comprehensive-interpretation`\n\n### 1. 子结果（嵌套完整接口响应）\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `faceTcm` | Object | 面诊完整结果，结构同 §一 |\n| `tongueTcm` | Object | 舌诊完整结果，结构同 §二 |\n\n### 2. 综合解读 `comprehensiveInterpretation`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhi` | String | 综合评估体质（如 `\"湿热质\"`） |\n| `tizhi1` | String | 主要体质 |\n| `prop1` | BigDecimal | 主要体质置信度 |\n| `tizhi2` | String | 次要体质 |\n| `prop2` | BigDecimal | 次要体质置信度 |\n| `summary` | String | 综合解读 |\n| `mainSymptom` | String | 主导体质的主要临床表现 |\n| `auxiliarySymptom` | String | 兼夹体质 / 次要病理特征 |\n\n---\n\n## 四、错误与质量\n\n- 顶层 `success=false` 时通常 `data` 不可用，按错误信息提示用户重传/重拍\n- 望面没有像 skin-pro 那样的 `image_quality` 子对象；建议**前置由调用方自检**：是否正脸、光线均匀、无遮挡\n- 舌图建议：自然光、白色背景、舌头正面伸出、避免反光\n\nFile v1.0.0:scripts/requirements.txt\n\nrequests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev","readmeExcerpt":"Skill: tcm-face-tongue Owner: qianchen94 Summary: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(face-tcm-analyse)、「望舌」(tongue-diagnosis)、「面舌辨证」(comprehensive-interpretation) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-31T08:58:57.365Z | user - 切换默认接口网关为正式环境 https://gateway","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json"},{"language":"bash","snippet":"python scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json"},{"language":"bash","snippet":"# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json"},{"language":"bash","snippet":"python scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json"},{"language":"bash","snippet":"# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json"},{"language":"bash","snippet":"python scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  --province 广东省 --city 深圳市 \\\n  --output combined.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: tcm-face-tongue\ndescription: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。\n---\n\n# 中医面舌辨证（tcm-face-tongue）\n\n## 何时使用\n- 用户上传**正脸照** → 走 `face` 模式（望面，输出体质 + 五脏分析 + 食谱）\n- 用户上传**伸舌照** → 走 `tongue` 模式（望舌，输出舌象分类 + 体质 + 症状）\n- 用户**同时**给出人脸 + 舌头两张图 → 走 `combined` 模式（面舌辨证，输出主/次体质与综合解读）\n\n如不确定哪种模式，按以下优先级：\n\n1. 如果手上同时有\"face + tongue\"两图 → **combined**（信息最完整）\n2. 只有人脸 → **face**\n3. 只有舌头 → **tongue**\n\n## 接口元数据\n- **网关**：https://gateway.ragehealth.cn/openapi-prod\n- **请求方式**：`POST` + `multipart/form-data`\n- **认证头**：`AccessKey`、`Signature`（每次调用前重新生成）\n- **三个接口**：\n\n| 模式 | path | 必填参数 |\n|:---|:---|:---|\n| `face` | `/face/tcm-analyse` | `imageUrl` 或 `imageFile` |\n| `tongue` | `/face/tongue` | `imageUrl` 或 `imageFile` |\n| `combined` | `/face/comprehensive-interpretation` | `faceImageUrl` + `tongueImageUrl`（**仅接受公网 URL**） |\n\n> **关于 `combined` 的本地图片**：官方接口只接 URL。当任一输入是本地文件时，`call_tcm.py combined` 会自动 **客户端 fallback**：分别调用 `face` + `tongue` 接口并把结果合并为 `{ faceTcm, tongueTcm, comprehensiveInterpretation: null, _clientFallback: true }`。此时缺失服务端的 `comprehensiveInterpretation.summary`，需要由调用方根据 `faceTcm` + `tongueTcm` 自行综合解读。\n\n## 公共可选参数（`face` 与 `combined`）\n\n| 参数 | 说明 |\n|:---|:---|\n| `customerIp` | 用户真实 IP（用于地域气候推断），优先级低于 `province&city` |\n| `province` + `city` | 省 + 市，**必须成对传**；不传则按 IP 自动推断 |\n| `fallbackProvince` + `fallbackCity` | 兜底省市，前面所有定位手段都失败时使用 |\n| `age` | 整数；不传则算法自动估计 |\n| `gender` | `0`=女 / `1`=男；不传则算法自动估计 |\n| `skinInfo` | 肤质标签（`OSPW`/油性/干性/中性/混性）；不传则算法自动检测 |\n| `faceIdDetect` + `userGroup` | 是否开启人脸 ID 检测，开启时 `userGroup` 必填 |\n\n> `tongue` 模式**只接受 `imageUrl` / `imageFile`**，不支持上述地理 / 人口学参数。\n\n## 调用方式\n\n```bash\n# 望面（URL 或本地文件二选一）\npython scripts/call_tcm.py face \\\n  --image-url https://example.com/face.jpg \\\n  [--province 广东省 --city 深圳市] [--age 30 --gender 0] [--skin-info 油性] \\\n  [--output face.json] [--full-stdout]\n\n# 望舌\npython scripts/call_tcm.py tongue \\\n  --image-file C:/path/to/tongue.jpg \\\n  [--output tongue.json]\n\n# 面舌辨证：双 URL 走官方接口；任一为本地文件则自动 client-side fallback\npython scripts/call_tcm.py combined \\\n  --face-image-url https://example.com/face.jpg \\\n  --tongue-image-url https://example.com/tongue.jpg \\\n  [--age 30 --gender 0] [--province 广东省 --city 深圳市] \\\n  [--output combined.json]\n\n# 面舌辨证（fallback：本地图）\npython scripts/call_tcm.py combined \\\n  --face-image-file C:/path/to/face.jpg \\\n  --tongue-image-file C:/path/to/tongue.jpg \\\n  --output combined.json\n```\n\n凭证由脚本自动从环境变量 `TCM_AK` / `TCM_SK` 读取，**不要**作为参数传入。首次使用前需前往 <https://ragehealth.cn/client> 注册申请 AK/SK，写入 `scripts/.env`（可与 skin-pro 共用同一对凭证）。脚本内部会生成 `Signature` 并以 `multipart/form-data` 提交。\n\n## 执行步骤\n\n1. **判定模式**：按上文\"何时使用\"的优先级选 `face` / `tongue` / `combined`。\n2. **校验输入**：图片 jpg/png；伸舌图需正面伸出、光线充足、无明显反光。\n3. **调脚本**：拿到 JSON；`success=false` 时提示用户重拍或检查图片质量。\n4. **解读关键指标**（按模式取）：\n   - **face**（`data` 直接挂）："},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71819j47ea8v4gfqaj24zmh986b313\",\n  \"slug\": \"tcm-face-tongue\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1785488337365\n}"},{"path":"references/response_schema.md","content":"# tcm-face-tongue 响应字段详解\n\n接口顶层结构：`{ success: bool, data: { ... } }`。下表仅列出 `data` 内字段。\n\n---\n\n## 一、望面 `/face/tcm-analyse`\n\n### 1. 基础元信息\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `age` | Int | 调整后年龄（用户传入则用之，否则算法估计） |\n| `gender` | Int | `0`=女 / `1`=男 |\n| `display_img` | String | 摆正调整后的图片 URL |\n| `height` / `width` | Int | 摆正图尺寸 |\n| `raw_height` / `raw_width` | Int | 原图尺寸 |\n| `landmarks` | Array | 摆正后人脸关键点；`[10]`→庭、`[8]`→阙下/阙中、`[162]`→左太阳穴、`[6]`→鼻柱、`[389]`→右太阳穴、`[5]`→鼻尖、`[50]`→左颊、`[280]`→右颊 |\n| `raw_landmarks` | Array | 原图关键点 |\n| `face_color_region_show_url` | String | 面色分区效果图 |\n| `face_id` | String | 仅 `faceIdDetect=true` 返回 |\n| `occlusion.glasses` | Int | 是否戴眼镜，`0`=否 / `1`=是 |\n\n### 2. 五脏与体质 `report_items[]`\n\n数组，每项一个 `type` ∈ `{体质, 心, 肝, 脾, 肺, 肾}`。字段：\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `sex` | String | 性别 |\n| `age_label` | String | 儿童 / 少年 / 青年 / 中年 / 老年 |\n| `regions` | Array | syndrome 对应面部区域，与 `syndromes` 顺序一一对应 |\n| `syndromes` | Array | 症状 |\n| `diseases` | Array | 可能发生的疾病 |\n| `yin_score` / `yang_score` | BigDecimal | 阴 / 阳属性得分 |\n| `yin_yang_status` | String | 阴阳总体属性 |\n| `face_info` | Array | 面部特征数组：`[0]`痘、`[1]`斑、`[2]`肤质、`[3]`面色 |\n| `province` | String | 发起请求对应省份 |\n| `fat` | String | 肥胖程度：瘦 / 适中 / 胖 |\n| `face_color` | String | 面色 |\n| `body_type` | String | 体质 |\n| `out_reason` | String | 外因：风 / 寒 / 湿 / 燥 / 暑 / 火 |\n| `emotion` | String | 情绪 |\n| `analysis` | Array | 解析建议——表现 |\n| `suggests` | Array | 解析建议——建议 |\n| `disease_analysis` | Array | 可能出现的风险 |\n| `disease_suggests` | Array | 风险对应的建议 |\n\n### 3. 食谱 `recipes[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `type` | String | 匹配类型（体质 / 心 / 肝 / 脾 / 肺 / 肾） |\n| `match` | String | 匹配具体子类，如 `\"体质气郁质\"` |\n| `food_name` | String | 食谱名称 |\n| `food_image_url` | String | 食谱图片 |\n| `effect` | String | 功效 |\n| `ingredients` | Array | 材料 |\n| `way` | Array | 做法步骤 |\n| `notice` | Array | 注意事项 |\n\n---\n\n## 二、望舌 `/face/tongue`\n\n### 1. 综合\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `score` | BigDecimal | 舌诊评分 0~100，越高越健康 |\n| `overview` | String | 整体解析 |\n\n### 2. 体质 `tiZhi`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `tizhiType` | String | 平和质 / 气虚质 / 阳虚质 / 阴虚质 / 痰湿质 / 湿热质 / 血瘀质 / 气郁质 / 特禀质 / 气阴两虚质 |\n| `tiZhiReason` | String | 中医辨证依据 |\n\n### 3. 症状 `symptomArray[]`\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `symptom` | String | 症状名称（如 `\"肺热咳嗽\"`） |\n| `symptomReason` | String | 中医分析依据 |\n\n### 4. 舌象分类 `classify[]`\n\n| 字段 | 类型 | 说明 |\n|:---|:---|:---|\n| `className` | String | 拼音标识 |\n| `classNameCn` | String | 中文名（`正常` 时 `resolution=\"\"`） |\n| `category` | String | 舌形 / 舌神 / 舌色 / 苔色 / 苔质 |\n| `score` | BigDecimal | 模型置信度 0~1 |\n| `resolution` | String | 中医解读 |\n| `deductionScore` | BigDecimal | 该项对总分的扣分值 |\n\n`className` 枚举（按 `category` 分组）：\n\n- **舌形**：`chihen`(齿痕) / `liehen`(裂痕) / `shoushe`(瘦舌) / `pangshe`(胖舌) / `dianci`(点刺) / `nenshe`(嫩舌) / `laoshe`(老舌) / `zhengchang`(正常)\n- **舌神**：`rongshe`(荣舌) / `kushe`(枯舌)\n- **舌色**：`hongshe`(红舌) / `jiangshe`(绛舌) / `qingzishe`(青紫舌) / `danbaishe`(淡白舌) / `danhongshe`(淡红舌)\n- **苔色**：`baitai`(白苔) / `hua"},{"path":"scripts/requirements.txt","content":"requests>=2.28\npycryptodome>=3.18\npython-dotenv>=1.0  # optional: auto-load .env for local dev"},{"path":"skill-card.md","content":"## Description: <br>\n中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[qianchen94](https://clawhub.ai/user/qianchen94) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to call RageHealth face, tongue, or combined face-and-tongue analysis APIs and turn the returned JSON into concise traditional Chinese medicine body-constitution, organ-balance, tongue-image, recipe, and care guidance. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill sends face or tongue photos, optional demographic or location details, and RageHealth API credentials to a configured external RageHealth endpoint. <br>\nMitigation: Confirm user consent, send only needed inputs, verify the intended base URL before use, and protect TCM_AK and TCM_SK as secrets. <br>\nRisk: Face ID detection can involve additional face-feature data handling. <br>\nMitigation: Enable faceIdDetect only when explicitly needed and authorized, and require a userGroup when it is enabled. <br>\nRisk: The skill produces traditional Chinese medicine interpretations and recipe suggestions that could be mistaken for clinical advice. <br>\nMitigation: Present results as reference-only wellness guidance, advise professional medical care for serious or persistent symptoms, and flag special populations or medication users to follow clinician advice. <br>\nRisk: Runtime dependencies are specified as minimum versions rather than a reviewed lockfile. <br>\nMitigation: Use pinned dependencies or a reviewed lockfile in sensitive environments. <br>\n\n\n## Reference(s): <br>\n- [tcm-face-tongue ClawHub Skill Page](https://clawhub.ai/qianchen94/skills/tcm-face-tongue) <br>\n- [Response Schema](artifact/references/response_schema.md) <br>\n- [RageHealth Credential Registration](https://ragehealth.cn/client) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell command examples and JSON API outputs] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write full API responses to JSON files; terminal output removes large landmark and polygon arrays unless full output is requested.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (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>"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(`face-tcm-analyse`)、「望舌」(`tongue-diagnosis`)、「面舌辨证」(`comprehensive-interpretation`) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 Skill: tcm-face-tongue Owner: qianchen94 Summary: 中医面舌辨证。调用 RageHealth 开放接口，对人脸 / 舌头图片做中医辨证。包含「望面」(face-tcm-analyse)、「望舌」(tongue-diagnosis)、「面舌辨证」(comprehensive-interpretation) 三个子接口，输出体质（平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀/气阴两虚）、五脏（心肝脾肺肾）阴阳得分、症状、面色/舌象分类、推荐食谱、综合解读等。当用户上传人脸/舌头照片要求\"中医辨证\"、\"看体质\"、\"望面望舌\"、\"面诊舌诊\"、\"五脏分析\"时使用此技能。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-07-31T08:58:57.365Z | user - 切换默认接口网关为正式环境 https://gateway","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1181,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T10:09:33.945Z","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-11T10:09:33.945Z","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-11T14:17:03.138Z","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"}]}}}