写一份宪法:格式与安装
宪法是你给智能体划的红线:什么不许做、什么要人点头。它是一份 JSON,格式叫 rulith-norms/1。
这一页给你一份可以直接粘进去就装上的完整样例,以及每个字段的含义。 宪法闸本身怎么工作,见宪法闸。
一、完整样例(整份复制,可直接用)
{
"format": "rulith-norms/1",
"meta": { "name": "my-redlines", "version": 1 },
"norms": [
{
"id": "no_irreversible_without_approval",
"title": "不可逆的对外动作必须先获审批通过",
"version": 1,
"text": "任何不可逆的对外动作——付款、发布、删除、对第三方作出承诺——在执行前必须已通过审批。判断一个动作是否不可逆,看的是「做完之后本系统能否单方面撤回」:能撤回的不算,需要对方配合才能撤回的算。"
},
{
"id": "data_stays_local",
"title": "客户数据不得发往未登记的外部服务",
"version": 1,
"text": "客户数据(身份信息、联系方式、交易明细、任何可定位到个人的记录)只能发往已登记的外部服务。未登记的服务一律拒绝,包括临时调试用途。"
}
]
}
把 meta.name 换成你自己的名字,把两条 norms 换成你自己的红线,就可以装了。
二、字段:一共就这几个
包级
| 字段 | 必填 | 说明 |
|---|---|---|
format | 可省 | 写了就必须是 "rulith-norms/1" |
meta.name | 必填 | 这份宪法的名字。它同时是安装登记的键——见下面那条警告 |
meta.version | 可省 | 版本号 |
norms | 必填 | 条款数组,不能为空——一份不含任何条款的宪法什么也没带来 |
条款级:只有四个字段
| 字段 | 必填 | 说明 |
|---|---|---|
id | 必填 | 条款号。清关记账按它记,装上后不可改 |
title | 必填 | 一句话说清这条禁什么。板上只落这句摘要 |
version | 可省 | 条款版本,默认 1 |
text | 可省 | 条文全文。过闸时原样进案卷交审查判断——所以用大白话写,不用写成规则 |
为什么只有这四个:宪法是纯文本,不带机器字段
条文不带路由标签、不带材料需求、不带严重级。理由是同一个: 一条红线如果要先被翻译成机器字段才能生效,那个翻译本身就是一处可以出错的地方。
写了退役字段不会被忽略,会被拒,并告诉你为什么。
>
这些字段写了就会报错:needs·tags·tier·source·review·requireVotes·evidence。 静默丢弃比报错危险得多——曾经有一份宪法里躺着一个review开关, 谁都以为它生效,而解析器从来没有读过它。
三、装:三步,都在「我的能力」那一页
- 粘 —— 打开控制台的「我的能力」页,把整份 JSON 粘进编辑框;
- 校验 —— 点校验。绿了说明格式没问题;有问题会逐条告诉你哪儿不对;
- 装到智能体 —— 选一个智能体,点装。
点完装之后,看屏幕说什么——有两种情况
| 屏幕说 | 意思 | 你要做什么 |
|---|---|---|
| 直接说装好了 | 条款当场落到板上 | 不用做别的 |
| 「已经收下了,但还没生效」 + 让你去暂存当前任务 | 这个智能体正在办一件事,新装的东西要等它腾出手 | 照屏幕说的做一次暂存。不要重装——重装不会让它提前生效 |
哪一种取决于那一刻这个智能体在不在办事,不取决于你装的是什么。
去哪儿确认它真的生效了
去智能体详情页看「宪法」那一行——它显示的是板上真实的条款数。
⚠️ 如果你刚做过暂存,先把那件事恢复回来再看。 那一页需要一件在办的事才有内容——暂存期间它读不出来(页面会空着, 或提示你去任务列表恢复)。恢复之后再看那一行,才是有效的确认。
看那一行,不要看安装那一刻的提示。实测:屏幕显示「宪法 · 3 条已生效」时, 板上确实有 3 条——数目逐一对得上。
⚠️ 同一页上的「已安装能力」那一格,今天对宪法包会显示「已登记但实际未装载」, 而那句话是错的。你可能会在同一屏上看到两个相反的结论。 以「宪法」那一行为准——那一行读的是板上,那一格今天对宪法包不准。
顺带:排队时一个坏项不会挡住好项——同一批里若有一份包被拒, 其余的照常生效,逐份独立判。
四、⚠️ 两件今天必须知道的
①「改」这个动作,今天还没有
条款按 id 幂等:同一个 id 重装一版新内容—— 它会回一条「装好了」的回执,而板上一个字都不会变。
(实测:回执 accepted 为真、报「更新已接受」、版本号还往前走了一格,而板上原样。)
⇒ 不要用「装一版新的」来改一条已有的条款。今天它不会生效。
要调整红线,用一个新的 id。(覆盖语义正在设计中。)
② 别把宪法包的 meta.name 起成和你的领域能力一样的名字
安装登记按 (智能体,名字) 去重。同名会撞: 如果你已经有一个叫 orders 的领域能力,再装一份也叫 orders 的宪法, 它的安装登记会被静默跳过。
⇒ 给宪法起一个专用的名字,比如 my-redlines、orders-redlines。
这一条的依据是安装登记的去重规则本身(同名即跳过), 不是一次实测——造出「已装领域能力的智能体」这个前提今天还有别的障碍。 规则是确定的,代价是:起重名不会报错,你不会知道。
五、写红线的三条建议
- 一条只说一件事。清关是按条款记账的——一条里塞三件事,
过闸时你分不清是哪一件被拦了。
title写成「禁什么」,不是「要什么」。板上只落这一句,它要能被单独读懂。text写给人看,不是写给解析器看。它会原样进案卷——
写得越像一句人能判断的话,判断就越准。
相关
正文住
content/*.md;能力清单、工具清单、字段矩阵由生成器从实现代码抽取
(快照在 facts.json)——改了实现而忘了改文档,校验会自己发现。