mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-21 09:28:14 +00:00
fix(scheduler)!: 撤掉“优先级=可配置策略表”的错误设计,回归内核内部属性
用户指正:**优先级是内核内部属性**,不是配置项,更不该由插件声明。 我此前把它建模成“策略表 + 字符串解析”,甚至准备接配置中心 (core.agent.priority.<channel>)——方向性错误,故整体撤销。 撤销: - 删除 ParseLevel(字符串解析只服务于“外部可配”这个错误前提) - 删除 AgentConfig.PriorityLookup / Agent.priorityLookup 及 taskLevel 中的查表分支; taskLevel 回归为纯内核内部规则(cli/webui/http→L3,system/_consolidation_→L1, 其余 L1),注释明确“不对外暴露、不做运维可调项” - 设计稿 §3.2 改写为“内核内部属性,不做成配置项”,并删除 §15 里 “ChannelDef.Priority / InjectOptions.Priority 进公开 SDK”这一方向(同属外化) - 未触碰配置中心(registry.go/main.go 的优先级配置一行未加) 同时落地 D6(与本撤销无关、此前遗漏的承诺): - AgentConfig.MaxToolTurns + runTaskSteps 在发起新一轮 LLM 前按 f.Turn 收尾; 0 = 不限;cmd/homed/main.go 从既有 core.agent.max_tool_turns 取值 - 新增 task_test.go 2 项:上限 3 时恰好跑 3 批工具/3 次 LLM 并收尾; 0 = 不限(跑完脚本) 验收:agent 全量 + -race;全仓 build/vet 通过
This commit is contained in:
@ -95,15 +95,20 @@ Step(枚举,顺序执行,步与步之间是安全点):
|
||||
- **默认级 = `L1`**:未显式声明一律最低级("显式才是特权",避免新插件默认获得抢占权)。
|
||||
- **取值域仅这四档**,不引入任意整数,避免"9 级比 4 级大但没人知道怎么排"。
|
||||
|
||||
### 3.2 优先级从哪来(v1:内核策略表)
|
||||
### 3.2 优先级从哪来(内核内部属性,**不做成配置项**)
|
||||
|
||||
v1 **不**在公开 SDK 上加字段,来源有三,按优先级取:
|
||||
优先级是**内核内部属性**:内核预定义四级,并按**内核自己的规则**为任务与中断定级。
|
||||
|
||||
1. 内核策略表:`core.agent.priority.<channel>`(新增 ConfigDef,值 `L1..L4`);
|
||||
2. `ChannelDef` 的内核侧扩展(仅 `internal/sdk` 可用,内置插件可声明);
|
||||
3. 未命中 → `L1`。
|
||||
- ❌ **不是运维可调项**。不引入 `core.agent.priority.<channel>` 这类配置键,
|
||||
也不把 `PriorityLookup` 做成可注入的策略表——那等于把内核的调度内部属性
|
||||
外化成配置,与“谁能打断谁”的内部语义相反。
|
||||
- ❌ 也不暴露给插件声明(这个方向曾写入 v2 计划,已删除)。
|
||||
- ✅ v1 的内部缺省规则(仅为实现缺省值,语义上是内核自己的事):
|
||||
`cli`/`webui`/`http` → `L3`;`system` / `_consolidation_` → `L1`;其余 → `L1`(默认级)。
|
||||
- 定级规则可随内核演进调整,但**始终不对外暴露**。
|
||||
|
||||
> v2 再把 `ChannelDef.Priority` / `InjectOptions.Priority` 加入公开 SDK(纯追加),见 §13。
|
||||
> 具体“哪类工作算哪一级”的完整规则由内核定义;本稿只固定四级语义与定级位置
|
||||
> (`(*Agent).taskLevel`),不承诺配置面。
|
||||
|
||||
### 3.3 抢占判据
|
||||
|
||||
@ -475,7 +480,9 @@ go test -race -count=1 ./internal/agent/... ./internal/plugin/... ./internal/sdk
|
||||
## 15. 开放问题(后续版本)
|
||||
|
||||
1. 异步 step + `tool.cancel`(真正让工具可抢占)。
|
||||
2. `ChannelDef.Priority` / `InjectOptions.Priority` 进入公开 SDK。
|
||||
3. 帧落盘(跨进程/崩溃恢复)。
|
||||
4. 多 agent 并行调度。
|
||||
5. 与 `plan.md` §13.7 的 `RuntimeManager + 分组 worker` 合并(本设计是其前置)。
|
||||
2. 帧落盘(跨进程/崩溃恢复)。
|
||||
3. 多 agent 并行调度。
|
||||
4. 与 `plan.md` §13.7 的 `RuntimeManager + 分组 worker` 合并(本设计是其前置)。
|
||||
|
||||
> 已删除:“`ChannelDef.Priority` / `InjectOptions.Priority` 进入公开 SDK”——
|
||||
> 优先级是内核内部属性(§3.2),不应由插件声明。
|
||||
|
||||
Reference in New Issue
Block a user