文心快码(Comate)需通过配置Rules而非重复Prompt来强制执行团队规范;Rules以JSON格式定义,含name、description、rule三字段,支持正则、AST路径和上下文词典三种约束模式,且必须置于项目根目录的.comate/rules.json中生效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想让文心快码(Comate)写代码时自动遵守团队命名规范、禁用 var 声明、强制使用公共组件而非手写样式——不是每次对话都重复说一遍,而是让它“记住并执行”。这需要配置 Rules,而不是靠反复提醒。
理解 Rules 的作用边界
Rules 不是 Prompt 的复述,它不参与单次生成的语义理解,而是提前注入 IDE 的上下文层,在 Comate 启动代码生成前就加载生效。它直接干预模型的 token 采样空间,过滤掉违反规则的输出候选。
【Rules 无法覆盖未声明的隐性习惯】比如“按钮类名统一加 btn- 前缀”,若你没在 Rules 中明确定义 class 命名约束,Comate 就不会主动检查或修正。
编写 Rules 的三类核心字段
Rules 文件本质是 JSON 格式配置,必须包含以下三个顶层键:
• name:规则唯一标识,如 "no-var-declaration" 或 "use-antd-button"
• description:人类可读说明,用于调试和协作,例如 “禁止使用 var,仅允许 const/let”
• rule:真正的约束逻辑,支持正则匹配、AST 节点路径、字符串黑名单三种模式
方法一:用正则禁止特定语法片段
适用于快速拦截明显违规文本,如禁用 var、alert、console.log。
第一步:打开项目根目录下的 .comate/rules.json(若无则新建)
第二步:在 rules 数组中添加对象:
{
"name": "no-var",
"description": "禁止使用 var 声明变量",
"rule": {
"type": "regex",
"pattern": "\bvar\s+[a-zA-Z_$][\w$]*",
"message": "请改用 const 或 let 声明变量"
}
}
注意:pattern 必须用双反斜杠转义,否则 JSON 解析失败;message 会在 Comate 报错时直接显示给开发者。
方法二:用 AST 路径精准控制代码结构
适用于对代码结构有强要求的场景,比如“所有按钮必须用 <Button> 组件,不能用 <div class='btn'>”。
方法一只能查字符串,而 AST 模式能识别 JSX 标签类型。需配合 Babel 解析器:
"rule": {
"type": "ast",
"selector": "JSXOpeningElement[name.name='div'][attributes.0.name.name='className'][attributes.0.value.value=/btn|button/i]",
"message": "请改用 <Button> 组件替代原生 div 按钮"
}
selector 使用 Babylon AST 查询语法,这里匹配 className 含 btn 或 button 的 div 开标签。Comate 在生成前会解析 AST 并比对路径,命中即拒绝该候选代码块。
方法三:绑定项目专属上下文词典
让 Comate 知道 “userProfile” 是 src/services/user.ts 里导出的对象,“orderList” 对应的是 src/components/OrderTable.vue。
在 rules.json 同级建 .comate/context.json,填入:
{
"userProfile": {
"file": "./src/services/user.ts",
"export": "default",
"description": "用户资料主数据对象,含 id、name、avatar 字段"
},
"orderList": {
"file": "./src/components/OrderTable.vue",
"export": "OrderTable",
"description": "订单列表组件,支持分页与状态筛选"
}
}
Rules 本身不写逻辑,但 context.json 会被 Comate 自动加载为符号表。当你输入“渲染用户资料卡片”,它会优先从 userProfile 类型推导字段,而不是凭空编造 user.name 或 userInfo.fullname。
验证 Rules 是否生效
重启 VS Code → 打开任意 .ts 文件 → 输入 // TODO: 声明一个用户变量 → 触发 Comate 补全 → 若出现 const user = {...} 而非 var user = {...},说明 no-var 规则已拦截成功。
若仍出现 var,检查:【.comate/rules.json 必须位于工作区根目录,且文件名全小写、带点号开头】。VS Code 插件只认这个路径和命名。


















