ABOUT / 关于我

爱丽黑子

ailiheizi

软件开发 · AI 应用 · 视觉与交互

用代码探索世界, 也用作品表达自己。

一些关于我的事

我从初中开始写代码,喜欢一个小问题牵出一串新问题的感觉:一个界面背后的请求怎样流动,一段代码为什么这样运行,一个想法又能变成什么。一路尝试下来,兴趣从软件延伸到 AI、设备与影像。我愿意花时间把它们弄明白,也愿意动手把想法实现,做完再根据实际使用继续调整。开源让我学到很多,我也愿意分享自己的尝试。

软件开发

我用 Go、Python、Rust 和 TypeScript 开发过后端与工具,也用 Flutter、React 和 Vue 做过网页、桌面和移动端应用。团队协作中,我能参与需求讨论、技术设计、开发、测试与部署,将界面、服务和数据处理接成完整的功能。不同项目各有侧重,我会围绕实际需求选择工具,持续调整实现。

技术细节
业务数据与表单状态
在 Echo 演示工作台中,我连接档案、四类记录与时间线,实现表单校验、查询筛选和跟进日期管理。建议生成后可回填处理结果、完成跟进或重新打开记录,覆盖数据录入到后续处理的状态变化。
内容身份与多来源模型
在 Cairn 开发预览中,我将内容身份与来源路径分离,支持同一内容关联多处来源。资料、照片和音乐复用查询、选择、标签与收藏逻辑,并分别连接详情联动与音乐队列。
范围选择、批量变更与版本核对
在 Cairn 的范围选择与批量标签实现中,修改请求同时携带工作区、目标对象和客户端预期版本。写入结果不确定时先回读实际状态,再决定后续操作,核对页面选择与实际变更是否对应。
文件暂存、ZIP 导出与完整性校验
在 Cairn 文件处理流程中,我将暂存与确认写入分离,将原件导出实现为支持进度查看和取消的 ZIP 任务。导出时逐文件核对长度与哈希,并将任务状态关联到最终文件结果。
  • React / Vue
  • TypeScript
  • Go · Python / FastAPI
  • SQLite / FTS5
  • SSE / WebSocket
Rust 共享核心与跨端桥接
在与外部团队合作的文件工具中,我通过 Rust 共享核心连接 Flutter、Tauri 和 Web 客户端,联调图片、文档、PDF、数据与媒体转换。客户端提供操作界面,共享核心封装转换能力,移动端通过桥接接口调用。
PDF 渲染与平台能力分流
针对移动端缺少桌面 PDF 渲染依赖的情况,我按平台与转换目标选择处理路径。移动端调用系统 PDF 渲染,将页面结果交给本地处理模块,衔接图片输出与扫描文档转换。
本地 OCR 与 PDF 文本层
在文件工具中衔接本地 OCR 与可搜索 PDF 输出:系统渲染文档页面,共享核心执行文字识别并补入文本层。对于没有嵌入文本的扫描件,将 OCR 结果继续传入文档输出流程。
依赖打包与引擎可用性检查
我参与桌面转换依赖的随包分发,并在移动端接入内置媒体引擎与 Rust 核心的可用性检查。转换入口依据可用能力选择处理路径,界面联调覆盖依赖存在性、引擎调用与结果返回。
Android 配置下发、状态差异与日志游标
在 ModSpec 原型中,我连接电脑端配置工具与 Android Agent,用配置文件描述预期状态,配对后下发配置并回读设备状态。实现变更预演、预期与实际状态差异核对,以及基于上次读取位置续取日志。
  • Rust / FFI
  • Flutter
  • Tauri / Web
  • OCR / PDF
  • Android
需求分析、代码审阅与交付检查
我使用 AI 编程工具辅助资料检索、实现与测试,自己负责需求判断、架构取舍、代码审阅、调试和交付检查。检查依据包括实际输入、运行反馈与输出结果,再据此决定保留改动、调整实现或继续排查。
Agent 宿主集成与流程状态
在社媒流程工具的技术合作中,我接入已有 Agent 宿主会话,连接资料、搜索、草稿、审阅与发布准备。外部工具执行实际发布,界面负责内容组织和操作状态,明确区分前端状态管理与执行端职责。
演示复位、合成回归与结果校验
我在 Echo 提供演示数据复位入口,用于重复验证业务流程;在离线视频工具中编写合成视频回归用例,并对成品重新解码,核对遮挡区域与帧数。根据项目输出选择验证方式,保留可回查的输入与结果。
  • Requirements / Design
  • Integration
  • Code review
  • Debugging / Verification

AI 与工作流

我开发过模块化 AI 工作台、Agent 执行环境,以及将具体任务整理成可复用 Skill 的工作流工具。在这些项目里,模型接入、工具调用、能力组合和权限检查都有具体实现;我也在真实会话中验证过 Skill 的生成与新会话复用。本地量化模型的推理与选择任务、检索和工具路由,也在我的实践范围里。我关注一段任务怎样完整运行:执行过程能否被观察,结果能否被核对,已有能力能否在下一次任务中继续使用。

技术细节
模型 API、请求路由与协议适配
我在 AI 工作台中接入 OpenAI 兼容接口,将请求路由、密钥选择、协议转换与错误处理分层组织。模型配置与工具执行分别处理,流式和非流式请求使用各自的处理路径,支持按请求链定位问题。
MCP 工具发现与 Skill 执行约束
我将任务目标、真实工具绑定、失败处理与完成证据整理为 Skill,留存过新会话复用记录。实现过 MCP 连接与工具发现;参考宿主对显式声明工具范围的 Skill 核对精确工具名,并处理过期异步结果和回合清理。
CDP Screencast、WebSocket 与 SSE
在浏览器执行原型中,我将 Chromium CDP Screencast 帧经 WebSocket 传到前端 Canvas,对话更新通过 SSE 返回。浏览器操作、模型响应与页面画面分通道传递,结合画面和工具反馈检查执行进度与问题。
候选 ID 协议与确认写入
在代码选择实验中,宿主枚举真实候选,模型只返回 ID 或 NONE;解析时拒绝未知 ID、夹带代码与额外控制字段。宿主读取已保存的候选内容,写入确认绑定目标、内容哈希和磁盘基线;任一项变化后重新确认,通过临时文件与原子替换落盘。
多来源检索、SQLite 缓存与 ONNX 向量编码
我为 Agent 实现过多来源检索,将结果统一为 JSON,用 SQLite 缓存与查询账本区分查询请求和实际来源调用。也实现过 ONNX 本地向量编码与余弦 Top-K 检索;检索层提供候选,研究判断由调用方 Skill 处理。
  • Model API
  • MCP / Skills
  • Retrieval
  • Chromium CDP
  • Docker

系统与网络

我做过 Linux 运维和虚拟化环境部署,在项目中处理过网络通信、消息协议、数据存储、隔离与访问控制。连接管理、权限检查、数据持久化和服务重启后的恢复,都是功能实现的一部分。我喜欢沿着一次请求往下看,理解各个环节如何配合,再把一个功能放进完整的系统里考虑。

技术细节
WASM 能力包、权限校验与包级熔断
在 Rust / WASM 运行时中,我将能力封装为可加载包,处理签名校验、权限声明与升级新增权限的差异检查。调用失败后由包级熔断控制后续调用;模型供应商路由与错误处理在独立请求链中组织。
Store / Peer 分层与协议接口
在聊天系统研究原型中,我将消息存储与中转拆为 Store 和 Peer 节点,以 WebSocket / Protobuf 连接节点,通过 REST 提供消息、联系人与房间接口。存储、搜索和传输由 Trait 隔开,并提供 UniFFI 绑定以连接客户端。
父消息引用、SQLite 持久化与 Tantivy 搜索
研究原型使用父消息引用表示关系,检查缺失父节点,并按深度、本地接收时间与哈希整理当前已有消息。我还实现过中转摘要核对、SQLite 持久化与 Tantivy 中文检索,连接消息关系、存储记录和查询接口。
容器生命周期、资源约束与运维排查
我用 Docker / Compose 组织网关、工具服务与执行环境,按用户管理容器创建、复用、保活和回收,并配置资源约束、网络边界与回传校验。在 Linux 运维和虚拟化部署中,也参与过服务恢复、网络与虚拟机生命周期问题的排查。
ARM64 交叉编译与 CI 构建产物
在基于开源内核的历史构建实践中,我调整 GitHub Actions 与 Docker 配置,接入 Clang / LLVM 和 KernelSU,连接 ARM64 镜像构建与产物上传。工作范围主要是构建脚本、工具链和依赖集成,以及 CI 环境差异的处理。
原子世代、状态切换与回滚
我用 Rust workspace 开发过可复现包管理方向的系统原型,以原子世代组织状态变更,实现回滚相关模块并编写 verify 验证测试。原型同时考虑新旧状态切换、变更前后核对与恢复入口。
  • Rust / WASM
  • WebSocket / Protobuf
  • Linux
  • Docker / Compose
  • CI

视觉识别与硬件

我做过摄像头手势识别与机械臂联动,用 OpenCV、MediaPipe 处理画面,将识别结果转成设备动作;也做过 ESP32、串口通信与设备控制相关的项目。这类工作需要同时处理视觉输入、设备通信和现场反馈,把软件逻辑与真实环境里的动作接起来。

技术细节
多检测器融合、轨迹关联与有限回溯
在离线车牌视频打码工具中,我合并多个检测器的候选,通过轨迹关联与运动预测连接前后帧。短暂漏检或位置变化时,使用局部补检和有限回溯补充计划遮挡区域,再交给统一渲染流程。
视频重解码校验与发布门槛
视频写出后重新解码,核对成品帧数与计划遮挡区域。默认校验失败时丢弃草稿,通过后才发布;独立发布流程还将输入与人工复核结果绑定,核对处理对象和复核对象的一致性。
ESP32、TCP 指令与 GPIO 反馈
在 ESP32 练习中,我通过 Wi-Fi 与 TCP 接收控制指令,切换 GPIO 状态并返回反馈。设备联调核对发送指令、接收结果和实际动作;也使用过串口通信,检查设备连接与指令执行。
  • OpenCV / MediaPipe
  • Detection / OCR
  • ONNX / FFmpeg
  • ESP32
  • Serial / TCP

游戏与影像

游戏和影像给了我另一种表达想法的方式。我参与过 Godot 合作游戏开发,也借助 AI 制作过叙事短片:由团队成员提供真人出镜与拍摄素材,我组织脚本、分镜、生成画面、声音和剪辑。在这些创作中,我在意画面的美感、互动的节奏,以及作品能否把想表达的感受传达出去。

技术细节
Godot 游戏原型与时间回放交互
我参与 Godot 团队游戏原型《ECHO · 回声庭园》的开发。角色三秒前的行动以 Echo 重现,玩家可借助回放继续前进,将时间机制用于关卡交互;庭园与世界树承担环境叙事。
Quest 空间面板与输入适配
基于开源 BiliPai 进行 Quest 二次开发,将现有页面接入可操作的空间面板。我新增独立构建入口,适配面板抓取、缩放、悬停反馈、可收起导航与播放控件,衔接空间输入和原有页面操作。
游戏 Mod、事件联动与复习状态
基于开源 VocabSpire 二次开发,新增主动答题、成功币商店、连击与答题续命,将学习操作接入战斗事件。实现错题本持久化、按答题进度触发复习,并为联机模式中的新增战斗状态设置保护分支。
AI 辅助脚本、生成画面与剪辑
短片《回声》的脚本、分镜、生成画面、声音与剪辑整合由我借助 AI 完成,真人出镜与拍摄素材由团队成员提供。我围绕人物重新找到兴趣与表达动力的过程,安排素材衔接、冷暖变化与剪辑节奏。
IPFS 音频分发与 ONNX 浏览器解码
在音频发布与播放实验中,我将编码数据、模型和元信息写入 IPFS,回读数据并比较字节。浏览器按内容标识获取音频、缓存模型,再通过 ONNX 解码播放,连接编码数据发布、内容存储与浏览器播放。
  • Godot / C#
  • Android / Quest VR
  • Interaction
  • AI-assisted film

好奇心与学习

我习惯边做边学,也喜欢追问工具和系统为什么这样工作。在 C++ 项目中处理过内存、并发和构建问题,也用 x86 汇编做过游戏内存实验。计算机基础、编程语言机制、AI 的原理与应用,以及 Android / Linux 环境和 ArkTS,都是我持续学习的方向。不同领域的经验深浅不一,我喜欢把原理联系起来,遇到问题就继续阅读、讨论和动手验证。

技术细节
C++ TCP、线程同步与异步任务
在 C++ 网络与并发练习中,我编写 TCP 客户端、服务端、多线程服务和异步任务,使用锁与条件变量协调工作线程。通过可运行的小程序验证连接、等待与同步,也练习过 future / async 的任务组织。
C++ 编译链接、rpath 与构建配置
我整理过 C++ 编译、链接与 rpath 参数,使用 xmake 和 CMake 配置本地构建。在练习中核对编译器参数、库依赖与运行时查找路径,区分编译、链接和程序加载阶段的问题。
C++、x86 汇编与进程内存实验
在《植物大战僵尸》个人内存实验中,我使用 C++、x86 汇编与 Windows API 观察游戏函数和进程内存,尝试还原函数调用、向游戏进程写入并执行代码,将界面阳光数值与内存地址和调用过程对应起来。
Termux、模块脚本与 rclone 挂载
在 Termux、KernelSU 与 Zygisk 环境中,我实践过权限、模块和脚本集成,也使用过 rclone 挂载。内容以 Android / Linux 命令行环境配置、工具联调和故障排查为主。
  • C++ / TCP
  • Thread / Future / Mutex
  • gcc / g++ / rpath
  • xmake / CMake

写代码,做系统,也把想象变成画面。

CONTACT / 合作与交流

聊聊你想做的事。

欢迎聊聊 AI 应用、效率工具、软件产品或创意项目,也期待长期的技术协作。可以从一个想法、正在解决的问题,或已有项目开始;如果方向还在形成中,我们也可以一起梳理。