手机查看 Agent 待决策与待验收:先读,再确认

一呼 PM Radar 从你自己的 JSON 导出或兼容 HTTPS 数据源读取台账,按工作台筛选事项;读到一条任务不代表已经授权回复,更不代表任务已执行。下面用两条合成记录解释筛选、来源时效、手机确认与回执边界;Watch 是配对 iPhone 的伴侣,不是独立审批入口。

最小合成 JSON:不是一个在线服务

本例仅有 demo 项目的两条合成事项。example.invalid 不可作为服务入口;reply_supported=false 将样例标为不支持回复,不能代替服务端授权。date_str 固定为演示时点,不会跟着网页时间更新;日后导入可能显示过期,这不是让样例冒充实时台账的理由。不要把私有台账或带凭据的 feed 放到公开网站。

左右滑动查看完整内容;键盘用户可聚焦此区域后用方向键阅读。

{
  "date_str": "2026-10-18 09:00",
  "decisions": [
    {
      "id": "demo-decision",
      "project": "demo",
      "status": "等你决策",
      "title": "Choose a synthetic option",
      "next": "Read the sample evidence; do not execute.",
      "url": "https://example.invalid/tasks/demo-decision"
    },
    {
      "id": "demo-acceptance",
      "project": "demo",
      "status": "等你验收",
      "title": "Review a synthetic preview",
      "next": "Inspect the synthetic preview; do not send a reply.",
      "url": "https://example.invalid/tasks/demo-acceptance"
    }
  ],
  "active": [],
  "stale": [],
  "cold": [],
  "tasks": [
    {
      "id": "demo-decision",
      "project": "demo",
      "status": "等你决策",
      "title": "Choose a synthetic option",
      "next": "Read the sample evidence; do not execute.",
      "url": "https://example.invalid/tasks/demo-decision"
    },
    {
      "id": "demo-acceptance",
      "project": "demo",
      "status": "等你验收",
      "title": "Review a synthetic preview",
      "next": "Inspect the synthetic preview; do not send a reply.",
      "url": "https://example.invalid/tasks/demo-acceptance"
    }
  ],
  "reply_supported": false,
  "source_refreshing": false,
  "source_refresh_failed": false
}

date_str、decisions、active、stale、cold 是快照字段;tasks 在本例同时列出两条记录,避免旧导出缺少完整台账时的不完整提示。原始 status 保留“等你决策 / 等你验收”,不把展示语言翻译当成新的源状态。此例不含令牌、账号、真实条目或可写服务。

同一份样例,筛选前后有什么变化?

左右滑动查看全部列;键盘用户可聚焦表格后用方向键阅读。

同一份样例,筛选前后有什么变化?
视图 / 操作样例结果应如何理解
未加其他筛选,查看这两条未完成事项2 条:demo-decision 与 demo-acceptance。只是这份合成快照的条数,不是你的真实项目量,也不是两项已完成。
状态精确筛选:等你决策1 条:demo-decision。只缩小当前显示,不写回来源,不自动开始执行。
状态精确筛选:等你验收1 条:demo-acceptance。等待验收不等于已经通过;手机需要查看证据与下一步。
在本例清除筛选,回到未完成范围2 条。来源未改变。项目、优先级、搜索与状态条件相交;其他条件仍有限制时不要把零结果误报为没有任务。

tasks 表示完整任务集合,decisions 表示待决策/待验收子集;当前 Swift 视图的管理计数和状态分组从筛选后的完整任务形成,不把 decisions 当成全量台账。完成/搁置默认隐藏,可通过历史范围查看;缓存年龄或最近 Git 活动都不是任务完成/阻塞的依据。[R1][R7]

来源读取时间,不是手机刚联网的时间

左右滑动查看全部列;键盘用户可聚焦表格后用方向键阅读。

来源读取时间,不是手机刚联网的时间
信号源码 / README 的语义不能推断什么
date_str最后一次成功来源读取的时间;当前模型按 yyyy-MM-dd HH:mm、UTC+08:00 解析。样例故意固定该值。刷新按钮被点过、手机刚下载或命中缓存,都不能把旧来源时间改成新鲜来源。
source_refreshing / source_refresh_failed区分再验证中与来源读取失败。手机可先显示有界缓存,再用一次 no-cache 跟进同一次读取,不启动轮询循环。失败时保留旧快照不是刷新成功;不能把没读到的新增事项记成零。
过期 / 未来时钟提示当前模型把超过 24 小时的数据标为旧数据;超过当前时钟五分钟的未来时点会触发时钟警告。这些是来源时效提示。旧缓存不代表条目已搁置或阻塞;任务状态必须来自显式字段。
可选只读适配器README 描述按请求触发的有界内存缓存:30 秒新鲜、来源再验证期间最多使用五分钟旧快照;私网/权限检查仍独立。 [R6]这些是特定适配器策略,不是所有 JSON 服务的承诺,不是五分钟一定有新业务数据。

Radar 数据源不复用网页 Cookie、不存储数据源凭据或跟随重定向;需要认证的来源当前按 README 用文件导出。它与浏览工作台 origin 的配置不同,不能通过公开端口、移除认证或把密码放进 URL 来解决接入。请沿已有获准的私有访问路径核对。[R2][R5]

只读 → 手机明确确认 → 服务端回执 / 不确定停止

下列是源码/README 描述的可选写路径,不是本例已经可以写入:本例 reply_supported=false,也没有可连接服务。任何实际回复都需要独立服务端授权和符合条件的原条目。

左右滑动查看完整内容;键盘用户可聚焦此区域后用方向键阅读。

读取快照 / 筛选(不写状态)
    ↓
原条目是否可回复 + 服务端独立授权?
    ├─ 否 → 只读 / 保留草稿 → 停止
    └─ 是 → 读取最新目标与版本 → 手机完整核对并明确确认
                 ↓
           持久保存同一 request_id → 服务端提交
                 ├─ recorded 回执 → 已记录,待负责人处理(不等于执行/验收通过)
                 └─ 超时 / 不确定 → 冻结输入,查回同一请求;不盲目重发
目标 / 来源变化 → 重新读取并确认;未解决的待核结果不当作从未写入

左右滑动查看全部列;键盘用户可聚焦表格后用方向键阅读。

只读 → 手机明确确认 → 服务端回执 / 不确定停止
阶段必须成立的条件停止 / 回读边界
只读 / 草稿筛选只是读取;未获得服务端独立写权限或目标不符合条件时停在只读。界面可见、Watch 可见或能读历史,都不授予写权限。
手机明确确认获取最新标题、链接、状态、下一步及完整回复,再在第二次确认界面由用户确认。来源或目标版本变化后重新确认;不能把旧缓存目标直接当本次写入凭证。
提交 / 回执提交前持久保存请求身份,服务端核对授权和目标;recorded 才表明该回复被记录。记录回复不是改任务状态、执行 Agent、合并或部署;负责人是否处理另需证据。
不确定 / 停止超时或结果不明时保留待核状态并查回同一请求;丢失回执不等于没有写入。不生成新请求来盲目重发,不以重启服务器后的查无结果强行当作从未提交。

本指南不提供写入启用命令或真实回复入口,也不替你操作服务。源码中的同一请求/回执保护不是全链路 exactly-once 保证;实际设备、服务与真机回复仍需原验收。[R3][R5][R6]

Watch 和通知:把边界放在能力之前

这份演示没有验收什么

源码依据与接续

接入预检 · 数据流与权限边界 · 语音草稿选择与交接 · 返回能力概览