省心遛娃

项目时间:2026.08~2026.09 | 角色:产品定义与交付(技术由 AI 协作实现)

从“找地点”到“出方案”

——AI 亲子活动小程序的产品定义与交付
省心遛娃小程序码
产品定义把最小推荐单元从“目的地”重定义为“方案”;用户主动操作压缩到“选时间 + 选时长”两步。
AI 边界规则引擎决定地点、距离、筛选与排序;LLM 只负责方案说明,不决定事实性结果。
交付结果24 天完成定义到 0.1 发布;建立本地数据、规则、回归断言与发布检查。
24 天
立项到 0.1 发布
2026.08.31 立项,2026.09.24 发布。单人产品实践,技术实现由 AI 协作完成。
94 条
目的地数据 · 25 字段
覆盖南京栖霞区,100% 实地核验。
139 条
活动数据 · 12 字段
仅记数量,未宣称全部实地核验。

口径说明:以上数量为项目记录口径。94 条目的地与 139 条活动的核验范围不同——前者 100% 实地核验,后者只记录数量、未逐条实地核验。数据覆盖范围为南京栖霞区部分街道,不代表全市或更大范围。其余数量(71 条不推荐黑榜、93 条双源坐标核验、22 篇研发文档)见 Part 3,均不公开条目明细。

项目状态 1.0 版于 2026 年 9 月 24 日发布,随后未进行推广,现已停止继续推进。本页展示的是产品定义、AI 能力边界、数据质量设计与上线前交付,不代表产品已完成市场验证或商业模式验证;页面中不含用户数、留存或收入数据。

Part 1诉求定位:家长要的不是地点清单,而是方案

结论:传统产品把筛选任务留给用户;我们尝试直接给出当下情境下的活动方案。

真实起点:
产品判断:最小推荐单元不应是“地点”,而应该是“方案”。方案可以依托 POI,也可以是“在家画画”这类非 POI 活动——用户要的是“做什么”,不是“去哪”。

首版的取舍

有意不做

  • 繁多筛选器:把筛选成本原样还给用户,和“直接出方案”的判断相反
  • 偏好设置与收藏:首版优先级低,且依赖账号与行为数据积累
  • 把人工维护地点库当首版主要价值:地点库是原料,不是产品价值本身

否决的方案

  • 拿地点库规模当卖点:用户缺的不是地点数量
  • 只做地点列表 + 筛选:仍然把组合行程的工作留给用户
  • 让模型直接生成地点:事实不可控,也没法验收

核心交互:地点列表 vs 方案引擎

同一个需求,两种产品形态下用户要走的路径。

地点列表模式
用户要自己走完的步骤(以半天行程为例)
输入关键词,或从品类里挑一个方向
↓
筛距离范围
↓
筛适龄段
↓
筛室内 / 室外
↓
逐个点开看营业时间、票价、是否要预约
↓
自己估算路上要多久、来不来得及
↓
自己把 2–3 个地点拼成一段行程
方案引擎模式
用户的动作只剩两步
选一个时间今天上午 / 下午 / 傍晚
↓
选可用时长1 小时 / 2 小时 / 半天
↓
系统直接给出 3 个活动方案
方案 1示意
图位 · 待替换
方案的标题占位
室内放电强适龄 5–8
推荐理由占位:由 LLM 依据已确定的方案结果生成,不参与事实判断。
方案 2示意
图位 · 待替换
方案的标题占位
户外低强度适龄 4–10
推荐理由占位:同上,LLM 只做表达。
方案 3非 POI
图位 · 待替换
居家活动的标题占位
在家零通勤适龄 3–8
方案不一定要依赖真实地点——这也是“最小单元是方案”的直接体现。

以上三张卡作为作品展示结构,用来说明一个“方案”包含哪些字段;不含真实 POI 名称、营业时间或实测距离,也不连接任何在线推荐服务。

用户还要做什么
  • 上面 7 步全部由用户自己完成。
  • 系统只返回地点,不判断是否合适。
  • 判断权在用户手上,出错也在用户手上。
产品价值:把选择范围变小,但不负责给出答案。
用户还要做什么
  • 只剩一件事:看三个方案,挑一个。
  • 时长够不够、路上要多久、适不适合这个年龄,这些判断由规则先做完,用户在结果里直接看到。
  • 方案可以包含真实目的地,也可以是居家活动——用户不必先决定“出不出门”。
产品价值:把答案直接给出来。减少的是决策动作,不是选项数量。

说明:这里只说明两种形态下用户动作的差别,不声称已验证用户效率提升——0.1 没有推广,没有可用的行为数据。

产品截图

Part 2关键决策:规则决定推荐结果,AI 负责把理由说清楚

结论:不让模型直接决定事实性结果。事实由规则算,语言交给模型。

两条路径分开看:离线建标签,在线出结果

离线阶段:建立适合亲子场景的数据标签

  1. 获取本地候选地点与活动信息
  2. 按自建的“带娃语义”口径,让模型辅助批量标注:场景、家长动机、适龄范围、放电强度、室内 / 室外
  3. 人工复核打标结果,形成可被规则筛选使用的数据

这一步允许人工介入:标签错了可以改,改完就是确定的。

在线阶段:按规则筛选,再由 AI 组织表达

  1. 用户选择时间与可用时长
  2. 确定性规则处理硬条件、候选过滤、距离计算与加权排序
  3. 规则引擎形成 Top 10 候选
  4. LLM 生成简洁推荐说明
  5. 模型不可用时的降级路径

离线标签是原料,在线规则是决策,LLM 只在这条链路的最末端动笔。

点击节点,看每一层负责什么、不负责什么

节点上的小字是这一层的一句话职责;点开是三行边界说明。

数据与语义标签 · 离线
负责什么
按自建的“带娃语义”口径批量标注:场景、家长动机、适龄范围、放电强度、室内 / 室外;产出能被规则直接筛选的标签。
不负责什么
不面向用户作答,不参与“这一次推荐给谁”的实时判断。
为什么这样分工
标签是低频、可复核的离线产物,错了能改、改完就是确定的;把它放在链路最上游,错误有机会被人发现,而不是在用户面前才暴露。
规则过滤与排序 · 在线
负责什么
硬条件过滤、候选收敛、按权重排序,最后形成 Top 10 候选交给下一层。
不负责什么
不生成推荐文案,不解释推荐理由。
为什么这样分工
筛选和排序是确定性逻辑,同样的输入必须得到同样的输出,可复现、可测试、可回归。这类判断不该交给概率模型。
距离与硬条件计算 · 在线
负责什么
算距离、算可达时长,剔除不满足硬条件(时长不够、距离过远、不适龄)的候选。
不负责什么
不由模型估距离,不由模型判断地点是否真实存在。
为什么这样分工
距离和时间是事实。模型很擅长给出“看起来合理”的错数,一旦错了用户到现场才发现。用计算替代生成,错误就从“不可控”变成“可测”。
LLM 推荐说明 · 在线
负责什么
把已经确定的方案结果,组织成家长读得懂的一段推荐理由:为什么这个时间合适、为什么适合这个年龄。
不负责什么
不决定去哪、不去哪;不改距离、不改适龄区间、不改营业信息。
为什么这样分工
语言表达是模型最稳的能力,事实判断是它最不稳的能力。只让它做前者,风险面就收窄成“读起来自不自然”,而不是“会不会把人带错地方”。
降级兜底 · 兜底
负责什么
模型不可用时给出可读的兜底结果,并让用户知道这是降级态。
不负责什么
不静默回退,不用模拟数据顶替真实结果。
为什么这样分工
这条来自真实教训:静默降级会把系统故障伪装成推荐错误,排查方向全错。宁可暴露“今天说明从简”,也不要让人怀疑算法。

被否决的方案

否决为什么不让模型直接生成地点和结果?
问题
模型生成的地点可能不存在、营业时间可能是编的、距离可能是拍的。用户按这个结果出门,错一次就不再用了。
判断
这类事实错误没法靠 prompt 约束住,也没法验收——你没法为“模型今天没说错”写一条断言。
否决为什么不用纯规则模板覆盖所有推荐文案?
问题
模板写死了句式,推荐理由读起来像表单回填:“距离 3.2 公里,适龄 5–8 岁。”信息都对,但不像人在解释。
判断
推荐理由的作用是帮用户下决心。表达僵硬,等于把这个作用丢掉了。
取舍当前方案:规则保事实,AI 改表达
边界
这套分工降低的是“事实出错”的风险,提高的是可控性。它不等于彻底消除模型出错的可能——文案仍然可能说得不准确、不通顺,所以仍然需要人工复核口径和降级路径。

工程补充

待核模型、成本与降级机制
模型
GLM-4-Flash(是否对外披露模型名待确认)。
成本
项目记录约 ¥0.1 / 百万 tokens,云端响应约 3.5 秒。这不是用户价值指标,只作为工程成本参考。
机制
Prompt 做版本化管理;降级为三级路径。

Part 3数据质量:推荐质量取决于数据真实、覆盖完整、字段能支撑决策

结论:推荐质量不仅靠算法,更靠数据底座。规则再准,喂进去的数据错了,结果就是错得很有条理。

事实底座

事实数量展示口径
目的地数据94 条 / 25 字段核心数据资产。仅覆盖南京栖霞区,100% 实地核验。
活动数据139 条 / 12 字段只展示数量,不写“全部实地核验”。
不推荐黑榜71 条只展示总量,不公开地点名称与坐标。
双源坐标核验93 条作为核验机制示例,不展示精确坐标。
研发文档22 篇工程交付佐证,不展示全部文档内容。
回归断言188 / 188 全绿验收证据;对应测试记录的时间待核。
平台准入与发布完成表述为“完成平台准入及发布审核”,不细分列项(细分计数口径待核)。
方案库 = 受控词表 + 目的地表 + 活动表 + 黑榜
受控词表
统一标签口径
标签取值限定在固定集合(室内 / 室外、适龄段、强度等),避免同一含义多种写法,保证筛选能准确命中。
目的地表
94 条 / 25 字段
真实地点事实:营业时间、票价、坐标等,100% 实地核验,是方案中“去哪儿”的来源。
活动表
139 条 / 12 字段
不依赖具体地点的活动内容,让“没有合适地点”时也能给出居家方案。
黑榜
71 条不推荐
命中即排除,明显不合适的地点不进入候选池。

四个检查项:数据要在哪几个方向上过关

点击查看对应的设计办法与真实问题案例。

真实性:这条数据是不是真的
设计办法
不确定的先不入库,宁可少一条。初期做 100% 实地核验,字段落库前逐条比对;后期增加AI自动核验机制。
对应风险
活动数据 139 条未逐条实地核验,所以页面只写数量,不写“全部核验”——不能把两种核验范围混成一个口径。
为什么这样做
推荐一次就值一次信任。用户到了门口发现没开,损失的不只是这一次。
覆盖度:该有的地方有没有漏
设计办法
把覆盖度作为独立检查维度:按类型逐类核对数量,而不是只校验“已经抓到的条目对不对”。
对应风险
采集接口按名称模糊匹配、搜索词用类型词,会整类漏采——详见下方“系统性漏采”。
为什么这样做
数据全对但它不在,等于没有。覆盖度是“缺席”的问题,校验单条数据永远查不出来。
坐标准确性:导航能不能带对地方
设计办法
双源交叉核验 93 条,两个来源坐标对得上才采信;单源不采信。
对应风险
同一地点在地图源里重复记录,其中一条偏差约 1.7 公里——详见下方“坐标错挂”。
为什么这样做
单一来源自校验不足:它没有第二份数据来对照,错了也不会报错。
场景适配:标签能不能支撑筛选
设计办法
自建“带娃语义”标签:场景、家长动机、适龄范围、放电强度、室内 / 室外,让规则能按情境筛而不是按名称搜。
对应风险
语义类别词义错位:全天时长场景下,标签词与情境对不上,推荐结果与情境不匹配(备用案例,未在本页展开)。
为什么这样做
“适合遛娃”是个很模糊的判断。不把它拆成可计算的标签,规则就没法用。

三个真实问题与修正

这三个都是实际踩到的坑,不是设想。

案例 01系统性漏采:不是抓错了,是整类没抓到
发现
某类运动健身数据在地点库里系统性缺失,不是零星几条,是整类没有。
原因
采集接口按名称模糊匹配,搜索词用的是类型词。类型词选窄了,整类数据就永远进不来。
收获
数据覆盖度必须作为独立检查维度。只校验“已经抓到的条目对不对”,永远发现不了“该有的没抓到”。
案例 02坐标错挂:同一个地方,两条坐标差 1.7 公里
发现
同一地点在地图数据源中出现重复记录,其中一条坐标偏差约 1.7 公里。
原因
单一来源自校验不足。重复记录之间不互相校验,偏差就这么留下了。
收获
改为双源交叉验证,单源不采信。1.7 公里在城市里足以把用户导到一个完全不相干的地方。
说明
本页不展示具体地点与坐标。
案例 03静默降级:系统挂了,看起来像算法错了
发现
云函数不可用时,系统没有报错,而是悄悄回退到模拟数据。表面看就是“推荐结果变怪了”。
原因
降级逻辑只保证“页面上有结果”,没区分“这个结果是不是真的”。
收获
系统不可用必须明确暴露,不能以假结果伪装成功。否则排查方向从一开始就是错的——你会去查算法,而问题在服务。

Part 4交付与复盘

结论:产品判断不能停留在文档里,要变成可实现、可检查、可回归的规则。

本人职责

技术实现由 AI 协作完成;本人负责把需求与产品判断写成明确的数据口径、规则和验收条件,并判断交付结果是否符合预期。

交付链路:从判断到发布检查

点击节点查看脱敏示例。不展示源代码、密钥或可定位真实地点的数据。

产品判断 · 把想法写成一条主张
做了什么
把“最小推荐单元是方案,不是地点”写成一条可判断的主张:如果一个功能只优化地点列表,它就没有推进这条主张。
不做什么
不写成“提升亲子陪伴体验”这类没法判断对错的目标。
为什么
主张必须能用来否决方案,否则它只是文案。
可执行规则 · 写成规则,不靠口头约定
做了什么
硬条件(可用时长、距离上限、适龄区间)、候选收敛顺序、排序权重,逐条写成可读的规则表。
不做什么
不在对话里说“距离近一点优先”,让实现方自己猜“近”是多少。
为什么
模糊描述最后会变成实现方的自由发挥,验收时谁也说不清是不是符合预期。
自动化断言 · 每次改动都跑一遍
做了什么
188 条断言覆盖时间窗、距离上限、适龄区间、去重逻辑、降级触发等;改动后全量跑一遍,看是否全绿。
不做什么
不靠“我手动点了几个看着没问题”来判断没改坏。
为什么
规则一多,改动之间会互相影响。人眼只能抽查,断言能全查。
真机走查 · 手机上逐屏核对
做了什么
在真机上按“选时间 → 选时长 → 看结果 → 看理由”的路径逐屏走,核对展示是否与规则一致。
不做什么
不只在小程序开发者工具里看——工具里字体、滚动、安全区都和真机不一样。
为什么
规则对不等于用户看到的是对的。中间还隔着渲染、截断和交互状态。
发布检查 · 准入事项逐项过
做了什么
类目、地理接口权限、隐私说明、ICP 备案、发布审核逐项过完才提交。
不做什么
不把“提交了”当成“过了”。
为什么
地理定位这类权限一旦卡住,整个核心链路就没法用,必须在发布前确认,不是上线后补。