AI 数据平台 / Agent 工程 / 技术负责人AI DATA PLATFORMS / AGENT ENGINEERING / TECH LEAD

能落地的 Agent,
扛得住的数据平台。
Agents that ship.
Data platforms that scale.

张嘉玮 · AI 数据平台与 Agent 工程负责人Jiawei Zhang · AI Data Platform & Agent Engineering Lead

从 0 到 1 主导 SolarSense AI 数据平台,带 20+ 人团队 9 个月上线生产:海量多模态数据流水线,加上一个能自主调用 150+ 平台工具的业务 Agent。I led the SolarSense AI data platform from zero to production in 9 months with a 20+ person team: a multimodal data pipeline at scale, plus a business agent that autonomously drives 150+ platform tools.

  • MCP
  • Skill
  • Agent Workflow
  • Java
  • Python
  • K8s / GitOps

此处是一段实时渲染的激光雷达点云。
当前浏览器未启用 WebGL。
A live-rendered LiDAR point cloud.
WebGL is unavailable in this browser.

FIG.0 · WEBGL · NO LIBRARIES 程序生成的街景,虚拟 128 线激光雷达逐束光线投射出约 100 万个点,框为 3D 标注。可拖动旋转。A procedurally generated street, ray-cast beam by beam by a virtual 128-beam LiDAR into about a million points, with a 3D annotation box. Drag to orbit.
Agent 可调用的平台工具Platform tools the agent can call
150+
支持的数据模态Data modalities supported
10 类10
生产真实请求 · 单周Real production requests · one week 生产PROD
331 万3.31 M
首个 commit → 云上生产First commit → cloud production
9 个月9 months

2025-09 第一个 commit,2026-06 上线生产。First commit Sep 2025, production Jun 2026.

六个方向,
全链路都扛得住。
Six areas,
end to end.

一年时间,从 0 到 1 做成一个 AI 数据平台。六个方向,每条都有硬数字。One year, one AI data platform built from zero. Six areas, each backed by hard numbers.

01

Agent 工程化Agent engineering

  • 大模型调用LLM integration统一 LLM 网关接入十余个主流模型,每次调用的 token、缓存、延迟全链路可追溯One LLM gateway across a dozen-plus leading models, with tokens, cache and latency traced on every call10+10+
  • 编排 · 工具 · MCPOrchestration · tools · MCP主导 Agent 编排架构:确定性工作流 + 多 Agent 委派,MCP 网关统一接入 150+ 工具、25 个 Skill8 deterministic workflows and delegation; 150+ tools and 25 skills behind an MCP gateway150+150+
  • Prompt · 上下文 · 记忆Prompt · context · memory重构上下文工程,Agent 推理成本降低近一半;长会话记忆零丢失Rebuilt context engineering, cutting agent inference cost by nearly half; long sessions lose nothing−43.6%−43.6%
  • 评测 · 质量Evaluation建立 Agent 评测与变异测试体系,528 个用例全绿,回归失败率下降 60%Built agent evaluation and mutation testing: 528 tests green, regression failures down 60%−60%−60%
02

海量数据处理Data at scale

  • 海量 · TB 级Massive volumesTB 级数据集的上传与版本链路,生产环境 10 GB 大包直传零中断Upload and versioning designed for TB-scale datasets; a 10 GB archive uploaded in production with no interruptionsTB 级TB-scale生产PROD
  • 时序 · 异构Time series · heterogeneous全模态覆盖:图像、视频、点云、音频、文本、工业时序;单帧百万点级点云实时处理10 modalities: image, video, point cloud, audio, text, industrial time series; million-point frames10 类10 types
  • 清洗 · 解析 · 转换Clean · parse · transform50+ 数据处理算子全量上线,产物逐个校验,交付零差错56 operators × preview / batch: all 112 cells run for real, every output SHA-256-checked50+50+
  • 流水线 · 延迟 · 异常Pipelines · latency · anomalies万级任务秒级调度,支撑数万级任务并发;故障注入下数据零重复10k+ files submitted in under a second; a 40k+ backlog cleared; 280 retries, one version万级10k+
03

平台架构与后端Platform & backend

  • 从零搭建Built from zero一年从 0 到 1:11 个微服务 + 数据 Worker + 模型服务 + 桌面端的完整产品体系In one year, from the first commit to a web app, 11 Java services, workers, model serving and a desktop client1111
  • 高并发 · 稳定性Load · reliability100 并发 p95 50 ms、0 失败;单周 331 万真实请求,可用性 99.9975%p95 50 ms at 100 concurrent users, zero failures; 3.31M real requests in a week, 99.9975% availability50 ms50 ms生产PROD
  • 多租户 · 安全Multi-tenancy · security三层租户隔离;权限审计覆盖 48 租户、5,804 条授权,复合漏洞 26/26 修复上线Three-layer tenant isolation; a permission audit across 48 tenants and 5,804 grants; 26/26 fixes shipped26/2626/26生产PROD
  • 性能瓶颈Bottlenecks压测定位瓶颈,吞吐提升 2.4 倍,P95 延迟降低 67%Load testing found a CPU-bound service: 2 → 6 cores, 84 → 205 req/s, p95 2.6 s → 0.85 s2.4×2.4×
04

模型服务与 MLOpsModel serving & MLOps

  • 统一接入One contract主导模型服务治理,21 个模型统一接入、按需弹性扩缩21 model units unified behind one /infer + /health contract, scaled on demand by a gateway2121
  • 按需扩缩Scale to zero空闲自动缩容到 0,GPU 成本大幅下降;语音模型响应从 22 s 降到 0.7 sIdle models scale to zero, 34 s cold start; a speech model 22 s cold → 704 ms warm0 → N0 → N
  • CPU 推理优化CPU inference无 GPU 环境推理提速 9.4 倍,内存占用减半Segmentation without a GPU: 6,000 → 640 ms; 4K-image peak memory 4,078 → 1,907 MB9.4×9.4×
  • 健康可信Honest health重建模型健康探活,误报全部清零Health from live probes: 31 models "all in ERROR" turned out to be 12 running0 误报0 false
05

云原生与交付Cloud-native delivery

  • GitOps 发布GitOps releases28 个生产 Deployment 纳入 GitOps;CI 唯一出图口,回滚改一行 tag28 production Deployments under GitOps; CI is the only image source; rollback is a one-line tag change2828生产PROD
  • 可观测Observability告警有效覆盖 64 / 64;access log 1,313 万 → 71 万行(−94.6%)Alert coverage 64 / 64; access-log lines 13.1M → 0.71M (−94.6%)100%100%生产PROD
  • 离线 · 信创Air-gapped · domestic stack27 个镜像整套平台离线交付到 ARM64 + 国产 OS 机房The full 27-image platform delivered offline to ARM64 on a domestic OS2727
  • 出包前验证Verify before shipping同规格实机真装,出包前拦下 19 个问题,其中 5 个致命Real installs on matching hardware caught 19 issues before shipping, 5 of them fatal1919
06

技术管理Engineering leadership

  • 团队Team带 20+ 人研发、运维、测试团队,同时负责两条产品线Coordinated a platform group of about 20 across engineering, operations and QA, for two product lines20+20+
  • 评审 · 合流Review · merge评审通过 400+ 个团队 MR;两条 400+ 文件的长期分支合入主干Approved 400+ team MRs; merged two long-lived branches of 400+ files each400+400+
  • 节奏Cadence一年 5,839 次提交、21 个仓;连续 8 个基线版本,2~3 周一个5,839 commits across 21 repos in a year; 8 consecutive baselines, one every 2–3 weeks5,8395,839
  • AI 协作开发AI-assisted deliveryAI 原生研发模式:多智能体协作开发,个人交付效率数倍提升I own spec and sign-off; Codex implements and Claude Code reviews, several lines in parallelAI 原生AI-native

造 Agent,
也用 Agent 干活。
I build agents,
and I work with them.

三件事:业务 Agent 运行时 Solar Harness 的目标工作流;它的 harness 实测剖面与调优;以及我自己每天怎样用 Agent、MCP 和 Skill 交付。Three things: the target workflow of Solar Harness, a business-agent runtime; a measured anatomy of its harness and how I tuned it; and how I deliver with agents, MCP and skills every day.

01 · SOLAR HARNESS

一句话需求,变成可交付的数据包。One sentence in, a shippable dataset out.

Solar Harness 是 SolarSense 的业务 Agent 运行时(前身 SolarClaw),我负责它的架构设计、质量审计与 harness 调优。它把自然语言需求拆成工作流,调用平台已有的数据集、预处理、模型和复核能力逐步执行;写操作先过确认门,每一步都有记录,可以回放。Solar Harness is SolarSense's business-agent runtime (formerly SolarClaw); I owned its architecture, quality review and harness tuning. It turns a plain-language request into a workflow and runs it step by step on the platform's own dataset, preprocessing, model and review services. Write actions pass an approval gate, and every step is logged and replayable.

这段演示需要 WebGL2,当前浏览器未启用。This demo needs WebGL2, which this browser has not enabled.

0:00 / 0:40

FIG.1 · 一条目标工作流的完整演示:需求 → 规划 → 确认 → 清洗 → 预标注 → 人工复核 → 打包交付。画面是 32 张真实高速公路照片(Wikimedia Commons 开放授权,含镜像),框是用开源检测模型(COCO 预训练 Faster R-CNN)在这些照片上实际跑出来的;复核特写也是真实输出——模型对同一辆厢式货车给出了 truck / car 三个互相冲突的框。数据集名、总张数与总框数为示意。每一步对应平台上已有的能力;截至 2026-08,这条端到端链路仍在联调。FIG.1 · The target workflow end to end: request → plan → approval → clean → pre-label → human review → package. The frames are 32 real highway photos (openly licensed on Wikimedia Commons, plus mirror images), and the boxes are what an open COCO-pretrained Faster R-CNN actually produced on them; the review close-up is real output too — the model gave one van three conflicting truck / car boxes. The dataset name and totals are illustrative. Each step maps to a capability the platform already has; as of Aug 2026 the end-to-end chain was still in integration.

照片来源与授权(32)Photo credits & licenses (32)
  1. Southern Motorway Auckland traffic - copyright-free photo released to public domain.jpg · Kiwiev · CC0
  2. Cars in traffic in Auckland, New Zealand - copyright-free photo released to public domain.jpg · Kiwiev · CC0
  3. Typical Weekend Traffic on IH 35 Downtown Austin 2019.jpg · Larry D. Moore · CC BY 4.0
  4. Driving Cars in a Traffic Jam.jpg · epSos.de · CC BY 2.0
  5. Photograph of Shirley Highway During Evening Rush Hour Traffic - NARA - 546644.jpg · Unknown authorUnknown author or not provided · Public domain
  6. Trafic jam M7 highway 2012.JPG · Derzsi Elekes Andor · CC BY-SA 3.0
  7. SHIRLEY HIGHWAY IN VIRGINIA. HEAVY TRAFFIC AND CLEAR BUS LANES - NARA - 546629.jpg · Yoichi Okamoto · Public domain
  8. Real Canadian traffic jam (8590180614).jpg · Thomas Woodtli from Zürich, Switzerland · CC BY 2.0
  9. SHIRLEY HIGHWAY DURING EVENING RUSH HOUR - NARA - 546747.jpg · Yoichi Okamoto · Public domain
  10. Northbound traffic on the M1 motorway - geograph.org.uk - 4343339.jpg · Mat Fascione · CC BY-SA 2.0
  11. Traffic on Freeway 1 in north Taichung 03.jpg · Alika113 · CC BY-SA 4.0
  12. Traffic on Freeway 1 in north Taichung 02.jpg · Alika113 · CC BY-SA 4.0
  13. Traffic on Freeway 1 in north Taichung 04.jpg · Alika113 · CC BY-SA 4.0
  14. Traffic Jam - Leh–Manali Highway - Gulaba - Kullu 2014-05-10 2366.JPG · Biswarup Ganguly · CC BY 3.0
  15. 401 Traffic Jam.png · Floydian (talk) · CC BY-SA 3.0
  16. Traffic Jam on the M62 - geograph.org.uk - 7390393.jpg · Chris Heaton · CC BY-SA 2.0
  17. Northbound freeway traffic greenwood.jpg · Leon Brooks · Public domain
  18. Traffic on A5 Autobahn (22072079981).jpg · Charles from Port Chester, New York · CC BY 2.0
  19. Cars are driving down the street at night 2025.jpg · Pattaya Patrol · CC BY-SA 4.0
  20. Mitchell Freeway 147 N Walter morning peak.jpg · User:Orderinchaos · CC BY-SA 3.0
  21. Eastern Freeway centre of road Balwyn North-01 from balloon 2007-03-05.jpg · Tangerineduel · CC BY-SA 4.0
  22. Highway intersection at night-time (Unsplash).jpg · Israel Sundseth kappuru · CC0
  23. Eastern Freeway centre of road Balwyn North-02 from balloon 2007-03-05.jpg · Tangerineduel · CC BY-SA 4.0
  24. Shutoko expressway Kandabashi exit 001.jpg · Ebiebi2 · Public domain
  25. Freeway-Baghdad2025.jpg · Unknown authorUnknown author · CC BY 4.0
  26. Mitchell Freeway 011 S Mount Street.jpg · Original uploader was Kcdtsg (David) at en.wikipedia · Public domain
  27. Olympic urban expressway Seoul.jpg · ja:User:Sonata · CC BY-SA 3.0
  28. Traffic accident Southeast Freeway and North Quay P1400982.jpg · John Robert McPherson · CC BY-SA 4.0
  29. Freeway 7 (Iran) or the Persian Gulf in Iran Mostafa Meraji 2011 07.jpg · Mostafameraji · CC0
  30. Freeway 7 (Iran) or the Persian Gulf in Iran Mostafa Meraji 2011 17.jpg · Mostafameraji · CC0
  31. Midday traffic on Kwinana Freeway Cockburn 2018.jpg · Orderinchaos · CC BY-SA 4.0
  32. Freeway 7 (Iran) or the Persian Gulf in Iran Mostafa Meraji 2011 10.jpg · Mostafameraji · CC0

02 · HARNESS ANATOMY

一次 Agent 调用,token 花在哪里。Where one agent call spends its tokens.

先量再改。主链路 982 次调用,每段 token 用模型返回的真实计数校准,归因误差 0.00%。最贵的是工具定义,而大家一直在省的对话历史只占 8.8%。Measure before changing anything. 982 main-chat calls, every segment calibrated against the provider's real token counts, 0.00% attribution error. Tool definitions cost the most; chat history, the part everyone tries to save on, is only 8.8%.

工具定义 40.5%Tool definitions 40.5%system 骨架 31.7%System scaffold 31.7%会话内容 27.8%Conversation 27.8%

prompt 缓存命中率PROMPT CACHE HIT RATE

调优前Before51.0%
对照标杆Reference97.3%

差距来自易变内容排在稳定内容前面:工具一加载,整个可缓存前缀就作废。重排后稳定前缀从 888 涨到 2,777 字符,越过缓存起步线。The gap came from volatile sections sitting before stable ones: loading a tool invalidated the whole cacheable prefix. After reordering, the stable prefix grew from 888 to 2,777 characters, past the caching threshold.

调优结果 · 前 → 后TUNING · BEFORE → AFTER

    528 个用例 0 失败;故意改坏实现的 6 个变异全部被测试打红。用例是在验效果,不是摆设。528 tests, 0 failures; all 6 deliberate mutations of the implementation turned the suite red. The tests check outcomes, not ceremony.

    03 · MY AGENT WORKBENCH

    把运维经验写成 Skill,让 Agent 安全地动生产。Ops know-how, written as skills so agents can work on production safely.

    我写规格与验收,Claude Code 规划并调用 Skill,Codex 按任务包实现;踩过的坑都沉淀成带护栏的 Skill,通过 MCP 接上浏览器、文档与知识库。右侧是通用化后的示意运行。I write the spec and the acceptance criteria; Claude Code plans, calls skills and reviews; Codex implements from task packages. Every lesson becomes a skill with guardrails, connected through MCP to a browser, documents and a knowledge base. The terminal shows generalized, illustrative runs.

    1. ME规格 · 验收Spec · sign-off

      目标、边界、可证伪的验收条件Goals, limits, falsifiable criteria

    2. CLAUDE CODE规划 · Skill · 复核Plan · skills · review

      调用 Skill,独立复算,不信自报Runs skills, recomputes, never trusts self-reported results

    3. CODEX按任务包实现Implements task packages

      可断点续跑,多条线并行Resumable, several lines in parallel

    4. GATE门禁 · 棘轮Gates · ratchet

      教训写进门禁,失败清单只准变短Lessons become gates; failure lists only shrink

    MCPPlaywrightNotionDocsGit长期记忆Memory阅读库Reading library

      /skill示意运行ILLUSTRATIVE RUN

      约束、取舍、验证。Constraints. Trade-offs.
      Proof.

      六个真实案例。每个都写清楚遇到的约束、考虑过的方案、为什么这样选,以及怎么证明它成立。性能与交付数字都注明环境:生产 为生产环境实测,内网 为内网或预发环境。Six real cases, each with the constraint, the options considered, why I chose what I did, and how it was proven. Performance and delivery numbers state their environment: PROD measured in production, LAB measured in staging or pre-production.

      浏览全部 6 个案例Browse all 6 cases
      1. A队列放进 MySQL,与任务状态同一事务Keep the queue in MySQL, in the same transaction as task state万级任务提交 >2 min → 0.89 s;280 次重试只出 1 个版本10k-task submission >2 min → 0.89 s; 280 retries, one version 内网LAB
      2. B浏览器按片直传,complete 自己列目录核对Browser uploads parts directly; completion lists and checks约 10 GB · 237 s · 41.8 MiB/s,零中断~10 GB · 237 s · 41.8 MiB/s, no interruptions 生产PROD
      3. CCI 唯一出图口,回滚改一行 tag,验证不抽样CI as the only image source, one-line rollback, no samplingaccess log 行数 −94.6%,告警覆盖 64 / 64access-log lines −94.6%, alert coverage 64 / 64 生产PROD
      4. D换 EfficientViT-SAM,否掉 INT8 与许可证陷阱Switch to EfficientViT-SAM; reject INT8 and a license trapCPU 分割 6,000 → 640 ms,快 9.4 倍CPU segmentation 6,000 → 640 ms, 9.4× faster 内网LAB
      5. E出包前在同规格实机真装,算力容器钉死线程Install on matching hardware before shipping; pin threads出包前拦下 19 个问题,5 个致命19 issues caught before shipping, 5 fatal 验证机LAB
      6. F只补三个 P0,重排 prompt 让缓存前缀变长Add only three P0s; reorder the prompt so the cache prefix grows输入 token −43.6%,任务通过 5 → 7input tokens −43.6%, tasks passed 5 → 7 内网LAB

      CASE A · BATCH PIPELINE

      万级任务提交,从超时到 0.89 秒;
      重试 280 次,只产出 1 个版本。
      10k-task submission: from timing out to 0.89 s.
      280 retries, exactly one version.

      >2 min0.89 s内网LAB
      问题Problem
      客户一次提交上万文件,提交超时超过两分钟;任务执行结束后,产物仍可能没有登记、建版或对用户可见。Submitting 10,000 files timed out after two minutes, while completed computation could still leave outputs unregistered, unversioned or invisible.
      我的职责My contribution
      亲自完成早期 Worker 与批处理实现,后续负责架构、优化方案和故障注入验收,流水线增强由协作实现。I implemented the early worker and batch processing, then owned architecture, optimization planning and fault-injection acceptance, with later enhancements implemented collaboratively.
      关键决策Key decision
      队列与任务状态放进同一 MySQL 事务,结合并发领取、租约及幂等;把产物可读、版本落账和血缘闭合纳入交付状态。I kept queue entries and task state in one MySQL transaction, combined claims, leases and idempotency, and made readable outputs, version records and lineage prerequisites for delivery.
      结果与边界Results and limits
      LAB:万级提交降至0.89秒,280次重试仅一个版本;GPU采样仍有一次瞬时越限,万级端到端吞吐未完成验证。LAB: 10k-task submission fell to 0.89 s and 280 retries produced one version. GPU sampling still caught one transient overshoot; full 10k-task throughput was not verified.
      展开技术细节与验证Read the technical detail & validation

      FIG.A · 队列、租约与幂等QUEUE, LEASE, IDEMPOTENCY

      1. QUEUED
      2. RUNNING
      3. MATERIALIZING
      4. COMMITTING
      5. VERSIONING
      6. READY

      完整事件日志Full event log
      一次交付的全过程:10,025 个文件切成 157 个 chunk,4 个 Worker 用 SKIP LOCKED 并发领取;worker-3 中途失联,租约到期后 worker-5 接手,已写入 staging 的文件按幂等键跳过,最后只产生 1 个数据集版本。流程示意,不是实时数据;文件数、状态名与恢复逻辑取自真实设计。One delivery end to end: 10,025 files become 157 chunks, claimed concurrently by four workers with SKIP LOCKED; worker-3 drops out mid-batch, worker-5 takes over when the lease expires, files already in staging are skipped by the idempotency key, and exactly one dataset version results. An illustration, not live data; the file count, state names and recovery logic come from the real design.
      1. 取舍Decision

        选 MySQL 队列:FOR UPDATE SKIP LOCKED 并发领取,Redis 做心跳与 GPU 限流,outbox 发事件。队列可查、可修,不会出现“消息发了、状态没写”的双写不一致。再把“执行完成 ≠ 交付完成”写成状态机:产物可读、版本落账、血缘闭合才算 READY。I kept it in MySQL: concurrent claiming with FOR UPDATE SKIP LOCKED, Redis for heartbeats and GPU throttling, an outbox for events. The queue stays queryable and repairable, with no dual-write gap between message and state. Then I made "executed ≠ delivered" a state machine: READY only when the artifact is readable, the version recorded and the lineage closed.

      2. 验证Proof

        验收坚持故障注入,不只看吞吐:以“任务 + 文件”为幂等键,280 次重试只产出 1 个数据集版本。GPU 限流 3 Worker 并跑,Redis 采样 1,383 次仅 1 次瞬时越限。Acceptance required fault injection, not just throughput: with task + file as the idempotency key, 280 retries produced exactly one dataset version. Under GPU throttling with three workers, 1,383 Redis samples showed a single momentary overshoot.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        客户一次提交上万文件,前端提交超过 2 分钟超时。更隐蔽的是“跑完了”和“能用了”之间有五个静默失败点:产物没保存、没登记、没建版本、没导入、前端看不见,都不报错。Customers submit 10k+ files at once, and submission timed out after two minutes. Worse, between "finished" and "usable" sat five silent failure points (not saved, not registered, not versioned, not imported, not visible), and none of them raised an error.

      2. 方案Options

        引入独立 MQ(Kafka / RabbitMQ),或把队列放进 MySQL,与任务状态同一个事务。Add a dedicated broker (Kafka / RabbitMQ), or keep the queue in MySQL in the same transaction as task state.

      CASE B · DATA INGEST

      客户的 9.9 GB 压缩包被网关砍断。
      三次架构迭代后,生产零中断直传。
      A customer's 9.9 GB archive was cut off at the gateway.
      Three iterations later: uninterrupted direct upload in production.

      41.8MiB/s生产PROD
      问题Problem
      大压缩包经后端代理上传会被网关超时切断;分片传完也不代表导入成功,还需核对完整性和版本可追溯性。Gateway timeouts interrupted large proxied uploads. Receiving every part was not enough: imports also needed completeness checks and traceable versions.
      我的职责My contribution
      亲自推进存储与版本集成、直传迭代及上传事故修复;后续 Ingest/Upload V2 负责方案和验收,与团队协作实现。I implemented storage and version integration, iterated direct uploads and fixed upload failures; for later Ingest and Upload V2 work, I owned design and acceptance with collaborative implementation.
      关键决策Key decision
      浏览器按预签名分片直传对象存储,完成时由服务端核对片数与字节;以重试、检查点和版本血缘支持失败恢复。The browser uploads signed parts directly to object storage; the server checks part counts and bytes before completion, with retries, checkpoints and version lineage supporting recovery.
      结果与边界Results and limits
      生产直传验收:约10GB、237秒、41.8MiB/s,缺片请求被拒;真实1TiB与完整故障组合尚未验证,不代表Upload V2全量验收。Production direct-upload test: about 10 GB in 237 s at 41.8 MiB/s; missing parts were rejected. Real 1 TiB and full fault combinations remained untested; this was not complete Upload V2 acceptance.
      展开技术细节与验证Read the technical detail & validation

      FIG.B · 预签名分片直传PRESIGNED MULTIPART UPLOAD

      生产PROD 代理上传在 60 秒处被网关掐断;预签名直传 310 片、237 秒、平均 41.8 MiB/s;complete 列目录核对片数与字节,故意少传一片时拒绝(309 / 310)。分片完成顺序为示意,片数、耗时、吞吐与缺片结果为 2026-06-23 生产验收实测。The proxied upload is cut at the gateway’s 60-second timeout; presigned direct upload moves 310 parts in 237 s at 41.8 MiB/s on average; completion lists the prefix to check parts and bytes, and refuses when one part is withheld (309 / 310). The order parts finish in is illustrative; part count, duration, throughput and the refusal come from the production acceptance run on 2026-06-23.
      1. 取舍Decision

        采用对象存储原生 SDK 重签、浏览器直传。每个分片签一个 URL,直传到固定编号的 staging key;直传失败可按片回退到后端代理,两条路写同一个 key。complete 不信会话记录,直接列目录核对片数与总字节,缺片就拒。解压侧给每次 staging 写入包上应用层退避重试,把瞬断当成可重试。Re-sign with the object store's native SDK and upload straight from the browser. One presigned URL per part, written to a fixed, numbered staging key; a failed part can fall back to the proxy and both paths write the same key. Completion ignores session records and lists the prefix to check part count and total bytes, rejecting any gap. On extraction, every staging write gets application-level retry with backoff, so transient drops are retryable.

      2. 验证Proof

        生产验收:约 10 GB 测试包,310 个分片,237 秒,41.8 MiB/s,零中断;故意缺一片(309/310)时服务端拒绝。30 GB 合成包 480/480 文件、内存峰值 1.5 GB。生产血缘事件回填 18,370 条,六类对账全等。真实 1 TiB 与完整故障组合未跑完,方案里如实写明。Production acceptance: a ~10 GB package, 310 parts, 237 s, 41.8 MiB/s, no interruptions; with one part deliberately missing (309/310) the server refused. A 30 GB synthetic package landed 480/480 files at 1.5 GB peak memory. Backfilling lineage in production produced 18,370 events, with all six reconciliations exact. A real 1 TiB run and the full fault matrix were not finished, and the design document says so.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        客户一次导入几 GB 到几百 GB 的图像、视频、点云压缩包,要求能进、失败能恢复、能追溯版本,且新版本不能破坏历史数据。经后端代理上传时,网关 60 秒超时直接掐断慢客户端。Customers import archives from a few GB to hundreds of GB. Uploads have to land, resume after failure, trace back to a version and never damage history. Proxied through the backend, slow clients were cut off by the gateway's 60-second timeout.

      2. 方案Options

        ① 网关代理上传:被超时掐断。② LakeFS 原生预签名:签名与地域绑定,跨环境不可用。③ 后端用对象存储原生 SDK 重签,浏览器直传。(1) Proxy through the gateway: cut off by timeouts. (2) LakeFS native presigning: signatures bound to a region, unusable across environments. (3) Re-sign with the object store's native SDK and upload straight from the browser.

      CASE C · RELEASE & OBSERVABILITY

      让发布可重复、可回滚,
      让运维从查日志变成看告警。
      Releases you can repeat and roll back.
      Operations run on alerts, not log-grepping.

      −94.6%access log 行数access-log lines生产PROD
      问题Problem
      研发、离线客户与云上环境需要保持版本一致;单点运行、共享配置漏验和静默故障,让发版与排障缺乏可靠依据。Development, offline customer and cloud environments needed consistent releases. Single-host risks, incomplete shared-config checks and silent failures weakened release and diagnosis confidence.
      我的职责My contribution
      负责上云选型、发布规范、事故处置与容量评估,规划可观测体系并独立验收;可观测实现与运维协作共同完成。I owned cloud architecture choices, release rules, incident response and capacity assessment, and independently accepted the observability work implemented with engineering and operations support.
      关键决策Key decision
      选择单机 k3s 并明确单点风险,分批纳管 GitOps、以镜像版本回滚;共享配置按全矩阵核验,告警检查真实业务链路。I chose single-host k3s with its risks explicit, adopted GitOps in stages and used image-tag rollback, then required full configuration matrices and checks of real business paths.
      结果与边界Results and limits
      生产:访问日志行数降94.6%,告警覆盖64/64,15天探针可用性99.9975%;极限压测在预发进行,单机风险仍存在。Production: access-log lines fell 94.6%, alert coverage reached 64/64 and 15-day probe availability was 99.9975%. Stress testing used staging; the single-host risk remained.
      展开技术细节与验证Read the technical detail & validation

      FIG.C · 抽查通过不等于覆盖A PASSING SAMPLE IS NOT COVERAGE

      生产PROD 一次发版后的验证:第一轮每个 Pod 只查 1 个变量(11 / 77 格)就报了通过,漏掉的那一格让上传链路返回 503。之后的规则:改共享凭证时,一次性注入并重启依赖它的全部模块,再把 77 格逐格核对。模块与 token 用编号代替真实名称。Verification after a release: the first pass read one variable per pod (11 of 77 cells) and reported success; the cell it skipped broke the upload path with a 503. Since then: when a shared credential changes, inject it into and restart every module that depends on it at once, then check all 77 cells. Modules and tokens are numbered instead of named.
      日志行数Log lines 生产PROD13.13 M
      0.71 M
      吞吐Throughput 预发LAB84 req/s
      205 req/s
      1. 取舍Decision

        选单机 k3s,把单点风险写进方案而不是回避;Argo CD 先 apply-only 分批纳管,设五条硬停止条件。定下“CI 是唯一出图口”,回滚就是改一行镜像 tag。事故后固化:改共享凭证时,一次性注入并重启依赖它的全部模块;验证用 11 × 7 = 77 格全矩阵而不抽样。Single-node k3s, with the single point of failure written into the plan rather than hidden; Argo CD apply-only in batches behind five hard stop conditions. CI became the only source of images, so a rollback is a one-line tag change. After an incident I set two rules: when a shared credential changes, inject it into and restart every module that depends on it in one go; and verify the full 11 × 7 = 77-cell matrix instead of sampling.

      2. 验证Proof

        access log 从 1,313 万行降到 71.2 万行,告警有效覆盖 64/64。生产 15 天探针可用性 99.9975%,7 天 331 万真实请求;100 并发压测整体 p95 50 ms。在与生产同机同配置的预发环境做极限压测,定位 project 服务 CPU 打满,2 核扩到 6 核后 84 → 205 req/s,p95 2.6 s → 0.85 s。Access logs fell from 13.13 M to 0.712 M lines, with 64/64 effective alert coverage. In production: 99.9975% availability over a 15-day probe and 3.31 M real requests in 7 days; a 100-user load test ran at 50 ms p95. A stress test in pre-production, on the same host and configuration, found the project service CPU-bound; going from 2 to 6 cores took it from 84 to 205 req/s and p95 from 2.6 s to 0.85 s.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        2026-05 之前只有内网与客户线。要在云上建正式环境,同时维持离线交付、内网研发、云上生产三条线不漂移。Before May 2026 there were only internal and customer environments. I had to stand up production in the cloud while keeping offline delivery, internal development and cloud production from drifting apart.

      2. 方案Options

        托管 Kubernetes(TKE),或单机 k3s 复用内网经验;Argo CD 全自动同步,或只 apply 不 prune 分批纳管。Managed Kubernetes (TKE), or single-node k3s reusing our internal experience; Argo CD with full auto-sync, or apply-only onboarding in batches.

      CASE D · MODEL SELECTION

      云上没有 GPU 的分割服务:
      快 9.4 倍,还避开了一个许可证陷阱。
      Segmentation without a GPU in the cloud:
      9.4× faster, and a license trap avoided.

      6,000 ms640 ms内网LAB
      问题Problem
      无GPU环境仍需交互式分割;原方案文字提示失效,单看速度或模型自评分无法发现质量、内存与许可证问题。Interactive segmentation had to run without a GPU. Broken text prompts showed that speed and model confidence alone could miss quality, memory and licensing problems.
      我的职责My contribution
      亲自定位文字提示失效根因、比较CPU分割选型与许可证边界,并处理内存上限;模型服务本体与算法同事协作完成。I diagnosed the broken text-prompt path, compared CPU segmentation options and license constraints, and addressed memory limits, collaborating with algorithm engineers on model services.
      关键决策Key decision
      选择 EfficientViT-SAM,用实际掩码质量、延迟、线程与内存测试做判断;否决质量退化的INT8方案,核查实际许可证。I selected EfficientViT-SAM using measured masks, latency, thread counts and memory, rejected the degraded INT8 option, and checked actual license files.
      结果与边界Results and limits
      LAB云上4核真机:同图分割6000→640毫秒,4K图峰值内存4078→1907MB;这些测试不代表所有图像质量与生产性能。LAB on a four-core cloud host: same-image segmentation fell from 6,000 to 640 ms; peak memory for a 4K image fell from 4,078 to 1,907 MB. These tests do not establish quality or production performance for all inputs.
      展开技术细节与验证Read the technical detail & validation

      FIG.D · 为什么不选看起来更快的方案WHY NOT THE OPTION THAT LOOKS FASTER

      内网LAB 三组实测:同图同机的延迟(按真实时长播放);INT8 与 fp32 掩码的实际 IoU;推理线程数与延迟(1 / 2 / 4 / 8 / 16 / 32 线程:2,402 / 1,242 / 640 / 755 / 796 / 1,007 ms)。测试在云上 4 核真机上完成,环境标为内网非生产;图像与掩码形状为示意。Three measurements: latency on the same image and machine (played at real speed); the actual IoU between INT8 and fp32 masks; and inference threads vs latency (1 / 2 / 4 / 8 / 16 / 32 threads: 2,402 / 1,242 / 640 / 755 / 796 / 1,007 ms). Run on a real 4-core cloud machine, a non-production environment; the image and mask shapes are illustrative.
      1. 取舍Decision

        换 EfficientViT-SAM。三条理由:质量上 FastSAM 不是检测器,CLIP 只能重排;速度上 9.4 倍;许可证上 README 写 Apache、LICENSE 文件实为 AGPL,私有化分发会触发 copyleft。INT8 被否决:只快 1.7 倍,mask IoU 掉到 0.42,而模型自估 IoU 不变,坏了也察觉不到。命名也守纪律:CPU 版不借用 SAM 3 的名字,不做虚假能力声明。EfficientViT-SAM, for three reasons: quality, since FastSAM is not a detector and CLIP can only re-rank; speed, at 9.4×; and licensing, since the README says Apache but the LICENSE file is AGPL, so shipping it on-prem would trigger copyleft. INT8 was rejected: only 1.7× faster, mask IoU fell to 0.42 while the model's self-estimated IoU stayed the same, so failure would be invisible. Naming stays honest too: the CPU service does not borrow the SAM 3 name.

      2. 验证Proof

        云上 4 核真机:6,000 ms → 640 ms;ORT 换 OpenVINO 后编码器 470 → 93 ms;线程数 2 → 4 为最优。另修一次 OOM:4K 图峰值内存 4,078 MB → 1,907 MB。On a real 4-core cloud VM: 6,000 ms → 640 ms; ORT to OpenVINO took the encoder from 470 to 93 ms; four threads was the sweet spot. A related OOM fix cut 4K-image peak memory from 4,078 MB to 1,907 MB.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        云上环境只有 CPU,交互式标注需要亚秒级分割。现有 FastSAM 的“文字提示分割”自上线起就没生效过:输入 person,rider,car 和 banana 返回的框完全一样,根因是异常被静默吞掉。The cloud environment is CPU-only, and interactive labeling needs sub-second segmentation. The existing FastSAM text-prompt mode had never worked: person,rider,car and banana returned identical boxes, because an exception was silently swallowed.

      2. 方案Options

        修 FastSAM + CLIP;做 INT8 量化;换 EfficientViT-SAM-L0。Fix FastSAM + CLIP, quantize to INT8, or switch to EfficientViT-SAM-L0.

      CASE E · ON-PREM DELIVERY

      无外网、国产 CPU、国产 OS:
      27 个镜像的整套平台离线交付。
      No internet, domestic CPU, domestic OS:
      the whole 27-image platform, delivered offline.

      19个问题,5 个致命,都在出包前issues, 5 fatal, caught before shipping验证机LAB
      问题Problem
      客户在无外网的 ARM64/麒麟环境部署整套平台;镜像架构和配置语法通过,也无法覆盖安装、线程及外部地址故障。Customers deployed the full platform offline on ARM64 and Kylin. Correct image architectures and valid configuration syntax still missed installation, thread-limit and public-address failures.
      我的职责My contribution
      负责交付方案、基线冻结、打包与实机验证,独立判断现场反馈并复查补丁;部分镜像构建与现场安装由同事执行。I owned delivery design, baseline freezing, packaging and hardware validation, classified field reports and checked patches; colleagues handled parts of image builds and onsite installation.
      关键决策Key decision
      出包前真机安装,算力容器显式限制线程;将CPU核数也纳入规格核对,并要求补丁和验证脚本都覆盖异常路径。I required real installations before shipment, explicit thread limits in compute containers, CPU core counts in hardware matching, and failure-path checks for both patches and validation scripts.
      结果与边界Results and limits
      验证机两轮发现19个问题、5个致命,随后完成客户交付;16核验证仍漏掉32核线程故障,修复后固化规格核对规则。Two validation rounds caught 19 issues, including five fatal ones, before customer delivery. The 16-core test still missed a 32-core thread failure; its fix became a hardware-matching rule.
      展开技术细节与验证Read the technical detail & validation

      FIG.E · 核数、线程与 nprocCORES, THREADS AND NPROC

      修复:每个算力容器Fix, in every compute container: OPENBLAS_NUM_THREADS OMP_NUM_THREADS MKL_NUM_THREADS NUMEXPR_NUM_THREADS 显式设置,set explicitly; ulimits.nproc 放开raised

      同一套镜像,16 核验证机全绿;32 核现场机器上 OpenBLAS / OMP 按核数起线程,撞上 nproc 上限,三个 Python 服务重启 60+ 次。这次的修复是给所有算力容器显式钉死线程数,并放开该部署的 nproc 限制。核数与重启次数取自现场记录,线程条与上限线的高度为示意。The same images: all green on a 16-core test machine; on the 32-core machine on site, OpenBLAS and OMP started a thread per core, hit the nproc limit, and three Python services restarted 60+ times. This case's fix pinned thread counts in every compute container and raised the nproc limit for that deployment. Core counts and restarts come from the field record; thread-bar and limit heights are illustrative.
      1. 取舍Decision

        冻结六个仓的基线 SHA,先在与客户同款 OS 的鲲鹏实机上真装。验证机 16 核全绿,到了客户现场的 32 核机器上,三个 Python 服务重启 60+ 次:OpenBLAS / OMP 按核数起线程,撞上 nproc 上限。于是给所有算力容器钉死线程数,并把“验证机与客户机同规格,核数也要对齐”写进规范。我的判断规则是:同类组件里只有一个配了某参数,往往是过去事故的遗迹,应推广到全部。Froze the baseline SHA of six repositories and did a real install on a Kunpeng machine running the customer's OS. The 16-core test machine was all green; on the customer's 32-core machine three Python services restarted 60+ times, because OpenBLAS / OMP start a thread per core and hit the nproc limit. So every compute container got pinned thread counts, and "the test machine matches the customer's, core count included" became a team rule. My rule of thumb: when only one of a family of components sets a parameter, it is usually the scar of an old incident, and should be applied to all of them.

      2. 验证Proof

        两轮真装累计发现 19 个问题、5 个致命,例如 Docker 自身二进制是 x86、Redis 在 ARM64 上拒启、端口避让脚本把 9 个端口分到同一个。补丁复查时搭仿真环境真跑 21 条异常路径断言;验证脚本本身也被验证过。现场 5 条反馈逐一定性:1 条是真实缺陷,出补丁修复;其余主要是客户浏览器版本过低。Two real installs surfaced 19 issues, 5 of them fatal: the Docker binary itself was x86, Redis refused to start on ARM64, a port-avoidance script mapped nine ports to one. Patch review ran 21 failure-path assertions in a simulated environment, and the verification scripts were themselves verified. Five field reports were each triaged: one genuine defect, patched; the rest came mostly from an outdated customer browser.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        客户机房是鲲鹏 aarch64 + 麒麟 V10,完全离线。语法校验、架构核对、compose config 全部通过,也不代表能装起来。The customer's data center ran Kunpeng aarch64 on Kylin V10, fully air-gapped. Passing syntax checks, architecture checks and compose config doesn't mean it will install.

      2. 方案Options

        按清单打包直接发往现场,或先在与客户同规格的实机上真装一遍。Package against a checklist and ship, or first install for real on a machine matching the customer's spec.

      CASE F · AGENT ENGINEERING

      Agent 更便宜也更可靠:
      输入 token 降 43.6%,任务通过 5 → 7。
      A cheaper and more reliable agent:
      43.6% fewer input tokens, tasks passed 5 → 7.

      −43.6%输入 tokeninput tokens内网LAB
      问题Problem
      多轮 Agent 容易丢失工具可见性,易变上下文影响缓存,重复循环推高成本;接入大量工具并不等于任务可靠完成。Multi-turn agents lost tool visibility, changing context weakened cache reuse and repeated loops raised costs. A large tool catalog did not ensure reliable task completion.
      我的职责My contribution
      负责 Agent 架构审计、跨轮工具与缓存问题定位、Harness 优化规划,与团队协作落实并在 LAB 验证。I owned Agent architecture reviews, tool and cache diagnosis, and Harness optimization planning, working with the team on implementation and LAB validation.
      关键决策Key decision
      保留主循环,优先补工作流、委派与MCP缺口;稳定上下文前置、压缩易变段,精简工具目录并增加循环检测与执行预算。I retained the main loop, prioritized workflows, delegation and MCP gaps, placed stable context first, compressed volatile content, reduced the tool catalog and added loop and budget controls.
      结果与边界Results and limits
      LAB记录输入token降43.6%、任务通过数5→7;仅是该轮样本观察,24例回归错误数另记,不能推成通用成功率或生产收益。LAB records showed 43.6% fewer input tokens and tasks passed rising from five to seven. These are sample observations; the separate 24-case regression error counts do not establish general success rates or production gains.
      展开技术细节与验证Read the technical detail & validation

      FIG.F · prompt 布局与缓存前缀PROMPT LAYOUT AND THE CACHE PREFIX

      系统system工具目录tool catalogSkillskills对话历史history进行中任务(每轮变化)task state (changes every turn)

      内网LAB 缓存只复用与上一轮完全相同的前缀。改前易变段排在前面,实测命中 51.0%;改后稳定段在前、易变段压缩后放末尾,工具目录 28 → 20。分段比例为示意(按单 prompt 均值 12,726 → 9,631 token 配平)。图内 prompt 与缓存数值来自历史 LAB 记录;24 例回归错误数与任务通过数 5 → 7 分别记录,不合并为一个成功率。A cache reuses only the prefix identical to the previous turn. Before, volatile content came first and the measured hit rate was 51.0%; after, stable sections lead, the volatile block is trimmed and moved last, and the tool catalog drops from 28 to 20. Segment proportions are illustrative (balanced to the recorded per-prompt means, 12,726 → 9,631 tokens). Prompt and cache figures are historical LAB observations. Errors across the 24-case regression and the task-pass count 5 → 7 are separate records, not a single success rate.
      1. 取舍Decision

        逐项对照开源标杆后,优先规划并验收三个协作实现的 P0:确定性工作流、Agent 委派、MCP 标准。定位出多轮失败的头号原因是跨轮丢失工具可见性;缓存命中低的真凶是易变内容排在稳定段之前。工具目录 28 → 20,并加预算上限与打转检测。After a point-by-point review of leading open-source agents, I prioritized and validated three P0 enhancements implemented collaboratively: deterministic workflows, agent delegation and the MCP standard. The top cause of multi-turn failure was tool visibility lost between turns; low cache hit rates came from volatile content placed before stable sections. The tool catalog went from 28 to 20, with budget caps and loop detection.

      2. 验证Proof

        输入 token 159 万 → 89.6 万,24 例回归失败 53 → 20,reflection 失败率 34.7% → 0。修复 MCP 服务注册指向过期 Pod IP 后,一个工具的平均耗时 72 s → 3.4 s。Input tokens 1.59 M → 0.896 M, regression failures across 24 cases 53 → 20, reflection failure rate 34.7% → 0. Fixing an MCP registration that pointed at a stale Pod IP took one tool's average latency from 72 s to 3.4 s.

      约束与考虑过的方案Constraint and the options considered
      1. 约束Constraint

        平台 Agent 通过 MCP 网关接了 150+ 个工具,token 成本高,多轮对话容易失败。一次打转的运行消耗 26.5 万 token,比 9 次成功运行加起来还贵。The platform agent reached 150+ tools through an MCP gateway. Token cost was high and multi-turn runs failed often; one looping run burned 265k tokens, more than nine successful runs combined.

      2. 方案Options

        接入开源 Agent 框架与技能市场,或保留主循环、只补缺口。Adopt an open-source agent framework and skill marketplace, or keep the main loop and fill the gaps.

      一张图看我负责的系统。The system I was
      responsible for.

      点选任一组件,查看它解决什么问题、我做了什么,以及对应的实测数字。Select any component to see what it solves, what I did, and the numbers behind it.

      看一条路径Follow a path

      入口CLIENTS
      接入EDGE
      服务SERVICES
      执行EXECUTION
      数据DATA
      运行RUNTIME

      从 initial commit,
      到生产环境。
      From the initial commit
      to production.

      2025-09-19,我在同一天提交了前后端两个仓的第一个 commit。十二个月后,它是 11 个 Java 服务、Python Worker、模型服务、标注工具矩阵、桌面端和多套环境组成的产品体系。On 2025-09-19 I made the first commit to both the backend and frontend repositories. Twelve months later it had become a product: 11 Java services, Python workers, model serving, an annotation-tool suite, a desktop client and several environments.

      5,839署名提交对象 · 21 个仓authored commits · 21 repos
      243活跃提交日 / 365active days / 365
      400+批准他人 MRteammates' MRs approved
      20+人的平台组people on the platform team
      28+生产 Deployment 纳入 GitOpsproduction Deployments under GitOps
      8个连续 baseline 版本,约 2–3 周一个consecutive baselines, one every 2–3 weeks
      每一格是一天Each cell is a day悬停查看当天提交数Hover a day for its commit count

      每格为本地 git 按作者日期的逐日重算,用来看节奏;全年总数以上方统计为准。春节那两周是空的;3 月、7 月、8 月三个峰值对应 QApex 拆分独立部署、可观测与能力平台、具身数据线与信创交付。Each cell is a per-day recount from local git by author date, shown for rhythm; the yearly total above is the reference figure. The empty fortnight is Chinese New Year; the March, July and August peaks line up with splitting out QApex, observability and the capability platform, and the embodied-data line plus on-prem ARM64 delivery.

      1. 两仓同日 initial commitDay one, both repos

        选型并落地多模块后端与前端骨架;一周后 AI 与数据集模块在同一次提交中建起。Chose the stack and laid down the modular backend and the frontend skeleton; AI and dataset modules followed a week later.

      2. 存储、计算、部署三条底座Storage, compute, deploy

        接入 LakeFS 数据版本;高可用 Worker 与批量预处理;k3s 部署配置。LakeFS data versioning, highly available workers with batch preprocessing, and k3s deployment.

      3. 双平台边界Two platforms, one boundary

        把 QApex 业务平台从主仓拆出独立部署;统一能力注册,模型与脚本共用一套契约。Split the QApex business platform out for independent deployment; unified capability registration for models and scripts.

      4. 上云与 GitOpsCloud and GitOps

        腾讯云正式环境、CI/CD 与 Argo CD;引入 Flyway 管理迁移;多租户系统性审计。Production on Tencent Cloud with CI/CD and Argo CD; Flyway migrations; a systematic multi-tenant audit.

      5. 可观测与能力平台Observability, capability platform

        日志、告警、自愈三线上线;能力平台路线定稿。全年提交峰值月:1,357。Logging, alerting and self-healing went live; the capability-platform roadmap was finalized. Peak month: 1,357 commits.

      6. 合流与交付Merges and delivery

        两条 400+ 文件的长期分支合入主干;具身数据线预发全链路跑通;国产 ARM64 离线现场交付。Two long-lived branches of 400+ files each merged into main; the embodied-data line ran end to end in pre-production; ARM64 offline delivery on site.

      产出越多,
      验收越要真。
      Faster output,
      stricter sign-off.

      AI 让交付变快,也让“看起来已经好了”的假象变多。下面四次都是一开始显示正常、实际不能用,被我换一种方法复查出来,后来都变成了团队的硬规定。AI speeds up delivery, and multiplies things that only look done. Each of these four looked fine at first and did not work; a second check caught it, and each became a team rule.

      ✓ 看起来LOOKED DONE! 实际上ACTUALLY→ 从此NOW THE RULE
      1. 具身数据线Embodied-data line

        CI 全绿,25 个服务都在跑CI green, all 25 services running

        真机点「开始作业」,页面没反应——前端分支根本没合进去A real click on "Start" did nothing: the frontend branch was never merged

        验收必须在真浏览器里点一遍Acceptance includes a real click in a real browser

      2. AI 代码审查AI code review

        已接入 MR,跑了 596 次Wired into MRs, 596 runs

        翻日志发现代码检索 100% 失败,596 次一行代码都没读到The logs showed every code search failed; not one run read the code

        看检索有没有命中,不看跑了几次Judge by retrieval hits, not run counts

      3. 模型状态Model status

        31 个模型全部报错All 31 models in ERROR

        逐个探活,其实 12 个在正常跑;状态位失败一次就永远是错Probing each one: 12 were fine; one failure froze the flag forever

        健康状态只信实时探活Health comes only from live probes

      4. AI 客服AI support

        真环境测试全绿All green in a real environment

        走真实网关计时:超时设 15 秒,网关实际要 19 秒,兜底把“完全不工作”伪装成了“正常”Timed through the real gateway: a 15 s timeout vs 19 s real latency; the fallback hid a total failure

        带兜底的功能,必须真网关计时Fallback features need a real, timed gateway call

      • 管理员账号不算数Admin accounts don't count新接口用项目经理、标注员等真实角色各走一遍。New endpoints are tested with real roles, not admin.
      • “做了”不等于“好了”Done is not the same as working消息发出 ≠ 有人收到;接口上线 ≠ 功能可用。Sent is not received; deployed is not usable.
      • 环境写清楚Always state the environment每个数字注明生产还是内网。Every number says production or internal.
      • 坏消息也写进去Write down the bad news too没跑完的测试、被推翻的判断,都留在交付文档里。Unfinished tests and reversed calls stay in the delivery notes.

      在真实约束下,
      把系统做成。
      Real constraints.
      Working systems.

      从交易系统、企业服务到 AI 数据平台,承担设计、开发与交付责任。Designing, building and delivering across trading systems, enterprise services and AI data platforms.

      2025.09 — 2026.09研发负责人Head of Engineering杭州景联文科技有限公司Hangzhou Jinglianwen Technology Co., Ltd.
      • 主导新一代 AI 数据平台 SolarSense 与业务平台 QApex 两条产品线,从 0 到 1 搭建技术体系,带领 20+ 人研发、运维、测试团队,9 个月上线生产。Led two product lines, the next-generation AI data platform SolarSense and the QApex business platform, building the stack from zero with a 20+ person engineering, operations and QA team; shipped to production in 9 months.
      • 主导业务 Agent 平台 Solar Harness 从 0 到 1:MCP 网关统一接入 150+ 平台工具,搭建确定性工作流与人机协同审批;重构上下文工程,推理成本降低近一半,任务成功率提升 40%。Led the Solar Harness business-agent platform from zero: 150+ platform tools behind one MCP gateway, deterministic workflows and human-in-the-loop approval; rebuilt context engineering to cut inference cost by nearly half and raise task success by 40%.
      • 主导海量多模态数据处理平台:TB 级数据集上传与版本管理,万级任务秒级调度、数万级任务并发;覆盖图像、视频、点云、音频、文本、时序全模态,生产单周 300 万+ 请求,可用性 99.99%。Led the large-scale multimodal data platform: TB-scale upload and versioning, sub-second scheduling for 10k+ tasks and tens of thousands in flight, every modality from image and video to point cloud, audio, text and time series; 3M+ production requests a week at 99.99% availability.
      • 建设 GitOps 发布、CI 质量门禁与全链路可观测体系,告警覆盖 100%;整套平台离线交付至 ARM64 国产化环境,完成客户现场部署。Built GitOps releases, CI quality gates and end-to-end observability with 100% alert coverage; delivered the full platform offline to ARM64 domestic infrastructure and deployed on site.

      Java · Vue 3 · TypeScript · Python · Go · MySQL · Redis · Docker · k3s

      2024.02 — 2025.05技术合伙人Technical PartnerJiawisTech Solutions LLCJiawisTech Solutions LLC
      • 负责AI客服技术方案、模型选型、提示词设计和Java核心接口开发,组织小团队完成模型API、业务接口联调与部署。Owned technical design, model selection, prompt design and core Java APIs for AI customer service; coordinated small-team integration and deployment.
      • 开展Python / LangChain文本分析与提示词迭代;参与Shopify前端性能评审,构建用户行为推荐原型。Built Python / LangChain text-analysis workflows; reviewed Shopify frontend performance and developed a prototype using user behavior for recommendations.

      Java · Python · Spring Boot · Redis · MongoDB · Docker · LangChain

      2020.03 — 2022.01全栈工程师Full-Stack Engineer东方证券Orient Securities
      • 负责委托与回报消息模块的Java化开发及跨系统联调,使用Kafka / Netty完成消息通信与实时推送,结合Redis锁与状态机处理并发一致性。Owned Java migration and integration of order and execution-report messaging, using Kafka / Netty for messaging and real-time push, with Redis locks and state control.
      • 使用Python与Vue开发交易延迟监控工具,结合ELK日志检索、可视化和告警支持性能排查及异常定位。Developed Python / Vue latency monitoring with ELK log search, visualization and alerts for performance investigation and incident diagnosis.

      Java · Kafka · Netty · Oracle · Redis · Python · Vue · ELK

      2017.09 — 2019.07全栈工程师Full-Stack Engineer联创集团Linkage Group
      • 参与政务房产交易及智慧城市系统建设,带领5人开发团队开展需求拆解、技术设计、任务分配与阶段评审。Contributed to government property-transaction and smart-city systems; led a five-person team in requirements, design, task allocation and milestone reviews.
      • 负责MySQL查询优化、RabbitMQ异步处理及Redis缓存;独立开发汽车服务微信小程序,使用Node.js中间层对接Java后端。Optimized MySQL queries; implemented RabbitMQ processing and Redis caching. Independently developed an automotive WeChat Mini Program integrating Node.js and Java.

      Java · Spring Boot · MyBatis · MySQL · RabbitMQ · Redis · Node.js

      教育背景Education

      Marquette University

      计算机与信息科学 · 硕士 · GPA 3.7 / 4.0Computer and Information Science · Master's degree · GPA 3.7 / 4.0

      2022.05 — 2024.01

      南京大学金陵学院Jinling College, Nanjing University

      新闻学 · 全日制本科Journalism · Bachelor's degree · Full-time

      2012 — 2016

      简历Resume

      公开版 · 各 2 页 · 更新于 2026-10-15Public edition · 2 pages each · Updated 2026-10-15

      工作之外,
      也一直在做东西。
      Outside work,
      still building.

      最近一年业余做、自己每天在用的东西。模型只做它擅长的部分,能用确定性逻辑算的,就不交给模型。Things I built on my own time over the past year and use every day. Models do only what they are good at; anything that can be computed deterministically is.

      Receipt Kitchen: trip history with total spend, a 7.0 average health score and spending by food group.
      7.0健康分 · 确定性计算health score · deterministic ✓识别结果自动对账auto-reconciled with subtotal ZH / EN

      VISION LLM · VANILLA JS · ZH / EN

      小票厨房Receipt Kitchen

      拍一下小票或订单截图,识别进食材库,按到期先后排出几天的菜谱,再给这一单打健康分。健康分按膳食指南公式在页面里确定性计算,模型只负责识别、点评和替换建议;商品合计对不上小计就提示漏截。Snap a receipt; items land in a pantry, recipes are planned around what expires first, and the order gets a health score computed deterministically from dietary-guideline formulas. The model only reads the receipt and writes commentary; totals that miss the subtotal flag a missed screenshot.

      截图:演示模式,虚构订单Screenshot: demo mode, fictional order

      Hola: day one of the Spanish course, with today's goal, four steps and a start button.
      30天 · 每天约 20 分钟days · ~20 min a day ↻FSRS 间隔重复FSRS spaced repetition 离线可用Offline PWA

      REACT · TYPESCRIPT · PWA · FSRS

      Hola

      给零基础成年人的 30 天西班牙语入门课,以整句话为单位:听懂、跟读、遮住说、情境表达。复习按 FSRS 算法排期;纯静态、可离线安装,没有账号和后端,学习记录只存在本机。A 30-day Spanish course for adult beginners, taught in whole sentences: understand, shadow, say it with the text hidden, use it in context. Reviews follow FSRS; fully static and installable offline, no account or backend, progress stays on the device.

      下一个复杂问题,
      一起解决。
      The next hard problem.
      Let's solve it.

      常驻杭州,全国机会均可沟通;离职,随时到岗。Based in Hangzhou, China, and available now. Open to engineering roles in Europe, Australia and New Zealand, and to PhD and research positions; happy to relocate. Research interests →

      GitHub