用途 Convex Advisor 是一个面向实时部署的健康/性能/成本顾问。它的定位是:静态代码审查只能猜测,而部署本身「知道」真实情况。它把 Convex 官方 MCP 的 insights 工具所提供的、按函数维度归类、带类型的 72 小时健康事件,转化为有代码级根因的发现。
主要能力 insights 事件类型包括:documentsReadLimit / bytesReadLimit(硬性上限被命中)、documentsReadThreshold / bytesReadThreshold(接近上限)、occFailedPermanently / occRetried(写入争用),每个事件都带证据(table_name、bytes_read、documents_read、occ 文档 id 与重试次数)。顾问会读取被标记函数的实际代码,把每个事件转为根因发现,并按 specs/finding.schema.json 输出到「findings bus」,以便分派修复器并评估上线就绪度。
工作流程
- GUARD:执行 deploy-guard 第 0-1 步,识别并声明本次要读取的部署。在 prod 上读取 insights / 日志属于只读,允许;顾问流程中绝不开启 prod 的变更权限。
- GATHER(确定性,通过官方 Convex MCP):status 取部署选择器;insights 取带类型的 72 小时事件;tables 取 schema 与行数;functionSpec 取公开/内部接口面。insights 工具仅在以用户身份登录的云端 dev/prod 部署可用(预览或 deploy-key 范围上下文不可用),且需要约 72 小时流量;若无返回或不可用,需如实说明并转而提供 convex-reviewer,不得编造发现。
- ROOT-CAUSE:读取被标记函数代码定位根因。
- bytesReadThreshold/Limit 或 documentsReadThreshold/Limit:查找针对被点名表的 .collect() / 无索引 .filter() / 缺少分页;修复方式为加索引配合 .withIndex、.take(n) 或 .paginate,或用 aggregate 组件处理计数形态。
- occRetried / occFailedPermanently:查找被点名文档上的读-改-写热点(共享计数器、状态切换);修复方式为 @convex-dev/sharded-counter、收窄读取集,或将争用转移到 workpool。
- 日志中反复失败(status: failure):分类为 cron 崩溃循环、validator 拒绝、未处理的错误形态。
- EMIT:按 specs/finding.schema.json 输出发现。class 为 perf/correctness/cost;severity 依事件类型(上限命中=high,阈值=med,重试=med,永久 OCC 失败=high);locus 为 {kind: deployment, functionId, tableName};evidence 为 {kind: insight-event, detail: 原始事件};confidence: confirmed(事件确实发生,不是假设);当修复是机械性的,给出 fixCapability + autofixable。
- REPORT:按严重程度排序,每条包含:(a) 一行运行时证据(例如「messages:list 昨天从 messages 读取 4.2MB,共 31 次」),(b) 带 file:line 的代码级根因,(c) 具体修复方案及由哪个能力执行。可提议应用修复;仅在确认后应用,随后在有流量后重跑 insights 验证趋势,或立即重跑静态检查。
适用场景 适用于对已上线的 Convex 部署做性能与成本体检,尤其是排查读取超限、OCC 写入争用、反复失败的日志模式等运行期问题。
限制与边界
- 只读设计:顾问流程绝不修改任何部署,也绝不开启 prod 变更开关(遵循 deploy-guard 纪律)。
- 证据优先:每条发现必须引用真实的 insight 事件、日志行或表统计;若部署无证据,则不产出发现(改为提供 convex-reviewer)。
- 报告前必须先在代码中定位根因:insight 事件只说明症状,发现必须给出代码行与机制。
- 职责边界:仅限性能/成本/健康;授权问题交给 convex-authz,代码风格交给 convex-reviewer,错误分诊交给 sentinel,只发出指向性发现而不重复其工作。
- 修复倾向:组件修复优先于手写实现(计数器 OCC 用 sharded-counter,计数扫描用 aggregate)。
价格、平台细节等本资料未提供。