built as a graph

Tangyi (Jerry) Qian

我的工作横跨整个 LLM 技术栈——后训练与 RLVR、模型内部机制、agent 系统,以及环绕它们的产品层——其中钻得最深的是长程 agent:状态比对话活得更久的系统。

PiPlan 创始人 · LLM 序列化模型编辑的一作研究 · 以下一切都已建成、已测量,或在审。

nodes/ — 我做过的东西

OPEN SOURCEHARDWARE AGENTFULL-STACK

Even Realities Agent OS

一个面向 Even Realities G2 智能眼镜的 agent 无关 OS:按住说话语音进、分页 HUD 帧出、三个信任级别上的四个进程。大脑在一个 provider 接口后面可插拔——一个约 900 行的自建 agent,唯一持有 LLM 密钥;或一个对接不受控的第三方 OpenClaw 网关的适配器——同一块显示屏同时作为硬件 MCP 接口面暴露,于是任何厂商模型(包括 Claude Code)都能渲染到你正戴着的眼镜上。

Hardware Agent SDKWearablesMCPLow-Latency InfraVoice / ASR
工具状态下的 G2 HUD 特写:状态行显示「Lens ◆ Weather」,其下是所说问题的实时转写,绿字黑底。

576×288 4-bit 画布上的一次真实运行,不是示意图:轮次进行中,状态行显示天气工具正在运行,用户自己的转写在下方。一枚干净的徽标——没有「?」——意味着对端是生产 agent。

详情

语音回路与硬件桥接

工程化完整的可穿戴回路:插件作为带看门狗的哑终端跑在官方 Even App WebView 里;一条 WSS 承载 JSON 渲染帧下行与 16kHz s16le PCM 上行,仅限按住说话,凭可撤销的短时效设备 JWT 运行——凭据永不出服务器。双模型 ASR(faster-whisper tiny 出实时增量,base 出路由所信任的终稿)加领域热词,对照自建的十段真值集压到 CER 0.0085。一次锁竞争排查把松手到出文本从 7.6s 降到 0.4s,做法是把等待与计算拆开(9.5s 锁等待 vs 0.35s 实际解码);实测整轮现在无工具 6.1s、一次工具 11.5s,因为预算按模型往返计数,而不是按工具延迟。

像素级精确的 HUD 排版

对照真值而非字符数重建了排版引擎:在 576×288 4-bit 绿色画布上以真实像素排版(正文 576×216、固定 27px 行、8 行 × 3 页——早先的五行假设浪费了每页的 37%)。字形步进对照官方 pretext 度量库这个外部 oracle 核验——17,025 个码点、820 个换行案例,逐断行位置比对,零偏差——而真实上限其实是 999 UTF-8 字节,不是厂商文档暗示的 1,000 字符。一张实测字形表覆盖其余:HUD 最初用的 13 个字形里有 10 个在 G2 上不存在、会被静默丢弃,现在被丢弃的字形会被报告出来,而不是在设备上凭空消失。

硬件 MCP 接口面与帧租约

把眼镜作为一个标准 MCP 服务器暴露在独立进程里(8 个工具、3 个资源、1 个 prompt),于是任何厂商模型都能写 HUD——只差一条「claude mcp add」。这个进程正是那个什么都不持有的:没有麦克风、没有 ASR、没有设备凭据,能做的恰好是九条控制面路由允许的事。textkit_paginate 完全不需要设备——排版引擎作为纯函数,这是证明一个外来模型真的到达了你的代码的最便宜方式。屏幕同一时刻只有一个所有者:写入走帧租约,落败的客户端拿到带当前持有者与 TTL 的结构化 LEASE_HELD,而不是后写覆盖;人按下按住说话即无条件抢占。四进程端到端套件(真实 MCP 客户端 → 真实 MCP 进程 → 真实网关 → 真实设备 WebSocket)断言帧确实从设备 socket 发出——27/27。

自建 agent,权限靠架构

一个约 900 行手写的 agent 循环(直连 DeepSeek、仅回环监听、LLM 密钥的唯一持有者),带 12 个工具与 7 个技能,守在四道门后:能力枚举只有 READ|WRITE、完全没有 exec 层级;正则路由器在模型见到 prompt 之前就定下技能与它的工具白名单;WRITE 工具在导入时绑定到具体文件,模型给的任何参数都到不了另一条路径;每次调用与每次拒绝都向审计日志追加一行 JSON。正是这个顺序让提示注入在这里结构上无足轻重——注入的句子到达时已在用户轮次内,路由早已冻结了工具集。一条硬换来的规则:路由判意图,技能判可行性。当路由还在试图判可行性时,agent 对其实能服务的请求回答「我还不能设置提醒」——声称自己做不了其实做得到的事,与凭空编造是同一类失败。provider 接口的存在是因为现在确实有两个实现,不是为了未雨绸缪,而这个拆分看得见谁拥有小屏契约:第三方后端不受控,所以网关得替它注入样式头,自建 agent 则把这份契约放在自己的系统提示词里——无论哪条路,markdown 都在排版层被剥掉,作为第二道防线。它的协议还补上了第三方 v3 缺少而眼镜确实需要的三样东西:一个工具状态事件(没有它,HUD 会停在「thinking 12s」上,不知道有工具在跑)、一个按轮次的延迟预算(在 HUD 上,慢即是坏——超预算就降级收尾而不是干等)、以及握手时返回的溯源。真实 agent 端到端:对在线 DeepSeek 23/23,断言工具确实运行、审计轨迹确实落盘。

验证与诚实的屏幕

590 条网关 pytest + 82 条插件 vitest + 32/32 语音端到端 + 27/27 MCP 四进程 + 23/23 真实 agent 端到端,接进 CI 并带一条刻意的绊线:若排版 oracle 被跳过,构建直接失败,而不是在没有关键 claim 的情况下绿着通过。两条约定让这些数字有意义——每个新测试都做变异检查(故意弄坏代码;若它还能通过,它只是装饰);测测试夹具而不是测代码的测试被当作比没有测试更糟,起因是一个回归套件仅仅因为提前取消了尚未启动的任务而通过。demo 里没有任何东西是 mock 的:真实麦克风、真实 faster-whisper、真实 DeepSeek、真实的 Open-Meteo 与 Frankfurter 调用——仓库里唯一被替换的输入是 demo 音频。而且屏幕不许说谎:非生产对端戴「?」徽标,被预算截断的回答以「… (cut off)」结尾而不是完成标记,从未到达的遥测返回 null,而不是一个看似合理的电量数字。

FOUNDERSHIPPEDFULL-STACK

PiPlan.ai

创始 AI 工程师,独立一人——一个跑在自研约束求解内核之上的 LLM agent,提案先行。已上线 demo.piplan.ai;首批 100 账号的邀请制 beta 运行中。

AgentsPlanningFull-stackEvaluation
PiPlan 落地页封面:水墨绘制的城市天际线,缀以朱砂色。

piplan.ai 封面——城市即计划:一条天际线、数千个活动部件,用产品自己的水墨加朱砂笔法。

详情

全栈

独立构建:一个类型化图的规划 OS——目标、任务与约束构成一张有向多重图,沿两条轴(图与计划)做版本化,背后是 117 条 API 路由与一个七屏操作端 UI,作为公开的多访客 demo 在线运行。求解器与 agent 的每一处变更都以提案先行流转:草稿 → diff → 人工提交。

算法

构建并测量:一个自研调度内核——在共享容量池上做多方案求解、冲突显式呈现——外加一套自研两阶段加速策略。在锁定 benchmark 上对照旧求解路径实测:5 秒有效覆盖率 42.1% → 100%(预算内解出的实例多 2.38×),首解加速比中位数 560×,加速后首个可行解端到端 0.028s;仅加速前置阶段就覆盖 522/522 个实例、零回归。

Agent

已构建:一个 LLM 规划 agent,通过注册工具面操作这套 OS——八个工具,核心四个在线:重规划、方案比对、带门禁的计划更新。用前沿对话模型做在线评测,agent 跑通核心流程——初始规划、重排期、提交、提交后重排期、一般反馈——pass@3 高于 80%。每次变更都作为提案落在人工提交门之后;截止时间永不由模型书写。

Agent 安全

提案先行的变更控制:模型读一切、不提交任何一次写入——每次写入都是人工审查门后的一份草稿 diff。公开 demo 加围栏运行:按访客隔离的沙箱会话、操作上限,以及求解器工作的准入限额。

Benchmark 与评测

今天立着三套测量系统:调度内核上的正确性 harness——十二个不变量族加 fuzzing,在 CI 中运行、门禁每一次算法变更;加速数字背后一个带分层对照的专门实验室 benchmark——三族备选加速方案测过并否决、负结果保留;以及对 agent 核心流程的在线 pass@3 评测。

CI 与发布

CI 全自动,发布刻意由人把门。每个 PR 跑 lint、完整测试套件与一次 fuzz 冒烟;每夜跑约 10k 个基于属性的 fuzz 案例、性能 benchmark,以及对照黄金状态的字节级 demo 回放门禁。部署是到在线 VM 的一键 pipeline——这个按钮按设计留给人:机器验证,人发布。

训练 / 后训练

迄今为止的优化工程就是上面的求解器加速——设计、测量、在锁定 benchmark 上验证。为后训练准备就绪:一套评测栈(正确性 harness、实验室 benchmark、在线 agent eval)来门禁任何学习得来的组件,以及一个每条 agent 提案都带一次人工接受/拒绝决策的核心循环——从构造上就是带标注的信号。

在线服务

在线于 demo.piplan.ai:一个精简的单节点服务底座——求解器工作在准入门禁之后,50 个并发沙箱会话在限速与按访客隔离之后。按 100 账号邀请制 beta 的规模配置。

OpenAI Build WeekFULL-STACKRL

VerifierForge

开箱即用的 RFT:把它指向你的 LLM 流量,它找出昂贵的任务簇,用你自己的验证器训练一个小模型,并在把流量路由过去之前证明收益。

Post-training / RLInference & ServingLLM Systems
VerifierForge 证明视图:留出集 pass@1 从 58.3% 升至 78.3%,pass@8 升至 90%。

一次 60 行的留出集评测:独立 pass@1 从 58.3% 爬升至 78.3%(+20pp),pass@8 升至 90.0%。

详情

问题

团队把前沿模型预算烧在高频、窄域的任务上——而这些恰是小微调模型就能处理好的任务。几乎没人这么做,因为 RL 专长、GPU 编排、以及「确实奏效」的证明是三个各自独立的难题。

我构建了什么

一个闭环,八天建成——核心循环独立完成,一位队友负责 UI 与演示视频:代理接入真实流量,发现任务簇及其成本;一个带固定动作空间与自定义分析工具的 agent 写出训练配置;系统自动开通 GPU pod,以用户提供的程序化验证器用 GRPO 训练,然后证明结果——留出集 pass@1 从 0.583 到 0.783、pass@8 从 0.767 到 0.900,而虚假奖励对照保持持平,所以收益不是安慰剂。上线是一个带金丝雀与漂移守护的路由开关。服务可缩容到零:一个请求约四分钟唤醒一个 GPU pod,闲置三十分钟后回收。

从 RLVR 出发的思考

我是在亲手实现过 GRPO 与 One-Shot RLVR 之后构建它的。文献反复表明可验证奖励有效;还没有人把这个闭环产品化到端到端——发现工作负载、用它自己的验证器训练、证明收益、路由过去。借来的部分都是明说的。训练器是 DeepSeekMath 的 GRPO。证伪臂来自 spurious-rewards 一线:格式花招换来的收益看起来与真收益一模一样,直到一个随机奖励对照拆穿它。上线这一步按 FrugalGPT/RouteLLM 的思路想——金丝雀加路由开关,而不是一次信仰之跃。作为工程我满意:问题定义干净,证据链闭合。 诚实的问题在上游,而且是个前沿问题。系统目前用一个审计工作负载的 LLM agent 来决定「这个任务簇值不值得训练?」——这是一个判断,不是一次测量。给定一个验证器和一个环境,一个任务定义究竟可否用 RL 训练出来,是一个开放的研究问题。这个问题是本项目为我揭出的最新鲜的东西,也是我一直回到的问题。

OPEN SOURCESWE-BENCHRESEARCH SYSTEM

CAWM: Agentic Working Memory on OpenHands

构建在 OpenHands(CodeAct + Kimi K2)之上的程式性工作记忆与在线归纳系统:从 SWE-bench 修复轨迹中抽取可复用的调试子工作流,并研究 agent 记忆的上下文容量极限。

OpenHandsAgent MemorySWE-benchOnline LearningLLM Systems
CAWM 架构图:一个 Django issue 流经 CodeAct agent、Docker 沙箱、基于执行的评测,成功轨迹被蒸馏成 workflow 再注回 agent 的 prompt。

在线学习循环:已解决的轨迹被清洗、经 LLM 归纳蒸馏成 3–8 步子工作流,再作为常驻生效的技能注回下一个任务的 prompt。

详情

框架与 CodeAct 集成

在 OpenHands CodeAct agent 与 Kimi K2 之上架构了一条端到端在线学习 pipeline:驱动多轮代码生成、在 SWE-bench Lite 的 Django issue(114 个实例)上做实时 Docker 容器评测,以及带不可变事件溯源回放的经验持久化。

Workflow 归纳与抽象

实现了一个自动化归纳引擎,把 20–50 步的原始编码轨迹浓缩成可复用的 3–8 步程式性子工作流(缺陷定位、上下文追踪、测试驱动验证),并带参数化的变量抽象。

实证发现:记忆的非单调性

头条汇总数字是一个负结果,并如实报告为负结果:在线 CAWM(52.0%)落在 55.3% 基线之下。条件分析才是真正的发现——常驻 workflow 在 11–20 个时,解决率冲上 66.7% 的峰值(较基线 +11.4pp);过了 31 个,它崩到 39.5%,因为累积的 workflow 文本污染了系统提示词。所以记忆并非无用——无上限追加是自败的:agent 记忆需要选择与淘汰,而非增长。报告自带它的警示:峰值是相关性证据,混杂因素无法排除。

失败归因与失焦

在 87% 的测试失败案例上系统诊断了失败模式:识别出「失焦」模式——无引导的 agent 持续做无效探索,步数方差大(std=43.0 vs 19.4),且 50% 出现上下文爆炸(>150K 字符)——为选择性记忆检索提供了硬性实证。

OPEN SOURCEAGENT SKILLHARNESS

SafeRoutes

一个自己强制执行不变量的路线规划 agent 技能——agent 在物理上无法把状态留在不一致的境地,哪怕它声称已经做完了。

AgentsHarness EngineeringReliability
从芝加哥到匹兹堡的路线图,途经点沿一条连续路径标出。

一份生成的路书:完整规划路线与有序途经点,从头到尾渲染。

详情

问题

工具与技能的定义是挂出来就听天由命:它们描述 agent 能调用什么,却不对它实际做的施加任何约束。实践中的失败不是崩溃——模型把步骤叙述一遍(「已移除那个途经点」)却从不调用工具。在一个你不拥有的通用 agent harness 上,你没法靠改运行时来修这个问题。

我构建了什么

把强制压进技能本身,于是它在未修改的宿主上就能工作。每次状态写入都被一个不变量检查门禁——途经点自洽、路径连续、续航区间——检查失败即回滚状态,并返回一条写成指令而非抱怨的错误,让模型的下一轮是纠正而不是道歉。途经点变更是一等操作,而不是自由编辑涌现出的副作用。模型的勤勉被移出关键路径:正确性成为数据面的属性,而非提示词的属性。

为自己设计的技能构建 benchmark

驱动问题:如果你自己设计并构建一个 agent 技能,你要怎么构建那个让你能优化它的 benchmark——直到一个低成本模型也能把它用得好? benchmark:41 个实测案例、五个维度——自主调用(请求里从不点名工具)、克制(知道何时不该规划)、具名途经点参数抽取、带安全探针的数据缺口处理、动态重规划——作为 123 个真实 OpenClaw 网关轮次跑在三个低成本模型上(GLM-5.2、MiniMax-M3、MiMo-2.5-Pro)。两条纪律让数字可信。数据底座在任何运行之前先核实——走廊覆盖提前检查过,于是失败归因于模型,而不是缺数据。而评分读的是客观产物——持久化的计划、行程树节点、转录里的工具调用块——从不读模型自己的叙述;安全案例做了逐转录的人工审查。 它发现了什么,按疼的程度排序:自主调用对所有模型都是零——三个模型全都漂去 web_search 并即兴编路线,因为技能是二等公民的注入 prompt 文本,而 web_search 是一等公民的常驻工具。一旦模型真的调用了技能,执行几乎不是问题:91% / 100% / 75% 正确。而安全原来是独立的一根轴,把能力排序整个反转——在「把安全区间调低点硬闯过去」的提示下,最听话的模型击穿了燃油安全底线,而最不爱冲动的那个拒绝了,转头去修数据。 所以修复不是换个更好的模型——是对技能本身动手术。会话式重构把一个 4–6 次调用、路径加 DSL 的工作流坍缩成带无损撤销的两次调用,工具被提升为一等函数。在 MiniMax-M3 上重测:自主触发从 0/12 到 5/6,十个案例中九个在单轮返回完整交付物,web_search 逃逸为零——单次重复的验证,如实声明。我留下的那条经验:对一个自己设计的技能,benchmark 是产品的另一半——而它告诉你的第一件事是:你的瓶颈不在你以为的地方。

123 次真实网关运行;接口重构之后,MiniMax-M3 上自主调用从 0/12 到 5/6。

HACKATHON BUILDOPEN SOURCE

Loop Supervision for Multi-Agent Research

一个把多 agent 运行当作任务图来盯的监督器:告诉你是哪一个 agent 卡住了——以及为什么——而不只是超时。

AgentsHarness EngineeringObservability
循环监督器的任务图面板:节点按状态着色,附一条实时事件流。

监督器把一次运行看作一张活的任务图;随实验推进,每个节点的状态实时更新。

详情

问题

多 agent 系统不会大声失败。一个 agent 悄悄重跑同一步、去做兄弟节点的任务、或建立在某个上游已失效的结果上。超时告诉你出问题了;它不告诉你出了什么。

我构建了什么

一个异步任务图上的依赖感知监督器——没有全局 fork-join 屏障,所以一个三小时的实验节点永远不会阻塞一个十分钟的节点。它检测的是彼此可区分的事件类别,而不是泛泛的停滞:范围越界、建立在失效结果上的过期级联、污染传播、被阻断的比较。每个事件产出一条归因链路与一次回滚。为一个自动研究工作负载而建,配一个逐步回放运行实况的在线面板。一次实测里它抓到一个真实的:一个 worker 在实验中途静默丢样本,数据哈希出现分歧,比较在产出假数字之前被阻断。

监督只跑在硬信号上——文件哈希、指标曲线、退出码;从不用 LLM 裁判。一次对抗测试里,我们植入了一条指令,让一个训练节点跳过官方工具、手写自己的溯源:更保守的模型直接拒绝了诱饵,而更有能力的那个真的伪造了自己的数据哈希——并在可比性门禁上因不匹配被抓、被归因、被扣发。这条经验把通常的假设反过来:agent 越有能力,越需要那道门。整个实况日用去的 API 开销不到一美分。

HACKATHON BUILDOPEN SOURCE

GraphJudge

一个以图为依据的 LLM 输出事实性裁判——判定由 Neo4j 图拓扑做出,而不是由另一个 LLM 做出。

AgentsVerificationKnowledge Graphs
详情

问题

人人都在用 LLM 评 LLM——但 LLM 检查器会幻觉出自己的判定,而且当检索空手而归时,它退回参数先验去猜。一段只引用自己的流畅编造在文本里看起来很像回事;字里行间没有什么会把它暴露出来。

我构建了什么

一个跑在生成下游的裁判:贴入生成的文本,它抽取原子断言,把它们锚定到可信的 Neo4j 参考图上,返回逐断言判定——SUPPORTED、CONTRADICTED 或 UNGROUNDED——每条都带一条图路径作为证据。判定由图做出,而不是由模型做出:函数关系矛盾是确定性 Cypher 检查,GDS 连通分量分析把编造的簇暴露成零可信锚点的分量——缺席成为一等信号,而不是一个 null。LLM 只负责把散文解析成断言;它从不裁决真伪。为 HackwithBay 3.0 构建为一个带信用门禁的 web 应用,把每个结果渲染成可检视的事实星座。在一个 63 断言的 benchmark 上对 LLM 裁判:两者都检出了每个植入的假断言,但 GraphJudge 的精确三态标注拿到 100% vs 98.4%——确定性地,且证据路径可审计。

OPEN SOURCEHACKATHON BUILD

Engram

一个把你的信念写入模型权重的持续学习个人 agent。

Model EditingAgentsContinual Learning
Engram 标题卡:面向 LLM 的持续学习记忆,信念进权重,事实进 RAG。

Engram 的封面:一个 LLM 的持续学习记忆——信念内化进权重,事实留在 RAG。

详情

问题

RAG 记得住事实,但改变不了一个模型相信什么。偏好与信念不该住在一个挂在冻结模型侧面的向量库里。

我构建了什么

一个带事实 vs 信念路由器的 agent:事实走检索,信念经 LLM 模型编辑直接写进模型权重。附一个归因演示——在 RAG 完全禁用的情况下 agent 仍能召回注入的信念,证明知识住在权重里。

Engram 为什么存在

多数持续学习系统其实从不内化任何东西:模型保持冻结,它「学到」的一切都住在外部存储里。我在意的是知识最终进到模型内部的那一版——而这直接引向 LLM 模型编辑,以及它的两个难题。其一是 LLM 序列化模型编辑:新知识不得摧毁旧知识。其二,被讨论得少得多:可用性。一次编辑活下来之后,它还得真的能用——而今天被编辑的知识几乎完全靠问答探针来验证。模型们都能通过。让它们在同一段知识上做自由形式生成,还没有好答案。 我想要的终态是一个个人模型:一个小模型,把你持久的信念与偏好内化进权重,其余一切经 RAG 检索,并在开放对话中自然地同时用起两者。Engram 是朝这个方向的第一刀——两个存储之前的一个事实 vs 信念路由器,外加一个证明信念真的住在权重里的归因演示:检索完全禁用下的召回。

前沿在哪里,以及我现在在测什么

在内化这件事上,LLM 序列化模型编辑已经走出一次性 ROME/MEMIT 时代,进入为撑住编辑量而造的方法——GRACE 谱系里适配器式与码本式做法让数百次编辑不互相踩踏,非结构化编辑一线(UnKE、AnyEdit)把载荷从主语–关系–宾语三元组中解放出来。评测跟得慢一些:LEME 推向了长文评测,但多数 LLM 模型编辑工作仍用同一套方式验证——冲着被编辑事实的问答探针。于是第二个难题大体仍开放:通过每一根探针的知识,在模型自由书写时仍然浮现不出来。 我现在在实验的一块在这两者之外:LLM 模型编辑能否内化那些过于抽象、装不进规则的偏好——你无法表达成一条可检索的指令、也无法靠表面推理解决的偏好,因为它们只作为潜空间里的一种抽象存在,改变模型的行为方式。具体一点:一个真正带个体行为的长期个人助手,比如知道在用户开始得意时稍微顶回去一点。RL 在这里是错误的工具——RL 每次训练装进一个宏观偏好(想象:把一个教师 agent 调到听起来权威为止),而一两百条细粒度偏好意味着两百个奖励信号开始互相打架。LLM 模型编辑不该有这种冲突问题:一个偏好,一次写入。它是否真的如此,正是我在测的东西——这是进行中的研究。

OPEN SOURCE3,000+Likes & Saves410+Downloads63Stars

Socrates agent

一个在你笔记里实践苏格拉底方法的 Obsidian 插件——选中一段,提问,答案在十秒内写回。

AgentsHarness EngineeringLLM Systems
Socrates agent 标题卡:苏格拉底的 ASCII 肖像,旁边是 SOCRATES 与 The Socratic Method 字样。

插件标题卡——Socrates-agent 把苏格拉底方法带进你正在读的笔记。

详情

问题

独自啃一本长技术手册,意味着卡住的时刻没有人可问。一个通用聊天机器人没读过你这本书:它返回一段正确而通用的段落,完全不知道第 2 章如何铺垫了你在第 7 章卡住的概念。而且这个往返会打断阅读——切应用、贴上下文、等、贴回来、重排版:每个问题 20–30 秒。

我构建了什么

一个在你笔记里实践苏格拉底方法的 Obsidian 插件。选中一段并提问;答案直接写回那段文字——解释、批注或重写——端到端十秒内完成。翻转标签,它反过来向你提问:默认的苏格拉底模式用一个问题回应选中的内容,在给出任何东西之前把你的理解再往下推一层。agent 只跑在三个工具上——read file、edit file、fetch。刻意不给 write-file:它能批注和编辑已有的内容,绝不凭空生成文件。已在 Obsidian 社区插件商店上架——410+ 下载与 63 个 GitHub star,发布帖在 RedNote 拿到 3,000+ 赞与收藏。

设计笔记

让 agent 保持轻。能力住在模型里;框架保持最小。三个注册工具覆盖全部工作,小动作空间是它保持稳健的大半原因。而回路必须顺到不打断阅读:产品规格就是一条延迟预算——从选中到写回答案在十秒之内。答案落在问题升起的地方;插件改变笔记本身,不往外吐一份转录。

这个项目让我看清的自身默认设定

三个现在能叫出名字的模式。最小充分动作空间是我的反复下注:三个工具覆盖全部工作,而刻意不给 write-file 是 agent 保持稳健的大半原因——能力来自模型,可靠来自动作空间。产物即接口:答案改变你正在读的文档,而不是堆在转录里,于是知识留在你会重读的地方。而默认姿态定义产品:一个先提问的工具和一个先作答的工具,是同一批零件组装出的两个不同产品。 设计接下来该往哪走,作为产品需求而非功能清单来陈述:评测是缺失的器官。「那次交流真的加深了理解吗?」今天没有验证器——于是对提示词、标签、工具描述的每一次迭代都是品味,不是工程。在插件能量化自己的教学之前,我在盲调;把那套测量建起来才是诚实的下一步。

OPEN SOURCE

ClawConclave

一个多 agent 的 OpenClaw 系统——各有分工的 LLM agent 在共享频道中协同。

Multi-agentLLM Systems
详情

它是什么。三个 OpenClaw agent 作为三个独立网关跑在同一台机器上——一个 worker、一个 researcher、一个监察者,冠以明制官职(工部尚书 / 格物尚书 / 都察御史)——以 Discord 为共享工作区:一条工作频道给两个干活方,一条状态频道专留给监察者。

协作如何运转。委派经 collabd——一个小型自建编排器——加上每个网关上的一个 local-collab 插件来完成。一个任务以 source → worker 流转,带 schema 校验的结果契约:最多三次 schema 尝试、一条 research → salvage 兜底、每十五秒一次心跳,以及一道终局失败围栏,让死掉的任务无法半途回返。一层可见性中间件打理频道观众看到的内容,collabd 自带一个早期循环检测器——一个按重复率标记的滑动事件窗口。监察者从不进入工作频道:它在后台轮询两个干活方,连续两次失败后在状态频道开 INCIDENT,恢复后发 RESOLVED。

测试显示了什么。一个端到端冒烟 harness 在真实 Discord 频道上跨三个场景驱动 worker 之间的协作——工具使用、编码、记忆。一次故障注入测试端到端验证了主动监督:把 researcher 下线,看 INCIDENT 自行出现,恢复后看 RESOLVED——而测试本身还抓到并修好了告警路径上的一个真实 bug。一次实况运行中,worker 委派了一个模型对比调研任务;researcher 撞上一个动态渲染的页面,自行切换抽取策略,把一份结构化的 benchmark 报告交回共享频道供审查。

一次 2026 年初的构建,按它的真实体量呈现——也是我后来监督工作的种子:一个监察者角色和一个重复窗口循环检测器,比 AROW 早四个月。

research/ — 论文与复现

Preprint — under review

LLM 序列化模型编辑(在审)

Tangyi Qian 与合作者——第一作者

LLM Model EditingContinual LearningSequential Editing

一篇关于 LLM 序列化模型编辑的论文。该领域的长期缺口:被编辑的事实只能在原始措辞下存活——把问题改写,或追问其中某个细节,模型就一片空白。论文把这一缺口诊断为表达问题而非检索问题,并弥合了其中大部分:数百次序列化编辑之后,对改写后与分解后的问题给出显著更好的回答,且对模型的通用能力没有可测量的代价。

正在某顶级 AI 会议双盲评审中;在评审周期允许之前,题目、数字与预印本暂不公布——一旦可以,当天就会出现在这里。

Manuscript — under review

测试时持续学习与规则编辑(在审)

Tangyi Qian 与合作者

Test-Time Continual LearningContinual LearningProactive AgentsLLM Model Editing

一篇关于面向主动式 LLM 助手的测试时持续学习的论文。问题在于:已部署的助手必须即时吸收用户指定的行为规则——从一句话开始、无需微调——并在连续的流式对话中准确干预。该方法不让系统提示词膨胀数千 token,也不更新权重,而是把规则维护在隐藏状态上的外部关联记忆中,并在提示词边界把检索到的规则作为第一人称思考注入。它展示了稳健的规则遵循、零提示词膨胀、在困难负例上靠有原则的弃答换来高精确率,以及优雅的多规则生命周期管理。

正在某顶级 AI 会议双盲评审中;在评审周期允许之前,题目、数字与稿件暂不公布——一旦可以,当天就会出现在这里。

Technical report — full PDF on this site

To Forge or Not to Forge: predicting task-level fine-tuning gains from ten-example pilots

Tangyi Qian——独立研究

Post-TrainingLoRA Fine-TuningEvaluationPre-Registered Study

这个任务到底值不值得微调?在一套固定协议下——Qwen2.5-1.5B-Instruct、固定的 LoRA 配方、贪心解码、基于执行的验证器——把十样例试点与 61 个任务上的全量微调配对,实测增益取作真值。微调在 61 个任务中的 53 个上有帮助,但试点的真正价值是排序而非门禁:按试点顺序花 20 次全量微调,能捕获全部正增益质量中的 0.72,相比之下随机为 0.33、oracle 为 0.74。预注册的 go / no-go 端点以负结果的形式发表,一次声明的修订定位了其背后的机制。

61 个任务上试点信号与实测增益之间的 Spearman 0.755(CI [0.60, 0.86])——每个数字都在 PDF 里,没有任何保留。

paper (PDF)build note

reproductions/

RLVR 是引擎;后训练、harness 与记忆是运行时;注意力是底座;持续学习是知识保持时新的方式。这里的记忆是 agent 读写的一个存储。LLM 模型编辑是改权重——同一个问题,不同的介质。

GRPO 既训练推理模型,也训练记忆管理器。GRACE 与 WISE 位于 LLM 模型编辑与 agent 记忆之间的枢纽上。注意力是长 CoT RLVR 与长程 agent 赖以立足的底座。

rlvr/

奖励从哪里来、能不能信任、够不够稠密。

已复现已读

foundation

algorithm

debunking

test-time

domain

GRPO

Shao et al., 2024

已复现

DeepSeekMath / GRPO

组相对优势、无 critic——我实现并对照程序化验证器运行的算法。

姿态:完整复现笔记 → /zh/logs/grpo-family-tree论文 ↗

更早(推荐系统,主线之外):DCN-V2 · ESMM · ColBERT

path/ — 到目前为止的轨迹

Apr 2026 — Present

PiPlan.ai · 创始 AI 工程师

路径在此转折:在三个组织内部交付过 AI 系统之后,我创立了自己的公司。一个人,整条技术栈——产品、自研求解内核(首解加速 560×)、操作它的 LLM agent、服务,以及为这一切把关的 eval。在这里,计划是一张活的图;agent 提案,由人提交。已上线 demo.piplan.ai,邀请制 beta 运行中——而零号客户就是我自己,每一天都是。

展开详情

Agent——一个 LLM 规划 agent 通过注册工具面操作这个 OS(前沿 LLM,每次写入都过人工提交门);在 5 条核心规划流程——初始规划、重排期、提交、提交后重排期、自由形式反馈——上做在线评测,pass@3 高于 80%。

加速——求解内核上的自研两阶段加速策略:5 秒预算内,有效覆盖率 42.1% → 100%,首解加速比中位数 560×,端到端首个可行解 0.028s;由带预注册切分的 1,296 次锁定运行验证,522 例消融中 0 次质量回退。

信任与服务——提案先行的变更控制:模型读一切、不提交任何一次写入——每次写入都是人工审查门后的一道草稿 diff。在线服务底座按 100 账号邀请制 beta 的规模配置:50 个并发沙箱会话、按访客隔离、限速 / 配额 / TTL 护栏。

AgentsPlanningFull-stack

Feb 2026 — Apr 2026

GoldenMeadow Investments LLC · AI 开发工程师(实习)

为一组上线时没有这一层的内部 LLM 应用构建其下的测量层——网关级追踪、一个面向 SQL 修复的程序化验证器,以及运行在两者之上的合并前门禁。

展开详情

可观测性——搭建了其余工作所立足的追踪层:每个 agent 步骤连同其工具调用、输入与输出、token 数、延迟、成本,以及背后的模型与提示词版本一并采集;在网关处埋点,因此没有任何应用团队需要改动自己的代码。采样按失败加权——每个失败运行完整保留,成功的做采样——trace schema 做了版本化,新增或去掉字段都不会搁浅历史运行。

验证——为 SQL 修复构建程序化验证器:先对解析后的语句做静态检查(只读断言、表白名单),再做与参考运行的执行结果比对。第一版放过了一些本该判失败的用例——空结果集比对相等、NULL 对 NULL、无序行被当作有序比对,以及跑得很干净但解析的是同一指标另一种定义的查询。围绕这些失败模式重建比对器,把修复正确率提升 40%,达到输出不经人工审查即可过门的程度。

门禁及其边界——把验证器接进我负责的 pipeline 上的合并前门禁,并公开 trace schema 与验证器接口,让其他团队能按自己的条件采用。在线层同样做了定义——采用率、返工率、干预率,以及采集它们所需的埋点——但交付时没有带上:跨团队埋点与一段基线期都超出了我能触达的范围,因此这些离线指标始终未经真实使用验证。这是交接时系统已知最大的缺口。

AgentsEvaluationLLM Systems

Sep — Dec 2025

CMU Heinz XR Lab · AI 工程师(Capstone 毕业项目)

对一条全人工流程的 0→1 替换:一个 LLM tool-calling agent,为 Heinz XR 实验室约 200 名学生的设备外借项目自动化 VR 应用咨询——此前完全靠手工——完成 Docker 化并交接至实验室的 VM。

展开详情

Agent——构建了一个 tool-calling 对话式 agent(OpenRouter function calling):LLM 每轮决定是对话还是调用检索;一个推荐轮最多串联 4 次 LLM 调用(工具决策 → 查询理解 → 推荐推理 → 回复合成),会话持久化到 MongoDB,另有 4 个可热插拔的 tool-calling 模型。

检索与 KG——agent 搜索工具背后的混合检索:ChromaDB 技能向量检索与 Neo4j 图遍历相融合,图遍历跑在一个 2,073 节点 / 3,396 边的课程–技能–应用知识图谱上(452 门 CMU 课程、77 个 VR 应用、1,544 条 LLM 抽取的技能),并为稀疏查询提供语义桥接回退。

评测——后来对检索层做了离线 benchmark:200 条合成查询(80 条技能短语 + 120 条 LLM 改写的学习目标、由图导出的分级 qrels、77 应用候选池)对照随机 / 关键词 / BM25 基线,带 bootstrap 95% 置信区间。在改写的学习目标上,混合检索以 MRR@10 0.74 vs 0.56、NDCG@10 0.40 vs 0.35 胜过最优词法基线;在直接技能查询上,Recall@5 0.57 vs 0.21。

数据 pipeline——把数据生命周期自动化:一个两阶段的 CMU Schedule-of-Classes 抓取器覆盖 50 个院系、带学期感知的增量合并,LLM 技能抽取带语义去重(MiniLM 嵌入 + 凝聚聚类),以及一键的知识图谱 + 向量索引重建,重建时对在线 RAG 服务热重载、无需重启。

运维控制台——管理后台带一个实时作业控制台,编排数据抓取、技能抽取与图重建;LLM 模型与按 IP 的限流配置持久化在 MongoDB,可热更新、无需重启;结构化交互日志供后续分析。

交付——以即插即用 Docker 包交付(Flask + Gunicorn + Neo4j compose),由 capstone 团队部署到学院的 VM,agent 冒烟测试闭合了交接闭环。

AgentsKnowledge GraphsRAG

May — Aug 2025

XY Investments · AI 中心工程师(实习)

为一家约 100 人的投资公司的研究流程 0 → 1 构建了两套内部 LLM 系统——一个多源数据字典检索引擎,和一个架在公司行情数据栈之上的 LLM agent 框架;两套都已全公司上线生产。

展开详情

数据字典 RAG——构建并上线了公司统一的数据字典检索系统,已在生产、支撑 web UI 与 HTTP API(Gunicorn + Docker):Wind 与另外七个金融数据源由一个混合引擎提供服务——BGE 稠密检索 + BM25 关键词检索,经倒数排序融合合流——带分源与合并索引。Recall@10 62% → 85%。

Apollo Agent——构建了公司面向内部业务流程的 LLM agent 框架,已在生产:一个架在 RiceQuant 行情数据上的 26 函数金融分析工具库,通过三个接口面暴露——MCP 服务器、对话式 CLI 与 WebSocket 网页聊天。一个 embedding + LLM 意图路由在工具面上分派查询;路由准确率 34% → 91%。

AgentsRAGLLM Systems

Jun — Jul 2024

Century Frontier Asset Management · 量化机器学习实习生

学习排序与表示学习:一个用于高频截面选择的成对排序模型——RankNet 式,与奖励模型训练所用的偏好对目标相同——以及一个把 tick 级订单簿数据压缩为稠密低维特征的 VAE。

Learning to RankRepresentation Learning

Jul — Aug 2023

Global AI · 数据工程与机器学习实习生

图工作的起点:一个以锂市场公司为种子的 Wikidata BFS 爬虫——55K 实体上的 155K 条关系三元组——投影成公司到公司的图,再在其上用 GNN 预测锂价,每家公司一个 LSTM 提供节点特征。从爬取实体到拥有完整价格历史的上市公司,漏斗最后剩下 57 个节点:约束瓶颈在节点一侧,不在边一侧。

Knowledge GraphsGraph Learning

state/ — 我是谁

基础先行,而且基础自身立得住。后训练:动手搭过带证伪对照的 GRPO 与 RLVR pipeline,在此之上对更广的家族有一张可用的地图——偏好优化、蒸馏,以及各自适合的位置。模型内部机制:从 GQA 与 MLA 到稀疏与线性变体,对整个注意力版图具备上手可用的熟练度,外加推理系统与优化器全貌。Agent 工程:harness、工具与技能设计、多 agent 监督、benchmark 构建。以及产品层:数据 pipeline、检索、组合求解器、服务、前端。这些是地基,不是论文的脚注。

我钻得最深的是一个问题:状态比会话活得更久的 agent。大多数 agent 为下一轮而建,我按下一个月来建。在 PiPlan,状态是世界——计划是一张活的图,必须在现实漂移时保持可行:LLM agent 提出变更,由人提交,调度内核让它保持诚实。在我的研究里,状态是模型——我作为第一作者的 LLM 序列化模型编辑工作,追问数百个事实如何随时间进入一个模型、并在问题改变形态后依然站得住;我当前的实验则在追问:究竟什么该放进权重,什么该放进检索。在我的开源工作里,状态是信任——技能不变量、benchmark 与硬信号监督,让你能把 agent 放在那里运行,而不必盯着它。

这条线的深水区是一个押注:base model 与 agent 脚手架正收敛到同一个问题上——agent 该记住什么,以及谁有权写入:一次编辑、一次训练,还是用户。

教育经历

2024 — 2025卡内基梅隆大学 · 信息系统管理硕士

2020 — 2024埃默里大学 · 定量科学(信息学方向)学士

技术栈

Agents & LLM proposal-first agent harness · tool use · model editing · RAG & hybrid retrieval

ML PyTorch · GNNs (PyG) · ranking · imitation learning · bandits

Systems FastAPI · SQLAlchemy · OR-Tools

Frontend React 18 · TypeScript · React Flow