莱克斯
用于AI代理的Lexicon解析器。读取 .cursor/ 规则和技能,通过CLI或MCP服务器使用基于优先级的级联和智能路由将它们与远程词典存储库合并。
快速开始
容器(推荐)
docker run -d --name lex \
-p 8082:8082 \
-v lex-data:/data \
quay.io/dpopsuev/lex二进制
go install github.com/dpopsuev/lex/cmd/lex@latest
lex serve # stdio (Cursor/Claude)
lex serve --transport http # HTTP on :8082MCP配置
stdio(本地二进制):
{
"mcpServers": {
"lex": {
"command": "lex",
"args": ["serve"]
}
}
}HTTP(容器):
{
"mcpServers": {
"lex": {
"url": "http://localhost:8082/"
}
}
}工作流程
你: 我们加载了哪些开发人员最佳实践,来自哪个词典? 代理人: *(电话lexicon行动起来resolve)* 您有12条规则处于活动状态。4来自当地.cursor/rules/(优先级100)——项目标准、测试方法、确定性优先和安全分析。其他8个来自你的远程词典github.com/dpopsuev/lexicon(优先级50)——遵循惯例、可审查性优先、提交标准等。地方规则在任何重叠中获胜。
你: 添加我团队的共享词典,以便每个项目都能使用。 代理人: *(电话lexicon行动起来add,网址https://github.com/myorg/lexicon,优先级60)* 完成。它以优先级60注册,因此它会覆盖默认词典(25),但会覆盖您的本地词典.cursor/规则(100)仍然优先。跑lexicon行动起来resolve在任何工作区上查看合并结果。
你: 我正在编辑internal/auth/handler.go--我应该了解哪些特定的安全规则? 代理人: *(电话lexicon行动起来resolve、活动文件和标签["security"])* 是,匹配2条规则:security-analysis.mdc从您的本地工作区(每次信任边界更改的OWASP十大检查表)以及secure-defaults.mdc来自您的远程词典(输入验证,没有硬编码的秘密)。两者均适用于*.go文件夹。
你: 那个遥远的词典已经过时了。同步它。 代理人: *(电话lexicon行动起来sync)* 所有来源均已重新获取。自上次同步以来,远程词典删除了3条新规则。
问题
人工智能代理需要跨工作空间的一致规则、惯例和技能。如果没有解析器,规则就会分散在本地 .cursor/ 目录、团队约定不能共享,也无法覆盖或级联。Lex通过提供统一的分辨率层来解决这个问题。
核心概念
| 概念 | 它是什么 |
|---|---|
| 规则 | A .md 文件在 .cursor/rules/。包含AI指令。 |
| 技能 | 目录 SKILL.md 在 .cursor/skills/。扩展代理功能。 |
| Lexicon | 一个包含规则、技能和模板的远程Git存储库。 |
| 优先级 | 数字越高获胜。本地工作区规则默认为100,远程默认为25。 |
| 智能路由 | 全局和标签匹配,仅为每个文件/上下文提供相关规则。 |
| 始终应用 | 已标记规则 always_apply: true 旁路路由过滤器。 |
建筑
Lex有三层: 命令行界面 (cmd/lex), MCP服务器 (internal/mcp),以及 协议/注册表 (internal/protocol, internal/registry, internal/lexicon).注册表管理中的源配置 ~/.lex/repos.d/.决议合并本地 .cursor/ 带有远程词典克隆的工件。
智能路由
Lex支持上下文感知规则解析:
- 全球匹配:规则与
globs模式仅在以下情况下返回--file火柴 - 标签匹配:规则与
labels仅在以下情况下返回--context关键字相交 - 始终适用:规则已标记
always_apply: true始终包含
例子:
lex add https://github.com/myorg/lexicon --priority 60
lex resolve --file internal/auth/handler.go --context security分辨率顺序:本地(pri 100)>远程(pri 60)>默认值(pri 25)。
在您的 lexicon.yaml:
routing:
- match:
labels: [security]
globs: ["*.go", "*.py", "*.rs"]
- match:
labels: [testing]
always_apply: trueMCP工具
| 工具 | 说明 |
|---|---|
lexicon | 通过合并本地.cursor/和远程词典来解决有效的规则和技巧。行动: resolve (将本地+远程与路径/标签过滤器合并), inspect (列出来自注册来源的规则/技能/模板), add (注册远程仓库), remove (删除源), enable/disable (切换而不移除), sync (重新获取所有), list (显示来源)。 |
config | 获取或设置全局配置。行动: get, set.Keys:default_priority、cache_dir、enabled、labels。 |
配置
Lex使用受DNF启发的分层配置系统:
全局配置: ~/.lex/config.yaml
default_priority: 50
cache_dir: ~/.lex/cache
enabled: true根据源配置: ~/.lex/repos.d/*.yaml
每个注册的词典源都有自己的配置文件:
url: https://github.com/org/lexicon
enabled: true
priority: 50
ref: main
labels:
- production源管理
lex add https://github.com/org/lexicon # register a source
lex disable https://github.com/org/lexicon # disable without removing
lex enable https://github.com/org/lexicon # re-enable
lex config # show global config
lex config set default_priority 40 # set a config value环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
LEX_ROOT | ~/.lex | 词典存储根 |
LEX_TRANSPORT | stdio | 运输: stdio, http |
LEX_ADDR | :8082 | 监听地址(仅限http) |
LEX_LOG_LEVEL | info | 日志级别: debug, info, warn, error.JSON转换为stderr。 |
许可证
麻省理工学院
