Files
cryptoHermes/ai/harness-health.md
dela f3dc4d0939 refactor: 把 /derivatives 的多源编排从 controller 搬进 usecase
为什么:原 controller handler 在 HTTP 层同时承担了 4 项 usecase 职责
(多源拼装、错误降级策略、limit 硬编码、响应结构组装),违反了
"controller 只做参数解析 + 调用 + 序列化" 的边界。等后续给衍生品加
缓存 / taker volume / 数据质量字段时,HTTP 层会持续变厚。

改动:
- 新增 internal/usecase/market_query.go: MarketQueryUsecase.GetDerivatives()
  并发拉 current funding/OI + 串行查历史 + 错误聚合为 warnings 返回
- /derivatives handler 退化到 4 行;MarketDeps / restapi.Deps 同步收窄
- /klines 保持直查 KlineRepo(thin query,G11 例外)
- 新增 G11 守卫:grep "FundingRepo|OIRepo|LSRepo|TakerRepo" internal/controller

破坏性 API 变更(/derivatives 响应):
- 删除 funding.error / openInterest.error
- 新增顶层 warnings: []string
顶层 symbol / funding / openInterest / longShortRatio / takerBuySellVolume 保持。

harness 同步:
- AGENTS.md §6 加 G11 grep
- ai/project-map.md 加 market_query.go + /derivatives 数据流分支
- ai/task-templates.md T6 加"破坏性变体"分支(本次重构暴露了原假设过严)
- ai/harness-health.md W1 记一次轻量验证 + 守卫数 10→11

验收: go build / go vet / G6 grep / G11 grep 全绿。
2026-05-24 17:51:11 +08:00

5.5 KiB
Raw Blame History

Harness Health — cryptoHermes

日期2026-05-24 版本v1 MVP 刚完成Milestone 1-5

按 he-maintainer 的 scoring rubric 评估当前 harness 工程状态。Rating: strong / partial / weak


总览

维度 Rating 说明
项目地图清晰度 strong ai/project-map.md 完整覆盖 Clean Arch 4 层 + 数据流 + 扩展点
验证命令可跑 strong Makefile 全部命令在 README + AGENTS.md 双重列出
快速反馈环路 strong go build ./... < 2sgo vet ./... < 1s单包测试支持
任务契约质量 partial 模板已写(ai/task-templates.md),但还没有真实任务用过
守卫规则清晰度 strong 11 条 G1-G11每条都有可机械验证命令
架构决策耐久度 strong ADR 0001 记录 9 条核心决策;其他 ADR 等触发
Spec / test-plan partial 还没有 specs/,因为 v1 没有需要 spec 的任务v2 新数据源时必填
失败反馈环路 partial AGENTS.md §10 写了升级时机,但还没有 ai/risk-guardrails.md 改动史可参考
文档 vs 代码对齐 strong AGENTS.md / README / project-map 全部基于实际仓库结构
MEMORY / 长期上下文 n/a 本仓库无 MEMORY.md,按设计——长期知识在 docs/dev.mdai/ 文档中

总体strongMVP 完成时点适用),但有 2 个 partial

  • task-templates 未经过真实任务校验
  • specs/ 目录还是空的(等 v2 需要时填)

已具备的工程基础

  • 3 层 AI 文档系统AGENTS.md(速查)→ ai/project-map.md(结构)→ ai/adr/(决策)。docs/dev.md 作为最详细的设计源头单独存在。
  • 可机械验证的守卫G1-G10 全部给了 grep / make 命令,没有靠 review 的软规则。
  • 唯一的组合根internal/app/app.goDI 一处可见。
  • 接口边界文件internal/usecase/ports.go 是唯一定义对外接口的位置,新 agent 找接口去这里。
  • 强约束 grep 在 AGENTS.md §6:每次 PR 都可以直接跑。

已识别的薄弱点

W1. task-templates 未经过实战

现状:模板已写完,但没有 PR 用过这些契约。 影响:模板可能太严格或太松。 纠正时机:完成第一个非平凡 PR比如 Milestone 6 的技术指标)后回看,调整模板。 2026-05-24 更新/derivatives controller→usecase 重构(抽 MarketQueryUsecase、新增 G11算一次轻量验证。发现 T6 "API 响应字节级一致" 假设过严——抽离 usecase 时合理地把 sub-object error 字段升级成顶层 warnings 数组,已在 T6 加"破坏性变体"分支。Milestone 6 真正落地时再做一次完整复评。

W2. 还没有 work-status.md

现状:目前是单 agent / 单会话工作,不需要 work-status 协调。 影响:暂无。 升级时机:开始 Milestone 6技术指标或 v2新数据源如果跨多次会话建立 ai/work-status.md

W3. CI 完全未搭建

现状:本地有 make test / go vet,但仓库无 GitHub Actions / GitLab CI。 影响:守卫规则全靠人工跑 grep。 升级时机:合并第一个外部 PR 前,搭一个最小 CIgo build + go vet + grep 边界检查 + migration up/down

W4. 单元测试覆盖率未度量

现状MVP 阶段重点是端到端可用,未补单测覆盖率。 影响refactor 时风险偏高。 升级时机Milestone 6 引入指标计算(计算正确性 critical先补 mapper / repo 的 table-driven 测试。

W5. 部分 docs/* 未提交到 git

现状docs/dev.md 是 untrackedgit status 显示 ?? docs/)。 纠正方式:本次 commit 一起加进来。


后续升级触发器

触发条件 应采取的动作
同一类错误第二次出现 加进 ai/risk-guardrails.md,给可验证命令
重大架构决策(换 HTTP 框架 / 引入 MQ / 跨服务通信) 写新 ADR
新增数据源CoinGlass / ETF / CME 必填 ai/specs/<source>.md
跨多次会话的长任务 ai/work-status.md
单测/集成测试出现 flake 加 test-plan约定 retry / quarantine 策略
文档与代码出现漂移grep 守卫失败但代码正常) 立刻同步,不要"以代码为准"绕开守卫

复评建议

  • 3 个月后(约 2026-08复评本文件。若 v2 数据源工作启动,至少需要 1 份 spec + 可能新 ADR。
  • 每次新 Milestone 完成时:跑一次 AGENTS.md §6 的 3 个 grep确认边界未漂移。
  • 新成员agent 或人)首次提 PR 后:根据他们卡住的地方反向更新 AGENTS.md / project-map"如果他们卡过这里,下一个人也会卡")。

Harness 文件清单(截至本次 commit

AGENTS.md                                  ← AI agent 速查
README.md                                  ← 用户向使用文档
docs/dev.md                                ← 完整设计文档(源头)
ai/project-map.md                          ← 仓库结构与扩展点
ai/risk-guardrails.md                      ← G1-G10 守卫规则
ai/adr/0001-architecture-foundations.md    ← 9 条架构基础决策
ai/task-templates.md                       ← 6 种任务模板
ai/harness-health.md                       ← 本文件

CLAUDE.md / GEMINI.md / .cursor/*.md 等其他 AI 工具的入口文件——暂不需要,因为这些工具都会读 AGENTS.md。如未来要差异化对待再分裂。