ljg-constraint
给一个领域、专业、角色、产品或争论找出真正框住它的几条约束,判明它们属于世界/规则/解释(硬/软/自设),看这组约束如何定义身份、补全问题、框出解空间并解释实际行为;尤其用于区分目标相同但约束不同导致的方案分歧,识别被误当硬事实的旧解释。USE WHEN 用户说 '约束', '找约束', '这个领域的约束是什么', '本质约束', '什么框住了它', '硬约束还是自设约束', '边界在哪', '这行为什么这么做', 'constraint', '/ljg-constraint', or gives any domain/profession/role/product/debate and wants its defining constraints and solution space mapped. NOT FOR 往下挖生成器(用 ljg-rank,找的是生成力不是边界)、纵向深钻一个观点到底(用 ljg-think)、拆一本书(用 ljg-book)、一个概念解剖(用 ljg-learn)。
How do I install this agent skill?
npx skills add https://github.com/lijigang/ljg-skills --skill ljg-constraintIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is a structured analytical tool designed to identify and categorize constraints within specific domains or roles. It uses basic shell commands for timestamping and saves its output to a local directory, which is consistent with its intended function as a note-taking engine.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
约束引擎
输入一个领域、一门专业、一个角色,找出框住它的那几条约束,看清这组约束框出的解空间——以及这个解空间怎么解释它的种种行为。
Workflow Routing
| Trigger | Workflow |
|---|---|
| 给领域、专业、角色、产品找本质约束 | 执行本文工序,写成一篇中文散文分析,保存为 org 文件 |
| 分析一场方案争论为什么说不清 | 先找各方默认约束,再说明他们其实是不是同一道题 |
| 判断某条边界是真硬约束还是旧解释 | 走三层硬度和真伪定性,不急着给突破方案 |
Gotchas
- 不要把约束写成普通困难、缺点或建议。约束必须能改变解空间;拿掉它,允许的行为会变。
- 不要只盯目标。同一目标在不同约束下不是同一道题;先补全题面,再谈解法。
- 不要把共识、习惯、行业话术顺手归进硬约束。硬约束要经得起"违背它是否立刻崩"这一问。
- 不要急着写"如何突破约束"。先把当前约束的真实硬度、身份边界和行为解释力写准,松动只在结尾点一句。
- 不要把身份约束和策略约束混在一起。拿掉之后还成其为自己的,不是身份约束。
Examples
Example 1: 分析一个角色
User: "投资经理的约束是什么?"
-> 找出资金期限、LP 信任、信息不对称、上行/下行分配等约束
-> 说明这些约束如何逼出追热点、重共识、怕错过等行为
-> 写入 notes 里的 org 文件
Example 2: 分析一场争论
User: "为什么产品和增长总吵架?"
-> 先拆出双方默认约束:不能打扰用户 vs 必须提高转化
-> 说明目标看似都是做好产品,其实题面不同
-> 再解释各自方案为什么在各自约束里是理性的
Example 3: 判断旧解释
User: "这个行业必须重销售吗?"
-> 先问这是世界约束、规则约束,还是行业解释
-> 查有没有别的时代、地区、玩家已经活着跨过去
-> 若跨过去仍成立,把它降级为软约束或自设约束
约束是什么
日常语感里,约束是负面的——束缚、不自由、不能做什么。这个引擎不这么看。
没有约束的东西没有形状。水没有约束时无形,给它一个杯子才有了形状;一道题没有约束条件时无解,给它约束,解才从无穷里浮出来。约束不是在减少可能性,是从无穷里生出特定性。没有约束等于什么都可以,等于什么都不是;有了约束,等于只有这些可以,等于这个东西是它自己。
问题也一样。一个问题不是只由目标构成,也由约束构成。大家都说"做一个产品",但一个人默认不能增加复杂度,另一个人默认必须追求增长,他们其实已经不在同一道题里。目标相同,约束不同,解空间就不同;解空间不同,方法之争就常常只是错位。
所以一个事物的约束条件,就是它的身份。约束是把无限可能坍缩成"这一个"的那组方程。 而这组方程一旦写全,它框出的解空间就出来了——这个角色能做什么、不能做什么、最优的选择落在哪里,全被这几条约束夹定。找约束的真正回报不在清单本身,在这个解空间:它能把这个角色的实际行为一个个解释回来。
这引擎首先是描述,不是改造。 核心问的是"当前的本质约束是什么、框出什么解空间、解释了什么行为"。"怎么办更好、哪条能松动"是第二位的事,排在后面,而且不许反过来影响前面的诊断——一急着找出口,就会看不清墙。
和降秩分清一句话:降秩往下挖,找的是把现象生出来的那几根生成力("什么在撑着它");约束往边上摸,找的是框住它的那几条边界,看这几条边界把它夹进一个什么样的解空间("什么把它框成这个形状、逼出这些行为")。一个找底,一个找边。
三层硬度:这条约束是哪一层的
约束不是一种东西,它们有硬度之分,权重不一样。分清硬度,是准确描述约束的第一步。
硬约束(世界层 / 物理层)——不可违背,试图违背则系统崩溃。人会死(时间),光速不可超越,公司现金流断了就没了。这层没有商量。它不是惩罚你,是系统直接停。
软约束(规则层)——可以违背,但有代价。法律、牌照、合同、行规。违背了系统不会物理崩溃,但会有人罚你、市场会惩罚你。这层是价码问题,不是可能性问题。
自设约束(解释层 / 认知层)——你以为存在,其实可以重新定义的。"我不擅长这个","这行就得这么干","别人会怎么看"。这层住在脑子里,不住在世界上。
不能违背的,要承认;可以违背的,要算代价;可以重写的,就不该称为命运。大部分困境不是被硬约束卡住的,是被自设约束困住的——把解释层的东西当成了世界层的。 一个领域里最贵的错误,永远是有人把一道粉笔线当成了石墙,绕着走了几十年。给约束定准硬度,就是在描述它真实的分量:它到底夹得死不死。
怎么找:工序
判据是事后才能验的,找约束的力气全在过程里。七步,心里走完,不写进文章。
1. 铺约束候选。 对着这个领域/角色,多问几句,尽量把边摸全:
- 这个问题的目标是什么?哪些约束和目标一起构成了这道题?
- 如果换掉一条约束,题目会不会变成另一道题?
- 这场争论里,各方默认的约束一样吗?
- 哪条被大家当成背景底色的东西,也许只是旧解释?
- 什么是不能做的?什么是必须做的?什么是逃不掉的?
- 报酬和后果对结果对称吗——赚了归谁,亏了谁扛? 激励的非对称是一条最容易漏、又最能解释行为的约束:谁若只拿上行、不担下行,他的最优选择就会往别人扛不起的方向偏。
- 谁看不清谁——信息卡在谁那头? 信息不对称也是硬约束,它往往决定这个角色到底在优化什么(看得见的信号,还是看不见的真实)。
- 这里的钟走多快,一件事兑现要多久? 时间尺度是约束,考核的钟和兑现的钟不一样,行为就被前者拽走。
把答出来的十几条全铺出来,光铺,不评判。这一步必然杂,真墙假墙混在一起。
2. 分层归位。 每条候选定位到硬/软/自设。判别问句:违背它,是系统物理崩溃(硬),还是有人罚你、要付代价(软),还是其实什么也不会发生、只是没人试过(自设)?归位时故意多疑一点——凡是被顺手归进"硬约束"的,都先打个问号,这一层最容易混进冒充的。
3. 真伪定性。 对每一条被当成硬约束的,追一句:谁规定的?违背它,真的物理上崩溃吗,还是只是没人试过、被罚过、或者习惯了?再加一道历史闸:别的地方、别的时代,有没有人已经跨过去了?跨过去了还活着,它就不是硬约束,是被错当成硬约束的软约束或自设约束。注意这一步是在更准确地描述这条约束的真实硬度,不是在指路"去把它撬了"。 它顺带解释了一件事:为什么总有少数玩家能不按常规打——因为他们看破了那是粉笔线。定性到此为止,怎么撬是后面第二位的事。
4. 找约束错配。 若输入里有争论、方案比较、路线分歧,先别急着判谁对。把各方默认的约束分开写出来:一个人默认"不能增加复杂度",另一个人默认"必须追求增长";一个人默认"不能打扰用户",另一个人默认"必须提高转化"。他们以为在争方案,其实在争题面。目标相同、约束不同,解空间就不同。
5. 找矛盾对。 真正难的问题不是有约束,是几条约束互相打架,同时满足的解空间可能被夹成空的。把互斥的约束对挑出来,看解空间被挤到哪里、是不是空集。解空间为空的地方,往往正是这个角色表现出别扭、拧巴、看着不理性行为的根源——不是他蠢,是那里本来就无解,他只能扭曲着取舍。
6. 找身份约束。 在所有约束里问一句:哪一条拿掉,这个东西就不再是它自己了?这是身份约束——领域的定义性边界。餐馆拿掉"当面把食物交到人手里"就成了别的东西,医生拿掉"不伤害"就不是医生了。身份约束往往在硬约束层,但不总是;有时候一条软约束才是那个领域真正的身份。
7. 两把透镜收口。
- f 论:约束就是 f 的定义域。这个角色的 f 能处理哪些 x、不能处理哪些 x,就是它的约束。看它被定义域框在哪、哪些 x 落在了它够不着的地方——那些够不着的区域,常常就是它行为里的盲区和缺口。
- 进化论:约束就是选择压。一个物种面对的环境约束决定它长成什么形态——没有沙漠的干旱,骆驼不会有驼峰。看这个角色被哪几股选择压塑造成今天这个样子;这个环境奖励什么表现型、淘汰什么表现型,行为的大方向就定了。
七步走透,几条约束才立得住。工序心里走完,别写进文章——读者看不到你怎么摸的边,但感觉得到底下是摸到实处的。
从约束到解空间到行为
约束找齐了,别停在清单上。约束的解释力,全在它框出的那个解空间里。这一段是这引擎的脊椎,四步落地。
补全题面。 先把目标和约束放在一起。不要只写"它想做什么",还要写"它必须在什么条件下做"。题面一补全,很多争论会自动消失:原来不是解法不同,是题本来不同。
列出约束组。 把几条约束、每条的硬度、哪条是身份约束、哪些在互相咬,摆清楚。这是方程组。
框出解空间。 这组约束一叠加,允许的行为就被夹到一个很窄的范围里:什么可行、什么被排除、最优的那个落在哪里。约束和解是同一件事的两面——把约束写全,解空间的形状自己就浮出来了。
解释实际操作。 这是收口,也是这引擎最值钱的地方:解空间里那个理性的最优行为,应该正好就是这个角色在现实里反复做的那些事。一条条对——他为什么这么做、为什么不那么做、为什么整个行业都往一个方向挤。约束找准了,这些"怪行为"会一个个从解空间里自动长出来,不必再假设谁蠢谁坏。
读者读完拿到的是一副解释器:原来这个角色的种种行为,不是性格、不是道德,是这几条约束把他夹在这个解空间里的必然。
心内判据
工序走完,这几条事后再过一遍闸,同样不写给人看。
- 解释力(主判据)——解空间里的理性最优行为,对不对得上现实中观察到的实际操作?对得上,约束才算找准;对不上,说明少了一条、或某条归错了硬度,回工序接着挖。这道闸对应降秩里的"反生成"——约束若不能把行为一个个生回来,就是没找到位。
- 题面完整——有没有把"目标 + 约束"一起写出来?如果只写目标,读者拿不到真正的问题。
- 错配可见——若原题是一场争论,有没有说明各方默认约束哪里不同?如果没有,文章容易滑回方案评判。
- 完备性——几条约束合起来,能不能框出这个角色的整个解空间?把一个典型情境往里一摆,落点对不对?
- 分层准——每条真的归对了世界/规则/解释?重点复查"硬约束"那一格,那里最容易混进冒充的。
- 真伪敢判——被当成硬的,有没有敢定性成软/自设的?(这是描述其真实硬度,不是给解法)
- 身份唯一——那条身份约束,拿掉之后角色是不是真的散架、变成别的东西?拿掉了还是它自己,说明找的不是身份约束。
过不了一条,回工序接着走。最要命的是第一条:解释力对不上,别的都白搭。
松动哪条(第二位,不参与诊断)
找约束的核心是描述当前的本质——是什么、框出什么解空间、解释什么行为。"怎么办更好"是另一件事,排在后面,而且不许反过来影响前面的诊断。急着找出口,就会看不清墙——这是这引擎最容易犯的病,务必压住。
诊断做完,可以附一句:这组约束里哪条其实能动。约束互斥、解空间被夹成空的时候,出路无非三条——放松一条、重定义一条、或者升维找一个当前视角看不见的解。真伪定性时判成"软/自设"的那条,就是能撬的地方。点到为止,一两句带过,绝不喧宾夺主。
创新常常就在这里发生:不是在旧约束里更努力,而是发现某条人人当作世界边界的东西,其实只是旧解释。"人不能飞"改写成"人不能只靠肉身飞",问题就变了,解空间也变了。文末若要写松动,就写这种重定义:哪条不是命运,只是旧题面的残留。
中文母语化 · 反坍缩闸
下笔前,默念三遍:「一个没读过英文的中国人,会这么说话吗?」 每写完一段再念一遍。答"不会"——别改词,整段推倒重想。
最容易踩的英语化毛病(踩到就重写整段,不是抠字眼):
| 英语化 | 中文母语 |
|---|---|
| 它建立在一个假设上 | 它底下垫着一个假设 |
| 这一约束定义了 X | 这条约束把 X 框成了现在的样子 |
| 这意味着... | 也就是说... / 这就是为什么... |
| 在...的过程中 | ...的时候 |
| 对...而言 | 对...来说 |
| 进行 + 名词 | 换成动词 |
| 名词化抽象("约束性"、"边界化") | 换成具体的动词或物件 |
要改的不是词,是想事情的取景框——从英语句式切到中文白话作者的笔调(汪曾祺、王小波、阿城、李娟那一路)。写完默念出声,听耳朵卡不卡。卡的地方整段重写,不是修补。
另有一条:这是分析文,不是刀光文。别用"这一刀""再狠一层""锋利""钉死"这类元修辞去装力度。约束的力度靠把边界摸准、把行为解释透,不靠形容自己下手多重。
怎么写
一气呵成的散文,带读者走一段路——从"这个角色到处是规矩、有些行为还挺古怪"走到"原来就这几条约束把他夹在这么窄的解空间里,那些怪行为全是必然"。不分章节,不加小标题,让推理自己往前推。
三条要求:
- 一口气读完——不熟这个领域的人也停不下来
- 记得住——读完能转身用一句话跟朋友说清楚:这角色被什么框着,因此只能怎么做
- 有落差——从"处处是墙、行为难解"到"几条约束一摆、行为自动长出来",这个反差就是约束分析的美感
结构顺着脊椎走:先补全题面(目标加约束),再把约束组和硬度讲透(是什么),再框出解空间(能做什么、被夹在哪),最后落到解释力(这几条约束怎么把角色的实际操作一个个逼出来)——这一段是重心,写足。若写争论,要让读者看见双方从一开始就站在不同约束里。末尾至多一句松动,点到即止,不展开。
文末配一张 ASCII 结构图——形式跟着骨架走
光说"这几条约束"不够,要把它们和行为的关系画出来。下笔前先问:这组约束和它逼出的行为,是什么形状?答完再选画法。
硬约束:只用纯 ASCII 字符。 禁用任何 Unicode 符号(箭头 → ← ↑ ↓、方框 ┌─┐└┘│、圆点 • ● 等)。允许:字母、数字、汉字、空格,以及 - = | + * / \ < > ^ v [ ] ( ) { } . , : ; _ #。箭头用 -> <- ^ v,边框用 + - |。
三种常用形态,挑跟工序摸出来的关系最贴的一种。图眼是解释力——让读者一眼看见行为怎么被约束夹出来。
1. 解释链图(默认)
适合:展示约束怎么把行为逼出来。这是这引擎的主图——约束 -> 解空间 -> 实际操作。
题面/约束组 解空间 实际操作 (观察到的)
----------- ------ ------------------
目标: ...
[约束1: ...] (硬) --+
[约束2: ...] (软) --+-- 夹出 -> [只有 X 可行, -> [角色反复在做 X]
[约束3: ...] (硬) --+ 最优落在 X] 解释力: 对上了
演示要求:左边列具体约束、各标硬度;中间是被这组约束夹出的解空间(什么可行、最优落哪);右边是现实里真观察到的行为。一条链让读者看见行为是被约束逼出来的必然。右边对不上左边,就是约束没找准,回去接着挖,别硬画一条对不上的链。
2. 硬度嵌套图
适合:展示约束按硬度分三层,看这个角色被什么夹得死、被什么只是拦一下。图眼是硬度的真实分布 + 真伪定性。
+=========================================+
| 自设约束 (认知层, 其实是软的) |
| - 某条被当成铁律、其实可重定义 |
| +-----------------------------------+ |
| | 软约束 (规则层, 违则受罚) | |
| | - 监管 / 合同 / 行规 | |
| | +---------------------------+ | |
| | | 硬约束 (物理层, 违则崩) | | |
| | | * 身份约束: 逃不掉那条 | | |
| | | - 时间 / 现金流 / 物理律 | | |
| | +---------------------------+ | |
| +-----------------------------------+ |
+=========================================+
演示要求:每层填具体约束;硬约束层用 * 标身份约束(拿掉就散架的那条);若真伪定性揪出一条"被当成硬、其实是软/自设"的,把它标在真实该在的那层,注一句"常被误当硬约束"。这是在描述硬度的真实分布,不是指路创新。
3. 约束矛盾图
适合:几条约束互斥,解空间被夹成空,用来解释角色为什么表现出别扭、拧巴的行为。
约束A: ... ----+
+---- 解空间 = 交集 (此处为空)
约束B: ... ----+ => 角色被迫扭曲取舍: [具体的别扭行为]
约束C: ... ----+
演示要求:列出互斥的约束,指明交集落在哪、是不是空集;解空间为空的地方,正是解释"角色为什么做那些看着不理性的事"的位置——把那个被迫的行为标出来。这是用矛盾解释行为,不是急着给出路。
不设死板模板。要见骨——标出约束的名字、它的硬度、身份约束在哪、以及最要紧的:这几条约束把什么行为夹了出来。读者看图一眼,这个角色为什么这么做就入脑。
输出
- 获取时间戳:
date +%Y%m%dT%H%M%S和date "+%Y-%m-%d %a %H:%M" - 写入
~/Documents/notes/{时间戳}--{领域}的约束__constraint.org,frontmatter 见references/template.org - 报告文件路径给用户
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/lijigang/ljg-skills/ljg-constraint">View ljg-constraint on skillZs</a>