# 成长工作台 · 产品文档 > 适用版本:`dsh-growth-workbench@0.1.0` 载体:DSH Bundle(左侧菜单 + 右侧 Tab) --- ## 一、一句话 **把「我想转个方向」变成今天就能执行、每天能打卡、阶段能被考核的一条闭环。** 闭环只有四步,且每一步都有承载体: ``` 定方向 → 出计划 → 每天打卡 → 阶段考核 → 回到计划(调整版任务) 页面 AI 页面 AI 页面可见 ``` 产品只承诺**路径与验收标准**,不承诺结果、不承诺 offer、不承诺薪资。 --- ## 二、要解决的问题 ### 2.1 用户侧的真问题 想转型的人**不缺信息,缺的是「今天该干什么」**。他们真正卡在三处: | 卡点 | 说明 | |---|---| | **启动成本高** | 一打开就是 20 项能力自评、90 天规划——还没开始就想关掉 | | **计划不可执行** | 拿到的是「学习数据分析」这种话,不是「今天做什么」,也不是「做完了交什么」 | | **没人验收** | 自己说做完了就算做完了;没人问「你手里有什么能让我看见的」 | ### 2.2 为什么数据必须落在宿主侧 这类产品有一个硬要求:**Agent 必须读得到用户填的东西**。数据如果只存在浏览器里,宿主就看不见它 —— 那套"把数据搬给 Agent"的机制会包含导出、找文件、格式校验、编码修补一长串步骤,其中每一步都可能失败,且失败的样子往往像"用户操作不对"。 所以数据放在磁盘上,页面和 Agent 各有一扇门进去:页面走 `/gw/api`,Agent 走 `growth_*` 工具,读写的是同一份 JSON。 ### 2.3 由此确定的做法 **在写入时校验,而不是在界面上提醒。** 不合格的计划、缺字段的任务、越界的分钟数、复用的任务编号,一律拒收并说明原因 —— 而不是先写进去、再让用户从错误的数字里发现问题。 每条规则对应的失败模式与"为什么是这条",见第六节。 --- ## 三、目标用户 **主用户**:测试 / QA 背景、有职场经验、想往业务价值方向转的人。目录里预置了 9 个方向,其中**只有「数据运营」的能力模型是人工写的**;其余方向可以让 AI 按同一模板生成一份(见 §4 第 1.5 步),但生成的那份未经行业校准。 **方向上不设门槛**:目录里没有的方向可以自己填。一个产品如果只能做 9 个方向,那它服务的就不是"转型"这件事,而是这 9 个词的排列组合。 **次用户**:在校 / 应届、自由职业 / 副业——他们缺实战经验或需要结果导向,路线选型里都有对应项。 **明确不是给谁**:需要教练陪跑、需要人监督、需要 HR 服务的人。本产品给的是**机制**,不是**陪伴**。 --- ## 四、用户旅程 ### 第 0 步:装好就能用(一次性) 左栏出现「成长工作台」;右侧出现「今日」Tab。**没有欢迎页、没有教程、没有强制填写**——一打开就是「今日」,即使这时还没有计划,也只显示一句"去画像页选方向"。 ### 第 1 步:画像(全在页面点选,逐块可跳过) 六个区块: | 区块 | 做什么 | 跳过的后果 | |---|---|---| | **① 目标岗位** | 点目录里的一个,**或自己填一个** | 无默认,必须选 | | **② 你的条件** | 先定路线(稳妥 / 冲刺 / 系统,附取舍说明),再答四个选择题(你的身份 / 每天可投入 / 核心目标 / 时间期限),然后答它按你的身份追问的那几题 | 路线默认「稳妥路线」,四个选择题用最保守默认;追问的必填项没填,**③ 与 ④ 都做不了**——它们全从这里推 | | **③ 可迁移能力** | AI 从 ② 的答案给出候选,**你逐条勾"我确实做过"或"没做过"** | 跳过 = 把"我的经验没白费"说成零 | | **④ 能力自评** | 逐项点 1-5,**每项带 1/3/5 锚点原文** | 没有读数,就没有加权缺口,补强优先级为空 | **为什么 ② 要分两段问(两段同在一个模块里)**:四个选择题对所有人一样,追问不一样。大一问「要不要转」和研二问,答案完全不同;自由职业者没有岗位名可查,只有"实际靠什么吃饭"。**底盘与能力模型都是从追问推出来的**,所以它是这两个区块的前置。 **为什么自评放在页面而不是聊天里**:skill 要求"每项带上锚点原文",但一次只问一组时用户只能一条条看锚点。在页面上所有锚点同时可见,一项一次点击。 **拿不准就点「拿不准」**:记 `null`、标未确认、**不进加权分母**、不追问。它不等于"我不会"(那会藏起真实缺口),也不等于 0 分。页面明确写着"不要替自己填 1 分或 0 分"——两种填充都会凭空造出差距。 ### 第 1.5 步:两件 AI 推导的事(各一句话) | 想做什么 | 说什么 | 为什么需要它 | |---|---|---| | 得到**可迁移底盘**候选 | 「帮我看看我有什么底子」 | 底盘不是通用清单,是岗位/专业/技能的产物。AI 给候选,你逐条判断;你否掉的它不再提 | | 让这个方向**能逐项自评** | 「帮我建这个方向的能力模型」 | 没有模型就没有锚点 → 没有加权缺口、考核无法逐题落点、曲线不可比 | 两句话在画像页都有**「让 AI 来做」按钮**:点一下,它把这句话作为**一条普通用户消息**发进你当前打开的那个对话里——不用自己想措辞,也不用复制粘贴。 **为什么是"发进对话"而不是"后台起一个 agent"。** 后台跑看不见过程、不能中途打断、方向理解错了只能等它写完再推翻。发进对话则一切都还在原位:你看着它读、看着它想,随时能打断、能补一句纠正,我们所有的工具与门禁也都还在明面上。所以按钮的定位是**替你打字**,不是替你干活的黑盒。 **不是所有环节都有按钮,这条线是故意划的。** 生成类可以有按钮——能力模型、计划、底盘候选、考核跑数,它们是"生成",你拿到结果再判断;判断类**必须你自己点**——底盘逐条"我做过 / 没做过"、⑤ 自评的每一分、打卡与证据档位,都只在页面上由你亲手进。这是读数之所以算数的前提:AI 替你打分,整套 gap / 补强优先级 / 曲线就一文不值。 **生成的能力模型会标注来源。** 结构按预置模板校验(组权重合计 100%、每组 >0%、每项三条非占位锚点),但**锚点未经行业校准**——页面在打分的地方就说这句,因为不说的话,由它算出来的每个分数都会显得比实际更权威。 ### 第 2 步:生成计划(一句话) 点**「让 AI 生成计划」**(画像页或计划页),它把 **「帮我生成成长计划」** 那句话发进对话。Agent 读画像 → 写计划 → 计划页立刻出现: - 90 天总目标 - 3 个阶段,每个带**天区间**与考核标准 - 每个任务的**任务合同 8 字段**(标识 / 参考号 / 第几天 / 一句话动作 / 能力项 / 理由 / 预计分钟 / 最低完成版本 / 完成标准 / 可接受证据 / 前置依赖) - 考核自查题(**只有题目,没有答案**) 若计划不达标(缺字段、天区间有缝、编号复用、自查题没挂能力项),**写入被拒绝并列出每一处原因**,而不是写进去让面板显示错数字。 ### 第 3 步:每天打卡(产品最高频的界面) 「今日」页 / 右侧「今日」Tab: - 顶部三行读数:第几天 · 完成率(**已完成/全部两个数都给**)· 连续打卡天数 · 本周完成率 - 每行任务:勾选框 · 任务标识与动作 · 能力项 · 预计分钟 · **最低完成版本** · 完成标准 · 可接受证据 · 已打卡天数 - 每行第二行:填**证据**(链接 / 文件路径 / 心得)+ 选**证据档位**(未交 / 自述 / 过程 / 成果),各自即时落盘 打卡**只从页面进**。Agent 只读不改——它是验收方,不能既当运动员又当裁判。 ### 第 4 步:考核(一句话) 在对话里说 **「考核我」**。Agent: 1. `growth_context` 读进度(每个任务一行的明细)、计划(含考核标准)、画像 2. 按 rubric 四维各 0-25 打分:**完成率 / 证据质量 / 作品达标度 / 知识考核** 3. 从该阶段「考核自查」抽 2-3 题让用户现场作答,按题挂的能力项、用 1/3/5 锚点逐题落点 4. `growth_save_assessment` 写入历史,并返回: - 四维与总分、定级(优 / 良 / 及格 / 需努力)与对应动作 - **最低的那一维**对应的机制(如"任务太重 → 换成最低完成版本,不加量") - 触发了哪条铁律(如完成率 < 40% → **减量**) - 归因(计划 / 能力 / 动力 / 方向问题——**只有"计划问题"允许改任务定义**) - **接下来 7 天的调整版任务** 5. 「考核」页立刻出现这一轮的四维、报告、调整项;趋势与能力曲线随之更新 **调整必须动到任务**。说"加油你可以的"不算调整——把任务换成它的 `最低完成版本` 才是改机制。页面在调整项为空时会明说这一点。 --- ## 五、功能清单 ### 5.1 左侧「成长工作台」整页(四个页签) | 页签 | 内容 | 谁写 | |---|---|---| | **今日** | 读数条 + 今日任务(今天没排到天则退回「接下来的未完成」)+ 打卡与证据 | 用户 | | **计划** | 总目标、起始日(可改)、执行趋势(每周完成率)、阶段与天区间、8 字段任务表、只排到周的阶段、考核自查题、作品集 | Agent | | **考核** | 历史(含四维、定级动作、归因、报告、调整版任务)、四维趋势图与曲线点计数、「让 AI 现在考核」按钮 | Agent | | **画像** | ①目标岗位(含自定义)②你的条件(路线 + 四题 + 追问)③可迁移能力(AI 提议 + 逐条确认/否决)④能力自评(含锚点、gap、补强优先级、模型来源) | 用户点选;底盘与模型由 Agent 提议 | ### 5.2 右侧「今日」Tab 只放今天要做的:一行读数 + 任务列表。**不自动抢主屏**——展开右列不动对话。 ### 5.3 Agent 的六个工具 | 工具 | 用途 | |---|---| | `growth_context` | 一次读全:指标 / 今日任务 / 计划 / 每任务进度明细 / 画像(含追问与待确认底盘)/ 当前能力模型 / 历史。`scope` 可选切片 | | `growth_save_plan` | 写计划,过写入门禁,返回分配了哪些标识 | | `growth_save_profile` | 更新画像(含 ② 追问答案,按字段合并);`verifiedFacts` / `pending` / `dismissedTransferable` **只追加** | | `growth_save_assessment` | 追加一次考核轮次,返回最低维度与对应机制 | | `growth_propose_transferable` | 从追问推出底盘候选,落成**待确认**清单;**同时**给出「这个方向要、但经历替代不了」的部分(只用于如实说明,不进打分);没答追问不给编,不能确认的概括不给提 | | `growth_propose_capability_model` | 为没有模型的方向按预置模板生成一份;拒绝覆盖预置模型,结果标为 `generated` | ### 5.4 数据自助 `GET /gw/api/export` 一次导出全部四份文档 —— **数据在宿主侧,就该还用户一份能自己留的备份**。 --- ## 六、关键产品规则(及为什么) 下面每一条都对应一个「不做就会静默出错」的失败模式 —— 写的是那个模式,不是设计偏好。 | 规则 | 为什么 | |---|---| | **任务合同 8 字段,缺一不算拆完** | 缺任何一个,任务就不是"今天能做的事" | | **`任务标识` 永不变、删除的作废不复用** | 它是存储身份。复用 = **旧打卡记录被继承到新任务上** | | **`任务引用`(`2.3`)只是给人读的** | 位置派生标识,计划一细化、一插任务就移位。**绝不当持久化 key** | | **`最低完成版本` ≤ 15 分钟** | 状态最差的那天也够得着的版本。给不出它,说明任务还没拆到位 | | **预计分钟 15-60** | > 60 必须拆;< 15 必须合并,或说明为什么值得单列 | | **证据档位三值:自述 < 过程 < 成果** | 只凭自述,不能把「了解」提升为「掌握」 | | **证据为空 → 档位必须是 `null`** | 不是「自述」。没交证据 ≠ 口头说明 | | **完成率与证据质量分开报** | 合成一个"真实完成率"会让两边口径都不可复现 | | **「没有证据的完成不算完成」只作用于证据维** | 不改变完成率的分子 | | **`未确认` 是 `null` 不是 0** | 补 0 会造出虚假的巨大差距;它不进加权分母 | | **跳过的组不进分母,且要标注** | 「本读数不含 X 组」——否则跨轮比较是两个分母上的比值 | | **完成率 < 40% → 减量,不是加量** | 最容易掉队、最需要正反馈的那批人,会被"加油"劝退 | | **减量时不要删任务** | 其余任务原文保留,只降当天的要求——删了就丢了回升所需的锚点 | | **方向调整每周最多一次** | 方向是慢变量,天天换等于没有方向 | | **任何调整保留已完成、只动局部** | 不整体重置 | | **不因一次失败劝退** | 一次低分只触发对应机制,不产出"你不适合这个方向" | | **三层事实隔离** | 用户事实 / 模型推测 / 外部信息永不互相升格。推测只能进 `pending` 待确认 | | **底盘是推导的,不是预置的** | 一张写死的翻译表对没写过的人全是错的(在校生没有"复现"可确认,自由职业者一条也认不出来)。候选来自追问答案,**用户确认了才算数**;而且候选要比用户的原话**高一层** ——「你做过与产品沟通需求」是复述,「能把模糊需求问成可开发的条件」才是发现 | | **可确认性** | 底盘每条必须能回答"我做过/没做过"。"学习能力强"这种不行——它会进 `verifiedFacts` 却什么都没说 | | **能力模型结构恒定** | 组权重合计 100%、每组 > 0%、8-40 项、每项三条非占位锚点、编号唯一。生成的模型与预置模型过**同一个**校验器 | | **生成的模型只属于一个方向** | 它带 `forSlug`,换方向自动失效——否则会拿旧方向的尺子量新方向 | | **没有模型就不逐项打分** | 不退化成"没有锚点的通用问卷":没有锚点的 20 个分数是 20 段互不可比的数。页面改成指路"去生成一份" | | **深自评不摆在首屏** | 它是 30-45 分钟那一档,被排进计划的第 7-14 天,那时用户手上才有素材 | --- ## 七、诚实性设计 产品把"拿不准"和"没做到"如实呈现,而不是抹平: | 场景 | 产品的做法 | |---|---| | 方向没有能力模型 | 标 `模型建设中` / `Beta 岗位`,页面写明"现在没法逐项打分",并给出生成指令。**不替它编锚点**,也不退化成没有锚点的通用问卷 | | 模型是 AI 生成 | 标 `AI 生成的能力模型`,在**打分的那一处**写明"锚点未经行业校准"。**不让它冒充预置模型** | | 锚点是初稿 | 人工写的那份带 `status: draft`,交付话术里明说"这部分欢迎在职的人纠正" | | 底盘候选 | 落成**待确认**清单:用户勾中的才进 `verifiedFacts`,否掉的记下来**不再提**。提议不等于事实 | | 计划缺起始日 | 顶部显式告警:"「第几天」只能用首次打开日凑,晚几天打开就整体错位" | | 本周没排到天的任务 | 显示 `—`,**不显示 0%**(`null` ≠ `0.00`) | | 某一维缺数据 | 记 `未提交` 并按 0 计,页面上写明"补上对应数据可重评这几维",**不猜分** | | 能力曲线 | 定向轮的点**不画线**——用子集冒充全域会读出一个不存在的提升 | | 只用自评点 | 页面标注:要宣称提升,至少要有 1 个考核点或 1 条 ≥过程 的证据 | | 调整项为空 | 页面明说"⚠️ 没有给调整版任务 —— 只给鼓励不算调整" | | 只讲能迁移 | 底盘区同时列出**不能直接迁移的部分**:"只讲「你的经验都能用」是骗人的"。这份清单由 Agent 从追问推(与底盘同一次提议),不是写死的 | --- ## 八、边界与非目标 **不做**:登录、云同步、多设备、自动投简历、代写简历、薪资报价(一律标"估算",不编来源)、陪伴式教练。 **这一版明确不做**: - **主动提醒**。下次考核日期现在还只是计划里的一句话。接定时器是后续版本的事 - **多方向并存**。一份画像一个方向 - **在应用内编辑能力模型**。生成的模型只能在对话里说"哪一项的锚点不对"重生成,页面上没有逐项编辑框 - **能力模型市场**。生成的那份只属于当前用户、当前方向,没有可挑选的库 --- ## 九、后续路线(按价值排序) 1. **把能力模型搬出代码**:现在加一个预置方向要改 `model.mjs`;搬成数据包后加方向 = 放一个文件,第三方也能提交 2. **补齐 3 个 building 方向的人工锚点**:产品运营 / 用户运营 / QA Agent 开发落地后从 `building` 升到 `preset` 3. **考核提醒落成定时器**:宿主端已有生命周期,接一个调度即可 4. **能力曲线可视化**:数据已经齐(`curvePoints` 带来源与置信度),缺的是画 5. **作品集 ↔ 真实 JD 复核**:把"离能力模型还差多少"接到"离这个岗位还差多少"