ljg-blind
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese盲区扫描
Blind Spot Scan
读你昨天跟 AI 的全部对话,照出那个你自己看不见的思维盲区,从微信读书点亮补它的一章。
Read all your conversations with AI from yesterday, identify the cognitive blind spot you can't see yourself, and select a targeted chapter from WeChat Reading to fill it.
盲区是什么
What is a Blind Spot
盲区不是知识缺口。不是"没读过某本书""不知道某个事实"——那种缺口,查一下就补上了。
盲区是一种结构性的思维习惯,它让某一类真相对你系统性地不可见。你不是想不到,是这个习惯让你压根没往那个方向看。它藏在你怎么想事情的方式里,不藏在你想的内容里。
所以证据不在"他说错了什么"。在——他没往哪看,他在哪绕了,他默认了什么却从没检。
A blind spot is not a knowledge gap. It's not "having never read a certain book" or "not knowing a certain fact"—those gaps can be filled with a quick lookup.
A blind spot is a structural thinking habit that makes a certain type of truth systematically invisible to you. It's not that you can't think of it, but this habit keeps you from looking in that direction at all. It hides in how you think, not in what you think about.
So the evidence doesn't lie in "what he said wrong". It lies in—where he didn't look, where he circled around, what he took for granted without ever checking.
五种盲区信号
Five Blind Spot Signals
从昨天的对话里找这五种。每一种都要落到具体的话上,不能凭感觉。
- 绕开点——一个难题他打开了,又飞快合上。证据:问题抛出,转头换话题,或一句"这个先不管"滑过去。
- 空转框架——反复换视角切同一个问题,没有一个落地。证据:一个问题被套上三四副框架,每副都浅尝辄止,最后没结论。
- 单一取景框——一整天只调用一两副 f(逢事就"约束""进化""博弈"),没试过别的镜子。这是他最隐蔽的盲区:越趁手的 f,越挡住别的 f 能照见的东西。(继刚看世界 = f(x),四轴是他默认的四副 f;正因为默认,才最该查他今天是不是又只用了其中一副。)
- 未检前提——一个默认假设贯穿全程,他当硬约束在用,从没问过它是不是假墙。证据:某个"本来就该这样"的说法,反复出现却从未被他自己质疑。
- 相邻空缺——从他问的东西反推,本该问、却没问的那个角落。不是凭空猜,是他自己的线索指向那儿。
Look for these five signals in yesterday's conversations. Each must be tied to specific words, not just a feeling.
- Avoidance Point — A difficult question is raised, then quickly closed. Evidence: The question is brought up, then the topic is switched abruptly, or brushed off with a line like "let's put this aside for now".
- Spinning Framework — Repeatedly switching perspectives on the same issue without any concrete progress. Evidence: A single problem is framed in three or four different ways, each only scratched the surface, with no conclusion in the end.
- Single Viewfinder — Only one or two frameworks are used all day (e.g., "constraint", "evolution", "game theory" for every issue), without trying other lenses. This is the most hidden blind spot: the more handy a framework is, the more it blocks what other frameworks can reveal. (Jigang Li views the world as f(x), with four default frameworks; precisely because they're default, it's critical to check if only one was used today.)
- Unchecked Premise — A default assumption runs through the entire conversation, treated as a hard constraint without ever questioning if it's a false wall. Evidence: A statement like "this is how it should be" is repeated but never challenged by himself.
- Adjacent Gap — From what he asked, infer the corner that should have been asked but wasn't. Don't guess out of thin air; it must be pointed to by his own clues.
选哪一个
Which One to Choose
从信号里挑 1 个作为今天的盲区。宁可一个说透,不要五个都点一遍——盲区的密度低于精度。判据三条:
- 杠杆——补上它,下一步打开的可能性最多。
- 真盲——是他自己看不见的,不是知道了在拖的。
- 对位 mission——贴 M0(找新取景框)/ M1(求本质)。盲区若正好挡在他的主线上,优先。读 确认主线。
~/.claude/PAI/USER/TELOS/MISSION.md
Pick 1 blind spot from the signals. It's better to explain one thoroughly than to touch on five briefly—precision matters more than density. Three criteria:
- Leverage — Filling this blind spot will unlock the most possibilities for the next step.
- True Blindness — It's something he truly can't see, not something he knows about but is putting off.
- Mission Alignment — Aligns with M0 (finding new viewfinders) / M1 (seeking essence). If the blind spot is directly blocking his main line of thinking, prioritize it. Check to confirm the main line.
~/.claude/PAI/USER/TELOS/MISSION.md
操作步骤
Operation Steps
第一步 · 定日期
Step 1 · Set Date
bash
undefinedbash
undefined默认昨天;用户传了 YYYY-MM-DD 就用那天(macOS BSD date)
Default to yesterday; use the passed YYYY-MM-DD if provided (macOS BSD date)
target=${1:-$(date -v-1d +%Y-%m-%d)}
undefinedtarget=${1:-$(date -v-1d +%Y-%m-%d)}
undefined第二步 · 捞当天的对话
Step 2 · Retrieve Conversations from the Day
会话文件在 ,每行一条消息(type=user / assistant / system)。只要继刚的真人发言,滤掉工具回显和子 agent 噪声:
~/.claude/projects/-Users-lijigang*/*.jsonlbash
target=<上一步的日期>
out=/tmp/ljg-blind-${target}.txt
: > "$out"Conversation files are stored in , with one message per line (type=user / assistant / system). Only keep real human messages from Jigang Li, filtering out tool echoes and sub-agent noise:
~/.claude/projects/-Users-lijigang*/*.jsonlbash
target=<date from previous step>
out=/tmp/ljg-blind-${target}.txt
: > "$out"只取顶层会话文件(排除 subagents/workflows),只留真人纯文本
Only take top-level conversation files (exclude subagents/workflows), keep only real human plain text
for f in $(rg -l ""timestamp":"${target}" ~/.claude/projects/-Users-lijigang*/ 2>/dev/null | grep -vE 'subagents/|workflows/'); do
jq -r 'select(.type=="user" and ((.timestamp // "") | startswith("'"${target}"'"))) |
(.message.content) as $c |
(if ($c|type)=="string" then $c
elif ($c|type)=="array" then ([$c[] | select(.type=="text") | .text] | join(" "))
else "" end) as $t |
select($t|length>0) |
"[" + (.timestamp|.[11:16]) + "] " + $t' "$f" 2>/dev/null >> "$out"
done
for f in $(rg -l ""timestamp":"${target}" ~/.claude/projects/-Users-lijigang*/ 2>/dev/null | grep -vE 'subagents/|workflows/'); do
jq -r 'select(.type=="user" and ((.timestamp // "") | startswith("'"${target}"'"))) |
(.message.content) as $c |
(if ($c|type)=="string" then $c
elif ($c|type)=="array" then ([$c[] | select(.type=="text") | .text] | join(" "))
else "" end) as $t |
select($t|length>0) |
"[" + (.timestamp|.[11:16]) + "] " + $t' "$f" 2>/dev/null >> "$out"
done
滤掉工具回显 / 系统噪声 / 本次调用请求自身
Filter out tool echoes / system noise / current call request itself
grep -vE 'tool_use_id|system-reminder|caveat|Caveat|local-command|command-name|command-message|<task-notification>|ljg-blind|扫盲区' "$out" > "${out}.f" && mv "${out}.f" "$out"
wc -c "$out"
材料若 >50KB,按对话分段读,先识别每段在讨论什么主题,再往下看。可辅助看几条相邻的 assistant 回复定上下文。
**数据稀薄兜底**:当天真人输入 <200 字或没有对话——直接在输出里写明「当天对话稀薄 / 无」,**不强造盲区**。宁可交白卷,不许编。grep -vE 'tool_use_id|system-reminder|caveat|Caveat|local-command|command-name|command-message|<task-notification>|ljg-blind|扫盲区' "$out" > "${out}.f" && mv "${out}.f" "$out"
wc -c "$out"
If the material is >50KB, read it in conversation segments, first identify the topic of each segment, then proceed. You can refer to a few adjacent assistant replies to confirm context.
**Fallback for Sparse Data**: If the real human input for the day is <200 words or there are no conversations — clearly state "Sparse/no conversations for the day" in the output, **do not force a blind spot identification**. It's better to submit an empty result than to fabricate one.第三步 · 读出盲区
Step 3 · Identify the Blind Spot
按上面「五种盲区信号」过一遍,每命中一处都记下证据(哪几句话、什么转折让你看出来的)。然后按「选哪一个」的三条判据,选出 1 个最要紧的盲区。
Go through the "Five Blind Spot Signals" above, noting evidence (specific sentences, transitions that reveal it) for each hit. Then use the three criteria in "Which One to Choose" to select 1 most critical blind spot.
第四步 · 微信读书选章
Step 4 · Select Chapter from WeChat Reading
调 weread skill( 在环境变量里,格式 ;若没有,提示 )。三步:
WEREAD_API_KEYwrk-xxxxexport WEREAD_API_KEY=<key>- 搜书——从盲区里抽 1-2 个核心词当 keyword:
bash
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 但擦边的。
- 看目录——挑最对症那 1 章,不是整本、不是序章泛泛:
bash
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。
-
估时长——(中文阅读速度)向上圆到 5 的倍数。无 wordCount 就按目录感觉在 15-45 分钟之间估一个;标题带「上篇/下篇」「卷一」这类宏观词,时长再 ×1.5。
wordCount / 280 -
构造链接:
weread://reading?bId={bookId}&chapterUid={chapterUid}
兜底:搜索全空 / 没对症章节 → 选整本相关书,链接退到 ,文里说明为什么没能精准到章。
weread://reading?bId={bookId}Call the weread skill ( is in environment variables, format ; if not present, prompt ). Three steps:
WEREAD_API_KEYwrk-xxxxexport WEREAD_API_KEY=<key>- Search for Books — Extract 1-2 core keywords from the blind spot:
bash
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":"<core keyword>","count":8,"skill_version":"1.0.3"}' \
| jq -r '.results[].books[]?.bookInfo | "\(.bookId)\t\(.title)\t\(.author)\tRating \(.newRating)"'From the results, select 1 book with a rating ≥750 (new rating is ×100, i.e., 7.5) that best matches the blind spot, and note the bookId. Rating is not the only criterion — relevance > high rating; a book with 7.4 rating that directly targets the blind spot is better than an 8.5-rated book that only touches on it.
- Check Table of Contents — Select the 1 most relevant chapter, not the whole book or a general preface:
bash
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) characters"'Note the chapterUid, chapter title, and wordCount.
-
Estimate Reading Time —(Chinese reading speed), rounded up to the nearest multiple of 5. If there's no wordCount, estimate between 15-45 minutes based on the table of contents; if the title includes macro terms like "Part 1/Part 2" or "Volume 1", multiply the time by 1.5.
wordCount / 280 -
Construct Link:
weread://reading?bId={bookId}&chapterUid={chapterUid}
Fallback: If search returns no results / no relevant chapters → select the entire relevant book, fallback to link , and explain in the text why it couldn't be narrowed down to a chapter.
weread://reading?bId={bookId}第五步 · 写笔记
Step 5 · Write the Note
获取时间戳: 和 (时间用当前,不是 target)。
date +%Y%m%dT%H%M%Sdate "+%Y-%m-%d %a %H:%M"写入 。org-mode 格式,禁止 markdown 语法。
~/Documents/notes/{时间戳}--盲区-{主题}__blind.org正文模板:
org
#+title: 盲区扫描 · {一句话点出这个盲区}
#+date: [YYYY-MM-DD Weekday HH:MM]
#+filetags: :blind:weread:topology:
* 昨天你在想什么
<1-2 段。当天对话的思维地形——哪几件事、绕着哪个核心在转。给证据:哪几句话看出来的。不流水账,抓主线。>
* 照出来的盲区
<挑出的那 1 个盲区。先一句话点破它是哪种(绕开点 / 空转框架 / 单一取景框 / 未检前提 / 相邻空缺)。再 2-3 段说清:它具体长什么样、昨天哪几处暴露了它、为什么你自己看不见。要点到杠杆——补上之后会打开什么。>
* 这一章给你
- 书:《书名》 — 作者
- 章节:<章节标题>
- 时长:约 N 分钟
- 链接:[[weread://reading?bId=XXX&chapterUid=YYY][在微信读书打开]]
- 为什么是它:<3-4 句。把盲区和这一章对上——这章具体讲什么、怎么补这个盲区。不要泛泛说"开阔视野",要说清这一章的哪个东西正对这个盲区的哪个缺口。>报告文件路径给用户。
Get timestamps: and (use current time, not target time).
date +%Y%m%dT%H%M%Sdate "+%Y-%m-%d %a %H:%M"Write to . Use org-mode format, prohibit markdown syntax.
~/Documents/notes/{timestamp}--blind-spot-{topic}__blind.orgBody template:
org
#+title: Blind Spot Scan · {One-sentence summary of the blind spot}
#+date: [YYYY-MM-DD Weekday HH:MM]
#+filetags: :blind:weread:topology:
* What You Were Thinking Yesterday
<1-2 paragraphs. The thinking landscape of the day's conversations — what topics were discussed, what core they revolved around. Provide evidence: which sentences reveal this. Don't just list events, focus on the main line.>
* Identified Blind Spot
<The 1 selected blind spot. First, state in one sentence what type it is (avoidance point / spinning framework / single viewfinder / unchecked premise / adjacent gap). Then use 2-3 paragraphs to explain: what it specifically looks like, where it was exposed yesterday, why you couldn't see it yourself. Highlight the leverage — what possibilities will unlock after filling it.>
* This Chapter is for You
- Book: 《Book Title》 — Author
- Chapter: <Chapter Title>
- Estimated Time: About N minutes
- Link: [[weread://reading?bId=XXX&chapterUid=YYY][Open in WeChat Reading]]
- Why This Chapter: <3-4 sentences. Connect the blind spot to this chapter — what this chapter specifically talks about, how it fills the blind spot. Don't vaguely say "broaden horizons", explain exactly which part of this chapter targets which gap in the blind spot.>Report the file path to the user.
语气规则(写笔记时守住)
Tone Rules (Strictly Follow When Writing Notes)
这篇笔记是写给一个跟你长期一起思考的人的,不是报告,不是陌生读者。
- 中文写作,禁翻译腔。少用「然而 / 此外 / 值得注意的是」;少用名词化(「对…的理解」→「懂…」,「做出…的决定」→「决定」);主语能省则省;短句优先。写完默念一遍,问:一个没读过翻译小说的中国人会这么说吗?汪曾祺会这么写吗?卡的地方整段重写,不是换个词。
- 禁切痕风金属比喻。不写「这一刀」「再狠一层」「锋利的话」「砸实」「钉死」「硬话」这一整套自夸元修辞。盲区照得准不准,读者看得出,不用作者吆喝力度。
- 有温度、有毛刺、有判断。可以有立场,别装中立到虚伪;但标清楚这是判断,不是客观事实。
This note is for someone who thinks with you long-term, not a report or for unfamiliar readers.
- Write in Chinese, avoid translationese. Use fewer words like "然而 / 此外 / 值得注意的是"; avoid nominalization ("对…的理解" → "懂…", "做出…的决定" → "决定"); omit subjects when possible; prioritize short sentences. After writing, read it aloud and ask: Would a Chinese person who hasn't read translated novels say this? Would Wang Zengqi write this? Rewrite entire paragraphs if they feel awkward, don't just replace words.
- Avoid metal metaphors with cutting-edge style. Do not use phrases like "this cut", "go deeper", "sharp words", "solidify", "nail down", "hard words"—this set of self-praising meta-rhetoric is prohibited. Readers can tell if the blind spot is identified accurately; there's no need to boast about the intensity.
- Be warm, have edges, make judgments. You can have a stance, don't pretend to be neutral to the point of hypocrisy; but clearly mark that it's a judgment, not an objective fact.
org 严格语法(禁混 markdown)
Strict org Syntax (No Mixed Markdown)
- 标题用 /
*/**,不要***# - 加粗 ,斜体
*字*,等宽/字/~code~ - 列表用 ,不要
-(*在 org 是标题)* - 链接 ,不要
[[url][text]][text](url) - 分隔线 ,不要
-----;不要 markdown 的---引用>
- Use /
*/**for headings, not***# - Bold: , italic:
*text*, monospaced:/text/~code~ - Lists use , not
-(since*is for headings in org)* - Links: , not
[[url][text]][text](url) - Dividers: , not
-----; do not use markdown's---for quotes>
自检(写完前过一遍)
Self-Check (Go Through Before Finishing)
- 盲区有具体证据吗?每一处都能指到昨天哪几句话?没有就退回第三步。
- 只选了 1 个盲区、说透了吗?还是贪多点了三四个?
- 章节链接里 bookId 和 chapterUid 都不为空、格式对?
- 翻译腔查了吗?名词化、「是…的」句、可省的连词,扫一遍。
- 切痕风金属比喻查了吗?「这一刀」「钉死」「砸实」一个不留。
- 三段都有内容、不空段?
- Does the blind spot have specific evidence? Can each point be traced back to specific sentences from yesterday? If not, go back to Step 3.
- Did you only select 1 blind spot and explain it thoroughly? Or did you greedily point out three or four?
- Are bookId and chapterUid non-empty and formatted correctly in the chapter link?
- Did you check for translationese? Scan for nominalization, sentences with "是…的", and unnecessary conjunctions.
- Did you check for cutting-edge metal metaphors? Remove all phrases like "this cut", "nail down", "solidify".
- Do all three sections have content, no empty paragraphs?
和「早信」的分工
Division of Labor with "Morning Letter"
Pulse 每天早上有个自动早信(),是陈平安的口气、每天一封、挑一个洞。ljg-blind 是随手调的分析版——同一套「读昨天 → 看盲区 → weread 选章」的底子,但更系统、专照盲区、分析写得更足,而且能扫任意一天(传日期参数)。想要一封信,等早信;想主动查某天的盲区、要一篇能存档的分析,用 ljg-blind。
陈平安思维拓扑.orgPulse sends an automatic morning letter () every morning in Chen Ping'an's tone, picking one gap each day. ljg-blind is the on-demand analysis version—it shares the same foundation of "read yesterday → identify blind spot → select weread chapter", but is more systematic, focuses specifically on blind spots, provides more in-depth analysis, and can scan any day (by passing a date parameter). If you want a letter, wait for the morning letter; if you want to actively check the blind spot of a certain day and get a savable analysis, use ljg-blind.
陈平安思维拓扑.org