Atlas / Skills / lijigang / Ljg Blind

Ljg BlindSAFE

skills/lijigang/ljg-blind
Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
1 documented
License
MIT
Stars
7,533
01

Overview

An agent skill published by lijigang.

Read from source at commit dbd39319c324OBSERVED · 2026-10-21
Advertisement
02

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
codexmentioned
03

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: ljg-blind
description: 盲区扫描——读昨天你与 AI 的全部对话,照出暴露的思维盲区(不是不懂的知识,是让某类真相一直看不见的思维习惯),再从微信读书挑一本书的一章精准补上,落成一篇完整分析笔记。Use when user says '扫盲区', '盲区', '照盲区', '看看我的思维盲区', '我昨天想漏了什么', 'blind spot', 'ljg-blind', '/ljg-blind', or wants yesterday's AI conversations analyzed for cognitive blind spots plus a targeted weread chapter to fill them. 可选参数:传一个日期(YYYY-MM-DD)扫那天而非昨天。NOT FOR 纵向深钻一个观点(用 ljg-think)、一个领域降秩(用 ljg-rank)、陪读一篇文本(用 ljg-read)、找一个领域的约束(用 ljg-constraint)。
user_invocable: true
---

# 盲区扫描

读你昨天跟 AI 的全部对话,照出那个你自己看不见的思维盲区,从微信读书点亮补它的一章。

## 盲区是什么

盲区不是知识缺口。不是"没读过某本书""不知道某个事实"——那种缺口,查一下就补上了。

盲区是一种结构性的思维习惯,它让某一类真相对你**系统性地不可见**。你不是想不到,是这个习惯让你压根没往那个方向看。它藏在你怎么想事情的方式里,不藏在你想的内容里。

所以证据不在"他说错了什么"。在——他没往哪看,他在哪绕了,他默认了什么却从没检。

## 五种盲区信号

从昨天的对话里找这五种。每一种都要落到具体的话上,不能凭感觉。

1. **绕开点**——一个难题他打开了,又飞快合上。证据:问题抛出,转头换话题,或一句"这个先不管"滑过去。
2. **空转框架**——反复换视角切同一个问题,没有一个落地。证据:一个问题被套上三四副框架,每副都浅尝辄止,最后没结论。
3. **单一取景框**——一整天只调用一两副 f(逢事就"约束""进化""博弈"),没试过别的镜子。这是他最隐蔽的盲区:越趁手的 f,越挡住别的 f 能照见的东西。(继刚看世界 = f(x),四轴是他默认的四副 f;正因为默认,才最该查他今天是不是又只用了其中一副。)
4. **未检前提**——一个默认假设贯穿全程,他当硬约束在用,从没问过它是不是假墙。证据:某个"本来就该这样"的说法,反复出现却从未被他自己质疑。
5. **相邻空缺**——从他问的东西反推,本该问、却没问的那个角落。不是凭空猜,是他自己的线索指向那儿。

## 选哪一个

从信号里挑 **1 个**作为今天的盲区。宁可一个说透,不要五个都点一遍——盲区的密度低于精度。判据三条:

- **杠杆**——补上它,下一步打开的可能性最多。
- **真盲**——是他自己看不见的,不是知道了在拖的。
- **对位 mission**——贴 M0(找新取景框)/ M1(求本质)。盲区若正好挡在他的主线上,优先。读 `${LIFEOS_DIR:-$HOME/.codex/LIFEOS}/USER/TELOS/PRINCIPAL_TELOS.md` 确认主线。

---

## 操作步骤

### 第一步 · 定日期

```bash
# 默认昨天;用户传了 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 的 `response_item / message / user / input_text`,排除 `session_meta.payload.source.subagent` 存在的子 agent 会话,以及 harness 包装和本次调用自身:

```bash
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(`WEREAD_API_KEY` 在环境变量里,格式 `wrk-xxxx`;若没有,提示 `export WEREAD_API_KEY=<key>`)。三步:

1. **搜书**——从盲区里抽 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 但擦边的。

2. **看目录**——挑最对症那 **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。

3. **估时长**——`wordCount / 280`(中文阅读速度)向上圆到 5 的倍数。无 wordCount 就按目录感觉在 15-45 分钟之间估一个;标题带「上篇/下篇」「卷一」这类宏观词,时长再 ×1.5。

4. **构造网页版链接**——微信读书网页阅读器不接受裸 `bookId` / `chapterUid`,必须先编码。用技能自带工具生成:

```bash
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>" "<chapterUid>"
```

工具输出形如:

```text
https://weread.qq.com/web/reader/{encodedBookId}k{encodedChapterUid}
```

把输出的完整 URL 写进笔记。不要手拼编码值,也不要把裸 ID 直接塞进 `/web/reader/`。

**兜底**:搜索全空 / 没对症章节 → 选整本相关书,只传 bookId 生成网页版书籍入口:

```bash
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 语法。

正文模板:

```org
#+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 句。把盲区和这一章对上——这章具体讲什么、怎么补这个盲区。不要泛泛说"开阔视野",要说清这一章的哪个东西正对这个盲区的哪个缺口。>
```

报告文件路径给用户。

---

## 语气规则(写笔记时守住)

这篇笔记是写给一个跟你长期一起思考的人的,不是报告,不是陌生读者。

- **中文写作,禁翻译腔**。少用「然而 / 此外 / 值得注意的是」;少用名词化(「对...的理解」→「懂...」,「做出...的决定」→「决定」);主语能省则省;短句优先。写完默念一遍,问:一个没读过翻译小说的中国人会这么说吗?汪曾祺会这么写吗?卡的地方整段重写,不是换个词。
- **禁切痕风金属比喻**。不写「这一刀」「再狠一层」「锋利的话」「砸实」「钉死」「硬话」这一整套自夸元修辞。盲区照得准不准,读者看得出,不用作者吆喝力度。
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (0)

No findings outside the package's declared scope.

Gates applied: no_behavioural_pass.

Audited 2026-10-21 · audit v0.4.1 · source sha dbd39319c324full audit observations/trust-audit/skill/lijigang__ljg-blind.json · Report an issue / request a re-scan
05

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-21dbd39319c324SAFEB89first audit
06

Questions

Is ljg-blind — lijigang/ljg-skills safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can ljg-blind — lijigang/ljg-skills access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

Which assistants does ljg-blind — lijigang/ljg-skills work with?

Its documentation mentions codex. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (dbd39319c324), read on 2026-10-21. The repository is watched, and a new audit runs when it changes — this is the first audit.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: Ljg Blind](https://modelsatlas.com/skills/lijigang/ljg-blind/badge.svg)](https://modelsatlas.com/skills/lijigang/ljg-blind/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement