语法点
这一页是字段参考。想先看语法包能改什么、五种题各是怎么玩的,见语法包。
一个语法包里有若干语法点,每个语法点一个文件夹:points/<id>/。扉阅自带 68 个,都按同样的格式写,随 SDK 附带的默认扩展包就是最好的参照。
point.json
小节标题“point.json”| 字段 | 说明 |
|---|---|
id |
小写字母、数字、连字符,跟文件夹名一样。完整名字是 扩展包id#语法点id,他的开关、做题记录都按它记,发出去以后不要改。 |
chapter |
进哪一章:tense 时态、modal 情态动词、subjunctive 虚拟语气、passive 被动语态、nonfinite 非谓语动词、relative 定语从句、nominal 名词性从句、adverbial 状语从句、negation 否定、comparison 比较、inversion 倒装、reference 代词指代、aside 插入语与同位语、phrase 固定搭配、vocab 生词;扉阅自带的还新起了两章 emphasis 强调与省略、agreement 主谓一致(进这两章也要写 chapterName,显示用已有的章名)。确实是新的一章就自己起个代号(小写字母、数字、下划线),再写下面两项。 |
chapterName / chapterAfter |
新起一章时:章名(≤ 6 字)、排在哪一章后面(不写排最后)。 |
name |
短名,≤ 8 字,题上会写“下一处:谁先谁后”。 |
example |
一句简单的英文例句,设置页里显示。 |
meaning |
一句话说明,≤ 100 字,设置页里显示在例句下面:说清这一处是什么、它决定了句子的什么意思。可不写。 |
level |
["sentence"] 选一句时出,["word"] 选一个词时出,可以两个都写;不写是 ["sentence"]。 |
engine |
用哪种题型。这份文档讲的是扩展包能新起的五种:field@1(拖进格子)、span@1(划一段,只在句层)、scope@1(管到哪)、ratio@1(量几倍)、concede@1(跷跷板)。 |
practice |
这种题型要的参数,见下面。 |
order |
0–100,一句里有好几处时排第几,越容易读反越靠前;不写是 50。 |
rules |
能用的规则卡 id(章.写法),第一张是默认的。用到的卡要在 rules.json 里(或在自带的、needs 里的扩展包里)。 |
asks |
问一问的现成问法(格式 1.2):最多 3 句、每句 ≤ 40 字,点开这个语法点的“问一问”时摆在输入框上面。可不写。 |
扉阅自带的语法点还用到别的题型(连指代、问谁、填坑、点掉修饰、找旧说法、拆词等),检查器认得它们的代号,但它们的参数没有写进作者文档,这份文档不讲。
“拖进格子” field@1 的参数
小节标题““拖进格子” field@1 的参数”| 字段 | 说明 |
|---|---|
question |
场地上的提问。 |
questionOne |
只有一段时的提问;不写用 question。 |
zones |
格子:id(小写字母、数字、下划线)、label(格子上的字)、tag(放对后挂在句子上的小标记,可不写)、tone(real / neg / muted,可不写)、rule(放在这一格配哪张规则卡的完整 id,如 tense.is_doing,格式 1.2,可不写;写了以后,模型给的格子跟规则卡对不上就不收、带一句话重问一次)。 |
shape |
场地:timeline 时间线、worlds 两个世界、thermo 温度计、lever 松紧杆、poles 两极、arrow 箭头、scale 天平、linked 两根竖尺、track 轨道、scene 通用场地(格式 1.2),各带自己的数。场地里摆的格子要正好是 zones 里那几个。 |
segs |
句子里标几段:[最少, 最多],1 到 3。 |
coin |
能不能换成翻硬币,只配两极。 |
single |
一处一个场地(不写是同一章的几处合一个场地)。 |
show |
时间线怎么摆(格式 1.2,只配时间线):only 只摆要放的那几格(true/false,自带 true)、decoys 再摆几格干扰(0–4,自带 2)、max 连干扰最多几格(1–8,自带 4)、boxMax 每格最宽(10–60,自带 30)、edge 两头边距(0–10,自带 3)、gap 格子之间(0–10,自带 4)、future 将来留多少(0–40,自带 20),都是整条的百分比。 |
时间线的数:now 是“现在”那条竖线在哪(0–100);slots 每格一个 { zone, box: [左, 宽], shape },shape 是 ["pt", x] 一个点、["bar", 起, 止] 一段、["ticks", 起, 止] 反复、["res", x] 结果连到现在(["res", x, 那时] 连到过去或将来的那一刻)、["arc", 起, 止] 往后看的将来、["wave", 起, 止] 那一刻正在做。样例 time-clauses 里就是两个点。
通用场地 scene 的数(格式 1.2):
{ "kind": "scene", "height": 160, "zones": [ { "zone": "both_a", "x": 5, "y": 10, "w": 50, "h": 80, "form": "ring" }, { "zone": "both_b", "x": 45, "y": 10, "w": 50, "h": 80, "form": "ring" } ], "lines": [{ "from": [0, 95], "to": [100, 95], "style": "dashed" }], "labels": [{ "x": 50, "y": 4, "text": "两边都有" }]}height:画布多高(120–320 像素),宽跟着卡片。zones:2–8 个格子,位置都按画布的百分比(左上角是 0, 0):x、y、w(至少 12)、h(至少 20),不许出画布;form是box圆角方框、round圆、ring只有一圈边(韦恩图用两个叠着的圈)。叠住的地方点到的是后写的那个。lines:画在格子底下的线(树的枝、数轴的轴),最多 12 条,style是solid或dashed;只是装饰。labels:写在画布上的字(≤ 12 字),最多 12 处;只是装饰,讲法包能按顺序换成别的语言。
“划一段” span@1 的参数(新起的,格式 1.2)
小节标题““划一段” span@1 的参数(新起的,格式 1.2)”只在句层(level 写 ["sentence"])。detect.md 的 ## points 一节要说清这一种是哪一块:w 是它落在的那个词,to 是要他划的那一块。
| 字段 | 说明 |
|---|---|
question |
问法,{w} 换成落在的那个词,去掉 {w} ≤ 20 字;不写是“划出跟 {w} 连着说的那一段”。 |
要划全才算对(边界是模型标的,能判错);不排阶梯、不换点掉修饰(ladder、simpler 只对扉阅自带的修饰段有用)。
scope@1、ratio@1、concede@1 的参数
小节标题“scope@1、ratio@1、concede@1 的参数”这三种的参数都有默认值,practice 可以不写。模型只回词号和你的语法点代号(id 里的连字符换成下划线),卡上的字都从这里和规则卡来;practice.md 的 ## field 要说清楚:哪个词是“管一片”的那个词、真正管的是哪一截、最容易选错的是哪几截。
| 题型 | 字段 | 说明 |
|---|---|---|
scope@1 管到哪 |
question |
提问,{op} 换成那个词,不写是“{op} 管到哪?”。 |
tag |
选对后挂的小标记,≤ 6 字,{op} 同上,不写是“被 {op} 管”。 |
|
decoys |
错的候选几截 [最少, 最多],1~4,不写是 [2, 3]。 |
|
side |
管的那截在它 after 后面、before 前面还是 any,不写是 any。 |
|
ratio@1 量几倍 |
question |
不写是“量一量:蓝的是灰的几倍?”。 |
marks |
刻度:3~7 个正数、从小到大、必须有 1、最大 10,不写是 [0.5, 1, 2, 3, 4]。 |
|
concede@1 跷跷板 |
question |
不写是“哪一半是作者真正要说的?”。 |
ends |
两头的字 { "give": …, "main": … },各 ≤ 8 字,不写是“作者先承认的”“作者真正要说的”。 |
|
tags |
放对后挂的小标记 { "give": …, "main": … },各 ≤ 6 字,不写是“让一步”“重点”。 |
规则卡 rules.json
小节标题“规则卡 rules.json”做对以后摊开成“记一下”的那一句话:
{ "cards": [ { "id": "adverbial.before", "line": "{form}:主句的事先发生,从句的事在它后面。", "contrast": { "used": { "en": "{form}", "zh": "主句先,从句后" }, "confusable": { "en": "after", "zh": "从句先,主句后" } } } ]}id:章.写法,别跟已有的重名(重名的装不上;真要替换自带的那张,写进清单的replaces)。line:以{form}开头的一句人话,≤ 42 字;{form}会换成句子里那几个词。contrast:这一句用的、最容易混的,英文 ≤ 5 个词,中文 ≤ 14 字。格式 1.2 起contrast.more能再写最多 2 个容易混的(跟confusable一个写法),三格一排摆在对照里。
给模型看的说明:detect.md、practice.md
小节标题“给模型看的说明:detect.md、practice.md”扉阅的判断全交给用户自己配的大模型,扩展包只能教模型怎么判断,不能自带词表、规则表替模型判断。你写的说明会拼进发给模型的话里;模型只回词号和代号,回答格式由扉阅按开着的语法点生成,你改不了。
扉阅自带的说明都是英文写的(2026-10-09 起),你的说明最好也用英文写,跟前后的话接得上;写中文模型也读得懂,只是夹在英文里。
detect.md拼进“找语法点”那一步。分两节:## gate说这种地方为什么容易读反;## points说句子里哪些地方算一处、w(落在哪几个词)写什么。practice.md拼进“出题”那一步。## field说怎么把句子分成几段、每段放哪个格子、cues(靠哪个词看出来,选词时认出“他选的正是这处语法靠的词”用)标什么;## rule说每张规则卡什么时候用。- 每个文件最多 12000 字(格式 1.2 起;原来是 4000)。可以写
⟦if 章#语法点⟧……⟦end⟧,那个语法点开着才有这几句(⟦if !tense⟧是关着才有);⟦gate …⟧这类空位只有扉阅自带的能用,写了这个语法点不启用。
他关掉你的语法点,你的说明就不进提示词。装得越多提示词越长,写得短一点、说清楚“什么算、什么不算”最有用。
评测句 cases.jsonl
小节标题“评测句 cases.jsonl”一行一句,至少 10 句,句子自己新写(或用没有版权问题的公版句子):
{"id": "which-first:ferry", "sentence": "Before the ferry left, the captain checked every lifejacket.", "points": [[0, 0]], "expect": {"segs": [[5, 9, "first"], [0, 3, "then"]], "cues": [[0, 0]]}, "why": "自拟:before 引出的那件在后"}词号从 0 数,标点也算一个词。points 是这一处落在哪几个词,expect.segs 是每一段 [起, 止, 格子],cues 是靠的词。
- 装之前的检查只数有几句像样的(每行要有
sentence),不跑模型。 - 本机先用
feyxo try(见命令)在自己配的模型上跑一遍看成绩。 - 装进扉阅以后,设置页里能点“用我的模型试一试这个语法点”,是同一套判法。
- 连指代、问谁、填坑、点掉修饰这几种是结构图上直接出题的:没写进扉阅自己对照表的语法点,找语法点那一步靠你写的
detect.md(## points一节)才找得到它,没写就找不到,“用我的模型试一试这个语法点”也不会出现——不是题型不认,是没找到这一处。