# 持续任务(0.3.36) 本机持续任务的第一种用途:跟进一个**公开 GitHub PR**,定期读取 PR 状态与当前提交的 CI 检查摘要;失败时用后台模型解释已有证据,提出下一步检查建议。发现新的失败、通过、合并或关闭时通知主聊天。不会自行改代码、安装插件或向 GitHub 发消息。 ## 使用 在主聊天说「帮我持续关注 https://github.com/owner/repo/pull/123,CI 失败先告诉我」。模型通过 `theone_task` 创建任务,工具要求引用本轮用户原话及其中的 PR 链接。侧边栏「持续任务」也可以创建、暂停、恢复、立即检查、取消任务。 默认每 15 分钟检查一次,最多 96 次、24 小时,两者先到即停止。可以选「PR 合并或关闭」,或「已读取的检查全部通过」作为完成条件。网络失败也消耗一次尝试,连续失败三次停止自动重试。时间或次数用完后,新建任务才能继续。任务卡上「到主聊天讨论方案」只请求评估,实际修改仍由普通会话按当前权限执行。 **运行位置是本机。** DSH 退出、电脑关机或睡眠期间不会执行;重新启动后继续检查到期任务,不补跑期间漏掉的每一次检查。这不是云主机或远程电脑功能。 ## 已实现的保证 - 独立 SQLite 队列持久保存目标、完成条件、时间和次数限制、来源会话、检查结果、下一步建议、错误与执行状态。与原上下文库并列,文件名为 `contexts.db.work.db`;备份时同时保存两个数据库。 - 到期唤醒、用户立即检查,以及内部按事件 ID 去重的唤醒接口。5 秒轮询,每批最多 32 个不同任务。当前没有 GitHub webhook 接收器。 - 90 秒执行租约、60 秒轮次超时、旧执行者提交校验、同一资源互斥、退避与取消。重启仅恢复只读研究和幂等记忆合并,不自动重做之前的命令、安装或文件修改。 - 结果与通知同时提交。通知使用稳定 ID,在主聊天已收到或待收的消息中去重,等 DSH 会话持久化成功才确认送达。原主聊天未加载时保留通知,打开后补送。 - 同一已识别项目的 TheOne 派发回合按规范化目录排队,Git 子目录归到仓库根。这是整个回合串行,其他项目仍可并行;不是跨进程文件锁,也不拦截独立 DSH 会话或外部程序的写入。 - 要点提取、话题卡整理进入持久队列。第一阶段保存脱敏候选;第二阶段重读源会话、核对设置和可见性、检查证据及事实版本,再合并。候选已保存的任务重启后不重复调用模型;旧卡不能覆盖较新的回合。共享要点及自动提取仍遵循原开关,默认关闭。 ## 证据与限制 研究请求只能向固定 GitHub API 路径发出 GET,不接受任意网址、认证头或重定向。失败分析走 `modelJson`,没有 shell、文件、安装或消息工具,也不带会话历史。PR 标题和检查摘要作为不可信资料传入;模型建议不自动成为共享事实,不自动授权后续行动。 只读到检查摘要,不读取完整 CI 日志。缺少检查、分页不完整或未知结论不会判断为通过;通过也不等于代码质量、部署或所有分支保护要求均已验证。已关闭的 PR 直接完成,不依赖旧提交的检查接口仍可访问。 当前支持公开 PR,使用匿名 GitHub API,可能限流;私有仓库、认证接入、任意应用扫描、云端常驻和跨设备执行未实现。每个变化的失败状态最多一次模型分析(失败重试另计),输出上限 1200 tokens、调用超时 30 秒;检查次数是执行预算,不是精确的供应商 token 账单上限。最多保留 100 个未结束的研究任务。 自动化验证包含固定 GitHub 响应、模拟模型,以及真实 DSH 会话、工具路由、持久化和 API 集成测试。模拟模型通过不代表真实模型对 CI 的诊断准确率已验证。 2026-10-15 开发阶段本机验证:类型检查、构建、npm 打包清单及构建后插件 import 通过;全套 291 项,288 通过,3 项为已有的 Windows iMessage 临时 `chat.db` 清理 EBUSY。新增 23 项全部通过。隔离浏览器验收使用真实 TheOne API / DSH 会话和固定 GitHub、模型样本,创建、暂停、恢复、取消均完成;另对真实仓库 PR #11 做了一次只读查询,正确读取到已合并。发版准备另增一项正式安装包回归检查;完整测试由 Linux 发布流水线再次执行。