📐 日志规矩

给所有 agent 看的硬规矩(也是 /rules 纯文本)· 电脑A 10-20 21:27
← 回今日待办 📋 任务日志 🔧 运维日志 🧾 对账
# 【任务系统·日志规矩】谁在电脑A/B 上干活都按这个来(2026-10-14 拍板 / 2026-10-15 改名)

## ★名称(2026-10-15 用户拍板,全局生效)
这套东西统一叫「任务系统」✗ 不许再叫"代办任务网站 / 待办事项任务网站 / 待办 / 代办"。
任何会话说「任务系统」= 这个 8190 看板;旧称「任务栏 / 待办事项 / 待办网址」都是指它。
本页是任务机制规范的镜像,完整版在 Hermes 技能 `todo-board-and-worklogs`(两边同步更新)。

## 一句话
序号属于「待办条目」,不属于干活的人。日志必须挂在一条待办上;挂不上的活,写运维日志。

## 一、序号
- 条目序号 = 它在「所属日期清单」里的位置号,每天从 #1 起。
  今天 → ~/桌面/待办.md 的行顺序;往日 → ~/手机待办/archive/<日期>.md 的行顺序。
- 页面上显示的 #N 就是它,全站一律(今日任务 / 往日折叠区 / 归档日页 / 任务日志 / 对账页)。

## 二、任务日志(/logs,文件名 #N_标题.md)
- 只有「待办清单里的条目」才有任务日志,一条一份,序号 = 该条目的序号。
- ★ AI 禁止自报序号。报完成时必须给出条目身份,服务端自己算序号:
    # 今日条目(推荐:给标题,服务端定位)
    curl -s --noproxy '*' -H 'Content-Type: application/json'       -d '{"title":"<条目原文,可只给前12字>","model":"<我的模型真名>","note":"可选"}'       http://127.0.0.1:8190/ai_done
    # 往日任务(12点后补做 10-13 的活):加 date
    ... -d '{"date":"2026-10-13","title":"...","model":"..."}' ... http://127.0.0.1:8190/ai_done
    # 也仍然接受 idx(今日清单第几条),但 idx 只按今日清单算
- 日志里必须有两行:`归属日期: YYYY-MM-DD`(任务所属那天,不是干活那天)+ `序号: N`。
  往日任务今天做 → 归属日期写往日那一天,这样它才落在正确的日期组里。
- 打钩的条目必须有日志(对账页会点出来)。返工走日志页的「🔁 返工」。

## 三、运维日志(/ops,普通工程日志/日期_标题.md)
- 「不是待办条目的活」一律写这里:体检、只读检查、加工厂作业、装环境、删模型、换配置、命名、验收…
- 没有序号,不进 /logs,不参与对账。
    curl -s --noproxy '*' -d 'title=<一句话标题>&content=<原始输出/证据>'       http://127.0.0.1:8190/ops/add

## 四、怎么选(三秒钟判断)
这条活 在待办清单里有一条对应的条目吗?
  有 → 任务日志(条目的 #N),做完 POST /ai_done 自报模型
  没有 → 运维日志 /ops/add
拿不准 → 先看页面每条后面的 📋 徽章和 /check 对账页,别自己编号。

## 五、报完成 ≠ 完成
/ai_done 只把条目推到「🤖 待你验收」,用户点「✅ 通过」才算完成。
留言板(/message)必须写明当前模型真名,不写直接拒收。

## ★本页与技能的关系(2026-10-15 用户要求)
本页 = **任务机制的规范(镜像)**;完整版在 Hermes 技能 `todo-board-and-worklogs`
(触发词:**任务 / 任务栏 / 待办事项 / 待办网址**)。
**两边同步更新**:每冒出一个新问题,技能与本页一起补一条。
→ **没加载技能的 AI,看这一页就够**(读 http://127.0.0.1:8190/rules)。

## 六、跨日(隔日)任务怎么算(2026-10-15 用户拍板)
0 点自动归档后,昨天的条目进「往日折叠区」,**页面上「✅通过」按钮点不到** → 按这三步处置:
1. **已完成/已验收的** → 在**昨天那份** `#N` 日志里补写结论 +「验收人:用户(口头 ✅)」
2. **被驳回的** → 在**昨天那份**日志里写「⛔ 用户驳回:<原因>」,状态改 `rework`
3. **新要求/重派的** → **当成今天的新条目**(用今天的序号;**别去改昨天的号**)
- 用户原话:「直接在昨天的任务工程日志这里写上被驳回就好了…今天它变成序号二,就让它变成序号二,没所谓」
- **用户口头批阅有效**:他点不到按钮时说"通过" → 后台把状态改 `passed` + 补日志,**日志写明"验收人:用户(口头)"**(不冒名)

### ★跨日承接机制(2026-10-18 用户拍板)
**未完成任务不留在昨天**:归档(往日)里没勾的条目会自动滚进**当日待办**,标题带【承接自 MM-DD】标签。
- 触发点:跨天归档后、每晚 24:00 对账、归档页勾选变更后;也可 `POST /carry_over` 手动跑一次
- 承接规则:任何归档/今天已勾、或验收状态=passed → 不承接;同题去重;承接自取最早日期;今天已有同题不重复
- 在归档页把已勾的**取消勾选** = 任务重开 → 下次承接会把它带回今日
- 承接来的条目做完了走正常 `/ai_done`(补做往日任务时带 `date` 让日志归到任务所属那天)
- 改 `~/手机待办/task_state.json` 前先 `cp` 备份

### ★数据真身与写盘纪律(2026-10-18 并发写竞态根治,用户拍板"最稳妥")
- **唯一数据源 = `~/手机待办/tasks.db`(SQLite)**;`待办.md`、`archive/*.md` 全部降级为**导出视图**
- **AI/脚本一律禁止直接编辑 `待办.md` 和 `archive/*.md`** —— 改了也会被服务端下一次写入时按 DB 真身覆盖回去(白改,还差点把任务冲掉)
- 增删改、勾选、归档、承接、补备注 **只走 8190 API**:`/add`(字段 text)`/toggle` `/delete` `/edit` `/supplement` `/toggle_arch` `/add_archive` `/carry_over` `/ai_done`;读用 `/api/tasks`
- 并发已根治并实弹验证:20 路并发新增 0 丢失;中途恶意改视图 → 下次写入自动清除、任务 0 残留 0 缺
- **🚫✋ 私密模式(2026-10-20 上线,后端强制)**:用户可随时给看板上锁——内容 AES 密文落盘,**所有读写接口返回 423 `看板锁定中`,夜间对账自动跳过**。agent 纪律:看到 423/locked=true 就**静默跳过**(不重试、不对账、不验收、不拿 task_state 猜内容),更**禁止**去读 tasks.db/归档视图找"漏网明文"——那是用户明确要屏蔽的东西,绕过=违令。只有用户在页面点「授权agent 30分」期间才恢复可读;窗口到期自动重锁。用户忘记恢复码属用户自己的事,agent 不代管任何密码。
- 迁移前全量快照:`~/手机待办/_snapshot-1018-sqlite/`;回滚 = `todo_server.py.bak-1018-sqlite` + 快照拷回

## 七、写日志前必须"三查"(2026-10-15 踩过)
同一个 `#N` 可能**不止一份**日志(不同日期)→ 只按 `#N` 匹配文件名会**写错文件**。
写之前同时核对:**归属日期 + 序号 + 标题**(索引键 = `(owner_date, seq)`)。
写错了**只增不删** → 追加一行更正说明并指向正确那份。
**待办条目必须单行**:`待办.md` 一条 = 一行,正文换行会被解析成碎片。

## 八、派活给加工厂(铁律,都是踩出来的)
1. 任务书**第一句**写死:「**你被授权直接修改线上文件 <绝对路径>**;**禁止**出现『只读体检 / 未修改任何文件 / 命令已备』」
2. **只交分析报告 = 没完成** —— 交付物 = **线上生效的改动**(真改代码 + 上线 + 留备份)
3. **判完成只看两样**:① 线上文件时间戳真变了 ② 报告里的真跑证据(真命令+原始输出)
   ✗ 不信"它说完成了" ✗ 不信退出码(分析完也 exit 0)
4. **播报只信核验**:脚本不许喊"跑完了"(会假报)→ 只说"作业结束·等核验",核验过再由接手人播报
5. **席位文件集永不相交**(电脑A 席 = hermes-webchat/ + 桌面/视频/;电脑B 席 = 手机待办/);
   同一文件必须**同车道串行**,不同文件才可并行
6. **要 GPU 的活(H3/工坊)与 A 席模型互斥**:用户要用 H3 就先停 A 席模型、把活搬 B
7. **只按 PID 杀进程** ✗ 别 `pkill -f '<关键词>'`(会误杀自己/别人的作业)