对话笔记直发:8.11 vikunja-任务分层-v4。分类:小程序接单。


date: 2026-08-11 tags: [计划, Vikunja, 任务管理, 实施中] status: draft

任务管理分层 v5 — 领域树 + 三类型 + 优先级(评审修订版)

版本:v5(基于 v4 经子代理评审 + 复核修订) 日期:2026-08-11 服务器:jp(局域网IP(已脱敏),aarch64 / RK3566,Docker host) 前置:v3 闭环已验收;v4 提交子代理评审 评审结论:有条件通过(4 高危 + 8 中危缺陷,v5 已逐一修复);子代理「退回单项目」建议被否决(理由:用户已手动建「临时任务/生活」项目 + 明确认可 TickTick 三 Tab 心智) 状态:v5 定稿 → 待实施


0. 评审结论摘要(复核后)

#缺陷级别v5 处置
H1项目型「豁免封存 × 日期UID × 每日再生成」→ 项目库无限堆积重复任务高✅ 项目型改稳定UID(去日期)+ find-or-create,见 §2
H2三类任务「结转/封存/回写」规则未定义 → 回写断链高✅ 新增四维规则表 §2.1,逐格可判
H3短标题使旧 UID 全变,state 失效,「兼容」不成立高✅ 明确 UID 归一化输入 + 承认断代 + 切换日处置,见 §6
H4习惯「保留open记历史」无落地载体高✅ 定义载体 = Hermes 写 Obsidian 打卡日志,见 §2.1
M1Tasks.org 上 P1/P2 折叠同档(P1→4 的坑)中✅ 优先级映射改 P1→3/P2→2/P3→1(三档两端可分),见 §4
M2P1→4 使官方最高档(5 DO NOW)空置中✅ 同上,映射收敛到 3/2/1
M3焦点与计划可能重复同行 → note_replace matchCount==1 失败中✅ 焦点=P1 唯一家,与计划互斥,见 §5
M4v2 结构漏「昨日结转」「回写记录」两节中✅ §5 补全
M5push 按项目名 find-or-create 是雷(已存在 id2/id3 双「每日待办」)中✅ 项目用稳定ID映射 + 领域树.json,见 §6
M652 存量任务迁移缺失中✅ §6 切换日处置清单
M7手机端 15-25 清单爆炸中✅ 三顶级 + 领域叶子限 5-7;Tasks.org 收藏只看常用
M8提醒 cron 数据源/判定口径未定义中✅ §6 Phase1 明确查 Vikunja API

1. 核心分工(不变,v4 已确认)

语义判断归 Hermes,结构化承载归 Vikunja,脚本只做标注↔字段转译。

职责归属
识别任务类型(临时/项目/习惯)Hermes(读日记语义判断)
判定优先级 P1/P2/P3(P1 帽 ≤3/天)Hermes
选出今日焦点 ≤3Hermes
短标题(≤25字),上下文进描述Hermes
多级子任务树(项目型)Vikunja(v2 增强,parent_task_id)
重复循环(习惯)Vikunja(v1 用每日实例,载体见 §2.1)
优先级存储/排序Vikunja(priority 字段)
领域分组Vikunja(嵌套项目 parent_project_id)

标注格式:

【P1】【项目·小程序后台】验收后台:弹窗/隐私协议/查询
【P3】【习惯·锻炼】八段锦 / 散步
【P2】买牙膏 · 丢垃圾

2. 三类任务 = 三种生命周期 = 三个顶级项目

├─ 每日待办(临时)─ 子项目 = 领域树(生活 / 工作·AI自媒体 / 工作·折腾)
│     封存:今日到期未 done → [x](过期未完成)
├─ 项目库(项目型)─ 每项目一个子项目;v1 平铺 / v2 子任务树
│     封存:豁免;任务用稳定UID(见下)
└─ 习惯(长期型)─ 每习惯每日新实例(UID 含日期)
       封存:昨日未打卡 → 保留 open,Hermes 写 Obsidian 打卡日志

2.1 四维规则表(H2 修复,逐格可判)

类型结转规则(03:30)封存规则(writeback)回写 ObsidianUID
临时未 done → 滚入今日「昨日结转」今日到期未 done → 置 done + [x](过期未完成)翻 [x]sha1(日期|文本|时段)
项目不结转原行;Hermes 每日在今日计划按当前状态重新产出一行豁免(永不自动封存)done 时翻当前文件对应行(含历史副本,all=True)sha1(文本|时段) 不含日期(稳定身份)
习惯不结转(不做每日倾倒)昨日未 done → 保留 open不回写;Hermes 把昨日各习惯 done 状态写 00_项目库/习惯/2026-08.mdsha1(日期|文本) 每日新实例

习惯打卡日志载体(H4 修复):Hermes 03:30 聚合时,查 Vikunja 习惯项目昨日 done 状态 → 写 Obsidian 000_Raw/00_plan/00_项目库/习惯/<年-月>.md(格式:## 2026-08-10\n- [x] 锻炼 / - [ ] 按时睡觉),当打卡日历。

3. 领域树(单点定义)

200_Rules/工作流/领域树.md(人类可读)+ 同源生成 领域树.json(脚本可解析):

生活 → 健康 / 作息 / 家庭
工作 → AI自媒体(文章 / 视频)
     → 折腾(Obsidian / 本地NAS+Hermes / 云服务器)

叶子 = Vikunja 子项目。脚本用领域树.json 的稳定 id 映射建项目(M5 修复,不用项目名)。

4. 优先级(M1/M2 修复 — 映射改为 3/2/1)

用户档Vikunja priorityCalDAV PRIORITYTasks.org 显示官方app 显示
P13 (High)3HIGH橙/红
P22 (Medium)5MEDIUM黄
P31 (Low)9LOW蓝

子代理关键建议(已采纳):v4 用 P1→4 会在 Tasks.org 上 P1/P2 折叠同档;改 P1→3/P2→2/P3→1 后 CalDAV 映射 3/5/9 → Tasks.org 三档 HIGH/MEDIUM/LOW 全可分。官方 app 走 JWT 直接读数字,三档同样区分。

P1 帽:Hermes 硬规则 P1 ≤3/天;脚本侧容错(焦点段超帽时报错提示)。 今日焦点 = 当日 P1 唯一家(M3 修复):P1 行只出现在「今日焦点」段,不在今日计划段重复。

5. 工作台 v2 结构(Hermes 03:30 产出)

## 今日焦点(≤3 件,P1 唯一家)
- [ ] 【P1】【项目·小程序后台】验收后台:弹窗/隐私协议/查询

## 今日计划
### 生活
- [ ] 【P2】买牙膏 · 丢垃圾
### 工作 · AI自媒体
- [ ] 【P2】【项目·公众号自动化】配图方案选型落定
### 工作 · 折腾
- [ ] 【P3】【习惯·锻炼】八段锦 / 散步

## 昨日结转
> 昨日未完成的「临时」任务滚入;项目/习惯不在此重复
- [ ] 【P3】公众号插件:多平台一键推送(结转 8/10 未完)

## 灵感清单
(仅想法库;低优先项进 000_Raw/00_plan/00_项目库/)

## 回写记录
(Hermes 把每条灵感去向回写:已发布/已执行/已沉淀/已归档)

push 解析时跳过「昨日结转」「灵感清单」「回写记录」三段的 - [ ](避免重复推送);只推「今日焦点 + 今日计划」两段。

6. 实施步骤

Phase 1 — 领域树 + Hermes prompt v2

  • 建 200_Rules/工作流/领域树.md + 同源 领域树.json
  • hermes cron edit 9eadb723492b(工作台聚合):产出焦点+类型标注+P1帽+短标题+四维规则表+打卡日志写入
  • hermes cron edit 315476f2ad60(点位提醒):查 Vikunja API done + 工作台焦点段,按 焦点→P1→P2→P3 播报(M8 修复)
  • 验证:hermes cron run 9eadb723492b 生成新结构草稿

Phase 2 — push v2

  • 解析标注 → priority(3/2/1) + 类型路由 + 领域子项目(用领域树.json 稳定id,M5 修复)
  • 项目型:稳定UID(不含日期)find-or-create;临时/习惯:日期UID
  • UID 归一化输入 = 剥离【】前缀/时间块/结转注释后的主体(H3 修复)
  • --dry-run 全量比对 → 实跑

Phase 3 — writeback v2

  • 遍历全部子项目(非按名单项目)
  • 按 §2.1 规则表:项目豁免 / 习惯保留 open / 临时照常封存
  • 切换日处置(M6/H3 修复):备份 → 旧 52 任务一次性封存或删除 → 清 state → 新格式首跑 --dry-run → 实跑;清理空项目 id=3、管道项目残留

Phase 4 — 验收

  • 官方app 三 Tab 树 + 领域子项目;Tasks.org 每领域一清单
  • 手机实测 Tasks.org 上 P1/P2/P3 三档可区分(M1 验收点)
  • 焦点 ≤3 置顶、priority 排序生效;连续两天闭环不断

v2 增强(后续)

  • 项目型子任务树(parent_task_id)
  • 习惯 repeat_after 自动循环(若每日实例体验不佳再切)
  • Vikunja 编辑 priority/labels → 回写 Obsidian 标注

7. 风险与对策(v5 更新)

风险对策
Hermes 标注漂移(Px/类型写错)脚本容错:缺标注默认 P3+临时;prompt 写死格式示例;焦点超帽脚本报警
项目型稳定UID 与时间块冲突项目型一般无时间块;若有则 UID 含时段字段但日期仍剥离
习惯 open 累积Hermes 周复盘收敛 7 天未打卡习惯;打卡日志当日历
项目型 long 期不 doneHermes 每周复盘提示收敛/归档
三项目+领域清单多领域叶子限 5-7;Tasks.org 收藏/只看常用
时间块已退化(8/10 起无 HH:MM-HH:MM)明确:v5 保留时间块解析能力,但不强制 Hermes 产出;Tasks.org Schedule 时间盒作为可选增强

8. 待确认(实施前)

  1. 领域树叶子是否含「家庭」?(用户初稿未提,建议先不含,按需后加)
  2. 习惯初始集?(锻炼/八段锦、按时睡觉、久坐提醒、工时≤8h)—— 确认后写入领域树.md 习惯清单
  3. 旧 52 任务切换日处置方式:一次性封存(留痕)vs 直接删除(干净)?

注:本文涉及的服务器公网 IP / Tailnet / 局域网 IP 已脱敏,请替换为你自己的地址。


相关: 00-索引-小程序接单索引 7.5 llm-wiki基于FNS三端同步架构的对抗性审查与实施方案