@topmindspace/topmind-skills 4.14.0 → 4.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/evals/evals.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "skill_name": "topmind",
3
3
  "daily_entry": "topmind",
4
- "version": "4.14.0",
4
+ "version": "4.15.1",
5
5
  "evals": [
6
6
  {
7
7
  "id": 1,
@@ -252,6 +252,29 @@
252
252
  "primary_skill": "topmind-organize",
253
253
  "extra_skills": [],
254
254
  "expected_output": "Organize 整理本周 on the activity window: tidies the period note in place, then L1-suggests todo maintain diff (add/complete/update vs memory/todo.md) and optional memory/topic candidates per shared/auto-suggest.md. User accepts before writing todo/memory changes. No auto memory writes, no INDEX.md."
255
+ },
256
+ {
257
+ "id": 35,
258
+ "prompt": "对比一下 Claude 和 Gemini 最新发布的技术报告,要带一手来源。",
259
+ "primary_skill": "topmind",
260
+ "extra_skills": [
261
+ "topmind-organize"
262
+ ],
263
+ "expected_output": "Router applies the 研究 / 分析 / 对比 row in shared/trigger-disambiguation.md: the request needs external primary sources, so it hands off to the optional external skill topmind-research (analyze) when installed. When topmind-research is not installed, falls back to topmind-organize 研究分析 and states in the receipt that only workspace materials and host search were used. Output lands in a topic or Inbox per shared/writeback-receipt.md with source_type: ai-derived. No auto memory writes, no auto chaining to briefs or write."
264
+ },
265
+ {
266
+ "id": 36,
267
+ "prompt": "对比一下 20-研究/2026-示例研究 专题里已经存的几篇笔记的观点。",
268
+ "primary_skill": "topmind-organize",
269
+ "extra_skills": [],
270
+ "expected_output": "Routes through topmind-organize 研究分析 because the objects are notes already saved in the workspace; does not hand off to topmind-research even if it is installed. Builds a comparison table with provenance, writes the synthesis to a topic-root note per writeback_mode (leave-a-trace), and only L1-suggests memory candidates."
271
+ },
272
+ {
273
+ "id": 37,
274
+ "prompt": "这周 AI 大厂有什么新的官方动态?顺便看看社区怎么评价。",
275
+ "primary_skill": "topmind",
276
+ "extra_skills": [],
277
+ "expected_output": "Router splits into ordered steps per shared/trigger-disambiguation.md: official announcements, technical reports and papers → optional external topmind-research (collect); community discussion → optional external last30days. Does not route to topmind-organize 整理本周 (that phrase means the workspace stream category) and does not use TopStream每日精选 unless the user asks for the daily digest. Any skill that is not installed falls back to topmind-organize on saved workspace materials, and the receipt says so. Each step returns its own receipt; no auto chaining."
255
278
  }
256
279
  ]
257
280
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topmindspace/topmind-skills",
3
- "version": "4.14.0",
3
+ "version": "4.15.1",
4
4
  "description": "topmind Agent Skills pack — portable markdown skills for capture, organize, write, memory, maintain, loop.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -65,8 +65,10 @@ Host 能力映射:
65
65
  | 能力 | Desktop | UTR | 纯 Host Agent |
66
66
  |------|---------|-----|---------------|
67
67
  | 提取 | `add_todo` · `todo_maintain` | `memory.add-todo` | 读活动窗口 → 识别行动语 → 写 checklist |
68
- | 维护 | `toggle_todo` · `maintainTodos` | `memory.toggle-todo` | 对照周期本与 todo.md 做 diff 建议 |
68
+ | 维护 | `toggle_todo` · `update_todo` · `set_todo_due` · `delete_todo` · `maintainTodos` | `memory.toggle-todo` | 对照周期本与 todo.md 做 diff 建议 |
69
69
  | 列表 | `list_todos` · Todo 面板 | `memory.list-todos` | 读 `memory/todo.md` 活跃段 |
70
+ | 动态查询 | `list_recent_stream` | `workspace-read.list-recent-captures` | 读最近周期本日段 |
71
+ | 记忆查询 | `list_recent_memories` | `memory.list-profile` 等 | 读 `memory/` 活跃段(勿整库倾倒) |
70
72
  | 分类/专题建议 | `topic_classify`(确认后 `create_topic`) | 文件工具 + role 路由 | 按 role + 内容性质给最多 3 候选 |
71
73
  | 记忆建议 | `memory_organize`(append/update/retire 建议) | `memory.append-profile` 等(确认后) | 识别稳定事实 → L1 候选 |
72
74
 
@@ -74,6 +74,9 @@ word_count: 1200
74
74
  - URL 类型提示(GitHub README / GitHub 原文 / X / 网页)
75
75
  - Inbox:按 `source_type` 筛选「网页/摘录」
76
76
  - AI `fetch_url` 支持 `maxLen` + `render`;Obsidian `fetch_url` 对 GitHub md 自动走 raw
77
+ - AI `capture_url`:一键抓取并入库(带 source URL + 标题);Desktop 与 Obsidian 对齐(`forceInbox` / `forceAtom`)
78
+ - AI `web_search`:无需 Key 的网络搜索短列表(域名打分 + 同域去重);命中后 `fetch_url` / `capture_url`
79
+ - 工具失败会返回**一条**具体恢复步骤(如 edit 失败 → 先 read_file 刷 contentHash)
77
80
 
78
81
  ## 不要做的事
79
82
 
@@ -1,7 +1,8 @@
1
1
  # Trigger Disambiguation(路由消歧真源)
2
2
 
3
3
  > Router(`topmind`)与各子 skill 的「When NOT」必须与本表一致。
4
- > 子 skill **不得**自动链式 dispatch 下一 skill;「下一步」仅用户面建议。
4
+ > 子 skill **不得**自动链式 dispatch 下一 skill;「下一步」仅用户面建议。
5
+ > 外部可选技能(`topmind-research`、`topmind-briefs`、`last30days`、`TopStream每日精选`)不随本包发布:仅在宿主已安装时按表路由;未安装按该行写明的回退处理,回执可提示可选安装,不报错。
5
6
 
6
7
  ## 碰撞词裁决
7
8
 
@@ -9,6 +10,8 @@
9
10
  |--------|--------------|------|
10
11
  | 总结要点 | organize vs memory | 默认 → `topmind-organize`。仅「更新我的情况 / 加到专题记忆 / 沉淀到记忆」→ memory |
11
12
  | 沉淀 | capture vs memory | 默认 → `topmind-capture`。仅「沉淀成稳定结论 / 更新我的情况」→ memory |
13
+ | **记一下 / Note it** | capture 主入口 | **完整捕获**(笔记 / 链接 / 附件)→ `topmind-capture` |
14
+ | **记下 / Log it** | capture(追加) | **写入当前周期本**(动态追加,同文件续写)→ `topmind-capture`,默认平铺到当前周期;不弹分类访谈 |
12
15
  | 记一下要做 X / 别忘了 X | capture vs todo | → `topmind-capture`(材料落盘)+ 待办写入/建议 `memory/todo.md`(见 `auto-suggest.md`) |
13
16
  | 待办 / 有什么要做的 | router 直达 | 读 `memory/todo.md` 活跃项;不新建概念、不进 organize |
14
17
  | X 做完了 / 这条不用了 | todo vs organize | 清单项 → 勾掉/归档 `memory/todo.md`;整周事项状态 → organize「整理本周」 |
@@ -19,6 +22,9 @@
19
22
  | 归档 | capture vs maintain | 「归档材料」→ capture。「归档专题 / archive topic」→ maintain |
20
23
  | 笔记 / note | capture vs write | 未限定 → capture。「写作 / 起草 / 续写」→ write |
21
24
  | 记账 / 记一笔 / 花了 / 存入 | ledger vs capture | 「记账 / 记一笔 / 花了 / 存入 / 查看账单 / 账户余额」→ `topmind-ledger`(记忆平面账本)。「记一下」仍 → capture |
25
+ | 研究 / 分析 / 对比 | organize vs topmind-research(外部可选) | 对象是工作区里已存的笔记、专题内材料 → `topmind-organize`。需要对外检索一手资料(论文、技术报告、官方公告、模型或产品横向对比)、AI 前沿深挖 → `topmind-research`(analyze);未安装 → `topmind-organize`「研究分析」 |
26
+ | AI 动态 / 大厂动态 / AI 周报 / 最近有什么新的 | topmind-research vs last30days vs TopStream每日精选(均外部可选) | 官方公告、技术报告、论文的周度汇总 → `topmind-research`(collect)。社区讨论与口碑(X、Reddit、HN 等)→ `last30days`。每日精选例行 → `TopStream每日精选`。对应技能未安装 → `topmind-organize`(只用工作区已存材料,回执注明)。「整理本周 / 理顺本周动态」指工作区动态类别,仍 → organize「整理本周」 |
27
+ | 读论文 / 论文解读 | topmind-research vs topmind-briefs(均外部可选) | 想弄懂内容、要带来源的研究报告 → `topmind-research`(analyze);未安装 → `topmind-organize`「研究分析」。要直接出一篇短稿发布 → `topmind-briefs`(可附 research 产出的已核验事实表);未安装 → `topmind-write` |
22
28
  | 公众号 / 微信排版 | wechat vs write | 「公众号 / 微信排版 / 公众号定稿 / 发公众号」→ `topmind-wechat`。通用「写一篇」仍 → `topmind-write` |
23
29
 
24
30
  **原则**:动作动词定 action;修饰词定 confidence。无法判定 → capture(先存后整)。
@@ -34,6 +40,7 @@
34
40
  | write | 稿件 / delivery | 为「补结构」空建 `topic.md` |
35
41
  | loop | 状态 / 可逆修复 | 代写记忆;建硬索引 |
36
42
  | ledger | `{memory.dir}/ledgers/` 追加一行 | 改 `topic.md`;发明 ClassFund/Giggs/Mom;当第六用户概念 |
43
+ | topmind-research(外部可选) | 研究报告、周报、已核验事实表,按 `writeback-receipt.md` 落专题或 Inbox(frontmatter `source_type: ai-derived`) | 自动写记忆;自动改它自带的 `config/sources.yaml`;未经用户点名自动深挖;自动链式 briefs / write |
37
44
 
38
45
  ## 多意图顺序
39
46
 
@@ -44,6 +51,8 @@
44
51
  | organize + write | 先 organize(落盘综合),再 write |
45
52
  | organize + memory | 先 organize 候选与综合笔记,**用户接受建议后再** memory |
46
53
  | write + memory | 先 write,回执建议 memory |
54
+ | research + write | 先 research 出报告与事实表,回执建议 briefs / write(不自动链式) |
55
+ | research + memory | 先 research 落盘,回执建议 memory(须用户再确认才写) |
47
56
  | 整理 inbox | organize + plan-inbox-routing(不是 maintain/loop) |
48
57
  | 清理工作区 | maintain |
49
58
 
package/topmind/SKILL.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  topmind 总入口与多意图路由(类别/专题/笔记/待办/交付)。Use when 用户说 topmind、意图模糊、
6
6
  待办/有什么要做的/todo list、或需要收→整→写 分步。单意图明确时直接用 topmind-capture|organize|write|memory|maintain|loop|weread|x|ledger|wechat。
@@ -23,7 +23,7 @@ compatibility: >-
23
23
  author: TopMindSpace
24
24
  license: MIT
25
25
  homepage: https://github.com/topmindspace/topmind
26
- updated: 2026-09-28
26
+ updated: 2026-10-08
27
27
  degradation: ../shared/capability-degradation.md
28
28
  ---
29
29
 
@@ -51,7 +51,8 @@ degradation: ../shared/capability-degradation.md
51
51
  待办 / 有什么要做的/todo → 本 router → 读 memory/todo.md 活跃项(卫星,非新概念)
52
52
  X 做完了 / 这条不用了 → 本 router → 勾掉/归档对应待办(可恢复)
53
53
  整理本周/理顺流水 → topmind-organize → 活动窗口就地理顺 + 建议(确认后写)
54
- 整理/分析/研究/总结/对比 → topmind-organize → 当前专题 / Inbox 路由 / 活动窗口
54
+ 整理/分析/研究/总结/对比 → topmind-organize → 当前专题 / Inbox 路由 / 活动窗口(对象是已存材料)
55
+ 对外检索/论文/AI 动态 → topmind-research* → 专题 / Inbox(*外部可选;未装 → organize)
55
56
  写/改/稿/交付/导出 → topmind-write → delivery 或专题根
56
57
  公众号/微信排版/定稿发稿 → topmind-wechat → 创作类 YYYY-公众号/ 交付包
57
58
  记住我/更新我的情况 → topmind-memory → memory/profile.md(主 memory)
@@ -69,7 +70,7 @@ loop/整体体检/巡检 → topmind-loop → .topmind/loop/ 可恢
69
70
 
70
71
  待办是 `memory/todo.md` **卫星**(与 profile 同层),不是第六概念。提取/维护语义见 [`../shared/auto-suggest.md`](../shared/auto-suggest.md)。
71
72
 
72
- English: capture → capture · weekly review/organize (activity window) → organize · write → write · about me → memory/profile · period reflection → memory/periodic/{YYYY}/ · new topic folder → organize (content category) · doctor → maintain · loop → loop · bookkeeping/spent/deposited → ledger (`memory/ledgers/`, personal default).
73
+ English: capture → capture · weekly review/organize (activity window) → organize · write → write · about me → memory/profile · period reflection → memory/periodic/{YYYY}/ · new topic folder → organize (content category) · doctor → maintain · loop → loop · bookkeeping/spent/deposited → ledger (`memory/ledgers/`, personal default) · external primary-source research / papers / official AI news → optional external `topmind-research` when installed, else organize.
73
74
 
74
75
  读配置:`stream.packing`(默认 weekly)· `stream.year_dir`(默认 true)· `memory.layers.global.file`(`profile.md`)。
75
76
  **活动窗口**(Desktop/Kernel 与 organize 共用):近期周期本 ∪ 近期改动笔记 ∪ 增补锚定的原文——不只「最新周期文件名」。
@@ -125,6 +126,7 @@ Which category? Which topic (or loose note)? Which object? Which action? Which s
125
126
 
126
127
  真源:[`../shared/trigger-disambiguation.md`](../shared/trigger-disambiguation.md)。
127
128
  多意图:[`references/multi-intent.md`](references/multi-intent.md)。
129
+ 外部可选技能(`topmind-research` 等):不随本包发布,已安装才路由,未安装按真源表回退;不是第二前台。
128
130
  Connector:[`references/connector-resolution.md`](references/connector-resolution.md)。
129
131
 
130
132
  ## Sub-Skill Receipt Chaining
@@ -139,7 +141,7 @@ Connector:[`references/connector-resolution.md`](references/connector-resoluti
139
141
  主路径:host 文件工具 + project-model-brief。Skills pack **不依赖** Pi / `pi-agent-core`;不要编造 bash / shell。宿主若有唯一片段替换,中段改稿优先用它。
140
142
  降级:[`../shared/capability-degradation.md`](../shared/capability-degradation.md)。
141
143
 
142
- UTR 可选(MCP primary+danger 共 26;注册表 35 = 8 域 / 35 命令,见 TOOLS.md):`list-categories` · `list-topics` · `inspect-topic` · `list-topic-files` · `list-inbox` · `create-topic` · `capture-note` · `save-output` · `contract.validate` · `contract.reseed` · `memory.promote` · `memory.digest` · `memory.append-profile` · `memory.append-topic` · `memory.retire-profile` · `memory.update-profile` · `memory.compact-history` · `memory.restore-profile` · `memory.list-todos` · `memory.add-todo` · `memory.toggle-todo` · `doctor-workspace` · `plan-inbox-routing` · `archive-topic` · `archive-stream-year` · `restore-safety-receipt`。
144
+ UTR 可选(MCP primary+danger 共 29;注册表 38 = 8 域 / 38 命令,见 TOOLS.md):`list-categories` · `list-topics` · `inspect-topic` · `list-topic-files` · `list-inbox` · `create-topic` · `capture-note` · `save-output` · `contract.validate` · `contract.reseed` · `memory.promote` · `memory.digest` · `memory.append-profile` · `memory.append-topic` · `memory.retire-profile` · `memory.update-profile` · `memory.compact-history` · `memory.restore-profile` · `memory.list-todos` · `memory.add-todo` · `memory.toggle-todo` · `memory.update-todo` · `memory.set-todo-due` · `memory.delete-todo` · `doctor-workspace` · `plan-inbox-routing` · `archive-topic` · `archive-stream-year` · `restore-safety-receipt`。
143
145
 
144
146
  字段始终独立 **`category` + `topic`**(真实目录名,非写死编号)。
145
147
 
@@ -1,16 +1,18 @@
1
1
  # Multi-Intent Resolution
2
2
 
3
- 当用户请求包含多个意图时,按以下矩阵裁决(与 `shared/trigger-disambiguation.md` 一致):
3
+ 当用户请求包含多个意图时,按以下矩阵裁决(与 `../../shared/trigger-disambiguation.md` 一致):
4
4
 
5
5
  | 意图组合 | 裁决 | 说明 |
6
6
  |---------|------|------|
7
7
  | capture + organize | 先 capture,回执中建议 organize | 先确保材料落地 |
8
8
  | capture + memory | 先 capture,回执中建议 memory | 先存笔记再更新我的情况 / 周期反思 |
9
- | capture + todo | 先 capture;显式行动语同轮写 `memory/todo.md`,隐含则 L1 建议 | 见 `shared/auto-suggest.md` |
9
+ | capture + todo | 先 capture;显式行动语同轮写 `memory/todo.md`,隐含则 L1 建议 | 见 `../../shared/auto-suggest.md` |
10
10
  | organize + write | 先 organize 提炼,再 write 输出 | 分两步 |
11
11
  | organize + memory | 先 organize 候选,再 memory 落盘 | organize 产出列表 |
12
12
  | organize + todo | 整理本周后 L1 待办 diff 建议 | 不自动批量改清单 |
13
13
  | write + memory | 先 write,回执中建议 memory | 写作不改 memory/profile |
14
+ | research + write | 先 research 出报告与已核验事实表,回执中建议 briefs / write | `topmind-research`、`topmind-briefs` 为外部可选;未装 research → organize「研究分析」,未装 briefs → write |
15
+ | research + memory | 先 research 落盘专题或 Inbox,回执中建议 memory | research 不自动写记忆;用户确认后才走 memory |
14
16
  | 整理 inbox | `topmind-organize` + `plan-inbox-routing` | 不是 maintain/loop |
15
17
  | 清理工作区 | `topmind-maintain` | 系统健康 |
16
18
 
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: topmind-capture
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
- 把链接、摘录、随手记收进动态周期本、Inbox 或专题;行动语自动提取/建议待办。Use when 记一下、收进、
6
- 剪藏、保存链接、记一下要做/别忘了、capture、save URL/idea。
5
+ 把链接、摘录、随手记收进动态周期本、Inbox 或专题;行动语自动提取/建议待办。Use when 记一下、
6
+ 收进、剪藏、保存链接、记一下要做/别忘了、capture、save URL/idea、Note it。
7
+ 记下/Log it 是动态主区「写入当前周期本」——路由仍进本 skill,但不作 frontmatter 触发词(见 shared/trigger-disambiguation.md)。
7
8
  Do NOT use for 整理本周、出稿、写我的情况、doctor/loop、微信读书、X.
8
9
  action_category: capture
9
10
  triggers:
@@ -30,6 +31,7 @@ triggers:
30
31
  - capture
31
32
  - note
32
33
  - save
34
+ - "Note it"
33
35
  tags: [capture, inbox, note, material]
34
36
  entrypoint: false
35
37
  compatibility: topmind workspace. Host file tools or optional UTR capture-note.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind-ledger
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  通用记账到记忆平面(默认个人/自己账本,用户自建账本与分类)。Use when 记账、记一笔、花了、存入、查看账单、账户余额。
6
6
  Do NOT use for 记一下到动态、待办、微信读书、发推、Feishu/lark-cli.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind-loop
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  可中断的工作区语义巡检(走专题/Inbox,.loop 断点续跑)。Use when 跑一遍 loop、巡检、整体体检、复盘、
6
6
  继续 loop、audit。Do NOT use for 快速 doctor(→maintain)、单专题整理、捕获、写作、仅记忆.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind-maintain
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  确定性体检/清理/结构修复/回执恢复。Use when 快速体检、诊断、doctor、清理、修复、workspace check。
6
6
  Do NOT use for 整体巡检 loop、内容整理、捕获、写作、记忆.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind-memory
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  更新「我的情况」或周期反思。Use when 记住这个、更新我的情况、加到专题记忆、沉淀结论。
6
6
  Do NOT use for 捕获、仅总结(→organize)、整理本周正文、出稿、开/并专题、doctor/loop.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: topmind-organize
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  整理本周动态、专题内整理/研究/分析/路由 Inbox。Use when 整理本周、整理、分析、研究、对比、总结要点、organize、summarize。
6
- Do NOT use for 首次捕获、最终出稿、仅写我的情况、快速 doctor、全库 loop.
6
+ Do NOT use for 首次捕获、最终出稿、仅写我的情况、快速 doctor、全库 loop、对外检索一手资料与 AI 前沿深挖(已装外部 topmind-research 时).
7
7
  action_category: organize
8
8
  triggers:
9
9
  - 整理本周
@@ -37,7 +37,7 @@ compatibility: topmind workspace with stream period notes, topics, or Inbox.
37
37
  author: TopMindSpace
38
38
  license: MIT
39
39
  homepage: https://github.com/topmindspace/topmind
40
- updated: 2026-09-28
40
+ updated: 2026-10-08
41
41
  degradation: ../shared/capability-degradation.md
42
42
  ---
43
43
 
@@ -59,6 +59,7 @@ degradation: ../shared/capability-degradation.md
59
59
  - 交付最终报告/文章 → `topmind-write`
60
60
  - 只写「我的情况」/ 周期反思 → `topmind-memory`
61
61
  - doctor / 全库巡检 → `topmind-maintain` / `topmind-loop`
62
+ - 对外检索一手资料(论文、技术报告、官方公告、模型或产品横向对比)、AI 前沿深挖、周度官方动态 → 外部可选 `topmind-research`(已安装时);未安装仍由本 skill「研究分析」接手,回执注明来源范围(见 [`../shared/trigger-disambiguation.md`](../shared/trigger-disambiguation.md))
62
63
 
63
64
  ## 动作入口判断
64
65
 
@@ -110,6 +111,8 @@ degradation: ../shared/capability-degradation.md
110
111
 
111
112
  证据链:来源 → 事实 → 推断 → 待验证。对比用表;保留 URL/日期;区分确认与假设。有价值的对比/结论同样**默认落盘**(专题根 md),避免只留在聊天里。
112
113
 
114
+ 对象是工作区已存材料。需要对外检索一手资料时,已装外部可选 `topmind-research` 则交给它;未安装时本节接手,回执写明只用了工作区材料和宿主可用的检索。
115
+
113
116
  ### 实体提取(非默认)
114
117
 
115
118
  仅显式要求时。实体附证据;不建默认子目录。
package/topmind-pack.json CHANGED
@@ -4,8 +4,8 @@
4
4
  "label": "topmind",
5
5
  "description": "topmind skill pack: single daily entry topmind + progressive disclosure (shared/ + references/), Agent Skills open-standard aligned, capture-first template-driven categories, optional connectors topmind-weread and topmind-x, optional topmind-ledger (记账), optional write sub-skill topmind-wechat. None of the optional skills is an extra user concept. File-system-first content truth; UTR optional.",
6
6
  "daily_entry": "topmind",
7
- "version": "4.14.0",
8
- "updated": "2026-09-28",
7
+ "version": "4.15.1",
8
+ "updated": "2026-10-08",
9
9
  "license": "MIT",
10
10
  "locales": {
11
11
  "default": "zh-CN",
@@ -382,7 +382,10 @@
382
382
  "restore-profile",
383
383
  "list-todos",
384
384
  "add-todo",
385
- "toggle-todo"
385
+ "toggle-todo",
386
+ "update-todo",
387
+ "set-todo-due",
388
+ "delete-todo"
386
389
  ],
387
390
  "lifecycle": [
388
391
  "scan"
@@ -391,8 +394,8 @@
391
394
  "rebuild"
392
395
  ]
393
396
  },
394
- "command_count": 35,
395
- "mcp_default_count": 26,
397
+ "command_count": 38,
398
+ "mcp_default_count": 29,
396
399
  "command_exposure": {
397
400
  "primary": [
398
401
  "workspace-read.list-categories",
@@ -416,7 +419,10 @@
416
419
  "memory.restore-profile",
417
420
  "memory.list-todos",
418
421
  "memory.add-todo",
419
- "memory.toggle-todo"
422
+ "memory.toggle-todo",
423
+ "memory.update-todo",
424
+ "memory.set-todo-due",
425
+ "memory.delete-todo"
420
426
  ],
421
427
  "danger": [
422
428
  "workspace-maintain.archive-topic",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: topmind-wechat
3
- version: 4.14.0
3
+ version: 4.15.1
4
4
  description: >-
5
5
  公众号文章全生命周期子技能(write 族):交付包、审校改写、质量三关、状态同步、微信内联排版与发布清单。
6
6
  支持 forward(底稿→公众号)、reverse(选题原创→回推)、站外拉取(在线精选站→reverse+pending)三条路径;
@@ -49,14 +49,15 @@ compatibility: topmind workspace. Writes via UTR workspace-write / Desktop Works
49
49
  | `scripts/push-to-topstream.py` | 可选回推:公众号稿降级为纯 Markdown notes |
50
50
  | `scripts/lint-wechat.py` | 排版体检 + 自动修复(中英文间距、段长、AI 腔…) |
51
51
  | `scripts/md2wechat.py` | Markdown → 全内联 HTML;**必加 `--embed-images`** |
52
- | `scripts/scan_ai_flavor.py` | 中文去 AI 味扫描(与 `qu-aiwei-zh` 同源) |
52
+ | `scripts/scan_ai_flavor.py` | 中文去 AI 味扫描 —— **转发器**,实现在 canonical `qu-aiwei-zh`(`--which` 可查解析结果;本目录不含实现,避免副本漂移) |
53
+ | `scripts/audit-provenance.py` | **改稿保真审计**:双向逐段溯源(本稿→源稿 / 源稿→本稿),抓悄悄扩写与被落下的段。有源稿时定稿必跑 |
53
54
 
54
55
  ```bash
55
56
  # 路径解析:CLI --base/--workspace → env TOPMIND_WECHAT_BASE / TOPMIND_WORKSPACE / TOPSTREAM_ROOT → 惯例
56
57
  export TOPMIND_WORKSPACE=/path/to/workspace # 推荐
57
58
  python3 scripts/new-article.py --slug demo --title "标题" --direction reverse
58
59
  python3 scripts/lint-wechat.py --input <包>/公众号稿.md --fix
59
- python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # 目标 ≥85
60
+ python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # 总分与作者姿态分都 ≥85
60
61
  python3 scripts/md2wechat.py --input <包>/公众号稿.md --out-dir <包> --slug demo \
61
62
  --asset-root <素材根> --embed-images
62
63
  python3 scripts/sync-status.py --set 定稿 <包> --apply
@@ -147,6 +148,13 @@ python3 scripts/sync-status.py --set 定稿 <包> --apply
147
148
  - 改稿续写:正文已有数字**回源重核**(上一轮文本最不可信)
148
149
  - 多口径(主轮/复跑)显式拆开;表格从数据源生成,禁止手抄
149
150
  - 外部工具改过的稿:**先核数字再动文字**;「比值对但绝对值错」= 全段重核
151
+ - **有源稿时(`reverse` / 站外拉取)跑一次双向溯源审计**,别靠「我记得只改了三处」:
152
+
153
+ ```bash
154
+ python3 scripts/audit-provenance.py --draft <包>/公众号稿.md --source <包>/源稿-*.md
155
+ ```
156
+
157
+ 正向查「本稿有、源稿找不到」(扩写藏在这里),反向查「源稿有、本稿落下」。**退出码 1 不是失败,是「有待判定项」**——每一项要么归入已声明的修正/增补,要么就是不该有的改动;逐条在包内 README 声明后即收口。源稿里后加的块(勘误等)用 `--skip '^>\s*\[!'` 排除。
150
158
 
151
159
  ### 关 2 · 逻辑
152
160
 
@@ -156,13 +164,16 @@ python3 scripts/sync-status.py --set 定稿 <包> --apply
156
164
  ### 关 3 · 文字(去 AI 味)
157
165
 
158
166
  ```bash
159
- python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # ≥85(人话)
167
+ python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # 总分 ≥85(人话)
160
168
  ```
161
169
 
170
+ - **同时看「作者姿态分」(E 类,与总分独立)**,目标同样 ≥85。实测两者会严重背离:同一篇 AI 完整版总分 92 / 姿态 21,手改发布版 100 / 100——**总分只差 8 分,姿态差 79 分**,只看总分会被骗
171
+ - ⚠️ 这里调的是 canonical `qu-aiwei-zh` 的脚本(本目录的 `scripts/scan_ai_flavor.py` 是转发器)。**若输出里没有「作者姿态层」一节,说明拿到的是 E 类之前的旧版本**,分数不可信——先 `--which` 确认实际执行的是哪一份
162
172
  - 删套话/黑话/工程圈行话;降调段末加粗金句
163
173
  - **满分 ≠ 有人味**:再查「段末金句癖 / 节奏过分整齐 / 没有场景与我 / 报告体标注」
164
174
  - **口语化 ≠ 有人味**:删社交垫词(元叙述、空转过渡、姿态句)
165
175
  - 判据:**这句话删掉之后,读者少知道了什么?**
176
+ - **姿态分只对文章有效**:清单 / 词表 / 说明书不适用(检测器会把被引用的反例当真命中),脚本命中 ≥70% 落在表格行时会提示「疑似清单文档」,看到提示先确认再改
166
177
 
167
178
  详见 [`references/writing-quality.md`](references/writing-quality.md)。
168
179
 
@@ -60,21 +60,32 @@ python3 scripts/sync-status.py --set 定稿 <包> --apply
60
60
 
61
61
  | 输出 | 口径 | 用途 |
62
62
  |------|------|------|
63
- | frontmatter `word_count` | 纯中文 `\[一-鿿\]` | 映射真源 |
63
+ | frontmatter `word_count` | 正文**全文**的 `[\u4e00-\u9fff]` 计数 —— **frontmatter 之后的一切都算,含图注、也含图片路径里的中文** | 映射真源 |
64
64
  | lint「字数」 | 视觉长度(中 1 + 英数 ×0.6,URL 不计) | 阅读时长 / 段长 |
65
65
  | md2wechat「正文字数」 | 渲染后字符 | 仅展示 |
66
66
 
67
+ ⚠️ `word_count` **只能由 `sync-status.py --apply` 回写,禁止手算**。它的口径与直觉不同:一篇 9 图稿,光 `images/NN-中文名.png` 这一串路名就贡献 40+ 字。自制口径(如「剔掉图注与路径」)会得出一个更小、更像「正文字数」的值,写进 frontmatter 后会被 `sync-mapping.py` 判为漂移 —— 实测一篇 1,027 vs 1,450,而错值同时落进 `topic.md` 总表与包内 README,**一个错值三处落盘**。
68
+
67
69
  ## 定稿验收命令串
68
70
 
69
71
  ```bash
70
- python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # ≥85
72
+ python3 scripts/scan_ai_flavor.py <包>/公众号稿.md # 总分 ≥85 且「作者姿态分」≥85
71
73
  python3 scripts/lint-wechat.py --input <包>/公众号稿.md
74
+ python3 scripts/audit-provenance.py --draft <包>/公众号稿.md --source <包>/源稿-*.md
72
75
  python3 scripts/sync-mapping.py --no-topstream
73
76
  python3 scripts/sync-status.py
74
77
  python3 scripts/md2wechat.py --input <包>/公众号稿.md --out-dir <包> \
75
78
  --slug <slug> --asset-root <素材根> --embed-images
76
79
  ```
77
80
 
81
+ 第 3 行只在**有源稿**时跑(`reverse` / 站外拉取;`forward` 的底稿在 `notes/` 也一样适用)。退出码 **0 = 双向干净**、**1 = 有待判定项**、2 = 参数错。**1 不等于稿子有问题**——它只是把「本稿有源稿找不到」和「源稿有本稿落下」两类段摆出来,由人逐条判:归入已声明的修正/增补,或改回去。判定完把结论写进包内 `README.md`,这一关才算收口。
82
+
83
+ 三个易踩的点:
84
+
85
+ - **阈值别乱调**:默认 `0.72`。调高会把正常的改写(换词、调序)判成新增,调低会漏掉真扩写。
86
+ - **源稿后加的块要 `--skip`**:若源稿顶部有本包后补的勘误/说明块(`> [!note] …`),它在本稿侧不存在,会恒定报一条反向待判定。用 `--skip '^>\s*\[!'` 排除,别去改稿子。
87
+ - **图注不算遗漏**:脚本反向侧额外建了一个「去掉 `▲ 图 N` 前缀」的候选池,图注编号不会被误判为漏段。
88
+
78
89
  ## 收尾
79
90
 
80
91
  1. 更新专题 `topic.md` 总表(派生视图)
@@ -44,7 +44,7 @@
44
44
  |---|---|---|
45
45
  | 中文长文 / 公众号改稿 | `humanizer-zh` + `qu-aiwei-zh` | 先立边界,再扫描定位(默认组合) |
46
46
  | 只要分数和命中清单 | `qu-aiwei-zh` | 跑脚本,不改稿 |
47
- | 随笔要「加声音」 | `qu-aiwei-zh` + `references/pan-style.md` | 用表达方式加,不编故事 |
47
+ | 随笔要「加声音」 | `qu-aiwei-zh` + `qu-aiwei-zh/references/pan-style.md` | 用表达方式加,不编故事 |
48
48
  | 英文文本 | `humanizer` | `humanizer-zh` 只针对中文 |
49
49
  | 清单 / 词表 / 说明书 | 都不用 E 类姿态分 | 这类文体靠列举反例,检测器会把反例当真命中 |
50
50
 
@@ -70,12 +70,20 @@
70
70
 
71
71
  ### 第二步:扫描定位(`qu-aiwei-zh`)
72
72
 
73
- 目标:`qu-aiwei-zh` 扫描 **≥ 85 分**。
73
+ 目标:`qu-aiwei-zh` 扫描 **总分 ≥ 85**,且**「作者姿态分」(E 类)也 ≥ 85**。两个分数独立,都要看。
74
74
 
75
75
  ```bash
76
+ python3 scripts/scan_ai_flavor.py <稿>.md
77
+ # 或直连 canonical(同一个脚本)
76
78
  python3 ~/.workbuddy/skills/qu-aiwei-zh/scripts/scan_ai_flavor.py <稿>.md
77
79
  ```
78
80
 
81
+ `scripts/scan_ai_flavor.py` 是**转发器**,实现在 canonical `qu-aiwei-zh`,两条命令等价(`--which` 可查解析到哪一份)。
82
+
83
+ ⚠️ **认准「作者姿态层」这一节**:姿态分是后加的维度,早期版本没有。若输出里没有这一节,说明调用到了旧版脚本,**分数不可信**。实测同一篇稿:AI 完整版总分 92 / 姿态 21,手改发布版 100 / 100 —— 总分只差 8 分,姿态差 79 分,**只看总分会被骗**。
84
+
85
+ ⚠️ **姿态分只对文章有效**:清单 / 词表 / 说明书不适用——这类文体靠列举反例工作,检测器会把被引用的例子当成真命中。脚本命中 ≥70% 落在表格行时会提示「疑似清单文档」,看到提示先确认文体再改。
86
+
79
87
  ### 删套话
80
88
 
81
89
  值得注意 / 值得记录 / 值得单独强调 / 本质上 / 事实上 / 意味着 / 由此可见 / 不难看出 / 换句话说 / 换言之 / 殊途同归 / 显而易见 / 众所周知 / 更进一步说
@@ -114,7 +122,7 @@ python3 ~/.workbuddy/skills/qu-aiwei-zh/scripts/scan_ai_flavor.py <稿>.md
114
122
 
115
123
  有「我」、有具体场景、有具体数字与人名、有不确定性表达(「其实」「不过」「还在想」)、句子长短交替、有真实细节而不是「很多人」「大多数」。
116
124
 
117
- ⚠️ 这一段说的是**表达方式**。原文没有第一人称、没有数字时,不许靠这一条去补——那正好踩中 `humanizer-zh` 的优先级第 1 条。加声音的手段是句长节奏、设问、括号自注(见 `pan-style.md`),配合删掉元叙述和教学腔。`humanizer-zh` 里写着同一句话:「用户要求增强个人风格时,用表达方式实现,不编故事。」
125
+ ⚠️ 这一段说的是**表达方式**。原文没有第一人称、没有数字时,不许靠这一条去补——那正好踩中 `humanizer-zh` 的优先级第 1 条。加声音的手段是句长节奏、设问、括号自注(见 `qu-aiwei-zh/references/pan-style.md`),配合删掉元叙述和教学腔。`humanizer-zh` 里写着同一句话:「用户要求增强个人风格时,用表达方式实现,不编故事。」
118
126
 
119
127
  英文文本才走 `humanizer`:它的取向是 **Add soul**(主动注入个性),与中文改稿的**保真优先**方向相反,别把它的思路套到中文稿上。
120
128