手机查看 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 和通知:把边界放在能力之前
- watchOS 11+ 伴侣通过已配对 iPhone 的 WatchConnectivity 接收待决策/待验收摘要;手机桥检查配对和 Watch App 状态。摘要不是任意 Agent 后端直连,也不是完整来源数据或凭据传输。[R4]
- 所选事项或受保护草稿可以接续到手机;Watch 收到“草稿已保存”类确认,只代表手机安全保留了提案,不等于服务端回复已记录。手机仍要读取最新目标并明确确认,直接手表写入/独立审批仍未授权。[R4]
- 读取 JSON feed 不是推送事件源。原生通知与系统镜像需要兼容服务、权限及设备条件;现有源码里的通知事件解析不证明上游事件源已获准或推送已送达。不开新通知后端、不加轮询,不把独立 Watch APNs 当作已有能力。[R1][R4][R5]
这份演示没有验收什么
- 只有合成 JSON、离线模型解码/筛选与静态页面检查;未导入真实设备、未读私有台账、未登录服务、未发回复、未配对 Watch 或注册通知。
- 读数/筛选、手机已保存草稿、服务端已记录回复、任务已处理/已执行,是不同状态,不互相代替。界面显示和文案不能补成真机回复或推送验收通过。
- 不提供后台、签名、账号凭据或默认可写源,不承诺完整离线、全链路 exactly-once 或自动运营;使用自己的可信服务并遵守原授权。
源码依据与接续
- [R1] Snapshot fields, exact filters, source-time parsing
- [R2] Bounded feed reads, one revalidation follow-up, cache storage
- [R3] Phone confirmation, pending request and receipt/readback
- [R4] Paired-phone Watch summaries and protected draft acknowledgement
- [R5] README: workbenches, Watch, notifications and reply prerequisites
- [R6] Optional private read adapter and separately authorized reply path
- [R7] Current management counts, status groups and clear-filter behavior
