在 rule/clash/ 目录创建 .list 文件:
vim rule/clash/QR_MyRule.list规则格式:
DOMAIN-SUFFIX,example.com
DOMAIN,exact.example.com
DOMAIN-KEYWORD,keyword
IP-CIDR,1.2.3.0/24
IP-CIDR6,2001:db8::/32
编辑 core/config.py,在 RULES 列表中添加:
RULES = [
# 在合适的位置添加
{"file": "QR_MyRule.list", "route": "QG_最快线路"},
]规则按列表顺序匹配,越靠前优先级越高。
使用 qtags 实现条件控制:
{"file": "QR_MyRule.list", "route": "QG_最快线路", "qtags": ["sci"]}当不使用 -sci 参数时,该规则会路由到 DIRECT。
编辑 core/config.py,在 GROUPS 字典中添加:
GROUPS = {
"QG_新分组": {
"type": "url-test", # 或 "select"
"filter": "(?i)关键词|keyword", # 正则表达式过滤节点
"url": "https://www.google.com/", # url-test需要
"add_nodes": ["DIRECT", "QP_MyNode"] # 可选
}
}分组类型:
select- 手动选择url-test- 自动测速选择
filter正则示例:
(?i)美|us|US- 匹配美国节点(不区分大小写)(?i)^(?!.*重置).*- 排除包含"重置"的节点.*- 匹配所有节点
编辑 core/config.py,在 SELF_HOSTED_NODES 字典中添加:
SELF_HOSTED_NODES = {
"QP_MyNode": {
"server": "192.168.1.100",
"port": 7890,
"type": "socks5",
"tags": ["home", "office"] # 用于场景过滤
}
}tags说明:
- 使用
-nas参数时,带"nas"标签的节点会被排除 - 可以添加多个标签,用于不同场景的过滤
编辑 bin/makeurl.sh:
# 添加新场景
python3 core/clash_rule_builder.py -my -o output/files/newscene.yaml编辑 core/clash_rule_builder.py,添加参数:
parser.add_argument('-newparam', action='store_true',
help='新参数说明')然后在代码中使用:
if args.newparam:
# 执行特定逻辑
pass编辑 core/clash.py 的 set_basis() 方法:
mixed-port: 7890 # 混合代理端口
external-controller: 0.0.0.0:7790 # 控制面板端口编辑 core/clash.py 的 set_dns() 方法:
nameserver:
- 223.5.5.5
- 114.114.114.114
fallback:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query编辑 core/config.py:
HEALTH_CHECK_URL = "http://cp.cloudflare.com/generate_204"
HEALTH_CHECK_INTERVAL = 60 # 秒# 生成配置
SKIP_UPLOAD=1 bash bin/makeurl.sh
# 查看配置内容
cat output/files/home.yamlmihomo -t -f output/files/home.yamlpython3 core/clash_rule_builder.py -my -sci -o test.yaml
mihomo -t -f test.yaml运行时会输出节点添加信息:
✓ 添加节点: QP_MyNode
⏭️ 跳过nas标签节点: QP_NAS
⚠️ 警告: 分组 'QG_学术网站' 尝试引用未在节点池中的节点 'QP_NAS'
在生成的yaml中查看rules部分:
grep -A 50 "^rules:" output/files/home.yaml修改 core/config.py 中的:
SELF_HOSTED_NODES- 自建节点GROUPS- 代理分组RULES- 路由规则
修改 core/clash_rule_builder.py 的主流程。
修改 core/clash.py 的 clash_yaml 类方法。
# 语法检查
python3 -m py_compile core/*.py
# 功能测试
SKIP_UPLOAD=1 bash bin/makeurl.sh
# 验证配置
mihomo -t -f output/files/home.yaml# 匹配美国节点
"(?i)美|us|US|unitedstates|united states|美国|🇺🇸"
# 匹配日本节点
"(?i)日本|jp|japan|🇯🇵"
# 匹配香港节点
"(?i)港|hk|hongkong|hong kong|🇭🇰"
# 排除信息节点
"(?i)^(?!.*(?:重置|官网|到期|流量|剩余)).*"
# 排除自定义节点
"(?i)^(?!.*(?:QP|QG)).*"
# 匹配IPv6节点
"(?i)IPv6|ipv6"
# 匹配ChatGPT相关
"(?i)chat|gpt|美|us"- 规则文件:
QR_功能名.list - 分组名称:
QG_功能名 - 自建节点:
QP_节点名 - 条件标签:小写英文,如
sci
# 检查修改
git status
# 添加文件
git add core/config.py rule/clash/QR_MyRule.list
# 提交
git commit -m "添加新规则:QR_MyRule"