我从 DeepSeek Harness 的讨论区里,反推出了一个神秘团队的技术架构

我从 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 两个实例共用同一个 ~/.dsh home,各自维护独立的 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 操作、平台特定话术、状态跟踪。

这种架构的优势:

  1. 平台隔离:BOSS 的 GUI 改版了?只更新 BOSS sub-agent 的适配器,不影响其他平台
  2. 并发执行 :DSH 的 parallel-safe 调用走有界滚动池(默认 maxParallelToolCalls=10),多个平台的投递可以真正并行
  3. 有序提交:DSH 保证工具结果按模型原序提交,模型看到的对话结构永远自洽

推导四:aborted turn 高频出现是产品设计,不是 bug

3631 暴露了 aborted turn 是常态。

为什么?因为 Offer快 的产品哲学就是"敏感人工介入"------这是我觉得整套设计里最聪明的地方

他们不是简单地"让 AI 全自动跑",而是在关键节点设置了决策检查点。Agent 在运行过程中,遇到它判断为"敏感"的情况,会主动中止当前操作,把决策权交还给用户:

  • 遇到薪资谈判环节 → 中止,提醒用户确认期望薪资
  • 遇到"为什么离职"这类敏感问题 → 中止,等用户亲自回答
  • 遇到面试时间确认 → 中止,让用户自己定时间
  • 遇到一个"擦边"岗位(匹配度不高但有意思) → 中止,让用户拍板

这不是让用户手动中止 Agent------而是 Agent 自己检测到敏感场景,主动把控制权交还用户。用户不需要盯着屏幕,只需要在收到提醒时做决策。

这种设计的高明之处在于:它把"自动化效率"和"用户主权"做了精妙的切割 。重复性劳动(筛岗、投递、初次打招呼)交给机器,决策性环节(薪资、敏感回答、面试确认)留给人类。机器不是替代人,而是把人从对话框里解放出来

对底层框架来说,这意味着 aborted turn 是高频率事件------每一次人工介入都会产生一个 aborted turn。DSH 的取消机制虽然严谨(cancel(cause) 清 pending、协同中止 signal、turn/endaborted(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 后续迭代的方向:

  1. 会话级锁 / 单实例守卫(解决 #3633)
  2. inbox 状态机的一致性校验(解决 #3632)
  3. 前端 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 gapagent/inbox/splicedfoldSurface() 这些细节,说明报告人是亲手在写代码、亲手在调 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 讨论区里留下的这三个帖子,就是这条路标上最早的一个参照。

相关推荐
栩栩云生2 小时前
别再硬记 AWS 和 k8s 命令了!一行命令把十几个云平台的 CLI 全接进 AI
kubernetes·agent·mcp
Vuji2 小时前
Pi 插件解剖|summarize.ts:199 行,给 Agent 的对话做一份 Markdown 总结
前端·人工智能·agent
深念Y3 小时前
AI Agent 时代运维安全:rm 防误删方案对比
linux·运维·人工智能·安全·自动化·agent
小马9264 小时前
智能体时代的两块基石:DeepSeek Harness 开源与“认知基础设施“数据库
数据库·人工智能·开源·agent
熊猫钓鱼>_>4 小时前
从“串数据“焦虑到 Space 自由,我用 Agent Bucket 智能体桶管游戏素材
开发语言·人工智能·游戏·agent·bucket·workbuddy·space
卷无止境5 小时前
goose项目全面解析:一只开源的智能鹅如何帮你干活
agent
贵慜_Derek5 小时前
DeepSeek Harness 记忆解读:场域分层、参考架构与实现思路
人工智能·agent·deepseek
用户469368483205 小时前
Deepseek-harness增加桌面版端序列:第 5 讲 · desktop-app bundle:一个 bundle 如何改造产品
agent
宋哥转AI5 小时前
深入理解 AI Agent · AGENT #01:从 LLM 到 Agent——为什么大模型需要一个“身体“
人工智能·agent·ai编程