# MyLife 产品路线图 > 配套:[产品定义](./vision.md)(产品定义与竞争分析)、[技术方案](./technical-design.md)(技术方案) --- ## 0. 先回答你的疑问:什么叫"越用越离不开是失败的" 你说你不是产品出身,请我单独讲清楚。这里不绕术语,直接说。 ### 两种"上瘾",长得像,本质相反 | | A 类:工具依赖 | B 类:能力剥夺 | |---|---|---| | **表现** | 「我得用它,因为只有它记得我所有的事」 | 「我得用它,因为**没有它我就想不清楚了**」 | | **用户离开后** | 决策变慢,但**能力还在** | **决策能力萎缩** | | **类比** | 计算器、搜索引擎、笔记软件 | 算命、赌博、"大师" | | **对用户** | 净收益 | 净损失 | **MyLife 必须停在 A 类,绝不能滑进 B 类。** ### 为什么这个风险对 MyLife 特别高 因为这个产品的核心场景是**"我迷茫、我焦虑、我想不清楚"**。 在这种状态下,人会天然地想把判断权交出去。而 LLM 又恰好倾向于讨好你、给你确定的答案。 两者一叠加,很容易变成:**用户越来越依赖 AI 替他做判断,而不是越来越有能力自己做判断。** ### 判断标准(可操作的) 不要看"使用时长""日活"这类指标 —— 它们会**鼓励**你往 B 类滑。 看这三个: | 指标 | 健康的信号 | 危险的信号 | |---|---|---| | **用户的否决率** | 用户经常说"不对,我不是这个意思" | 用户全盘接受 AI 的每条结论 | | **用户的自主结论** | 用户自己给出了 AI 没提到的判断 | 用户只问"我该怎么办" | | **决策后的后悔率** | 用户复盘时说"这个思路对我有帮助" | 用户说"你当时说该这样,结果不对" | **核心判据一句话:** > **好的产品,是用户用完它之后,即使没有它也能想得更清楚一点。** > 它应该像一个好教练 —— 让运动员变强,而不是让运动员离不开教练。 ### 落到具体设计上的四条硬约束 1. **AI 永远给"判断 + 依据 + 反方 + 改判条件",不给"你该这样做"。** 给的是思考的脚手架,不是答案。 2. **每条结论必须锚定证据**,让用户能反驳、能溯源 —— 反驳得越容易,依赖越浅。 3. **主动暴露不确定性**:找不到依据就说找不到,信息过期就说过期,而不是补一个像样的说法。 4. **不做推送式挽留、不做连续使用激励、不做"你已坚持 X 天"。** 定期复盘提醒是可以的(它服务于准确性),但**不能设计成让你回来聊天**。 **第二条最重要。** 一个能被反驳的系统,天然不会变成权威;一个不能被反驳的系统("AI 说该这样"),就变成了算命。 --- ## 1. 路线图总览 ``` 阶段 0 零代码验证 ── 已跳过(你已用 AI 验证过满意度) 阶段 1 MVP:档案 + 决策 ── 核心机制跑通,无 UI 阶段 2 信息维持 + 主动复盘 ── 二期扩展(你已确认) 阶段 3 领域透镜 + 外部接入 ── 职业/财务 Skill + MCP 阶段 4 社区化 ── 发布 npm + 上架市场 ``` 原则:**每个阶段结束时,产品都应"已经有用"**,而不是"等后面的功能才能用"。 --- ## 2. 阶段 1|MVP:档案 + 决策(最关键) ### 目标 **证明"四层档案 + 强制溯源 + 反证"这套机制真的能让人想得更清楚。** 这是唯一必须一次做对的东西。后面所有东西都建在它上面。 ### 交付物 | 交付物 | 形式 | 优先级 | |---|---|---| | 四层目录结构 | `raw/` `digest/` `claims/` `profile.yaml` `index.yaml` | P0 | | 字段词典 | `fields.yaml`(职业 + 财务两域) | P0 | | 档案读写工具 | 9 个工具(见 TECH_DESIGN 5.3) | P0 | | 溯源链强制 | `mylife_trace` + 输出前校验 | P0 | | 时效检查 | `mylife_staleness` + 决策前提示 | P0 | | 反证检索 | `mylife_competing` | P0 | | 决策输出模板 | 一个 Skill(Markdown) | P0 | | UI | **不做**,先用现有 web 界面 + 直接看文件 | — | **MVP 刻意不做**:定时提醒、子 Agent 分支、字段词典的社区扩展、任何图表。 ### 验收标准(能过就继续,过不了就改设计) 用**一个真实的、你正在纠结的决策**跑一遍: 1. 从零输入背景(简历、现状、期望、财务) 2. 系统能否问出**真正阻塞决策的**那几个缺失字段(而不是问一堆无关的) 3. 系统能否找出你**自己表述里互相拉扯的地方**,并用"还原"而非"指控"的方式说出来 4. 系统能否指出**哪些前提可能已经过期** 5. 输出的每条判断**是否都能溯源到你的原话** 6. 你读完是否觉得"**这就是我没想清楚的地方**" **第 6 条是唯一的最终判据。** 前五条是手段。 ### 风险与对策 | 风险 | 对策 | |---|---| | 信息抽取质量不稳定 | 保留 L0 原始层,抽取错了可以重跑;不要覆盖 | | 工具太多,agent 不会用 | MVP 只给 9 个,且写在 Skill 里明确何时用哪个 | | 用户不愿填字段 | 能从对话里抽的就别让用户填;只问阻塞性的那几个 | | 输出变成"AI 版心灵鸡汤" | 用结构校验强制四段式(判断/依据/反方/改判条件) | --- ## 3. 阶段 2|信息维持 + 主动复盘(你划的二期) ### 你已确认的范围 > "定期提醒维护个人信息,或者说定期提醒任务执行状况等等。这个可以当第二阶段。" ### 交付物 | 交付物 | 说明 | 实现方式 | |---|---|---| | **档案维持巡检** | 列出最久未确认的 N 个字段并提醒 | launchd + `dsh --profile headless` | | **决策复盘触发** | 到预设时间点回来问"结论还成立吗" | 同上 | | **任务执行情况提醒** | 90 天计划的检查点 | 同上 | | 投递通道 | 推送到手机 | 复用 `@xmanrui/dsh-im` + 飞书 MCP | | 分支管理 | 话题分支的持久化与回收 | `mylife_branch` + `subagent_fork` | ### 关于"做成插件形式" 你的原话是"把它作为一个类似插件的形式也可以"。我的建议: > **先作为同一 npm 包内的"可关闭能力"(config 开关),不做独立包。** > 等它稳定、且确实有人只想用提醒不想用档案时,再拆成 `dsh-mylife-maintenance`。 理由:一期拆包会带来版本对齐、依赖解析、加载顺序三类额外成本, 而收益(独立安装)此时并不存在。**拆包是分发需求驱动的,不是设计洁癖驱动的。** ### 技术前提(已核实) **【已验证】** `dsh-schedule` **不能**承担跨会话的长周期提醒, 原文:"delivery requires a live root agent: closed sessions keep reminders overdue until resumed." → 必须走 OS 级定时 + headless 一次性任务。 → 副作用(好事):**不依赖 DSH 一直开着**,更可靠。 --- ## 4. 阶段 3|领域透镜 + 外部接入 ### 交付物 | 交付物 | 说明 | |---|---| | 职业透镜 Skill | 借 [career-planning-skill](https://github.com/yutongcai0628/career-planning-skill) 的 ABZ + 90天 + 复盘条件范式 | | 财务透镜 Skill | **只做现金流、消费流、储蓄目标、大额决策**(买手机/换城市) | | MCP 接入层 | 有现成 MCP 就接(账单、日历等),没有就用手填/导表 | | 字段词典扩展 | 让社区能加字段定义而不改代码 | ### 财务的边界(你已认同) | 做 | 不做 | |---|---| | 分析现金流、消费结构、应急金、储蓄进度 | **推荐买哪只股票/基金** | | 基于你的财务状况评估大额消费 | 给出投资配置比例建议 | | 指出"这个决定与你 8 个月前的目标冲突" | 预测市场 | **留给社区的方式**:产品提供**事实数据层 + 免责声明 + Skill 接口**, 社区可以写一个"投资分析 Skill"装进来 —— 但那不是 MyLife 的产品声明。 **你的原话我完全同意**: > "一切大模型生成的东西都是仅供参考,我认为这里应该在产品声明上提供给他,而不是说我们完全不提供这些功能。" → 即:**产品不预设能力边界来替用户决定,而是把风险说清楚,让用户自己选。** 这比"我们不提供"更诚实,也更符合开源产品的精神。 --- ## 5. 阶段 4|社区化与发布 ### 发布清单(三处,缺一不可) | 步骤 | 动作 | 目的 | |---|---|---| | 1 | 发布 npm 包 `dsh-mylife`(顶层 `engines.dsh` 必须写) | 安装源 | | 2 | 向 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 提 PR(一条列表项) | 进 `dshmarket` 目录 | | 3 | README + 一份可离线打开的示例报告 | 说服力 | **【已验证】** 这就是"上架在哪"的答案: > `dshmarket` 是**社区**插件市场(不是 DeepSeek 官方),已装在你本机 > (Settings → Plugin Market)。它的目录源是 `awesome-dsh-plugin.com/plugins.json`, > 而收录方式是在 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) > 仓库提一个 PR。官方原文明确:"This repo is the market app, not the catalog." 用户安装体验: ``` Settings → Plugin Market → 搜 "mylife" → 一键安装 ``` ### 发布前必须就绪的 - [ ] 免责声明(README 顶部 + 每次决策输出末尾) - [ ] 隐私说明:数据在本地;启用云端模型时哪些内容会离开本机 - [ ] 一个"30 秒能看懂"的 demo(建议用一份真实感强的示例档案跑出来的报告) - [ ] 卸载说明:档案文件在哪、怎么带走(**数据可迁移是本地优先的承诺**) - [ ] 危机信号处理说明(见第 6 节) --- ## 6. 跨阶段:两个不能推迟的事 ### 6.1 免责与隐私声明 **从 MVP 第一天就要有**,不能等到发布。 因为你自己会是第一个用户,而你会用它处理真实、敏感的事。 ### 6.2 危机信号处理 **这个必须从 MVP 就有,不能推到后面。** 理由:产品的核心场景就是"深夜迷茫、焦虑"。你会不可避免地收到严重的心理表达。 如果此时系统还在热情地"帮你做三年规划",那是**有害**的。 最低限度的处理: | 情况 | 行为 | |---|---| | 一般焦虑、迷茫 | 正常规划,但语气收敛,不强化焦虑 | | 明显的持续痛苦 | 不推进规划,先确认状态;建议与信任的人或专业人士聊聊 | | 自伤/危机信号 | **停止规划**,给出求助资源,明确不扮演心理支持角色 | **同时:产品说明里明确写"MyLife 不是心理支持工具",并且不把"陪伴感"当作卖点。** 这既是伦理,也是第 0 节那条硬约束的具体落地。 --- ## 7. 成功与失败的判据 ### 成功(三个都要满足) 1. **决策清晰度提升**:用户用完之后,即使没有 MyLife 也能想得更清楚 2. **信息时效性**:系统能主动发现并让用户修正过时信息 3. **可反驳性**:用户经常反驳 AI,且反驳后被正确采纳(**这是最重要的正面信号**) ### 失败(出现任一条就要回炉) 1. 用户开始说"**AI 说该这样**" —— 判断权已经交出去了 2. 输出无法溯源,或溯源后用户发现"**这不是我的意思**" 3. 系统为了给出结论而**编造依据**或忽略过期信息 4. 用户的使用时长成为产品的优化目标 --- ## 8. 立刻可做的下一步 按优先级: 1. **采纳社区记忆 MCP**(见 TECH_DESIGN 第 2 章) 先用 `Memorix`(无需 embedding)或 `MCP Reference Memory`(零依赖 JSONL 知识图谱) 跑通 L2 证据图的存取与检索,避免一上来就引入向量库。 → 这一步也让"复用而非自建"落到实处。 2. **搭骨架**:`dsh --profile mylife --from-default-profile web`,建三文件插件包 3. **先跑通一条链**:`mylife_record → mylife_digest → mylife_claim_add → mylife_trace` 4. **用真实决策验收**(阶段 1 的 6 条标准) **不建议的下一步**:先做 UI、先做定时、先做领域 Skill。 原因:这三样都是"机制跑通后才值得投入"的东西,而机制是否成立, 只需要一条链 + 一个真实决策就能验证。 --- ## 9. 你不做的那部分,要明确"交给谁" 既然存储层复用社区,就有一份**对外依赖清单**必须写进 README(否则用户装不上会怪你): | 依赖 | 谁维护 | 前置条件 | 没装会怎样 | |---|---|---|---| | 记忆 MCP(Memorix / Reference Memory / Engram) | 各自社区 | 见 TECH_DESIGN 2.1 表 | **优雅降级**:档案功能不可用,普通对话不受影响 | | LLM API | 你自己配 | API key | 无法推理 | | DSH 本体 | DeepSeek 官方 | Node 22.19+ | — | **优雅降级是硬要求**(`dsh-butler-memory` 的做法值得照抄): 依赖缺失时 DSH 照常启动、普通对话不受影响,只是 MyLife 能力暂缺并在面板/日志说明原因与修复方式。 **绝不能因为记忆 MCP 没装就让整个 web 起不来。**