跳转到内容
扉阅Feyxo

语法点

这一页是字段参考。想先看语法包能改什么、五种题各是怎么玩的,见语法包。

一个语法包里有若干语法点,每个语法点一个文件夹:points/<id>/。扉阅自带 68 个,都按同样的格式写,随 SDK 附带的默认扩展包就是最好的参照。

字段 说明
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 字,不写是“让一步”“重点”。

做对以后摊开成“记一下”的那一句话:

{
"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 …⟧ 这类空位只有扉阅自带的能用,写了这个语法点不启用。

他关掉你的语法点,你的说明就不进提示词。装得越多提示词越长,写得短一点、说清楚“什么算、什么不算”最有用。

一行一句,至少 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 一节)才找得到它,没写就找不到,“用我的模型试一试这个语法点”也不会出现——不是题型不认,是没找到这一处。