feat(llm): update

This commit is contained in:
2025-12-30 14:43:26 +08:00
parent 5cf2295f91
commit f0e3ede69b

View File

@@ -215,9 +215,30 @@ In this case:
- `Kind() string`任务类型标识job kind改名会导致“新旧任务类型不一致”。
- `InsertOpts() river.InsertOpts`:默认入队参数(队列、优先级、最大重试、唯一任务策略等)。
- `UniqueID() string`(项目约定):周期任务 handle 的稳定 key通常 `return Kind()`。
- Template:
```go
type SleepArgs struct {
Duration time.Duration `json:"duration"`
}
func (SleepArgs) Kind() string { return "sleep" }
```
### Worker执行器
- MUST: Struct 命名格式必须为 `XxxWorker`。
- MUST: Struct 定义上方必须添加 `// @provider(job)` 注释,以便运行 `atomctl gen provider` 自动生成注入代码。
- MUST: Worker 必须实现 `river.Worker[T]` 接口,建议嵌入 `river.WorkerDefaults[T]` 以使用默认行为。
- Template:
```go
// @provider(job)
type SleepWorker struct {
river.WorkerDefaults[args.SleepArgs]
}
func (w *SleepWorker) Work(ctx context.Context, job *river.Job[args.SleepArgs]) error {
return nil
}
```
- `Work(ctx, job)`:执行入口;返回 `nil` 成功;返回 `error` 失败并按 River 策略重试。
- `river.JobSnooze(d)`:延后再跑一次,且 **不递增 attempt**;适合等待外部依赖就绪/限流等。
- `river.JobCancel(err)`:永久取消并记录原因;适合业务上永远不可能成功的情况(参数非法/语义过期等)。