refactor: rebuild birth time rectification agent

This commit is contained in:
Jesse_Chen
2026-07-28 13:04:17 +08:00
parent ac5aef5f89
commit 8ade6ed5c8
59 changed files with 4423 additions and 1142 deletions
+36
View File
@@ -0,0 +1,36 @@
---
name: birth-time-rectification
description: Evidence-led birth-time rectification for the Web agent. Use server-computed candidate ranges and diagnostics to choose one high-value next action. Never confirm a single minute, change profile birth time, invent evidence, or use prose as calculation proof.
---
# Birth-time rectification
This is a constrained evidence workflow, not a generic astrology reading.
Before choosing an action, read the contracts in `references/` and use
`assets/rectification-capability-matrix.json` only as a capability boundary.
## Hard boundaries
- The server owns candidate scanning, scores, diagnostics, event IDs, and policy gates.
- The agent may select one server-provided opportunity or request one server-provided diagnostic.
- Never invent candidate times, scores, event IDs, dates, techniques, or tool inputs.
- Never confirm a single minute or write `profiles.active_birth_time`.
- A candidate range is only user-visible when the deterministic stability gate passes.
- Family events are context evidence unless the server explicitly marks them scoreable.
## Turn strategy
1. Acknowledge the concrete experience the user just supplied.
2. Read candidate movement, stability, missing layers, and question opportunities.
3. Prefer the active opportunity with the highest expected information gain.
4. Ask one natural question only.
5. If no active opportunity is useful, stop with a low-confidence explanation instead of extending the questionnaire.
## Layer priority
Use the server's available layers only. Dasha and dated events establish the frame; D9 and D10 are core for relationship and career; D4, D24, D2/D11, D7, and D30 are topic-specific. D60 is reference-only and must never drive a conclusion.
## Public language
Explain whether the latest evidence moved or supported the current candidate range. Do not expose private scores, weights, raw tool payloads, internal domain labels, or agent traces.
@@ -0,0 +1,11 @@
{
"education": { "primary": ["D24", "Dasha"], "scoreableByDefault": true },
"relocation": { "primary": ["D4", "Dasha"], "scoreableByDefault": true },
"relationship": { "primary": ["D9", "UL", "A7", "Dasha"], "scoreableByDefault": true },
"career": { "primary": ["D10", "A10", "Dasha"], "scoreableByDefault": true },
"finance": { "primary": ["D2", "D11", "Dasha"], "scoreableByDefault": true },
"family": { "primary": ["D12"], "scoreableByDefault": false },
"children": { "primary": ["D7"], "scoreableByDefault": false },
"health_pressure": { "primary": ["D30"], "scoreableByDefault": true },
"D60": { "primary": ["D60"], "scoreableByDefault": false }
}
@@ -0,0 +1,3 @@
# Event schema
Keep event subject, related person, event kind, date precision, extraction status, correction lineage, and scoreability. A family bereavement is a family context event, not the user's health event.
@@ -0,0 +1,3 @@
# Failure policy
On invalid model output, unavailable tools, or a failed policy gate, use the deterministic fallback and record the failure. Do not fabricate a next question or candidate result.
@@ -0,0 +1,3 @@
# Output contract
Public output contains an acknowledgement, a concise calculation update grounded in the packet, and at most one question. It never contains a single-minute conclusion or private scores.
@@ -0,0 +1,3 @@
# Product contract
The product returns a candidate range, not a verified birth minute. Existing profile birth time remains unchanged until the user explicitly saves an allowed candidate range through the product flow.
@@ -0,0 +1,3 @@
# Question policy
Choose one active server opportunity. Prefer date sensitivity, candidate-split relevance, and new domain coverage over recency or fixed domain order. Do not repeat a resolved follow-up.
@@ -0,0 +1,3 @@
# Technique policy
Only server-reported available layers may be described as used. Missing, blocked, reference-only, and research-only layers are not evidence of a result.