用途:在 TypeScript 代码库中编写和修订 HelixDB 查询。SDK 包为 @helix-db/helix-db@3.0.4,仅支持 ESM,需 Node.js 20 或更新版本。适用任务包括新建或修改 TypeScript 查询函数、由 TypeScript 生成动态 POST /v2/query 请求(toQueryJson / toQueryRequest)、用内置 Client 发送请求(client.query(req).send())、为查询添加遍历、投影、分页、BM25 或向量搜索,以及把 Rust v3 DSL 迁移到 TypeScript。手写 JSON AST 不适用本技能,应使用 helix-query-json-dynamic;v3 SDK 不支持存储路由、查询注册和 queries.json 包。
编写规则:读操作使用 readBatch(),任何变更使用 writeBatch();readBatch().varAs 只接受只读遍历。用 varAs、varAsIf、forEachParam、returning 组合批次,跨条目引用用 NodeRef.var/EdgeRef.var,参数用 NodeRef.param/EdgeRef.param。锚点优先顺序为节点/边 ID、唯一属性、等值索引属性、限定标签扫描、宽标签扫描。用 project 或 valueMap 控制输出形状,避免返回嵌入等超大属性。搜索需显式指定文本/向量属性并在遍历前投影 $distance 或 $score,限定范围的索引要传租户值;精确向量或 BM25 预过滤应先构建候选流再调用 .vectorSearch[With]/.textSearch[With]。repeat 必须用 times 或 until 限定,默认 maxDepth 为 100。创建或更新用 varAsIf 显式分支,不依赖 MERGE 语义。参数用 defineParams 定义,支持 param.bool/i64/f64/f32/string/dateTime/bytes 等。
执行与限制:用 toQueryJson、toQueryRequest、toQueryBytes 构造请求并经 Client 发往 /v2/query。i64 用 bigint 或 i64(),含 bigint 的载荷用 toJsonString/stringifyJson 序列化,不要用 JSON.stringify。DateTime 存毫秒时间戳。param.bytes() 不能走 JSON 路由。目标为 Helix Cloud 时需先调用只读的 helix-mcp 解析数据库并查看索引、延迟与建议,再通过 TypeScript SDK 编写并运行查询;MCP 不可用时应停止该流程并给出设置指南。目前类型 3.0.4 传输只接受 HTTP 200,因此 Cloud 的 204 预热会抛错,需用直连 HTTP;不支持的细节暂未提供。