skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
lijigang/ljg-skills349 installs

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-constraint
view source ↗

Is 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

TriggerWorkflow
给领域、专业、角色、产品找本质约束执行本文工序,写成一篇中文散文分析,保存为 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 落在了它够不着的地方——那些够不着的区域,常常就是它行为里的盲区和缺口。
  • 进化论:约束就是选择压。一个物种面对的环境约束决定它长成什么形态——没有沙漠的干旱,骆驼不会有驼峰。看这个角色被哪几股选择压塑造成今天这个样子;这个环境奖励什么表现型、淘汰什么表现型,行为的大方向就定了。

七步走透,几条约束才立得住。工序心里走完,别写进文章——读者看不到你怎么摸的边,但感觉得到底下是摸到实处的。

从约束到解空间到行为

约束找齐了,别停在清单上。约束的解释力,全在它框出的那个解空间里。这一段是这引擎的脊椎,四步落地。

补全题面。 先把目标和约束放在一起。不要只写"它想做什么",还要写"它必须在什么条件下做"。题面一补全,很多争论会自动消失:原来不是解法不同,是题本来不同。

列出约束组。 把几条约束、每条的硬度、哪条是身份约束、哪些在互相咬,摆清楚。这是方程组。

框出解空间。 这组约束一叠加,允许的行为就被夹到一个很窄的范围里:什么可行、什么被排除、最优的那个落在哪里。约束和解是同一件事的两面——把约束写全,解空间的形状自己就浮出来了。

解释实际操作。 这是收口,也是这引擎最值钱的地方:解空间里那个理性的最优行为,应该正好就是这个角色在现实里反复做的那些事。一条条对——他为什么这么做、为什么不那么做、为什么整个行业都往一个方向挤。约束找准了,这些"怪行为"会一个个从解空间里自动长出来,不必再假设谁蠢谁坏。

读者读完拿到的是一副解释器:原来这个角色的种种行为,不是性格、不是道德,是这几条约束把他夹在这个解空间里的必然。

心内判据

工序走完,这几条事后再过一遍闸,同样不写给人看。

  1. 解释力(主判据)——解空间里的理性最优行为,对不对得上现实中观察到的实际操作?对得上,约束才算找准;对不上,说明少了一条、或某条归错了硬度,回工序接着挖。这道闸对应降秩里的"反生成"——约束若不能把行为一个个生回来,就是没找到位。
  2. 题面完整——有没有把"目标 + 约束"一起写出来?如果只写目标,读者拿不到真正的问题。
  3. 错配可见——若原题是一场争论,有没有说明各方默认约束哪里不同?如果没有,文章容易滑回方案评判。
  4. 完备性——几条约束合起来,能不能框出这个角色的整个解空间?把一个典型情境往里一摆,落点对不对?
  5. 分层准——每条真的归对了世界/规则/解释?重点复查"硬约束"那一格,那里最容易混进冒充的。
  6. 真伪敢判——被当成硬的,有没有敢定性成软/自设的?(这是描述其真实硬度,不是给解法)
  7. 身份唯一——那条身份约束,拿掉之后角色是不是真的散架、变成别的东西?拿掉了还是它自己,说明找的不是身份约束。

过不了一条,回工序接着走。最要命的是第一条:解释力对不上,别的都白搭。

松动哪条(第二位,不参与诊断)

找约束的核心是描述当前的本质——是什么、框出什么解空间、解释什么行为。"怎么办更好"是另一件事,排在后面,而且不许反过来影响前面的诊断。急着找出口,就会看不清墙——这是这引擎最容易犯的病,务必压住。

诊断做完,可以附一句:这组约束里哪条其实能动。约束互斥、解空间被夹成空的时候,出路无非三条——放松一条、重定义一条、或者升维找一个当前视角看不见的解。真伪定性时判成"软/自设"的那条,就是能撬的地方。点到为止,一两句带过,绝不喧宾夺主。

创新常常就在这里发生:不是在旧约束里更努力,而是发现某条人人当作世界边界的东西,其实只是旧解释。"人不能飞"改写成"人不能只靠肉身飞",问题就变了,解空间也变了。文末若要写松动,就写这种重定义:哪条不是命运,只是旧题面的残留。

中文母语化 · 反坍缩闸

下笔前,默念三遍:「一个没读过英文的中国人,会这么说话吗?」 每写完一段再念一遍。答"不会"——别改词,整段推倒重想。

最容易踩的英语化毛病(踩到就重写整段,不是抠字眼):

英语化中文母语
它建立在一个假设上它底下垫着一个假设
这一约束定义了 X这条约束把 X 框成了现在的样子
这意味着...也就是说... / 这就是为什么...
在...的过程中...的时候
对...而言对...来说
进行 + 名词换成动词
名词化抽象("约束性"、"边界化")换成具体的动词或物件

要改的不是词,是想事情的取景框——从英语句式切到中文白话作者的笔调(汪曾祺、王小波、阿城、李娟那一路)。写完默念出声,听耳朵卡不卡。卡的地方整段重写,不是修补。

另有一条:这是分析文,不是刀光文。别用"这一刀""再狠一层""锋利""钉死"这类元修辞去装力度。约束的力度靠把边界摸准、把行为解释透,不靠形容自己下手多重。

怎么写

一气呵成的散文,带读者走一段路——从"这个角色到处是规矩、有些行为还挺古怪"走到"原来就这几条约束把他夹在这么窄的解空间里,那些怪行为全是必然"。不分章节,不加小标题,让推理自己往前推。

三条要求:

  • 一口气读完——不熟这个领域的人也停不下来
  • 记得住——读完能转身用一句话跟朋友说清楚:这角色被什么框着,因此只能怎么做
  • 有落差——从"处处是墙、行为难解"到"几条约束一摆、行为自动长出来",这个反差就是约束分析的美感

结构顺着脊椎走:先补全题面(目标加约束),再把约束组和硬度讲透(是什么),再框出解空间(能做什么、被夹在哪),最后落到解释力(这几条约束怎么把角色的实际操作一个个逼出来)——这一段是重心,写足。若写争论,要让读者看见双方从一开始就站在不同约束里。末尾至多一句松动,点到即止,不展开。

文末配一张 ASCII 结构图——形式跟着骨架走

光说"这几条约束"不够,要把它们和行为的关系画出来。下笔前先问:这组约束和它逼出的行为,是什么形状?答完再选画法。

硬约束:只用纯 ASCII 字符。 禁用任何 Unicode 符号(箭头 → ← ↑ ↓、方框 ┌─┐└┘│、圆点 • ● 等)。允许:字母、数字、汉字、空格,以及 - = | + * / \ < > ^ v [ ] ( ) { } . , : ; _ #。箭头用 -> <- ^ v,边框用 + - |

三种常用形态,挑跟工序摸出来的关系最贴的一种。图眼是解释力——让读者一眼看见行为怎么被约束夹出来。

1. 解释链图(默认)

适合:展示约束怎么把行为逼出来。这是这引擎的主图——约束 -> 解空间 -> 实际操作。

题面/约束组                  解空间                实际操作 (观察到的)
-----------                  ------                ------------------
目标: ...
[约束1: ...] (硬) --+
[约束2: ...] (软) --+-- 夹出 -> [只有 X 可行,   -> [角色反复在做 X]
[约束3: ...] (硬) --+          最优落在 X]         解释力: 对上了

演示要求:左边列具体约束、各标硬度;中间是被这组约束夹出的解空间(什么可行、最优落哪);右边是现实里真观察到的行为。一条链让读者看见行为是被约束逼出来的必然。右边对不上左边,就是约束没找准,回去接着挖,别硬画一条对不上的链。

2. 硬度嵌套图

适合:展示约束按硬度分三层,看这个角色被什么夹得死、被什么只是拦一下。图眼是硬度的真实分布 + 真伪定性。

+=========================================+
|  自设约束 (认知层, 其实是软的)            |
|   - 某条被当成铁律、其实可重定义          |
|   +-----------------------------------+ |
|   |  软约束 (规则层, 违则受罚)          | |
|   |   - 监管 / 合同 / 行规             | |
|   |   +---------------------------+   | |
|   |   |  硬约束 (物理层, 违则崩)   |   | |
|   |   |   * 身份约束: 逃不掉那条   |   | |
|   |   |   - 时间 / 现金流 / 物理律 |   | |
|   |   +---------------------------+   | |
|   +-----------------------------------+ |
+=========================================+

演示要求:每层填具体约束;硬约束层用 * 标身份约束(拿掉就散架的那条);若真伪定性揪出一条"被当成硬、其实是软/自设"的,把它标在真实该在的那层,注一句"常被误当硬约束"。这是在描述硬度的真实分布,不是指路创新。

3. 约束矛盾图

适合:几条约束互斥,解空间被夹成空,用来解释角色为什么表现出别扭、拧巴的行为。

   约束A: ...   ----+
                    +---- 解空间 = 交集 (此处为空)
   约束B: ...   ----+     => 角色被迫扭曲取舍: [具体的别扭行为]
   约束C: ...   ----+

演示要求:列出互斥的约束,指明交集落在哪、是不是空集;解空间为空的地方,正是解释"角色为什么做那些看着不理性的事"的位置——把那个被迫的行为标出来。这是用矛盾解释行为,不是急着给出路。

不设死板模板。要见骨——标出约束的名字、它的硬度、身份约束在哪、以及最要紧的:这几条约束把什么行为夹了出来。读者看图一眼,这个角色为什么这么做就入脑。

输出

  1. 获取时间戳:date +%Y%m%dT%H%M%Sdate "+%Y-%m-%d %a %H:%M"
  2. 写入 ~/Documents/notes/{时间戳}--{领域}的约束__constraint.org,frontmatter 见 references/template.org
  3. 报告文件路径给用户

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>