en un clic
no-bull-explain
低认知负担地解释复杂概念。用于讲解、教学、简化、澄清或重写任何困难概念。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
低认知负担地解释复杂概念。用于讲解、教学、简化、澄清或重写任何困难概念。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
| name | no-bull-explain |
| description | 低认知负担地解释复杂概念。用于讲解、教学、简化、澄清或重写任何困难概念。 |
目标不是复述术语,而是帮用户在低认知负担下,亲手长出一个准确的理解模型。
当难点来自运算过程、空间关系、状态变化或时间顺序时,用字符画复现“动态可视化”的认知效果。目标不是描述画面,而是让用户能稳定追踪一个对象如何变化。
使用这些方法:
hold[j-1]”,要说“去拿左边那个还没动过的旧格子”。常用动作包括拿、盖、换、跳、传、填、覆盖。Frame 1 / Frame 2 / Frame 3 或“第 1 步 / 第 2 步 / 第 3 步”展示状态变化。每一步只引入一个变化,避免把多个转移压在一句话里。允许为了画面感适度简化细节;避免同时追踪多个移动对象;避免用拟人化替代真实机制。
交互式讲解默认不要一次讲完整链路。主动控制讲解节奏:先讲一个小事故、一个局部动作或一个关键判断,停一下确认用户跟上后再推进,避免一讲就讲嗨;除非用户明确要求一次性完整讲完、文章式说明或视频文案式输出,可以连续输出,但仍要用短段落、小步推演和反问句维持节奏。
默认模式:先判断难点是否涉及实体、过程、状态变化、空间关系或时间顺序。如果是,必须使用“逐步推演 + 字符画可视化动态推演”,不准跳过可视化推演。
根据难点类型可选择附加工具:
朴素痛点要有“事故现场感”,不要只是说“慢、贵、乱、麻烦”。
一个合格的痛点通常包含:
如果暂时无法给出精确数字,可以给小规模可模拟数字,例如“10 个请求里要反复扫 9 个”“插入 1 条记录要搬动半页数据”。数字服务于痛点,不要变成炫技。
ctx 是这次请求随身带的小包,middleware 是请求进门前排队经过的关卡,dp[i][j] 是走到这一步、用掉这些机会后,手里最好的结果。best = max(best, today)。每次完整讲解的收尾必须同时包含:
回答前检查:
这个示例用于学习解释结构,不用于模仿固定口癖、人设或自称。学习它的术语延迟、低配场景、朴素痛点、局部动态推演、动作化描述、最后命名,以及停点位置。停点是 few-shot 的一部分,不要把完整推演一次性讲完。
主题:TCP 流量控制里的滑动窗口。
好,先别管 TCP 这个词。想象你和同桌传纸条。
你这边 对方那边
■ ■ ----纸条----> [■□□□□]
对方那边: 拆开小纸条看一下,然后通知你
■ ■ <---拆完啦--- [□□□□□]
你这边 对方那边
■ ■ ----继续发----> [■□□□□]
有时候你发纸条的速度极快,像机关枪一样往外扔,而隔壁桌的小伙伴接纸条的能力不够,但他没法及时拦住你。
你这边 对方那边
■ ■ ■ ■ ■ ■ ■ ■ ----猛发----> [■■■■■] <- 塞不下了!
朴素做法是:你想发就发。问题是,对方桌上只有 5 个空位,你一口气扔过去 8 张,后 3 张不是掉地上,就是把他正在看的纸条挤乱。重复几轮后,你这边越发越快,对方那边越堆越乱,最后你还得重发、对方还得重新整理。
那怎么解决?小伙伴每次告诉你:“我现在最多还能接几张。”你根据这个能力控制发送速度。
■ ■ --------> [□□□□□] 0/5 <- 我一次只能拿五个!
[ 1 | 2 | 3 | 4 | 5 ] 6 | 7 | 8 | 9 ...
└---- 最多能发 5 张 ----┘
先只看 6 号:它在框外,所以现在不能发。这个框就是“能发的范围”。
这种把一段能发送的纸条框出来的范围,就叫 窗口;这个范围能框住几张,也就是刚才的 5,就叫 窗口大小。
Frame 1:你开始一张一张往外发。已发送的最后一个序号不断往右移动。
[ 1√ | 2√ | 3√ | 4 | 5 ] 6 | 7 | 8 | 9
↑
发到了第 3 张
Frame 2:当你发完第 5 张纸条,进度指针碰到了窗口边界。
[ 1√ | 2√ | 3√ | 4√ | 5√ ] | 6 | 7 | 8
↑
被卡住
此时,即使你手里还有 6 号、7 号,也不能继续发。你不是没有纸条,而是被对方当前的接收能力卡住了。
这种用对方接收能力卡住发送速度、让你不能无限猛发的方式,就叫 流量控制。
到这里先停一下:现在只看 6 号,它在窗口内还是窗口外?如果它在窗口外,发送端该继续发,还是停住?
(停止生成,等待用户回复)
假设用户回复:在窗口外,要停住。
对。接下来对方终于拆完第 1 张纸条,回了句“1 号收到”。
Frame 3:这句话的隐藏含义是,对方手上的空位又多了一个——本来 5 个格子都塞满了在排队等他拆,现在 1 号拆完了,腾出来一个格子。
所以不能光把 1 号标成已确认,而是要把整个窗口往右滑一格,把新腾出来的这个空位用上:
1 ok [ 2√ | 3√ | 4√ | 5√ | 6 ] 7 | 8 | 9
↑
空出一格,6 号可以发
原来框住的是 1-5,现在框住的是 2-6。窗口外侧刚好空出一格来,你手里一直等着的那张 6 号纸条,终于能发了。
你看,窗口空了一格,6 号就出去了。那 7 号能不能跟着一起发?
(停止生成,等待用户回复)
假设用户回复:不能。
对了!那边小伙伴第二张纸条还没拆完呢,你再发他就急眼了
映射回真实术语:
| 纸条场景 | 真实术语 |
|---|---|
| 纸条编号 | 数据包序号 |
| 对方还能接几张 | 接收窗口大小 |
| 手里这个会滑的框 | 滑动窗口 |
| “1 号收到” | ACK 确认 |
| 框往右移动 | 窗口滑动 |
用真实术语重新讲一遍刚才的流程:
正式定义:滑动窗口是一种发送端根据接收方可用缓冲区和确认进度,限制可发送数据范围的流量控制机制。
去魅定义:滑动窗口就是在发送端放了一个会往前滑、会变宽变窄的限位框,防止你把接收方撑爆。
简化边界:上面为了先看清“滑动”这个动作,暂时把窗口大小固定成 5。真实情况里,接收方每次确认时都可以重新告诉发送方自己还剩多少位置;如果剩余位置变多,窗口可以变宽,如果剩余位置变少,窗口会变窄。真实 TCP 还会叠加拥塞控制、丢包重传和乱序处理,那些是下一层机制。
到这里你现在卡在哪一步?如果继续,可以选:确认回来后窗口怎么连续往前滑、窗口为什么会变大变小、流量控制和拥塞控制有什么区别。