# 发布记录 本文档记录 `@vocmarket/tihao` 的重要变更、验证情况和仍需注意的边界。命令名、字段名、包名保留英文,因为它们是实际运行契约。 ## 1.0.10 Status: published to npm. This release makes the first report a high-quality live result-first list by default, instead of opening with a sample demo. Positioning: - The `tihao` SKILL now defines a "First Report Standard": normal brief-to-list requests default to `collectionMode=live` with `resultFirstMode=true`, and enable reference enrichment when reference links/accounts exist, so the first list is business-ready 高质量首版 rather than a sample demo. - `sample` mode is now demo-only. The skill must never run sample just to "show the flow" or because a token is missing. - When the live Parse sessionToken is missing or invalid, the skill returns the friendly `needs_token` / `needs_valid_token` state and asks the user for a valid sessionToken instead of silently falling back to sample. - `README.md`, `skill-package-manifest.json` recommended prompts, and `docs/skill-database-record.json` were updated to stop steering the first run toward sample. Notes: - No runtime code default changed: `resolveCollectionMode` already defaulted to `live`, and `resultFirstMode` stays an explicit flag. This release changes the agent-facing rules/docs so the first round is driven to live + result-first. ## 1.0.9 Status: published to npm. `@vocmarket/tihao@1.0.9` is `latest`, with registry verification and fresh `@latest` workspace install smoke passed. This release fixes the real live first-round Tihao output so a user can drop in a Brief and get a business-reviewable blogger table before later calibration. Positioning: - The real live CSV now exports a 44-column business table aligned with the reference workbook fields, including target city, budget rule, matched price type/value, account ID, fans, image/video/min price, quote status, location, content/persona tags, Pugongying judgment, CPM/CPE, commercial order metrics, growth, reply rate, low-activity flag, data source, and manual review fields. - Live provider normalization now extracts pricing, CPM/CPE, commercial metrics, growth, reply-rate, low-activity, and Douyin profile URLs from multiple real provider aliases instead of leaving key cells as "not fetched". - Brief parsing now handles real inputs such as `粉丝要求:1k-10w`, `单个预算:2000内`, and `主页互动数据200+`. - Ranking now penalizes missing quote data, prevents no-price rows from becoming strong recommendations, and downgrades over-budget rows for review. Validation: - Real live small run passed at `E:\test-tihao\outputs\tihao-real-fixed-1781542350326`: 15 rows, 13 rows with prices, 15 rows with profile URLs, and no strong recommendation without price. - `npm run acceptance` passed on `@vocmarket/tihao@1.0.9`, including package contents smoke with 185 files and package size about 644.2 kB. - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed. - `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao@1.0.9`. - `npm view @vocmarket/tihao@1.0.9 version --registry https://registry.npmjs.org/` returned `1.0.9`. - `npm view @vocmarket/tihao dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.9`. - Fresh `npx --yes @vocmarket/tihao@latest workspace --smoke` passed. ## 1.0.8 Status: published to npm. `@vocmarket/tihao@1.0.8` is `latest`, with registry verification and fresh `@latest` workspace/user install smoke passed. This release renames the public skill package, primary CLI command, plugin install directory, and MCP server name to `tihao`. Positioning: - New public npm package: `@vocmarket/tihao`. - Primary install command: `npx --yes @vocmarket/tihao@latest workspace --smoke`. - Primary CLI command: `tihao`; legacy alias `tihao-sourcing` is still shipped for transition. - Workspace plugin path and MCP server name are now `.claude/plugins/tihao` and `tihao`. - The installer removes legacy `.claude/plugins/tihao-sourcing` and `.claude/skills/tihao-creator-sourcing`, and removes the legacy `tihao-sourcing` entry from workspace `.mcp.json`. - Database `skills` table source record now uses `npmPackage=@vocmarket/tihao`, `pluginName=tihao`, and `mcpServerName=tihao`. - Legacy package `@vocmarket/tihao-sop` remains historical; customers should install `@vocmarket/tihao` going forward. Validation: - Syntax passed: `node --check install.js`, `node --check bin/tihao.js`, `node --check mcp/src/server.js`, `node --check scripts/acceptance.js`, and `node --check scripts/package-contents-smoke.js`. - `npm run package:contents:smoke`, `npm run smoke:package`, `npm run mcp:smoke`, `npm run skill:refs:smoke`, and `npm run acceptance` passed. - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed. - `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao@1.0.8`. - `npm view @vocmarket/tihao@1.0.8 version --registry https://registry.npmjs.org/` returned `1.0.8`. - `npm view @vocmarket/tihao dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.8`. - Fresh `npx --yes @vocmarket/tihao@latest workspace --smoke` passed, wrote `.claude/plugins/tihao` and `.claude/skills/tihao/SKILL.md`, and removed legacy `.claude/plugins/tihao-sourcing` plus `.claude/skills/tihao-creator-sourcing`. - Fresh `npm exec --yes --package @vocmarket/tihao@latest -- tihao install --smoke` passed for user-level install. ## 1.0.7 Status: published to npm. `@vocmarket/tihao-sop@1.0.7` is `latest`, with registry verification and fresh `@latest` workspace install smoke passed. Positioning: - Aligns the database `skills` table source record and npm management docs with the two real install targets: - project/workspace skill install: `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` - user/global Claude Code skill install: `npm install -g @vocmarket/tihao-sop && tihao-sourcing install --smoke` - Keeps the installed Claude Code skill name as `tihao`. - Keeps npm package name, CLI command, plugin name, and MCP server name compatible: `@vocmarket/tihao-sop`, `tihao-sourcing`, and `tihao-sourcing`. - Keeps the legacy `.claude/skills/tihao-creator-sourcing` cleanup behavior from 1.0.6. Validation: - `node --check install.js` and `node --check mcp/src/server.js` passed. - `npm run smoke:package`, `npm run skill:refs:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed. - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed. - `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao-sop@1.0.7`. - `npm view @vocmarket/tihao-sop@1.0.7 version --registry https://registry.npmjs.org/` returned `1.0.7`. - `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.7`. - Fresh `npm exec --yes --package @vocmarket/tihao-sop@latest -- tihao-sourcing workspace --smoke` passed, wrote `.claude/skills/tihao/SKILL.md`, and removed legacy `.claude/skills/tihao-creator-sourcing`. ## 1.0.6 Status: published to npm. `@vocmarket/tihao-sop@1.0.6` published the installed Claude Code skill rename from `tihao-creator-sourcing` to `tihao`. Positioning: - Workspace and global installs now write `.claude/skills/tihao/SKILL.md`. - The installer removes the legacy `.claude/skills/tihao-creator-sourcing` directory under the same target `.claude/skills` root to avoid duplicate skill entries. - npm package name, CLI command, plugin name, and MCP server name stay compatible: `@vocmarket/tihao-sop`, `tihao-sourcing`, and `tihao-sourcing`. - Added `docs/skill-database-record.json` as the database `skills` table source record for `skillName=tihao`. Validation: - `node --check install.js` passed. - `npm run smoke:package`, `npm run skill:refs:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed. - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed. - `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao-sop@1.0.6`. - `npm view @vocmarket/tihao-sop@1.0.6 version --registry https://registry.npmjs.org/` returned `1.0.6`. - `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.6`. - Fresh `npm exec --yes --package @vocmarket/tihao-sop@latest -- tihao-sourcing workspace --smoke` passed, wrote `.claude/skills/tihao/SKILL.md`, and removed legacy `.claude/skills/tihao-creator-sourcing`. ## 1.0.5 Status: published to npm. `@vocmarket/tihao-sop@1.0.5` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed. This release absorbs the two new 提号经验 transcripts and extends the live brief-to-list workflow without changing the small-live default. Positioning: - 1.0.5 adds multi-input Brief parsing for product introductions, product context, customer chat records, and conversation snippets. - Broad briefs such as 精致生活/时尚穿搭 now refine into executable subtypes from product/chat/reference context, including 港风、成熟风、通勤穿搭、女装/男装; 美妆护肤 is split into 护肤、妆教、测评、产品合集、日常妆容. - Homepage evidence now tracks visual positives/risks plus 近30天无更新、百赞以下、重复评论/数据真实性 risks; these affect strong recommendation eligibility, risk notes, manual review fields, and CSV review labels. - The experience transcript index now covers 13 rules across 4 transcripts while preserving the `not_business_proof` boundary. Validation: - Syntax passed: `node --check` for brief parser, experience rules, homepage evidence, ranker, MCP server, and experience transcript index. - `npm run smoke:briefs`, `npm run hard-rules:smoke`, `npm run experience-transcript:index:smoke`, `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed. - Local real transcript index passed with `transcriptCount=4`, `coveredRuleCount=13`, `canCloseProofGap=false`. - `npm publish --access public --registry https://registry.npmjs.org/`, `npm view @vocmarket/tihao-sop@1.0.5 version`, `npm view @vocmarket/tihao-sop dist-tags.latest version`, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` passed. ## 1.0.4 Status: published to npm. `@vocmarket/tihao-sop@1.0.4` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed. Positioning: - 1.0.4 fixes natural-language Brief generalization beyond the original fixture-heavy skincare/mom-baby cases. - The parser now handles healthy snack, home cleaning, B2B SaaS, and local food/catering briefs with better category, keyword, platform target, fan range, budget, city, style, and exclusion extraction. - Fan range parsing no longer reads same-line budget ranges as fan ranges, e.g. `粉丝 5000-20万,预算 800-5000`. - Live recall keywords are cleaned so platform words like `小红书/抖音` and dirty fragments like `个健身` do not become the first search keyword. Validation: - `node --check mcp/src/features/tihao-sourcing/brief-parser.js` passed. - `npm run smoke:briefs`, `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed. - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed. - `npm publish --access public --registry https://registry.npmjs.org/`, registry verification, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` passed. ## 1.0.3 Status: published to npm. `@vocmarket/tihao-sop@1.0.3` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed. Positioning: - 1.0.3 fixes the brief-to-blogger-list default mode: normal user briefs and requests like "用 live 小规模检索出博主名单", "真实跑", "真实数据", "调用接口", or "小规模检索" resolve to live mode. - First live runs stay intentionally small when limits are omitted: `keywordLimit=1` and `pagesPerKeyword=1`. - Sample mode is now weaker by design and should be used only when the user explicitly asks for `sample`, demo/no-cost mode, no real data, or "先跑通 SOP". - Missing live credentials, token, balance, or recharge state must return a friendly token/open/recharge message instead of silently falling back to sample data. Validation: - Syntax passed: `node --check mcp/src/features/tihao-sourcing/sourcing-workflow.js`, `node --check mcp/src/server.js`, `node --check scripts/smoke-package.js`. - Business smoke passed: `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, `npm run acceptance`. - Release smoke passed: `npm publish --dry-run --access public --registry https://registry.npmjs.org/`, `npm publish --access public --registry https://registry.npmjs.org/`, `npm view @vocmarket/tihao-sop@1.0.3 version`, `npm view @vocmarket/tihao-sop dist-tags.latest version`, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke`. ## 1.0.2 状态:已发布到 npm;`@vocmarket/tihao-sop@1.0.2` 已成为 `latest`,并通过 registry 查询和 fresh `npx` 工作区安装 smoke。 版本定位: - 1.0.2 是 1.0.1 的收尾加固版:把 `real-gap-material-audit` 从独立审计推进到 `round:refresh` 主链路,并同步写入 latest form、handoff、evidence index 和 round deposition 守卫。 - 该版本证明“三个真实缺口在项目里都有材料且已接入审计链路”,不证明业务效果已经达标;仍不得宣称提号率提升、客户效果达标或人工补号量下降。 - 当前真实业务证明仍以审计输出为准:`gapCount=3`、`materialFoundCount=3`、`openGapCount=3`、`canCloseProofGap=false`。 主要变化: - `npm run round:refresh -- --output-root outputs --strict` 现在包含 29 个步骤,并在 `local-seed-to-intake-worklist` 后执行 `real-gap-material-audit`。 - `latest-form:index` 和 `handoff:summary` 已传播 `realGapMaterialAudit`,接手方不用再单独猜三缺口材料审计产物位置。 - `evidence:index` 将 `real-gap-material-audit` 固定归类为 `not_business_proof`,防止把材料存在误升格为业务证明。 - `round-deposition` 新增三缺口材料审计守卫,校验 standalone、latest-form 和 handoff 三处都保留 `canCloseProofGap=false` 边界。 验证情况: - `npm run real-gap:materials:smoke` 通过。 - `npm run evidence:index:smoke` 通过,当前 fixture `total=44`、`not_business_proof=19`、`real_evidence=6`。 - `npm run task:handoff-index:smoke` 通过。 - `npm run round:refresh:smoke` 通过,29 步全部 `pass`,`round-deposition.passCount=142`、`failCount=0`。 - `npm run round:refresh -- --output-root outputs --strict` 通过,真实输出已刷新。 - `npm run package:contents:smoke`、`npm run acceptance` 和 `npm publish --dry-run --access public --registry https://registry.npmjs.org/` 通过。 - `npm publish --access public --registry https://registry.npmjs.org/` 成功,npm 返回 `+ @vocmarket/tihao-sop@1.0.2`。 - `npm view @vocmarket/tihao-sop@1.0.2 version --registry https://registry.npmjs.org/` 返回 `1.0.2`。 - `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.2`。 - `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 在 fresh workspace 通过。 ## 1.0.1 状态:已发布到 npm;`@vocmarket/tihao-sop@1.0.1` 已成为 `latest`,并通过 registry 查询和 fresh `npx` 工作区安装 smoke。 版本定位: - 1.0.1 不是改业务结论,而是把“项目里确实有资料”做成可复跑审计:`real-gap:materials` 会同时读取 DHA PoC 原始资料、候选视频资源、提号经验逐字稿、`proof-gap:closure` 和 video A/B preflight。 - 该版本用于关闭“没找到资料/没接资料”的误会;不关闭业务证明缺口,不宣称提号率提升、客户效果达标或人工补号量下降。 - 当前真实业务证明仍以审计输出为准:`real-gap-material-audit.openGapCount=3`、`materialFoundCount=3`、`canCloseProofGap=false`。 主要变化: - 新增 `npm run real-gap:materials`,输出 `outputs/real-gap-material-audit-latest/real-gap-material-audit-summary.json`、Markdown 和 CSV。 - 新增 `real-gap:materials:smoke` 并纳入 `npm run acceptance`,确保三个缺口都能找到项目材料,但 `canCloseNow=false` 不被误改。 - 审计明确三个缺口的当前证据: - `historical-dataset`:DHA Brief/PoC/参考分析工作簿已找到,`historyDraftRows=12`,逐字稿记录了 DHA 已提报但客户未反馈/未选新号;仍缺至少 5 个真实历史 Brief、客户决策、拒绝原因和历史人工补号量。 - `video-ab-live-proof`:`videoResourceReady=true`、`realCandidateRows=1`、`realReferenceRows=1`、候选视频 note 线索 15 条;仍缺 `acceptance:video-ab` 的 live `proofContext` 和 runtime/company/provider。 - `manual-review-and-customer-effect`:`manualReviewDraftRows=12`,逐字稿覆盖客户选中率目标和人工复核逻辑;仍缺真实人工复核标签、客户选中/拒绝、反馈原因、本轮人工补号量,并且必须绑定通过的 history audit。 - 审计报告把候选名单、逐字稿经验、视频资源 readiness 和旧 failure artifacts 的边界写清楚:它们是补证入口和失败证据,不是业务效果证明。 验证情况: - `npm run real-gap:materials:smoke` 通过。 - `npm run real-gap:materials` 通过,当前输出 `gapCount=3`、`materialFoundCount=3`、`openGapCount=3`、`canCloseProofGap=false`。 - `npm run acceptance` 通过,包内容 smoke 显示 `version=1.0.1`、`entryCount=178`、`package size=607.4 kB`。 - `npm publish --dry-run --access public --registry https://registry.npmjs.org/` 通过,确认 tarball 为 `@vocmarket/tihao-sop@1.0.1`。 - `npm publish --access public --registry https://registry.npmjs.org/` 成功,npm 返回 `+ @vocmarket/tihao-sop@1.0.1`。 - `npm view @vocmarket/tihao-sop@1.0.1 version --registry https://registry.npmjs.org/` 返回 `1.0.1`。 - `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.1`、`version=1.0.1`。 - `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 在 fresh temp workspace 通过,安装 `.claude/plugins/tihao-sourcing` 和 `.claude/skills/tihao-creator-sourcing` 后输出 `tihao smoke ok`。 ## 1.0.0 状态:已发布到 npm;`@vocmarket/tihao-sop@1.0.0` 已成为 `latest`,并通过 registry 查询和 `npx` 工作区安装 smoke。 版本定位: - `@vocmarket/tihao-sop` 的客户可安装 1.0 技能包版本,面向 Claude Code 工作区安装、Brief 到商务可复核名单、sample/live 小规模运行、偏好记忆、真实 provider runbook 和补证闭环交接。 - 1.0 可以声明“技能包交付链路可安装、可验收、可继续补真实材料”,不能声明“提号率已提升、客户效果已达标、人工补号量已下降”。 - 当前真实业务证明仍以 `proof-gap:closure` 和 `optimization:completion` 为准:`businessOpenCount/openCount=3`、`closedCount=2`、`readyForClaim=false`。 主要变化: - 为每个参考链接生成结构化 `referenceStyleFingerprints`,覆盖视频/图文/账号类型、人设、内容结构、语气、视觉元素、卖点承接、商业强度、合规风险和证据可用性。 - 增加真实性保护:模型返回的风格结论不能冒充 ASR 或帧图证据;缺少视频证据时明确标注“待补口播证据”或“待补帧图证据”。 - live 召回关键词从 Brief 和参考风格信号中扩展,覆盖品类、人设、场景、内容形态和节点词;同时记录平台、关键词、页码、API 路径、HTTP 状态、返回数量和规范化数量。 - 重构排序字段,输出 `briefFitScore`、`referenceStyleFitScore`、`dataQualityScore`、`budgetFitScore`、`riskPenalty`、命中条件、缺失条件和人工复核字段。 - 强推荐必须同时通过 Brief 和参考风格门槛;超预算、硬排除或高风险账号会被降级或剔除。 - Markdown 和 CSV 输出面向商务验收增强,包含 `Brief 解析摘要`、`参考视频风格指纹`、`候选召回记录`、`多模态证据卡`、`商务可用名单`、`剔除/降级原因`、`下一轮校准问题`。 - PM 验收和 smoke 测试升级,强制检查高标准字段、真实性 gate 和 token 泄露扫描。 - 增加真实 VOC social 参考视频补证指引:使用 `https://server.fmode.cn/api/voc-social` 获取小红书视频详情,再把真实视频、封面、字幕或帧图资源传给豆包;不能拿 Parse sessionToken 直接调用公开第三方采集接口。 - 增加 `npm run acceptance:video-ab`,用于同一 Brief 和参考视频的 live A/B 验收。 - 证据卡现在会影响候选参考风格命中点、分数和重排,不再只是报告里的被动展示。 - 增加防跑偏的参考感知召回:允许生成 `DHA 专业科普` 这类和 Brief 绑定的召回词;禁止婚礼、宴会、布景、满月宴、仪式感等跑偏场景词污染召回。 - JSON、Markdown、CSV 增加 `evidenceScoreBoost`,让商务能看到验证过的视频/证据分析对候选的贡献。 - 增加成本可控的证据分析目标选择:先预排序,再默认分析前 6 个候选。 - 增加 A/B 效率指标:证据卡数量、每张证据卡带来的强推荐提升、总分提升、参考风格分提升。 - 增加 `resultFirstMode`,用于本轮不优先考虑成本、只优先追求结果质量的场景。 - 增加 `evidenceRiskPenalty`,让混类或合规风险账号即使命中基础母婴信号也能被压低。 - CSV 写入增加 UTF-8 BOM,方便 Excel 直接打开中文不乱码。 - 增加软件端固定表头、跨策略去重和连续排名验收。 - 增加 `live:preflight`,在真实 live/video 长跑前检查 sessionToken、company、provider 和豆包模型配置。 - 增加 overnight 策略矩阵:`reference-account`、`homepage-evidence`、`video-enhanced`、`result-first`、`result-first-risk`、`result-first-broad`。 - 增加严格 provider 门禁:`TIHAO_GATE_REQUIRE_REFERENCE_PROVIDER` 和 `TIHAO_GATE_REQUIRE_HOMEPAGE_PROVIDER`。 - 增加 `review:metrics`,统计商务可用率、负样本率、负样本归因覆盖率、客户选中率、重复键和每个 brief 内排名连续性。 - 增加 `history:audit`,验收真实历史 Brief、人工最终名单、客户选中/拒绝记录和拒绝原因是否足够做长期优化。 - 增加反馈导入二轮闭环和 `teamRuleSuggestions`,同类反馈累计 3 次后建议升级为团队规则。 - 打通本地资料到正式补证入口的桥梁:`local-seed-to-intake-worklist` 现在生成 `history-intake-draft.csv`、`manual-review-draft.csv`、`video-resource-worklist.csv` 和 `candidate-seed-worklist.csv`,并在 `proofGapMaterialBridge` 中标记三个仍 open 缺口的资料来源和不能关闭原因。 - `proof-gap:closure` 现在读取最新 `local-seed-to-intake-worklist-summary.json`,把 `historical-dataset`、`video-ab-live-proof`、`manual-review-and-customer-effect` 的 `materialBridge` 写入 open 行,避免继续误判为“项目没有资料”。 - 三个真实缺口已从“找不到资料”推进为“资料已接入但还不能构成业务证明”:历史草稿 12 行仍缺 5 个以上真实历史 Brief 与客户决策;视频资源线索仍缺 live `acceptance:video-ab` proofContext;人工复核草稿 12 行仍缺真实标注、客户选择、归因和本轮人工补号量。 验证情况: - `npm run acceptance` 通过。 - `npm publish --dry-run --access public` 通过,确认 tarball 为 `@vocmarket/tihao-sop@1.0.0`,共 176 个文件,package size 约 598.5 kB。 - `npm publish --access public --registry https://registry.npmjs.org/` 成功,npm 返回 `+ @vocmarket/tihao-sop@1.0.0`。 - `npm view @vocmarket/tihao-sop@1.0.0 version --registry https://registry.npmjs.org/` 返回 `1.0.0`。 - `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.0`、`version=1.0.0`。 - `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 通过,fresh workspace 安装写入 `.claude/plugins/tihao-sourcing`、`.claude/skills/tihao-creator-sourcing` 并跑通 `tihao smoke ok`。 - `npm run acceptance:providers:mock` 通过。 - `npm run review:metrics:smoke` 通过。 - `npm run history:audit:smoke` 通过。 - 本地 fresh tarball 安装和 `npx tihao-sourcing workspace --smoke` 通过。 - 真实 `voc-e-commerce` live 验收使用有效运行时 sessionToken/company,返回 20 个候选和 10 条客户可用名单。 - 真实 live + 豆包组合测试使用模型 `doubao-seed-2-0-pro`,返回 97 个 live 候选、10 条客户可用名单、31 个强推荐、2 个参考指纹、1 个视频指纹、5 条召回记录,并生成 Markdown/JSON/CSV。 - 真实 VOC social 视频详情测试返回视频 URL、封面、作者/标题、字幕资源和可用参考指纹;泄露扫描通过。 - 手动 live A/B 在证据重排后通过:B 组加载 1 个真实参考资源和 10 张豆包证据卡;top 10 证据命中候选增加 6 个,平均参考风格分增加 1.0,平均总分增加 0.2。 - 加入防跑偏召回和证据加分后,手动 live A/B 提升更明显:B 组使用 `DHA 专业科普` 替代基线 `母婴`,加载 1 个真实参考资源和 10 张豆包证据卡,强推荐增加 3 个,top 10 证据命中候选增加 7 个,平均参考风格分增加 8.2,平均总分增加 7.4。 - 成本可控的 top 6 证据分析仍通过:只使用 6 张豆包证据卡,强推荐增加 4 个,top 10 证据命中候选增加 6 个,平均总分增加 3.1。 - result-first live A/B 通过:增强召回跑 8 次 live 请求,关键词包含 `DHA 专业科普`、`DHA 节点合集`、`DHA 清单推荐`、`DHA 理性科普`;豆包返回 20 张证据卡;强推荐从 5 个提升到 10 个;top 10 证据命中候选从 0 个提升到 10 个;平均参考风格分增加 2.1,平均总分增加 5.5。 - 输出泄露扫描未发现运行时 sessionToken、模型 token 或 `Authorization` 字符串。 已知边界: - 首次组合 live 运行出现过一次短暂 `live_network_error`,重试后通过。后续 runbook 保留 retry/backoff,并建议对单关键词失败做软失败处理。 - 未经过真实 provider gate 的能力只能称为合同验证或 mock 验证,不能宣称真实参考补证、ffmpeg、讯飞 ASR 或豆包视觉已完成上线。 - 没有真实历史客户选择数据前,不能宣称客户选中率达到 30%/50%,只能使用 `review:metrics` 统计已标注样本。 - npm 发布状态必须以 `npm publish` 成功和 registry 验证为准;仅 `npm pack` 或 dry-run 通过时只能称为本地包已重建。 ## 0.1.16 状态:本地待发布版本;包含最新交接文档、递归证明产物发现说明和 proof-gap 失败条件沉淀。发布前必须通过 `npm run acceptance`、`npm run package:contents:smoke` 和 npm publish 权限校验。 主要变化: - `docs/tihao-handoff-index.md` 和 `docs/tihao-experience-implementation-log.md` 已同步最新 proof-gap 边界:`round-deposition.passCount=137`、`optimization-completion.missingProofRequirementCount=113`、`proof-gap-closure.businessOpenCount/openCount=3`。 - 交接文档新增 closure/completion 递归证明产物发现记录:旧 `optimization-pipeline-latest` 内嵌的 `history-audit/historical-dataset-audit.json` 与 `customer-effect-audit/customer-effect-summary.json` 会被读取为失败证据,不能被误判为“文件缺失”或“可完成证明”。 - 明确三个真实缺口仍未关闭:真实历史 Brief 数据集、真实视频 A/B live proof、商务复核和客户效果证明。 - 明确当前没有业务效果宣称资格:`optimization-completion.readyForClaim=false` 时,不得宣称提号率提升、客户效果达标或人工补号量下降。 为什么三个真实缺口还没有完成: - 历史 Brief 缺口不是代码没跑,而是当前真实材料只有 `briefCount=1`,缺 5 条以上真实 Brief、人工最终名单、客户选中/拒绝、拒绝原因和历史人工补号量基线。用 seed、示例、模板或本地 PoC 候选补数会造成错误业务宣称。 - 视频 A/B 缺口不是视频资源表完全缺失,真实候选视频资源已单项 closed;当前卡在 live proof:缺真实运行凭证/company/VOC social provider/video analysis provider 上下文,本地只会生成 `video-hit-rate-preflight-summary.json`,不能生成 `proofContext.generatedBy=acceptance:video-ab` 的 live 证明。 - 客户效果缺口必须由 `customer-effect:audit` 证明,当前缺客户最终选择、参考链路客户选择、本轮人工补号量,并且绑定的历史审计仍未通过客户效果证明门槛。 验证: - `npm.cmd run task:handoff-index:smoke` - `npm.cmd run hygiene:smoke` - `npm.cmd run round:refresh:smoke` - `npm.cmd run package:contents:smoke` - `npm.cmd run install:smoke` - `npm.cmd run smoke:package` - `npm.cmd run acceptance` - `npm.cmd pack --dry-run --json` ## 0.1.15 状态:VOCMarket npm scope 迁移版本。 主要变化: - 客户侧 npm 包名从 `@gangvy/tihao-sop` 改为 `@vocmarket/tihao-sop`。 - CLI 命令仍为 `tihao-sourcing`,Claude Code plugin/skill 标识保持不变。 - 安装文档和包 manifest 使用 `npx --yes @vocmarket/tihao-sop@latest workspace --smoke`。 - 保留 `0.1.13` 的真实豆包 OpenAI 兼容服务适配。 验证: - `npm run acceptance` - `npm run acceptance:providers:mock` - 发布后 fresh npm 安装 smoke:`npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 备注: - `@vocmarket/tihao-sop@0.1.14` registry `PUT 200` 且 dist-tag 显示 latest,但 public `npm view`/`npx` 返回 404,因此未作为客户可安装版本。 ## 0.1.13 状态:真实豆包 OpenAI 兼容服务适配版本。 主要变化: - 增加豆包/视频分析 provider 的 OpenAI 兼容 chat completions 请求模式。 - `doubaoVisionBaseUrl: "https://api.fmode.cn"` 默认请求 `/v1/chat/completions`,默认模型为 `doubao-seed-2-0-pro`。 - 非 chat provider URL 继续沿用内部 evidence-card provider 合同。 - 增加 OpenAI 兼容请求体和 `choices[0].message.content` 证据卡解析的 mock 覆盖。 验证: - 真实请求 `https://api.fmode.cn/v1/chat/completions` 返回 HTTP 200,模型为 `doubao-seed-2-0-pro-260215`。 - 真实 Tihao sample run 使用豆包服务返回 3 张 `doubao_vision_verified` 证据卡,并写出 Markdown/JSON/CSV。 - 输出扫描未发现 API token 或 Authorization header 泄露。 - `npm run acceptance:providers:mock` - `npm run mcp:smoke` 备注: - 该版本验证了豆包模型能基于候选/Brief 信号生成证据卡。若未提供真实帧图或 ASR,证据卡会正确标注缺少视频帧/口播证据。 ## 0.1.12 状态:已发布,豆包 provider 验证加固版本。 主要变化: - 加强豆包 provider 合同验收:当返回 OpenAI 风格 evidenceCards 时,报告必须包含 `## 多模态证据卡` 和 `doubao_vision_verified`。 - 产品验收扫描忽略本地 `.npm-cache-*`,避免 npm registry cache 被误判为源码泄露。 验证: - 本地 HTTP mock 调用豆包 provider,覆盖模型、Authorization 和 evidenceCards 解析。 - `npm run acceptance:providers:mock` - `npm run acceptance` 备注: - 该版本是合同/mock 验证,不等于真实外部豆包服务已跑通。 ## 0.1.11 状态:已发布,豆包视频分析 provider 合同版本。 主要变化: - 增加可选豆包/视频分析输入:`doubaoVisionBaseUrl`、`doubaoVisionPath`、`doubaoVisionModel`、`doubaoVisionToken`、`videoAnalysisBaseUrl`、`videoAnalysisPath`、`videoAnalysisModel`、`videoAnalysisToken`。 - 默认模型为 `doubao-seed-2-0-pro`。 - 请求复用 evidence-card 合同,并包含 `providerType`、`model`、`requestedCapabilities`、Brief 标准和候选博主。 - provider 响应解析支持标准 `evidenceCards` 和 OpenAI 风格 `choices[0].message.content` JSON。 - 安全扫描阻止 `sk-...` 形式 token 写入包文件。 - skill 文档和 runbook 明确 URL/token 只能由用户运行时填写,不能硬编码。 验证: - `npm run acceptance:providers:mock` - `npm run acceptance:pm` - `npm run acceptance` ## 0.1.10 状态:已发布,provider 失败状态加固版本。 主要变化: - `referenceEvidenceStatus` 增加结构化 provider 状态字段:`providerRequested`、`providerStatus`、`providerHttpStatus`、`providerWarning`。 - `evidenceStatus` 增加同样的状态字段。 - reference provider 区分 `not_requested`、`missing_base_url`、`network_error`、`unauthorized_or_quota`、`http_error`、`empty_result`、`parse_error`、`ok`。 - evidence provider 区分 `not_requested`、`network_error`、`unauthorized_or_quota`、`http_error`、`empty_result`、`parse_error`、`ok`。 - mock 验收加入 reference 403 和 empty evidence response,确保提号流程不中断且 warning 可审计。 验证: - `npm run acceptance:providers:mock` - `npm run acceptance:pm` - `npm run acceptance` ## 0.1.9 状态:已发布,provider 合同加固版本。 主要变化: - 参考补证和多模态 evidence provider 请求增加 `contractVersion: "tihao-provider-v1"`。 - reference provider 请求带上品牌、品类、平台、关键词和参考信号。 - 多模态 evidence provider 请求带上文本、ASR、视觉、帧图证据和风险复核能力。 - 支持通过运行时 token 为 evidence provider 鉴权。 - `acceptance:providers:mock` 会验证入站请求体、候选身份、参考锚点和可选 Authorization。 验证: - `npm run acceptance:providers:mock` - `npm run acceptance:pm` - `npm run acceptance` ## 0.1.8 及更早版本摘要 已发布版本主要完成: - 校准闭环报告:把下一轮问题、复核建议和结构化 next actions 固化在客户可用输出中。 - CLI 反馈和剔除项报告:支持保存商务反馈,报告中说明剔除/降级原因。 - 提号规则与记忆循环加固:更明确地区分首轮假设、硬排除规则和偏好记忆。 - 文档和 PM gate 加固:把真实 provider runbook、roadmap、README 链接和“未跑真实 gate 不得宣称 live 完成”的措辞纳入验收。 - 参考证据路线:增加 `referenceEnrichmentBaseUrl` / `socialAnalysisToken` provider 接口、`evidenceCards` / `evidenceCardsPath`、`multimodalEvidenceBaseUrl` 和对应验收。 - workspace 安装:支持将 Claude Code plugin、skill 和 `.mcp.json` 写入客户工作区。 - 首个 npm 发布版本曾使用 `@gangvy/tihao-sop`,后续迁移到 `@vocmarket/tihao-sop`。 长期边界: - 没有真实 provider gate 前,只能称为接口合同或 mock 验证。 - 没有客户有效 token/company 前,不能宣称客户账号 live 提号已通过。 - 没有真实帧图/ASR/视频资源前,不能把模型风格总结写成已验证的视频证据。 ## 常用验证命令 ```powershell npm run acceptance npm run acceptance:providers:mock npm run acceptance:pm npm run live:acceptance npm run acceptance:video-ab ``` `live:acceptance` 需要运行时提供: ```powershell $env:TIHAO_SESSION_TOKEN="" $env:TIHAO_COMPANY="" ``` `acceptance:video-ab` 还需要运行时提供视频分析 URL、模型和 token。所有 token 都不能写入文件。