بنقرة واحدة
no-bull-explain
低认知负担地解释复杂概念。用于讲解、教学、简化、澄清或重写任何困难概念。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
低认知负担地解释复杂概念。用于讲解、教学、简化、澄清或重写任何困难概念。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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 还会叠加拥塞控制、丢包重传和乱序处理,那些是下一层机制。
到这里你现在卡在哪一步?如果继续,可以选:确认回来后窗口怎么连续往前滑、窗口为什么会变大变小、流量控制和拥塞控制有什么区别。