我从 DeepSeek Harness 的讨论区里,反推出了一个神秘团队的技术架构
先交代下我是怎么注意到这事的。
最早是在 V2EX 上刷到过 Offer快 创始人的一些踪迹------当时这个产品就很神秘,一个叫 OfferKuai 的 AI 求职 Agent,号称能 7×24 全自动替你筛岗、投递、跟 HR 沟通。官网写的是全流程自动化求职,但诡异的是,这团队几乎不发声,没有大规模开放测试,媒体报道也都是"内测中"、"暂停下载"的状态,原定 2026 年 4 月 30 日上线的 GUI 版本跳票了,官网切到维护状态。
但有个细节让我一直记着:Offer快 在小圈子里其实一直在更新,而且据用过的人说,从来没有被任何招聘平台限制住过。一个第三方工具能在 BOSS直聘、智联、猎聘这些平台的风控眼皮底下活下来,还活得不错------这背后是什么架构?我一直很好奇,但查不到任何技术资料,这个团队信息保密做得极好。
今天在逛 DeepSeek Harness(DSH)的 GitHub 讨论区时,我意外看到了三个连号的讨论帖:#3631、#3632、#3633,报告人都是 yamingmou,署名是 OfferKuai Team / Founder: Zhaofeng (Yaming) 。
我当场愣了一下。
Offer快 的团队,在 DSH 的讨论区里提 bug?而且提的还是这种质量的帖子------问题描述精准、复现步骤清晰、带脱敏证据行、明确标注了 "Confirmed empirically"(经验证),这比我认真百倍呀。这不像普通用户反馈,这像是一个把 DSH 用在生产级分布式场景里的团队才会踩到的坑。
于是我顺着这三个讨论帖反向推导,结果越推导越觉得有意思。这三个 bug 单看是 DSH 的框架缺陷,连起来看,几乎是 Offer快 技术架构的一份"间接施工图"。
下面把我推导的过程和结论写出来,供大家拍砖。
先看这三个讨论帖到底在说啥
#3633:多实例并发写,会话日志静默损坏
当壳(desktop shell)和 dsh web 两个实例共用同一个
~/.dshhome,各自维护独立的 seq 计数器,向同一个session.jsonl.zstd追加,导致 seq 乱序。证据行:line 37058: expected seq 693898, got 683973。
关键信号:桌面壳 + dsh web 同时跑,共用同一个 home。
#3632:孤儿 inbox 操作导致 UI 硬失败
日志受损后,残留
agent/inbox/spliced事件,removedCount > 0但 inbox 为空(孤儿撤回)。持久化层接受这份日志,但 UI 渲染硬失败,"Load earlier"永久空白。证据行:seq 199843: {"type":"agent/inbox/spliced","data":{"target":"next-turn","start":0,"removedCount":1,"inserted":[]}}。
关键信号:深度使用了 DSH 的 Agent Inbox 机制(sub-agent 派发任务、splice/claim 那套)。
#3631:aborted turn 导致 history paging 冻结
会话以 aborted turns 结束时,前端 History Paging 读取"断尾"事件(orphan tool call、缺失 surface 事件),无法构造合法的 UI 消息对象 → 分页挂起。
关键信号:aborted turn 是常态------用户高频干预 Agent 的执行。
我的推导:Offer快 是一套"端云协同的分布式多 Agent 系统"
把这三个讨论帖拼起来,再对照 Offer快 官网描述的能力(全网职位检索、7×24 自动沟通、代投代聊、敏感人工介入),架构轮廓就清晰了。
推导一:端侧有 DSH 实例在跑
3633 里明确出现了"desktop shell"------这是跑在用户自己设备上的 DSH 实例。
为什么必须跑在端侧?因为 Offer快 要做的是操作招聘平台的 GUI(BOSS 客户端、浏览器等)。如果在云端用无头浏览器跑,平台风控一眼识破------IP 集中、行为模式化、设备指纹单一。只有跑在用户自己的设备上,操作才看起来像"一个真实求职者在用自己的电脑":
- IP 是用户 IP
- 设备指纹是真实的
- 操作时间符合人类作息
- 行为统计特征分散在千家万户
这与 Offer快 官网和媒体体验稿的描述完全吻合------中华网的体验稿里写过"屏幕右下角一个极小的胶囊",这个胶囊就是端侧 DSH 实例的 UI 载体。
这也是为什么 Offer快 能在各大平台风控底下活下来。 不是他们的反检测技术有多黑科技,而是他们的架构本身就是"分布式在千家万户的真实设备上跑"------平台风控看到的,就是一群勤奋的求职者,只不过这些"求职者"是 AI 驱动的。要封,只能从行为统计学层面识别,成本高、误杀率高。
推导二:云侧也有 DSH 实例在做编排
3633 里同时出现了"dsh web"------这是跑在 Offer快 服务端的 DSH 实例。
云侧负责什么?重推理:
- 简历解析与结构化
- JD 匹配度计算
- 沟通话术生成
- 面试协调策略
- 跨用户的知识沉淀
端侧负责什么?执行:
- GUI 自动化操作(点击、输入、截图)
- 本地数据隔离(简历、沟通记录在用户设备)
- 实时决策(什么岗位投、什么话术发)
这就是 Offer快 官网说的"端云协同"的真实含义。端侧不是哑终端,云侧也不是中央大脑,两者通过 DSH 的会话日志协同。
推导三:每个招聘平台是一个 sub-agent
3632 暴露了 Offer快 深度使用了 agent/inbox/spliced------这是 DSH 的 sub-agent 派发机制。
最自然的架构是:
scss
┌─────────────┐
│ 主 Agent │ (云端 DSH 实例)
│ (求职策略) │
└──────┬──────┘
│ inbox 派发
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Boss 子Agen││智联 子Agent│ │猎聘 子Agent│ (端侧 DSH 实例)
└──────────┘ └──────────┘ └──────────┘
主 Agent 负责统筹:分析用户简历、拆解求职意图、制定投递策略。
每个平台的 sub-agent 负责执行:GUI 操作、平台特定话术、状态跟踪。
这种架构的优势:
- 平台隔离:BOSS 的 GUI 改版了?只更新 BOSS sub-agent 的适配器,不影响其他平台
- 并发执行 :DSH 的 parallel-safe 调用走有界滚动池(默认
maxParallelToolCalls=10),多个平台的投递可以真正并行 - 有序提交:DSH 保证工具结果按模型原序提交,模型看到的对话结构永远自洽
推导四:aborted turn 高频出现是产品设计,不是 bug
3631 暴露了 aborted turn 是常态。
为什么?因为 Offer快 的产品哲学就是"敏感人工介入"------这是我觉得整套设计里最聪明的地方。
他们不是简单地"让 AI 全自动跑",而是在关键节点设置了决策检查点。Agent 在运行过程中,遇到它判断为"敏感"的情况,会主动中止当前操作,把决策权交还给用户:
- 遇到薪资谈判环节 → 中止,提醒用户确认期望薪资
- 遇到"为什么离职"这类敏感问题 → 中止,等用户亲自回答
- 遇到面试时间确认 → 中止,让用户自己定时间
- 遇到一个"擦边"岗位(匹配度不高但有意思) → 中止,让用户拍板
这不是让用户手动中止 Agent------而是 Agent 自己检测到敏感场景,主动把控制权交还用户。用户不需要盯着屏幕,只需要在收到提醒时做决策。
这种设计的高明之处在于:它把"自动化效率"和"用户主权"做了精妙的切割 。重复性劳动(筛岗、投递、初次打招呼)交给机器,决策性环节(薪资、敏感回答、面试确认)留给人类。机器不是替代人,而是把人从对话框里解放出来。
对底层框架来说,这意味着 aborted turn 是高频率事件------每一次人工介入都会产生一个 aborted turn。DSH 的取消机制虽然严谨(cancel(cause) 清 pending、协同中止 signal、turn/end 记 aborted(user/parent)),但前端的 History Paging 显然没跟上------遇到这些"断尾"事件时,UI 挂起了。
这套架构的技术优势
1. 合规友好度极高
端侧执行 + 用户明确授权 + 可审计日志,是目前"AI 代投代聊"能做到的最合规形态。
DSH 的会话模型是 append-only 事件日志------所有操作可回放、可审计。这对"平台想封你"是一个强有力的辩护:
- 用户是自己授权的(不是入侵平台)
- 操作是透明的(每次代投、每次代聊都有日志)
- 行为是拟人化的(端侧执行,平台风控看到的是"勤奋求职者"特征)
- 敏感环节是人工确认的(不是 AI 擅自做主)
更关键的是,DSH 的崩溃恢复机制------文件尾部撕裂写能被识别,补写合成收尾事件------这意味着即使在用户设备意外断电、进程被强杀的情况下,会话日志依然能恢复到一致状态。这对合规审计至关重要。
2. 平台对抗能力强
前面说了,端侧 GUI 自动化 + 拟人化操作(随机移动轨迹、非线性鼠标移动、变数操作间隔)+ 频率智能控制,这套组合在 RPA 风控领域是被验证过的"像真人"方案。
平台要封,只能从行为统计学层面识别(投递频次、沟通模式、时段分布),成本高、误杀率高。这就是为什么 Offer快 能在各大平台眼皮底下持续运行------不是没被检测,而是检测成本太高、误杀率太高,平台选择了"睁一只眼闭一只眼" 。
3. 架构演进性强
Sub-agent + Inbox 机制让 Offer快 可以独立迭代每个平台的适配器。BOSS 的 GUI 改版?只更新 BOSS sub-agent。猎聘的 API 调整?只更新猎聘 sub-agent。
而且 DSH 是模型无关的------支持 DeepSeek、Anthropic、OpenAI、Gemini 等所有主流 LLM。不会被锁定到某一个模型供应商,可以针对不同类型的任务(简历解析 vs 话术生成 vs 匹配判断)选用最合适的模型。
但这套架构的劣势和挑战,才是真问题
1. 底层框架尚未 production-ready
DSH 自身还在 rc.8,官方明确说"v0.1 包含兼容性破坏性变更,插件 API 和 config schema 均尚未稳定"。
Offer快 在 rc.6/rc.7 阶段就深度使用,意味着他们要么在内部维护了 DSH 的 fork,要么在应用层做了大量防御性封装。
3633 的会话级锁问题,目前 DSH 还没有修复。这意味着 Offer快 必须在应用层自己做 flock 或单实例守卫------给端侧和云侧分配独立的 ~/.dsh home,但这又引入了跨 home 的会话同步问题。
2. 端云协同的会话一致性是开放问题
3633 暴露的问题如果不解决,Offer快 的端云双侧 DSH 实例在同一个 user 的 session 上并发写,迟早会大面积触发 seq gap。
临时 workaround 是给端侧和云侧分配独立的 ~/.dsh home。但这样又引入了跨 home 的会话同步问题------端侧执行的动作,云侧怎么实时感知?云侧下发的策略,端侧怎么即时生效?
这是分布式系统里经典的"最终一致性"难题。Offer快 团队既然能在生产环境踩到这个坑,说明他们要么已经有了一套自研的同步机制,要么正在 DSH 的上层做大量的封装工作。
3. 孤儿状态的级联风险
3632 暴露的问题是系统性的:只要日志受损,inbox 状态机就可能产生孤儿操作。
端侧设备意外退出(用户关电脑、断网、强杀进程)在生产环境是高频事件 。这意味着 Offer快 必须自己在应用层做 inbox 一致性校验------而 DSH 目前的修复流水线只覆盖 surface 事件(tool call 要有对应的 tool result),不覆盖 control 事件 (agent/inbox/spliced 的内部一致性)。
这就是为什么 #3632 能在 rc.6/rc.7 阶段存活。DSH 的 foldSurface() 通过了(surface 事件层面无异常),seq 连续、JSON 合法,持久化层接受这份日志。但 UI 层在消费时遇到了自己无法处理的状态------orphan 的 removedCount------且没有防御性编程,直接静默失败。
💡 这是 Agent 框架设计的一个普遍性命题:当底层保证数据严格一致时,上层 UI 必须容忍数据层的"合法但异常"状态 。Offer快 用
agent/inbox/spliced的孤儿操作把这个问题具象化了,并写了一句非常精准的话:"Data-layer strictness and UI-layer tolerance should be aligned"(数据层的严格与 UI 层的容错应当对齐)。
升维思考:这可能是执行类 Agent 的一个典型范式
抛开"求职"这个具体业务不谈,Offer快 在 DSH 上的实践,其实给整个 Agent 基础设施领域提供了一个真实的、生产级的、分布式多写入者的压力测试样本。
目前业界大多数 Agent 框架(LangChain、AutoGen、CrewAI)的参考实现都是单进程、单用户、单会话的。真正在生产环境跑"端云双侧多实例协同 + 多 Agent 并行执行 + 7×24 不间断"的团队极少。Offer快 恰好是这种场景------
- 端侧 DSH 实例:单用户、单设备、但 7×24 运行
- 云侧 DSH 实例:多用户、多会话、高并发
- 两侧对同一 session 并发写
- Sub-agent 跨平台并行执行
- 用户高频干预(abort + 人工决策)
- 端侧设备意外退出常态化
这种场景逼出了 DSH 的三个深层 bug,也逼出了 DSH 后续迭代的方向:
- 会话级锁 / 单实例守卫(解决 #3633)
- inbox 状态机的一致性校验(解决 #3632)
- 前端 paging 对脏数据的容错(解决 #3631)
如果把这套架构抽象成通用范式,执行类 Agent 的"端云协同"可以这样分层:
scss
┌─────────────────────────────────────────────┐
│ 决策层 (云端) │
│ - 任务规划与拆解 │
│ - 模型推理(LLM) │
│ - 全局状态管理与跨用户知识沉淀 │
├─────────────────────────────────────────────┤
│ 协同层 (DSH Session) │
│ - Append-only 事件日志 │
│ - Sub-agent 派发与 Inbox 机制 │
│ - 崩溃恢复与一致性校验 │
├─────────────────────────────────────────────┤
│ 执行层 (端侧) │
│ - GUI 自动化操作 │
│ - 本地数据隔离 │
│ - 拟人化行为模拟 │
│ - 敏感节点人工决策提醒 │
└─────────────────────────────────────────────┘
这个范式的核心思想是:把"决策"放在云端(重推理、集中调度),把"执行"放在端侧(拟人化、分散风险),把"协同"交给可审计的事件日志(append-only、可回放、可恢复) 。
任何需要"长期、自动化、跨平台、拟人化"执行的场景,都可以套用这个范式:
- 自动化求职(Offer快 正在做的)
- 自动化客服(需要操作多个 CRM 系统)
- 自动化数据采集(需要模拟真人浏览)
- 自动化测试(需要在真实用户环境跑)
- 个人 AI 助手(需要在用户设备上操作各种 App)
对做同类事情的人
执行类 Agent 的"端云协同"大概可以这样分层:决策放云端(重推理、集中调度),执行放端侧(拟人化、分散风险),协同靠 append-only 事件日志(可回放、可恢复)。
这个拆法不新鲜,但能套的场景不少:自动化客服(要操作多个 CRM)、数据采集(要模拟真人浏览)、真机测试、个人助手(要操作本机 App)。
问题在于,现在主流 Agent 框架(LangChain、AutoGen、CrewAI 那些)的参考实现都是单进程、单会话。像"端云双实例并发写同一 session + 多 Agent 并行 + 7×24 运行 + 用户高频 abort"这种组合,公开样本几乎没有。如果帖子里说的是真的,那 OfferKuai 确实给 DSH 提供了一个很值钱的生产级压力测试------顺带逼出了 DSH 后续三个值得优先处理的迭代方向:会话级锁 / 单实例守卫、inbox 状态机一致性校验、前端 paging 对脏数据的容错。
一点个人判断
我在翻这三个讨论帖的时候,最触动我的是报告本身的"质地"。
不是那种"软件坏了帮我看看"的泛泛而谈,而是精确到了代码层面------seq gap、agent/inbox/spliced、foldSurface() 这些细节,说明报告人是亲手在写代码、亲手在调 bug、亲手在生产环境跑系统的人。
在今天的 AI 创业圈,创始人亲自在底层框架的讨论区里提 issue 的,不多。大多数创始人在这个阶段要么在融资、要么在 PR、要么在招人。而 Offer快 的创始人 Yaming,选择在 DSH 的 repo 里,用一份专业的 bug report 告诉社区:
"我们在用你的框架做生产级分布式系统,这是我们在生产环境遇到的三个深层问题。"
这种"技术创始人亲自下场"的做派,在今天的 AI 创业圈里,属实稀缺。
从技术视角看,Offer快 选择的"DSH + 端云协同 + 多 Agent 协作 + 可审计事件日志"这条路,在合规性和架构演进性上是站得住的。它面临的真正挑战不是"能不能做出来",而是"能不能在底层框架尚未完全 production-ready 的情况下,维持这套系统的稳定性"。
从工程视角看,#3633 和 #3632 目前 DSH 官方还未修复。这意味着 Offer快 团队要么在内部维护了 DSH 的 fork,要么在应用层做了大量防御性封装。无论如何,他们都在用真实的工程实践,为"端云协同 Agent"这个品类摸索出一条可参考的路径。
💡 作为技术观察者,我会持续关注两件事:
一是 DSH 后续版本对 #3633/#3632/#3631 的修复方案(尤其是会话级锁和 inbox 一致性校验的设计取舍);
二是 Offer快 在秋招季(9-10 月)是否会有基于 DSH 的新版本放出。
这两个信号任何一个落地,都意味着"生产级端云协同 Agent"这个品类又往前推进了一步。
从几个 GitHub 讨论帖反向推导出一家公司大半技术架构,这件事本身就挺有意思的------好的 bug report 就像考古地层,每一层都藏着生产环境的真相。Offer快 团队无意间用这三个讨论帖,给自己做了一份相当硬核的技术自述。
而作为还在学习Agent的技术人,我反而更期待看到:当 DSH 修好了这三个 bug,当 Offer快 重启了大规模测试,当"端云协同 Agent"从创业公司的秘密武器变成行业的基础设施------那一刻,执行类 AI 才会真正进入"替你把事做完"的时代。
在那之前,Offer快 团队在 DSH 讨论区里留下的这三个帖子,就是这条路标上最早的一个参照。