feat(http): `/metrics` 无一个 label、无一个直方图、无成本维度——5xx 率算不出、模型烧钱看不见、BudgetExceeded 记成 success
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- rust
- Domaine
- observability
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
场景 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 区分。
- Langage dominant
- Rust
- Étoiles
- 4
- Forks
- 0
- Merge moyen
- 1 h 5 min
- PR mergées (30 j)
- 4
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de jeffkit/recursive
-
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Toutes les issues de jeffkit/recursive
Issues similaires
-
crate: spate-kafka documentation priority: medium
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
balovess/aria2_rust#88 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Shell `yoyo <verb> <sub>` missing its required argument prints usage and exits 0: `config get`Ouverteagent-self
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
yologdev/yoyo-evolve#1154 ·