Summary
盲区扫描——读昨天你与 AI 的全部对话,照出暴露的思维盲区(不是不懂的知识,是让某类真相一直看不见的思维习惯),再从微信读书挑一本书的一章精准补上,落成一篇完整分析笔记。Use when user says '扫盲区', '盲区', '照盲区', '看看我的思维盲区', '我昨天想漏了什么', 'blind…
lijigang/ljg-skills
盲区扫描——读昨天你与 AI 的?
npx skills add lijigang/ljg-skills --skill ljg-blind
盲区扫描——读昨天你与 AI 的全部对话,照出暴露的思维盲区(不是不懂的知识,是让某类真相一直看不见的思维习惯),再从微信读书挑一本书的一章精准补上,落成一篇完整分析笔记。Use when user says '扫盲区', '盲区', '照盲区', '看看我的思维盲区', '我昨天想漏了什么', 'blind…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Systematically identify what's missing in non-fiction writing—both blind spots (inherent limita…
316 installsINTERNAL sub-agent for blind 7-dim rubric scoring. **NOT a user-facing skill — do NOT invoke fr…
207 installsDetect and exploit blind Server-Side Request Forgery (SSRF) using out-of-band techniques such a…
139 installsSurface the user's unknown unknowns before work starts. Use when the user is entering an unfami…
127 installsOther skills from lijigang/ljg-skills · top by installs.
npx skills add lijigang/ljg-skills
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
master
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
12,075 B
SUMMARY.md
786 B
读你昨天跟 AI 的全部对话,照出那个你自己看不见的思维盲区,从微信读书点亮补它的一章。
盲区不是知识缺口。不是"没读过某本书""不知道某个事实"——那种缺口,查一下就补上了。
盲区是一种结构性的思维习惯,它让某一类真相对你系统性地不可见。你不是想不到,是这个习惯让你压根没往那个方向看。它藏在你怎么想事情的方式里,不藏在你想的内容里。
所以证据不在"他说错了什么"。在——他没往哪看,他在哪绕了,他默认了什么却从没检。
从昨天的对话里找这五种。每一种都要落到具体的话上,不能凭感觉。
从信号里挑 1 个作为今天的盲区。宁可一个说透,不要五个都点一遍——盲区的密度低于精度。判据三条:
${LIFEOSDIR:-$HOME/.codex/LIFEOS}/USER/TELOS/PRINCIPALTELOS.md 确认主线。# 默认昨天;用户传了 YYYY-MM-DD 就用那天(macOS BSD date)
target=${1:-$(date -v-1d +%Y-%m-%d)}
会话文件在 $HOME/.codex/sessions/YYYY/MM/DD/*.jsonl。目录日期按本机时间记录 session 的开始日,行内 timestamp 是 UTC;因此同时扫目标日与前一日目录,再按本机日期过滤消息。只读取顶层 task 的 responseitem / message / user / inputtext,排除 session_meta.payload.source.subagent 存在的子 agent 会话,以及 harness 包装和本次调用自身:
target=<上一步的日期>
out=/tmp/ljg-blind-${target}.txt
: > "$out"
previous_dir=$(date -j -v-1d -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
target_dir=$(date -j -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
for day_dir in "$previous_dir" "$target_dir"; do
session_dir="$HOME/.codex/sessions/$day_dir"
[ -d "$session_dir" ] || continue
find "$session_dir" -type f -name '*.jsonl' -print0
done | while IFS= read -r -d '' session_file; do
# Codex 将子 agent 与顶层 task 放在同一日期目录;从 session_meta 排除它们。
if jq -e 'select(.type=="session_meta") |
(.payload.source | type == "object" and has("subagent"))' \
"$session_file" >/dev/null 2>&1; then
continue
fi
jq -r --arg target "$target" '
def local_epoch:
sub("\\.[0-9]+Z$"; "Z") | fromdateiso8601;
select(.type=="response_item"
and .payload.type=="message"
and .payload.role=="user")
| (.timestamp | local_epoch) as $epoch
| select(($epoch | strflocaltime("%Y-%m-%d")) == $target)
| ([.payload.content[]?
| select(.type=="input_text")
| .text] | join("\n")) as $text
| select($text | length > 0)
| select(($text | test("^(<recommended_plugins>|<environment_context>|<task-notification>)")) | not)
| select(($text | test("(?i)(ljg-blind|扫盲区)")) | not)
| "[" + ($epoch | strflocaltime("%H:%M")) + "] " + $text
' "$session_file" 2>/dev/null >> "$out"
done
wc -m "$out"
材料若 >50KB,按对话分段读,先识别每段在讨论什么主题,再往下看。可辅助看几条相邻的 assistant 回复定上下文。
数据稀薄兜底:当天真人输入 <200 字或没有对话——直接在输出里写明「当天对话稀薄 / 无」,不强造盲区。宁可交白卷,不许编。
按上面「五种盲区信号」过一遍,每命中一处都记下证据(哪几句话、什么转折让你看出来的)。然后按「选哪一个」的三条判据,选出 1 个最要紧的盲区。
调 weread skill(WEREADAPIKEY 在环境变量里,格式 wrk-xxxx;若没有,提示 export WEREADAPIKEY=<key>)。三步:
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/store/search","keyword":"<核心词>","count":8,"skill_version":"1.0.3"}' \
| jq -r '.results[].books[]?.bookInfo | "\(.bookId)\t\(.title)\t\(.author)\t评分\(.newRating)"'
从返回里挑评分尽量 ≥750(新版评分是 ×100,即 7.5)、且最贴盲区的 1 本,记 bookId。评分不是唯一标准——对症 > 高分,一本 7.4 但正打在盲区上,胜过一本 8.5 但擦边的。
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/book/chapterinfo","bookId":"<bookId>","skill_version":"1.0.3"}' \
| jq -r '.chapters[] | select(.level<=2) | "\(.chapterUid)\t[\(.level)] \(.title)\t\(.wordCount)字"'
记 chapterUid、章节标题、wordCount。
wordCount / 280(中文阅读速度)向上圆到 5 的倍数。无 wordCount 就按目录感觉在 15-45 分钟之间估一个;标题带「上篇/下篇」「卷一」这类宏观词,时长再 ×1.5。bookId / chapterUid,必须先编码。用技能自带工具生成:bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>" "<chapterUid>"
工具输出形如:
https://weread.qq.com/web/reader/{encodedBookId}k{encodedChapterUid}
把输出的完整 URL 写进笔记。不要手拼编码值,也不要把裸 ID 直接塞进 /web/reader/。
兜底:搜索全空 / 没对症章节 → 选整本相关书,只传 bookId 生成网页版书籍入口:
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>"
文里说明为什么没能精准到章。
获取时间戳:date +%Y%m%dT%H%M%S 和 date "+%Y-%m-%d %a %H:%M"(时间用当前,不是 target)。
写入 ~/Context/{时间戳}--盲区-{主题}__blind.org。org-mode 格式,禁止 markdown 语法。
正文模板:
#+title: 盲区扫描 · {一句话点出这个盲区}
#+date: [YYYY-MM-DD Weekday HH:MM]
#+filetags: :blind:weread:topology:
* 昨天你在想什么
<1-2 段。当天对话的思维地形——哪几件事、绕着哪个核心在转。给证据:哪几句话看出来的。不流水账,抓主线。>
* 照出来的盲区
<挑出的那 1 个盲区。先一句话点破它是哪种(绕开点 / 空转框架 / 单一取景框 / 未检前提 / 相邻空缺)。再 2-3 段说清:它具体长什么样、昨天哪几处暴露了它、为什么你自己看不见。要点到杠杆——补上之后会打开什么。>
* 这一章给你
- 书:《书名》 — 作者
- 章节:<章节标题>
- 时长:约 N 分钟
- 链接:[[https://weread.qq.com/web/reader/ENCODED_BOOKkENCODED_CHAPTER][在微信读书网页版阅读本章]]
- 为什么是它:<3-4 句。把盲区和这一章对上——这章具体讲什么、怎么补这个盲区。不要泛泛说"开阔视野",要说清这一章的哪个东西正对这个盲区的哪个缺口。>
报告文件路径给用户。
这篇笔记是写给一个跟你长期一起思考的人的,不是报告,不是陌生读者。
/ / ,不要 #字,斜体 /字/,等宽 ~code~-,不要 ( 在 org 是标题)[[url][text]],不要 [text](url)-----,不要 ---;不要 markdown 的 > 引用https://weread.qq.com/web/reader/ 开头,并由工具用非空 bookId、chapterUid 生成?https://weread.qq.com/web/reader/573976?chapterUid=13 会返回 404;必须用 Tools/WeReadWebUrl.ts 分别编码 bookId 与 chapterUid,再用 k 连接。/web/reader/{encodedBookId}k{encodedChapterUid};省掉章节编码只会打开整本书入口。Pulse 每天早上有个自动早信(陈平安思维拓扑.org),是陈平安的口气、每天一封、挑一个洞。ljg-blind 是随手调的分析版——同一套「读昨天 → 看盲区 → weread 选章」的底子,但更系统、专照盲区、分析写得更足,而且能扫任意一天(传日期参数)。想要一封信,等早信;想主动查某天的盲区、要一篇能存档的分析,用 ljg-blind。