Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
11 KiB
11 KiB
TASK · 普通对话「数据卡」调研:后台筛掉多余,只把能出数据的部分交给模型(2026-09-27)
调研单,不改任何线上行为。产出一份报告、一套可复跑的脚本和一张按领域的数据卡草案,交产品与懂印占的人拍板后,再另开实现单。
基线
origin/staging5f2e007f(开工时以git fetch后的最新origin/staging为准,写进 PROGRESS)。- 分支
codex/consult-evidence-card-research-20260927,工作树.worktrees/consult-evidence-card-research-20260927。 - 并行中的实现单
codex/consult-single-pass-answer-20260927(BUG-1053,去掉盲写第三步)改的是frontend/src/app/api/consult/route.ts、frontend/src/lib/stream-agent-response.ts。本单不得修改这两个文件;调研脚本只读调用引擎与投影函数。
事故实证(行号按符号定位,会漂)
- 2026-09-27 真机:「我和父母关系如何」跑了 10 步,回答却说「这次消息里没有父母主题的盘面证据」。诊断已确认:写答案那一步拿不到任何排盘结果(
route.tscomposeAnswer只带baseMessages+consultationComposePrompt(),判断依据恒空),由 BUG-1053 处理。本单研究的是修好之后该给模型什么。 - 体量(诊断时用公开样例盘实测):
- Python
/api/consultation_workflow(scripts/jyotish_api_server.py_compute_consultation_workflow,编排在scripts/unified_consultation_orchestrator.py)原始输出约 478K 字符。 - 投影后进模型的工具结果约 133–144K 字符(约 4 万 token)。
- 单领域时
frontend/src/mastra/consultation-tools.tstoModelDomainPlanContext返回{...consultations[0], ...plan, consultations},同一个包出现两次(consultations约 71K 字符)。 - 每份里
varga_spectrum约 17K、western_spectrum约 6K、技法审计表约 6.9K(43 行),在 natal 卡与evidence_contract里各出现一次。系统提示里的 Skill 方法块约 23K 字符。
- Python
- 相关度:父母问题真正要用的宫位、行星、D12、大运与子运、功能吉凶合计约 5K / 144K ≈ 3.5%。
- 领域路由缺口:
frontend/src/lib/consultation-domain-registry.ts的family把父母与子女混在一起,别名没有「父母 / parents」。frontend/src/lib/consultation-methodology.ts里family的strictRoute: null;frontend/src/mastra/consultation-workflow.tsDOMAIN_MUST_USE_LAYERS没有 family 项。- Skill 只有一句「D12 for family/ancestral themes」(
skills/jyotish-vedic-astrology/references/strict-workflow-router.md约 163 行)。 - Python 路由的
focus_techniques(如 D12/4/9 宫)没有投影给模型。
- 43 项技法审计表(09-26 真机截图)粗分:核心数据约 12 项;状态说明约 8 项(VedAstro 云状态、MEVG、真实案例校准、盲技术模式、时间精度门、证据包等,只说「没做 / 受限」);本轮不适用 4 项;研究用约 4 项(40 张研究型 D-N、D81/D108/D144、Ashtottari「参数敏感、未验证」);西洋约 11 项。
根因(本单要证实或推翻)
咨询默认「全算全给」(BUG-287 起),没有一层按问题筛选:模型每轮读约 4 万 token,能用的只有几个百分点;领域到技法的对应关系散落在注册表、方法学、Skill 与 Python 路由四处,彼此不一致,还缺父母这一类。
决策记录(产品 2026-09-27)
- D1 方向已定:在计算引擎与写答案的模型之间加后台筛选。计算可以照旧算全,但只把能写进答案的数据按领域组成「数据卡」交给模型;状态说明、不适用、研究用、西洋层留在后台(报告与审计照用),不给写答案的模型。
- D2 之后按反馈迭代:记录用了哪张卡、答案引用了卡里哪些数据、点赞 / 点踩,据此增删卡内容。本单只设计埋点方案,不实现。
- D3 本单只调研、出草案;数据卡的最终内容由产品和懂印占的人拍板,再另开实现单。
- D4 「家庭」计划拆成「父母」与「子女」两类,本单给出建议映射与依据。
- 本单不推翻任何既有红线:AGENTS Part B 的高严谨要求(双轨大运、按领域分盘、功能吉凶、原始数据)是对输出占星解读的约束,数据卡必须能满足它;若某项红线与「只给相关数据」冲突,写进报告交产品决定,不自行取舍。
硬红线
- 不改线上行为:不改
frontend/src/app/api/consult/**、frontend/src/lib/stream-agent-response.ts、frontend/src/mastra/**的运行逻辑、Python 引擎、Skill 文本、数据库。新增文件只放在scripts/research/、tests/(只测研究脚本的纯函数)、docs/research/、docs/tasks/。 - 数据只用公开名人样例(仓库
references/real_case_calibration/下的公开 AA 开放集)或明确虚构的出生资料;不得出现任何真实用户资料(AGENTS §8)。 - 每个数字都要附复跑命令;同机 A/B,不跨机器比较浮点哈希(BUG-985)。
- 不下占星结论。本单是数据工程调研,报告里不写「某人父母关系如何」之类的解读。
- 禁止
git stash;提交只git add <具体路径>,提交前看git diff --cached --stat(ERR-112)。不推送,完成后本地提交交验收。
任务分解(每条带验收标准)
R1 盘点:引擎输出逐项分类与计量
- 用 3 个公开样例盘 × 8 个领域(事业、婚恋、财富、健康、学习、迁居、家庭、综合;另加「父母」「子女」两种问法,走现有 family 路由)真跑
_compute_consultation_workflow,再经toModelOutput/toModelDomainPlanContext投影,得到模型实际看到的文本。 - 把投影后的字段逐项归入五类:核心数据 / 状态说明 / 不适用 / 研究用 / 西洋。给出每项的字符数与 token 估算(写明估算方法),以及重复出现的字段与次数。
- 验收:一张「字段 → 类别 → 大小 → 是否重复」总表(JSON + 报告里的汇总表);五类合计与总大小对得上(误差 < 1%)。
R2 领域 → 技法对照表草案
- 汇总四处现有来源:
consultation-domain-registry.ts的requiredLayers、consultation-methodology.ts、consultation-workflow.tsDOMAIN_MUST_USE_LAYERS、Skillstrict-workflow-router.md与jyotish-vedic-astrology其余 references,外加 Python 路由的focus_techniques,列出每个领域在四处的差异。 - 起草每个领域的数据卡:
- 基础段(每张卡都带):上升、12 宫落星与宫主、功能吉凶星、当前 Vimshottari MD/AD/PD 及起止日期、Narayana 当前段。
- 领域段:该领域专属的宫位、宫主、分盘、自然星、格局、行运窗口。
- 「父母」「子女」两张新卡给出依据(引用仓库内 Skill 文字或公开经典出处)。
- 标出每张卡里有没有满足 AGENTS Part B(双轨大运、领域分盘、功能吉凶、原始数据)的字段;不满足的写明缺口。
- 验收:一张可给非程序员看的对照表(领域 × 基础段 / 领域段 / 数据来源 / Part B 覆盖),外加机器可读的 JSON 草案。
R3 数据卡原型与体量对比
- 写一个研究用的纯函数(
scripts/research/下,Python 或 TS 皆可),输入 R1 的投影结果,按 R2 草案裁出数据卡文本。 - 对 3 盘 × 10 种问法输出数据卡,给出每张卡的大小,与现状(约 4 万 token)对比;并核对卡里关键事实与引擎原始值逐字一致(上升星座、月亮星座与宫位、当前大运起止日期、D12 相关落点)。
- 验收:体量对比表;逐字一致性检查 100% 通过(不一致即报告为缺陷,不得在卡里改值);样例卡片附在报告附录里(公开名人盘)。
R4 提速空间(只量不改)
- 统计每个领域的数据卡实际依赖哪些计算模块,估算「只算卡里需要的」能省多少引擎耗时(用本机同机计时,不跑外部 VedAstro;外部取证单独列出不计入)。
- 验收:模块 → 被哪些卡依赖 → 本机耗时的表;给出「全算 vs 按卡算」的耗时估计与方法说明。
R5 反馈迭代的埋点方案(只设计)
- 设计每轮要记的字段:领域、卡版本、卡大小、答案引用了卡里哪些字段(如何判定引用,需写清楚方法与误判风险)、点赞 / 点踩。只存数字、枚举与字段名,不存用户文本(AGENTS §8、参照
TASK-rectification-telemetry-20260926的做法)。 - 设计后台汇总:哪些字段长期不被引用、哪类问题点踩率高。
- 验收:字段表 + 汇总视图草图(文字描述即可)+ 隐私核对清单。
R6 报告
docs/research/consult_evidence_card_research_2026_09_27.md:结论先行,五节对应 R1–R5;每节一句话结论、复跑命令、是否建议立实现单。- 结果 JSON 放
docs/research/;docs/tasks/PROGRESS-consult-evidence-card-research-20260927.md记开工基线、做了什么、没做什么、环境缺口;docs/tasks/README.md本单一行改为「待验收」。 - 验收:报告里给产品的决策清单(需要拍板的每一项,附推荐与理由),不超过一页。
让步顺序(时间不够时)
- R1、R2、R3 必须完成(这是拍板的依据)。
- R4 可以只做 3 个领域。
- R5 可以只给字段表,汇总视图留待实现单。
开工前置命令
cd /workspace/Jyotisha && git fetch origin --prune
git worktree add -b codex/consult-evidence-card-research-20260927 .worktrees/consult-evidence-card-research-20260927 origin/staging
ln -s /workspace/Jyotisha/frontend/node_modules .worktrees/consult-evidence-card-research-20260927/frontend/node_modules
cd .worktrees/consult-evidence-card-research-20260927
git status -sb
python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45 # 涉及引擎输出,按 AGENTS §9 先跑预检
export PATH=/exec-daemon:$PATH # 需要跑 TS 投影函数时用 Node 22
先读:AGENTS.md(§5、§8、§9、Part B)、docs/research/pre_work_error_ledger.md(ERR-110 冻结计分文件、ERR-111 PYTHONHASHSEED、ERR-112)、docs/BUG_HISTORY.md 中 BUG-287、BUG-298、BUG-943、BUG-1053(开工时若已合入)。
验收口径
- 新增的研究测试:
python3 -m pytest tests/test_consult_evidence_card_research.py(如有)通过;tests/test_repo_privacy_markers.py、tests/test_bug_history_workflow.py通过。 - 本单提交里不出现
frontend/src/**、scripts/*.py(scripts/research/除外)、skills/**、迁移文件的改动。 - 所有表格数字可由报告里的命令复跑得到。
BUG 编号
本单是调研,默认不开 BUG。若发现缺陷(例如投影丢字段、卡里事实与引擎不一致),开工时核对 docs/BUG_HISTORY.md 最大号(staging 上当前为 BUG-1051;BUG-1052、BUG-1053 已被并行实现单占用),从 BUG-1054 起,记为 investigating,不修代码。