siyu-save:客户档案存档
把当前对话里已经形成的客户主诉、结论、否决方向、待验证假设和下一步,写成结构化 markdown 文件。默认只保存结构化结论,不复制完整对话;只记录,不重新诊断。
两种状态不要混用
.siyu-team/runs/{run_id}/:一次总协调安排的运行中状态,用来隔离续跑,完成后原样保留。~/.siyu/clients/:跨对话长期累积的客户档案。
编排完成后可把结论沉到客户档案;两者不互相替代,也不要把客户档案写进仓库。
用户措辞
对用户只说「客户档案」「存档」「对话」,不说 slug、snapshot、session。路径和 frontmatter 字段仅作技术标识。
触发方式
| 命令 | 行为 |
|---|---|
/siyu-save |
从当前对话提取结构化结论,自动提取标题 |
/siyu-save <标题> |
使用指定标题 |
/siyu-save --client <客户> [标题] |
保存到指定客户档案 |
/siyu-save list [客户] |
只列档,不写文件 |
工作流程
1. 判断是否值得存
先检查对话里是否已有诊断结论、执行产物、否决方向或待验证假设。只有一句「保存」且前面没有有效内容时,拒绝写空文件:
现在没有可存的结论。先完成一次具体任务或诊断,再来存档。
2. 确定客户和标题
- 客户目录默认取当前目录名,归一化为小写字母、数字和连字符;没有明确客户或位于家目录时用
default。 - 用户传了
--client时优先使用,并把不安全字符替换为-,禁止..、路径分隔符和越出~/.siyu/clients/。 - 标题优先用用户指定值,否则从对话提取不超过 20 字的名词短语。
跟用户说「客户」,不要说内部目录标识。此时只在内存中准备标题和内容,还不创建目录或文件。
3. 生成结构化草稿与敏感信息预览(写盘前)
先在内存中生成本页第 6 步的结构化草稿。只提取支撑后续接续的最少信息:主诉摘要、经营画像、已确认结论、否决方向、待验证假设、下一步和必要备注。
默认不进入草稿的内容:
- 完整对话、逐字稿和整段原始用户输入;
- 系统或开发者指令、Trace、官员原始输出和调试信息;
- 外部文档全文、无关联系人信息和不影响结论的经营明细。
对草稿扫描下列类别:姓名与客户标识、手机号、身份证号、邮箱、微信号、详细地址、门店或组织内部标识、精确经营数字,以及 token、API key、密码、cookie 等认证凭据。
在任何写盘之前,先向用户显示:
即将存档:结构化结论(不含完整对话)
检测到 {N} 处可能的敏感信息:
| 类别 | 出现位置 | 脱敏预览 |
| ... | ... | ... |
预览只显示支撑判断的最少片段。手机号、证件号、邮箱和内部标识要掩码;认证凭据只显示「[凭据,已隐藏]」,不得在预览中重复完整值。如未命中,明确说「未发现常见敏感信息,不代表绝对安全」。
4. 等待用户选择
预览后必须停下,让用户选择:
1. 脱敏后保存(推荐)
2. 原文保存
3. 取消
- 未收到明确选择时,不得写入、创建目录或视为默认同意。
- 选「脱敏后保存」:对预览中的敏感值做掩码、区间化或删除,再写入;不得编造替代数字。
- 选「原文保存」:仅在结构化草稿中保留预览已提示的原值,并在写入前提醒该文件是未加密本地纯文本。「原文」不代表改为保存完整对话。
- 选「取消」:立即结束,不创建任何文件或目录,只回复「已取消存档」。
- 用户修改草稿后,必须重新扫描、重新预览并重新选择。
5. 生成路径
~/.siyu/clients/{客户目录}/{YYYYMMDD-HHMMSS}-{标题目录}.md
时间戳使用本地时间;ISO 时间用:
python3 -c "from datetime import datetime; print(datetime.now().astimezone().isoformat(timespec='seconds'))"
只有在第 4 步收到「脱敏后保存」或「原文保存」的明确选择后,才能创建目录。同一秒同名时追加 4 位随机后缀,永不覆盖已有文件。
6. 写入固定格式
---
client: {客户目录}
timestamp: {ISO 8601 带时区}
title: {标题原文}
source_skill: {本次主要走过的 skill,多个用逗号分隔}
status: {in-progress | resolved | abandoned}
next_skill: {推荐下一步,不确定就留空}
industry: {catering | retail | edu | ...,可为空}
stage: {cold | growth | mature,可为空}
business_model: {direct | franchise | mixed,可为空}
stores: {门店数,可为空}
org_layers: {none | regional,可为空}
private_channel: {企微 | 个微导购 | 小程序会员 | 社群,可为空}
content_scope: structured_conclusions
privacy_mode: {redacted | original}
sensitive_categories: [{只写类别,不写原始值}]
compliance_flags: []
---
## 客户主诉
{按 privacy_mode 处理后的 1—2 句结构化摘要}
## 经营画像
- 行业及子类:{...}
- 经营模式:{直营 / 加盟 / 混合}
- 门店数:{数字或档}
- 分公司或区域层:{有 / 无}
- 私域主载体:{企微 / 个微导购 / 小程序会员 / 社群}
未知项写「未记录」,不要猜。
## 已得出的结论
- {一句话一个结论}
## 已否决的方向
- {方向} —— {否决理由}
## 待验证假设
- {假设}
## 推荐下一步
{做什么、为什么、对应哪个 skill,一段话}
## 备注
{只记影响判断的关键转折和怀疑,不粘贴完整对话}
没有否决方向或假设时写「(暂无)」。status 不确定时用 in-progress;next_skill 不确定时留空,不能猜。privacy_mode 必须与用户选择一致;sensitive_categories 只记扫描类别,不重复敏感值。
7. 一行回执
已存档:{路径}。当前客户下共 {N} 份;下次输入
/siyu-restore接着上次。
不复述内容,不说「保存成功」,不加感叹号。选「原文保存」且档案含敏感信息时补一句:~/.siyu/ 是本地纯文本且未加密,请管理好本地访问权限。
list 模式
按文件名前缀排序,输出日期、标题、中文状态和来源:in-progress → 进行中、resolved → 已结论、abandoned → 已放弃。没有档案时说明先完成一次任务再存档。
边界
- 客户档案是本地长期记录,不是 Trace、完整对话备份、公开知识库或同行贡献稿;不自动上传、分享或写入仓库。
~/.siyu/是未加密纯文本。本 skill 不主动同步;操作系统备份、云盘或其他同步工具不在本 skill 的安全边界内。- 敏感扫描是尽力而为的辅助,不是绝对保证;写盘前必须让用户看到预览和选择。
- 「原文保存」只改变结构化草稿的脱敏方式,永不扩展为记录完整对话。
- 连续保存允许生成新文件,不能覆盖。
- 写入前解析并确认最终路径仍在
~/.siyu/clients/下。 list模式只读,不进行存档、不创建文件。- 面向用户一律中文,遵循《中文文案排版指北》。
不知道下一步用哪个 skill?
输入 /siyu。
这是私域工具箱的导航入口。它会读取刚才的具体结论,选择当前最值得处理的一个方向,
并直接路由到对应 skill。迷路了就回 /siyu。