Ariver
2026-08-25 f82d5d731f7c1439a95dda6e1a14d40d58881d69
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<svg viewBox="0 0 680 450" width="100%" role="img">
  <title>tagfeed 工作流整体架构</title>
  <desc>实时链与定时链共同驱动生成器 sync_0inbox.py,扫描 vault 排除目录与标签聚合目录,输出到 0inbox 收件箱</desc>
  <defs>
    <marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
      <path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
    </marker>
  </defs>
 
  <text x="340" y="26" text-anchor="middle" font-size="16" font-weight="500" fill="#1f2937">tagfeed 工作流 · 整体架构</text>
 
  <g class="node c-blue">
    <rect x="40" y="50" width="280" height="66" rx="10" stroke-width="0.5"/>
    <text class="th" x="180" y="74" text-anchor="middle" dominant-baseline="central" fill="#0C447C">实时触发链(即时 ~15s)</text>
    <text class="ts" x="180" y="96" text-anchor="middle" dominant-baseline="central" fill="#185FA5">launchd → TagfeedWatch.app → tagfeed.py --watch</text>
  </g>
 
  <g class="node c-purple">
    <rect x="360" y="50" width="280" height="66" rx="10" stroke-width="0.5"/>
    <text class="th" x="500" y="74" text-anchor="middle" dominant-baseline="central" fill="#3C3489">定时兜底</text>
    <text class="ts" x="500" y="96" text-anchor="middle" dominant-baseline="central" fill="#534AB7">WorkBuddy 自动化 · 每日 04:00</text>
  </g>
 
  <path d="M180 116 L300 148" stroke="#5F5E5A" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
  <path d="M500 116 L380 148" stroke="#5F5E5A" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
 
  <g class="node c-green">
    <rect x="195" y="148" width="290" height="58" rx="10" stroke-width="0.5"/>
    <text class="th" x="340" y="172" text-anchor="middle" dominant-baseline="central" fill="#27500A">sync_0inbox.py(生成器)</text>
    <text class="ts" x="340" y="192" text-anchor="middle" dominant-baseline="central" fill="#3B6D11">扫描全 vault #tag · 幂等建页</text>
  </g>
 
  <g class="node c-gray">
    <rect x="40" y="250" width="270" height="70" rx="10" stroke-width="0.5"/>
    <text class="th" x="175" y="272" text-anchor="middle" dominant-baseline="central" fill="#444441">排除目录(不扫描)</text>
    <text class="ts" x="175" y="294" text-anchor="middle" dominant-baseline="central" fill="#5F5E5A">X2.Archived · 00index · Knomo</text>
    <text class="ts" x="175" y="310" text-anchor="middle" dominant-baseline="central" fill="#5F5E5A">X.Attachment · P3.bobo</text>
  </g>
 
  <g class="node c-amber">
    <rect x="370" y="250" width="270" height="70" rx="10" stroke-width="0.5"/>
    <text class="th" x="505" y="272" text-anchor="middle" dominant-baseline="central" fill="#633806">标签聚合/(规则2 输入)</text>
    <text class="ts" x="505" y="294" text-anchor="middle" dominant-baseline="central" fill="#854F0B">已整理页 文件名 + targetTag</text>
    <text class="ts" x="505" y="310" text-anchor="middle" dominant-baseline="central" fill="#854F0B">判定哪些 tag 已覆盖</text>
  </g>
 
  <path d="M175 250 L290 206" stroke="#888780" stroke-width="1" fill="none" stroke-dasharray="4 3" marker-end="url(#arrow)"/>
  <path d="M505 250 L390 206" stroke="#BA7517" stroke-width="1" fill="none" stroke-dasharray="4 3" marker-end="url(#arrow)"/>
 
  <path d="M340 206 L340 338" stroke="#3B6D11" stroke-width="1.8" fill="none" marker-end="url(#arrow)"/>
 
  <g class="node c-amber">
    <rect x="200" y="338" width="280" height="66" rx="10" stroke-width="0.5"/>
    <text class="th" x="340" y="362" text-anchor="middle" dominant-baseline="central" fill="#633806">00index/0inbox(A 收件箱)</text>
    <text class="ts" x="340" y="384" text-anchor="middle" dominant-baseline="central" fill="#854F0B">未整理标签 = 自动生成的 tagfeed 页</text>
  </g>
</svg>