- 交互契约改对话式询问(禁点选工具、一次1~2问、先铺垫再问),规则库 3.6 - 盘面图默认生成+chart_shot 截图;品牌区、大运/流年小卡信息补全、交流群二维码卡 - day_boundary 子正换日;memory_save --update-chart 换盘留痕;share_export 事件简介+城市级地域 - share_push 失败诊断+代理引导;_runtime_guard;修 STAR_ORDER 三奇贵人 KeyError - README 规则计数 541→542;manifest 重建(1275 文件);测试 142 项全绿
命主档案(memory/)
每位命主一个 Markdown 档案,存于 archives/。建档与检索只经两个脚本:
# 建档/更新(即一次排盘:授权副本照常过软锁、扣减一次)
python scripts/memory_save.py --name 张三 --gender 男 \
--birth "1990-05-14 08:30" --place "四川省成都市"
# 换盘(经用户确认换盘后):重排并整体替换「## 盘面」段,frontmatter 同步;
# 姓名/性别/出生信息读档案,--birth/--place 仅在校正时给覆盖值
python scripts/memory_save.py --update-chart archives/<档案>.md \
[--day-boundary 子正] [--birth "校正后时刻"] [--place "校正后地点"]
# 检索(条件任意组合、至少一项;大小写/空白容错)
python scripts/memory_lookup.py [--name 张三] [--birth "1990-05-14 08:30"] \
[--place 四川省成都市] [--gender 男] [--pillars "庚午 辛巳 己卯 戊辰"]
两脚本均可用 --memory-root 或环境变量 ZIPING_MEMORY_ROOT 覆盖档案根目录
(默认为技能根 memory/),便于测试与多副本隔离。本文件随授权副本分发;
archives/ 内的档案数据不分发(tools/ 已排除,骨架 .gitkeep 保留)。
文件名主键
archives/<四柱连写>-<性别>-<hash6>.md,其中
hash6 = sha1(出生钟表时间 + 出生地 + 性别)(UTF-8)前 6 位十六进制,
用于区分同盘不同人。同主键再次建档只刷新 frontmatter 与「## 盘面」,
正文其余小节原样保留。换盘(--update-chart)后四柱或 hash6 变动时,
文件改为新主键名(目标已存在则拒绝覆盖,报错退出 2)。
换盘纪律(工作盘唯一 + 变更留痕)
经用户确认换盘(日界规则分歧、时辰/出生地校正等)后,必须重排并把 「## 盘面」段整体替换为新盘:档案任何时候只有一个工作盘,旧盘信息 (原四柱、换盘原因、确认方式与时间)记入「反馈与澄清」校订条目,不留盘面段。 凡受变动柱影响的已有推断条目(归纳、流年大事各行)同轮标记【待复核】, 复核前不得继续引用。
Schema
YAML frontmatter(受限子集,脚本自解析,不依赖 pyyaml):
| 字段 | 含义 |
|---|---|
name |
姓名 |
gender |
男 / 女 |
birth_clock |
出生钟表时间(原始输入) |
birthplace |
出生地(原始输入) |
true_solar_time |
真太阳时(排盘归算结果) |
pillars |
四柱四词,年月日时顺序 |
day_master |
日干 |
created_at |
建档时间 |
updated_at |
最近建档/刷新时间 |
正文固定小节(次序不变):
## 盘面—— 命盘 Markdown 全文,每次建档刷新;## 主要关注方向—— 命主历次提出的主线问题;## 归纳—— 性格 / 身体 / 事业 / 感情 / 婚姻各一行,未断写「未断」;## 流年大事—— 已断或已核对的流年事件;## 反馈与澄清—— 每条以状态标签开头:【已核实】【已证伪】【未核实】。
回写纪律
- 推测性归纳标【未核实】;命主确认改【已核实】;被否改【已证伪】并补一句实际情况。
- 用户核对/澄清任何断语后,当轮把结果写回该档案「反馈与澄清」小节; 结构性结论同步更新「归纳」各行。
- 分析推理时直接参用已核实/已证伪条目;已证伪的断法不得再断。
隐私边界
档案只存于使用者本机:不随授权副本分发、不进 share。 档案内容属命主个人信息,模型不得把档案原文外发 (不粘贴到外部对话、不上传网络、不写入其他文件)。