@peterwangze/claude-trigger-router 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -18
- package/config/trigger.advanced.yaml +16 -20
- package/dist/cli.js +727 -262
- package/dist/cli.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,7 +33,8 @@ ctr setup
|
|
|
33
33
|
|
|
34
34
|
- 检查当前 `~/.claude-trigger-router` 配置是否可以直接复用
|
|
35
35
|
- 检查旧的 `claude-code-router` 配置是否可以迁移
|
|
36
|
-
-
|
|
36
|
+
- 如果都不适用,就按“默认模型 ID -> 接入方式 -> API 信息”的顺序引导你创建最小可用配置
|
|
37
|
+
- 完成最小配置后,可选继续添加一个复杂任务模型,并直接生成 SmartRouter 路由模板
|
|
37
38
|
- 保存配置后启动本地服务
|
|
38
39
|
|
|
39
40
|
这是当前最推荐、也是覆盖最完整的用户入口。
|
|
@@ -80,11 +81,20 @@ Router:
|
|
|
80
81
|
|
|
81
82
|
消息格式转换由路由层统一处理,不需要你自己按不同厂商手写消息体。
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
如果你在 `ctr setup` 中选择继续添加“复杂任务专用模型”,setup 还可以直接帮你补一层 SmartRouter 模板:
|
|
84
85
|
|
|
85
|
-
|
|
86
|
+
- 规则模板:把架构设计、代码审查、深入分析等高确定性任务切到复杂任务模型
|
|
87
|
+
- 规则 + 智能兜底:在规则之外,再让 `router_model` 在默认模型和复杂任务模型之间自动选择
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
这样首次接入时就能同时得到:
|
|
90
|
+
|
|
91
|
+
- 一个默认模型
|
|
92
|
+
- 一个复杂任务模型
|
|
93
|
+
- 一套可直接修改的 SmartRouter 起步模板
|
|
94
|
+
|
|
95
|
+
## Router:显式规则优先
|
|
96
|
+
|
|
97
|
+
统一 `Router` 的第一层能力,是先用显式规则处理“高确定性任务”:
|
|
88
98
|
|
|
89
99
|
- 架构设计
|
|
90
100
|
- 代码审查
|
|
@@ -93,6 +103,11 @@ Router:
|
|
|
93
103
|
|
|
94
104
|
这类任务通常可以通过关键词或规则稳定识别,然后直接路由到你指定的模型。
|
|
95
105
|
|
|
106
|
+
当前这层能力由 `SmartRouter.rules` 承载:
|
|
107
|
+
|
|
108
|
+
- 默认请求先走 `Router.default`
|
|
109
|
+
- 命中显式规则的请求,优先切到规则指定模型
|
|
110
|
+
|
|
96
111
|
示例:
|
|
97
112
|
|
|
98
113
|
```yaml
|
|
@@ -112,7 +127,7 @@ Models:
|
|
|
112
127
|
Router:
|
|
113
128
|
default: "sonnet"
|
|
114
129
|
|
|
115
|
-
|
|
130
|
+
SmartRouter:
|
|
116
131
|
enabled: true
|
|
117
132
|
analysis_scope: "last_message"
|
|
118
133
|
rules:
|
|
@@ -125,14 +140,9 @@ TriggerRouter:
|
|
|
125
140
|
model: "opus"
|
|
126
141
|
```
|
|
127
142
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
- 默认请求走 `Router.default`
|
|
131
|
-
- 命中 TriggerRouter 规则的请求,优先切到规则指定模型
|
|
143
|
+
## Router:候选模型智能兜底
|
|
132
144
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
`SmartRouter` 是当前产品的另一个核心功能。
|
|
145
|
+
统一 `Router` 的第二层能力,是在显式规则未命中时,用候选模型做智能兜底。
|
|
136
146
|
|
|
137
147
|
它适合“规则难以穷举,但模型选择仍然很重要”的任务:
|
|
138
148
|
|
|
@@ -140,7 +150,10 @@ TriggerRouter:
|
|
|
140
150
|
- 日常修复 vs 架构设计
|
|
141
151
|
- 常规回答 vs 长上下文分析
|
|
142
152
|
|
|
143
|
-
|
|
153
|
+
你提供一个路由模型和一组候选模型,路由器会在规则未命中时,从候选模型里自动挑一个更合适的目标。
|
|
154
|
+
|
|
155
|
+
- 规则负责稳定命中
|
|
156
|
+
- 智能兜底负责补上规则没覆盖到的模糊任务
|
|
144
157
|
|
|
145
158
|
示例:
|
|
146
159
|
|
|
@@ -175,13 +188,14 @@ SmartRouter:
|
|
|
175
188
|
|
|
176
189
|
可以简单理解成:
|
|
177
190
|
|
|
178
|
-
-
|
|
179
|
-
-
|
|
191
|
+
- `Router.default` 负责默认去向
|
|
192
|
+
- 显式规则负责“能明确命中的任务”
|
|
193
|
+
- 智能兜底负责“规则没命中时的动态选模”
|
|
180
194
|
|
|
181
|
-
|
|
195
|
+
这两层能力可以同时启用:
|
|
182
196
|
|
|
183
|
-
-
|
|
184
|
-
-
|
|
197
|
+
- 先让显式规则处理高确定性任务
|
|
198
|
+
- 再让智能兜底处理剩余的模糊任务
|
|
185
199
|
|
|
186
200
|
## `interface` 怎么选
|
|
187
201
|
|
|
@@ -55,11 +55,10 @@ Router:
|
|
|
55
55
|
longContextThreshold: 60000
|
|
56
56
|
webSearch: "sonnet"
|
|
57
57
|
|
|
58
|
-
# 3)
|
|
59
|
-
|
|
58
|
+
# 3) SmartRouter:统一路由入口。先走高确定性规则,再用候选模型智能兜底
|
|
59
|
+
SmartRouter:
|
|
60
60
|
enabled: true
|
|
61
61
|
analysis_scope: "last_message"
|
|
62
|
-
llm_intent_recognition: false
|
|
63
62
|
rules:
|
|
64
63
|
- name: "architecture"
|
|
65
64
|
priority: 90
|
|
@@ -121,9 +120,6 @@ TriggerRouter:
|
|
|
121
120
|
- "simple"
|
|
122
121
|
model: "ollama_qwen"
|
|
123
122
|
|
|
124
|
-
# 4) SmartRouter:规则没命中时,从候选模型中自动挑选
|
|
125
|
-
SmartRouter:
|
|
126
|
-
enabled: true
|
|
127
123
|
router_model: "sonnet"
|
|
128
124
|
candidates:
|
|
129
125
|
- model: "sonnet"
|
|
@@ -139,10 +135,6 @@ SmartRouter:
|
|
|
139
135
|
max_tokens: 256
|
|
140
136
|
fallback: "default"
|
|
141
137
|
|
|
142
|
-
# 5) Governance:治理模块也直接引用 model id
|
|
143
|
-
Governance:
|
|
144
|
-
enabled: true
|
|
145
|
-
|
|
146
138
|
sticky:
|
|
147
139
|
enabled: true
|
|
148
140
|
session_ttl_ms: 3600000
|
|
@@ -153,6 +145,19 @@ Governance:
|
|
|
153
145
|
summarizer_model: "sonnet"
|
|
154
146
|
max_summary_tokens: 256
|
|
155
147
|
|
|
148
|
+
semantic:
|
|
149
|
+
enabled: true
|
|
150
|
+
mode: "embedding"
|
|
151
|
+
threshold: 0.2
|
|
152
|
+
prototypes:
|
|
153
|
+
architecture: "重构 系统 结构 模块 拆分 架构 设计"
|
|
154
|
+
code_review: "代码 审查 风险 评审 review"
|
|
155
|
+
complex_reasoning: "复杂 推理 分析 严谨 逻辑 reasoning"
|
|
156
|
+
|
|
157
|
+
# 4) Governance:保留响应治理、级联与观测能力;semantic / sticky 已归入 SmartRouter
|
|
158
|
+
Governance:
|
|
159
|
+
enabled: true
|
|
160
|
+
|
|
156
161
|
cascade:
|
|
157
162
|
enabled: true
|
|
158
163
|
max_attempts: 2
|
|
@@ -168,15 +173,6 @@ Governance:
|
|
|
168
173
|
to: "opus"
|
|
169
174
|
reasoning: "high"
|
|
170
175
|
|
|
171
|
-
semantic:
|
|
172
|
-
enabled: true
|
|
173
|
-
mode: "embedding"
|
|
174
|
-
threshold: 0.2
|
|
175
|
-
prototypes:
|
|
176
|
-
architecture: "重构 系统 结构 模块 拆分 架构 设计"
|
|
177
|
-
code_review: "代码 审查 风险 评审 review"
|
|
178
|
-
complex_reasoning: "复杂 推理 分析 严谨 逻辑 reasoning"
|
|
179
|
-
|
|
180
176
|
shadow:
|
|
181
177
|
enabled: true
|
|
182
178
|
mode: "async_audit"
|
|
@@ -199,7 +195,7 @@ Governance:
|
|
|
199
195
|
spike_warn_rate: 0.5
|
|
200
196
|
spike_delta_rate: 0.3
|
|
201
197
|
|
|
202
|
-
#
|
|
198
|
+
# 5) Legacy 兼容:旧 `Providers` 仅作为兼容层保留,不建议新配置继续扩展
|
|
203
199
|
# Providers:
|
|
204
200
|
# - name: openrouter
|
|
205
201
|
# api_base_url: "https://openrouter.ai/api/v1/chat/completions"
|