feat(http): `/metrics` 无一个 label、无一个直方图、无成本维度——5xx 率算不出、模型烧钱看不见、BudgetExceeded 记成 success
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- observability
Línea de trabajo
Start from the Metrics struct at src/http/mod.rs:63-86 — thirteen bare AtomicU64s with no label carrier — and the hard-coded exposition at handlers.rs:1835-1878. Read the metrics middleware in rate_limit.rs:178-188, which only does fetch_add and never reads status or timing, then the /run path at handlers.rs:319-337 where BudgetExceeded is recorded as success. Done means /metrics exposes route/status/model/finish_reason labels, a cost counter and three histograms, and /run reports failure per finish_reason.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无 · 验收:代码 diff 逐点核对;运行时可见性另需 Langfuse(#124)
基线 origin/main = fc29f3d4。
Summary
src/http/mod.rs:63-86:Metrics为 13 个裸AtomicU64(requests_total/active、agent_runs_、tokens_、sessions_active、rate_limits_rejected、runs_waiting/in_flight)——无 label 载体;handlers.rs:1835-1878exposition 为硬编码纯数字;rate_limit.rs:178-188的 metrics_middleware 只 fetch_add,不读 status、不计时。- 关键词缺失:①
requests_total无 status/route label → 5xx/503(准入打满)率根本不存在;② 无 model label、无cost_usd指标;③ 无直方图(llm_latency_ms在RuntimeOutcome里有产出,HTTP 层从不消费——handlers.rs:1238写 0);④FinishReason8 变体无一进指标:/run对 BudgetExceeded 也record_run_success+ 返回"status":"success"(handlers.rs:319-337);⑤ 无 compaction/重试/工具错误计数。
建议
引入 labels(route/status/model/finish_reason)+ recursive_cost_usd_total + 3 个直方图(LLM 延迟、admission 等待、run 步数);/run 的 status 字段按 finish_reason 区分。
- Lenguaje dominante
- Rust
- Estrellas
- 4
- Forks
- 0
- Merge medio
- 5 h 32 min
- PR fusionados (30 d)
- 7
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de jeffkit/recursive
-
Dificultad 3/5 Medio día Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
jeffkit/recursive#141 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
jeffkit/recursive#138 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
jeffkit/recursive#134 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
Todos los issues de jeffkit/recursive
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
wardian-app/Wardian#1603 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 1/5 1-3 horas Aptitud para principiantes 72/100
peteonrails/voxtype#844 ·
Los mantenedores suelen responder en 1 día
-
feature
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
uwuclxdy/clauth#107 · 1 comentario ·
Los mantenedores suelen responder en 4 días