第二时钟

你的药,开封后还能用多久

药盒上印着的是第一个时钟;药品开封后重新开始的倒计时,是第二个时钟。

使用手册

出品人:inoichi

▶ 打开应用

一、作品简介

一句话:把「开封那天起还能用多久」算清楚。每次你打开这个页面时,卡片会按剩余天数变色、到期的顶上红色横幅;它不会在页面关着的时候给你发通知。

「第二时钟」这个名字

每一盒药身上其实有两个时钟。

眼药水拆封 28 天、混悬液配好 14 天、碘伏棉签开罐 7 天、75% 酒精倒出使用 1 个月——这些数字只写在说明书里,看完就忘。本作品做的就是把这块看不见的表盘显示出来,所以叫「第二时钟」。

解决的真实问题

形态:单文件网页,打开即用,不需要注册、不需要登录。药品记录保存在你自己浏览器里(详见「数据与隐私」)。

想知道它是怎么做出来的?

我们另写了一份 开发过程报告, 记的不是功能怎么实现,而是这个应用在哪些地方差点给出错的答案—— 七条缺陷逐条摊开,包括作者自己用正则批量改医疗数据、19 条里改错 12 条的那次。

如果你正在犹豫要不要相信一个 AI 写的健康类工具,那份报告比这份手册更值得看。

二、功能详解

2.1 两个时钟与颜色档

每张卡片同时跑两个时钟,谁先到期就听谁的:

卡片上的 实际停用日期 取两者中较早的一个,并注明停用原因,文案只有两种:「停用原因:因印刷有效期到期」或「停用原因:因开封后有效期到期」。颜色按这个较早的剩余天数判定:

剩余天数颜色档卡片文案
8 天及以上绿剩余 N 天
4 – 7 天黄剩余 N 天
1 – 3 天红剩余 N 天
正好 0 天红今天到期,请停止使用
已超过红已过期 N 天 + 「已超过开封后有效期,请停止使用」或「已超过包装上的有效期,请停止使用」

只要药箱里存在剩余天数 ≤ 0 的药,页面顶端就会出现红色横幅,把这些药名连起来写——正好到期的写「××今天到期,请停止使用」,已经超过的写「××已过期,请停止使用」。

2.2 添加产品:两个入口

「添加产品」面板上有两个页签:拍照识别 与 手动填写,默认停在手动填写。两边内容都在,切换时若已有草稿或已选照片,会弹一个确认框(文案为「切换后将保留图片,但不再使用AI识别。」/「切换后将保留已填写内容。」),不会静默丢弃你填的东西。

手动填写的字段

校验规则(实际生效的三条):产品名称不能为空;印刷有效期与开封后可用天数至少填一项;选「选择日期」时该日期不能晚于当前(模拟)日期。此外,若药箱里已有同名且尚未到停用日期的药,保存时会先问一句「药箱里已有「XX」,仍要再添加一条吗?」。

2.3 拍照识别与「两个模型交叉验证」

点 拍照识别 选 1–4 张药盒照片,AI 会读出产品名称、商品名、规格、剂型与包装上印的有效期。这一步需要联网。

建议一次只拍一种药——同一种药可以多拍几张(正面一张、有效期喷码一张),应用会合并成一条。一次拍多种也能识别,但两个模型对多件产品的排序未必一致,逐一录入更稳妥。
为什么要用两个模型:一个模型说「我有把握」是不作数的——实测中它一边编造药名,一边把置信度标成「高」。 所以每次识别会把同一张照片交给两家不同厂商的模型各看一遍(阿里云百炼 Qwen-VL 与智谱 GLM-4.6V;主结果先出,核对结论随后返回), 两边互不知道对方的答案,再比对它们读出的药名。 两个模型的作用主要是发现分歧:结果不一致时应用立刻停手、一个字都不代填。一致不等于一定对——两家仍可能被同一处模糊的包装误导而一起读错,所以一致时也只当作录入参考,仍需你对照包装确认。

识别结果里会出现一条徽章,三种情形:

徽章含义应用会做什么
一致两个模型读出完全相同的药名正常按内置药库预填开封天数
不一致两家读出的药名有任何差别(哪怕只差剂型或「复方」二字),会把两个答案都列给你看不预填任何天数、不带出储存条件、不给联网查询入口,请你以包装为准
仅一个模型另一个模型没返回(超时或限流)照常显示,但提示缺少交叉核对
措辞上的分寸:徽章写的是「结果一致」,不是「已验证」。 两家一致只能说明至少不是某一家自己编的,不代表一定对——它们仍可能同时读错。所以最终仍请你对照包装确认。
有效期一律不自动填。即便两个模型都读出了同一个日期,应用也只把它作为「待确认」提出来, 要你点一下确认才会写进记录。原因是实测发现:模型会在自称「读到了印刷有效期、置信度高」的同时, 把包装上注册批准号旁边的日期当成有效期,甚至凭空编出一段并不存在的证据文字。 为此应用另加了两道机器核对——包装语种与证据文字语种不符、或它声称的年份根本不在它抄下来的原文里, 这个日期一律作废、不代填。药名错了你多半看得出来(药盒就在手上),日期错了你看不出来, 而那恰恰是你找工具替你记的东西。

2.4 内置药库预填(离线可用)

在 产品名称 里打字,停手约 0.4 秒(或失焦)就会去查内置药库,命中后自动填 开封后可用天数、储存说明、规则来源三个字段。药库共 1832 条家庭药箱相关条目(含药品、消毒用品与部分健康用品),配有常见商品名/别名(例如打「美林」能命中「布洛芬混悬液」)与 23 条剂型参考规则(如「滴剂 28 天」)。匹配结果分四种,提示语各不相同:

匹配情况提示语是否自动填
药名精确命中📚 已按内置药库预填是
近似命中📚 已按内置药库近似匹配预填(药名未完全一致,请核对)是
只命中剂型规则📚 已按内置剂型规则预填是
同一个名字下有多个剂型⚠️ 这个名字下有多个剂型(……),开封后能用多久不一样,所以没有替你填。看一眼药盒上的完整名称,最后几个字是哪种剂型,就在下面点哪个。
—— 并就地出现一排剂型按钮
否,直到你选定剂型
命中多个期限不一致的条目⚠️ 药库中有多个条目含该名称(……),开封期限不一致,未自动预填;请补全完整通用名(含剂型)或联网查询否(宁可不填,也不猜)
完全没收录🔍 内置药库未收录「XX」,可点下方按钮联网查询开封效期否

关于「剂型」这个字段:平时选填,撞上同名多剂型时变必填。

一个商品名常常同时覆盖好几个剂型,而它们的开封期限可以差得很远。例如 希刻劳 既是头孢克洛干混悬剂(加水冲配后需冷藏,14 天内用完),也是头孢克洛胶囊 (按外盒印刷效期,常温存放)。泰诺林、可乐必妥、 兰美抒 等也是同样情况,全库共 27 处。

遇到这种情况,应用不会替你猜一个——它会在提示下面列出所有候选剂型的按钮, 你照着药盒上印的剂型点一下就行。点完之后天数与储存条件才会填进来, 同时「更多信息」会自动展开,让你看见剂型字段确实被写进去了。 也可以直接在「更多信息 → 剂型」里手打,效果一样。

为什么做成让你点剂型、而不是让你「补全完整通用名」:剂型就印在药盒上, 照抄一眼的事;而「完整通用名」你要是知道,一开始就不会打商品名了。

关于「自动填写会不会覆盖我改的值」——这里说实话:
  • 你亲手改过的开封天数不会被覆盖。只要你在 开封后可用天数 里输入过内容,该字段小字会变成「已手动修改」,此后药库预填不再动它。
  • 但由药库自动填进去的值,会随药名改动被清空并重新计算。这是有意为之:药名从 A 改成 B 之后,还留着 A 的天数会更危险。所以「填完就此永远不再变动」的说法并不成立,请以字段下方那行小字(「已根据产品规则填写,可修改」/「已手动修改」)为准。
  • 储存说明、规则来源同理:自动填的会随药名重算,你自己写过的不会被动。

2.5 联网查询开封效期

当药库没收录、判为歧义、或只命中剂型规则时,产品名称下方会出现 🔍 联网查询开封效期 按钮(药库精确/近似命中时该按钮不出现,因为没必要花这一次请求)。点击后会把药名发给第三方 AI 服务检索并提炼,回填天数与储存条件,提示语以「🌐 联网查询结果,以说明书为准」开头。

2.6 按家人分类

手动表单里有一个 使用人 下拉框,预置选项为:未指定 / 爸爸 / 妈妈 / 爷爷 / 奶奶 / 我自己 / 其他…。选「其他…」会出现一个输入框,可自己写(占位提示「填写使用人(可留空)」)。它的实际作用只有两处:

请注意它不是什么:它只是记录上的一个文本标签,没有成员账号、没有多人共享、没有权限区分、没有按人推送提醒。所有记录仍然只存在你这一台设备的这一个浏览器里,换个人的手机看不到。

2.7 药品卡片上能做的事

2.8 模拟时间推移

页面下方 ⏱ 模拟时间推移(应用里的原文是「把日期往后拨,提前看看哪些药会到期」) 可展开,内含:当前模拟日期显示、+1天 +7天 +20天 +30天 恢复今天 五个按钮,以及一个自定义日期输入框配 应用日期。

模拟日期只在当前页面有效,刷新后会自动回到真实今天;处于模拟状态时页面最顶端有一条黄色横条说明这一点,点它也可以立刻恢复。药品记录不受影响,照常保留。

三、上手走一遍

上面讲了这些功能各是什么,这一节把它们串成一条路走一遍。最短的一遍:在「产品名称」输入 红霉素眼膏 → 点「确认添加」→ 展开页面最下方「⏱ 模拟时间推移」,连点 +20天 → +1天 → +7天,卡片会依次由绿转黄转红,顶部弹出红色提示。就这三下。

下面是逐步版(约 90 秒),每一步会看到什么都写明了。

路径 A · 手动路径(离线可跑,推荐先看这条)

  1. 打开应用,向下找到 添加产品 区域,它默认就停在 手动填写 页签,无需切换。
  2. 在 产品名称 里输入 红霉素眼膏,稍等片刻(或点一下输入框外面)。 输入框下方会出现提示:「📚 已按内置药库预填:开封后可用 28 天,储存 阴凉 · 眼用制剂启用后最多使用4周(《中国药典》对眼用制剂的通用规定)」。开封后可用天数 自动变成 28,下方小字写「已根据产品规则填写,可修改」。
  3. 首次启用日期 保持默认的 今天启用,直接点最下方 确认添加。 上方的药品卡片区域立刻出现一张绿色卡片:当前剩余天数「剩余28天」,并列出「开封截止日期」与「实际停用日期」。
  4. 展开页面下方的 ⏱ 模拟时间推移 面板,依次点:+20天 → +1天 → +7天。 三次点击后的卡片状态见下表。
  5. 看完后点 恢复今天(或点顶部黄条上的「点此恢复今天」)即可回到真实日期。
操作剩余天数卡片颜色你会看到
刚添加28 天绿「剩余28天」
点 +20天8 天绿「剩余8天」,仍在绿档(绿档判据是 >7 天)
再点 +1天7 天黄「剩余7天」,卡片转黄——这一下正好压上 7 天黄线
再点 +7天0 天红卡片写「今天到期,请停止使用」;页面顶部弹出红色横幅「红霉素眼膏今天到期,请停止使用」
为什么不是直接点 +30天?28 天的药一步 +30 会直接跳到「已过期2天」,中间的黄档就看不到了。这也是本版新增 +20天 档的原因:让 28 / 30 天这类最常见的开封期限能被分段跨越,逐档看到颜色变化。若想看「已过期」文案,在第 4 步之后再点一次 +1天 即可(卡片变为「已过期1天」)。
另一条更快的看法:展开 ⏱ 模拟时间推移 后,也可以直接在 自定义日期 里选一个日期再点 应用日期,一步跳到任意档位。
怎么知道自己在不在模拟日期:只要快进过,页面最上方就会常驻一条黄色提示条「⏱ 当前处于模拟日期 YYYY-MM-DD(非真实日期),点此恢复今天」,点一下即可回到今天。刷新页面也会自动回到真实日期,所以不必担心把模拟状态留给下一个人。

路径 B · 拍照路径(需要网络)

这条路径会把照片发给第三方 AI 服务做识别,请在有网络时体验;离线时应用会提示改用手动填写。

  1. 点 拍照识别 页签,再点 📷 拍照或选择图片。 提示语原文:「可上传1—4张,建议至少包含一张有效期特写」。一次最多取前 4 张。
  2. 选好图后进入「图片预览」,确认无误点 开始识别。 识别中显示「正在识别产品……」,旁边有 取消识别 可随时中断。
  3. 识别完成后出现「识别结果」列表,逐条列出产品名称 / 产品类别 / 规格 / 印刷有效期 / 识别依据。 若有效期没拍清楚,该条会就地给出一个日期输入框让你人工核对,或选择 暂不填写。
  4. 每条结果各带两个按钮:确认并添加 直接入库;修改信息 把该条内容灌进手动表单再改。 结果区底部还有 重新识别 与 切换为手动填写。

入库之后,颜色档与模拟时间推移的看法与路径 A 完全一致。

四、数据与隐私

这一节按「哪些数据留在本机、哪些会离开本机」如实分开写。

留在本机的

会离开本机的(务必知悉)

本作品有三类操作会让数据离开本机,其余一切都在本地完成:
  • 拍照识别 → 阿里云百炼(dashscope.aliyuncs.com)+ 智谱 AI(open.bigmodel.cn):点「开始识别」后,你选中的照片本身会分别上传给这两家——第二家用于交叉核对第一家的结果(见 2.3)。若照片里拍到了药盒之外的东西(处方、姓名、家庭环境等),这些内容也会一并被上传给两家。
  • 联网查询开封效期 → 智谱 AI(open.bigmodel.cn):点该按钮后,你填写的产品名称会被发送到该服务用于检索与提炼。
  • 提交药库反馈 → 本站服务器:点页脚「找不到你的产品?告诉我一声」并提交后,你填写的产品名称与补充说明会保存在本站服务器上,用于以后补充内置药库。这里不会给你单独回复,也请不要填写姓名、电话等个人信息。
三者都只在你主动点击相应按钮后才发生:不点拍照识别、不点联网查询、不提交反馈,就没有任何数据离开本机;仅用「手动填写 + 内置 1832 条药库 + 本地计时」时,应用完全离线可用。

部署在服务器上的版本,请求由本站的服务端代理分别转发给上述两家,浏览器不携带任何密钥;代理只记录请求方法、路径、状态码、耗时与来源 IP,不记录照片内容与药名内容。

由此带来的取舍

五、常见问题

内置药库里没有我的药,怎么办?

提示会写「🔍 内置药库未收录「XX」……」。三个办法:①点 🔍 联网查询开封效期;②直接在 开封后可用天数 里按说明书手填;③若说明书没写开封期限,就只填 印刷有效期,卡片会只跑第一个时钟。

为什么提示说「有多个相近条目,未自动预填」?

因为你输入的名字同时像药库里好几条、而它们的开封天数并不一致(例如「碘伏」在库里就分蘸取使用、罐装棉签、独立包装单支三种,分别是 7 天、7 天、1 天)。这种情况下应用拒绝替你猜,请补全到完整通用名(最好带剂型),或改用联网查询。

我改了药名,开封天数怎么跟着变了?

这是有意设计。凡是药库自动填进去的值,都会随药名改动清空重算,以免把上一个药的天数留在新药身上。你自己手动输入过的天数不会被改——此时字段下方小字显示「已手动修改」。看这行小字就能分辨当前值的来路。

为什么点了 +30天,直接就「已过期」了?

因为大部分常见药的开封期是 28 或 30 天,加 30 天必然跨过终点。要逐档看到绿 → 黄 → 红,请按第二节的顺序点 +20天 → +1天 → +7天,或用自定义日期精确落在某一档。

顶部一直挂着红色横幅/黄色横条,是出错了吗?

不是。黄色横条表示你还停在模拟日期,刷新页面就会自动回到真实今天;红色横幅表示当前日期下确实有药已到期。点黄条上的「点此恢复今天」或该面板里的 恢复今天 即可回到真实日期,红色横幅通常随之消失。

没有网络还能用吗?

能。手动填写 + 1832 条内置药库 + 全部计时与提醒功能都不依赖网络。只有拍照识别和联网查询需要联网;识别服务未配置时,拍照页会直接提示「未配置识别服务,可直接使用「手动填写」,内置药库离线可用」。

拍照识别认错了怎么办?

识别结果区每条都可就地改:有效期没拍清会给出日期输入框让你人工确认(也可以选 暂不填写),开封天数可直接改数字,或点 修改信息 把整条灌进手动表单再改。结果区底部写着「识别仅辅助录入,请确认包装信息后保存。」——请务必核对后再保存。

「使用人」能让家人各自登录、各看各的吗?

不能。使用人只是记录上的一个标签,用于卡片徽章和列表筛选。本作品没有账号、没有多人共享、没有云同步,所有记录只在本机浏览器内。

换手机 / 清了浏览器缓存,记录还在吗?

不在了,且无法恢复——记录只存在原设备的浏览器里,没有云端副本。这是「不需要注册、记录不上云」这一选择的代价。

为什么有的药显示「无需开封计时」?

因为药库对这类药本来就不给开封天数(独立铝箔袋、单支独立包装、按外盒效期使用等)。这类记录只跑印刷有效期一个时钟,所以添加时需要填印刷有效期,否则无法保存。

六、免责声明

开封后有效期为参考值,请以药品说明书为准。
本应用不构成用药建议,不判断药品是否变质。