Skip to content

附录 D · 面试题速答

全文字数2469 字预估耗时约 15 分钟难度学完自测

学完整本蓝皮书之后,用这 8 道题自测。每道题给考察点和答题思路,不是标准答案——面试时讲出自己的理解比背稿更重要。

概念题

Q1:用一分钟介绍一下 DeepSeek Harness?

考察点:技术敏感度,是否真的用过而不是只看过新闻。

答题思路:DeepSeek 官方开源的 Agent 运行框架,MIT 协议,核心理念是"一切皆插件"——模型适配、工具注册、会话管理、沙箱执行、连 Agent 循环本身都是可插拔的,底层跑在 Cordis 插件系统上。和 LangChain 这类"给你一堆零件自己拼"的库不同,dsh 是完整的运行时,主循环、会话、沙箱、工具调度全部内置,开发者只需要选插件、写配置。目前是 developer preview 阶段,迭代很快。

Q2:dsh 说的"一切皆插件"到底是什么意思?和普通的模块化有什么区别?

考察点:架构理解深度,能不能说出插件化和模块化的本质区别。

答题思路:不是"代码拆成模块"那么简单。dsh 的插件化有三个特征:第一,没有特权核心——连 Agent Loop 这种最基础的东西都是插件,理论上可以整个换掉;第二,运行时动态加载——启动时按 Profile 配置决定加载哪些插件,不是编译时写死;第三,可逆副作用——每个插件对系统的修改都能按相反顺序撤销,卸载后系统干净还原。底层靠 Cordis 的三个原语支撑:Service(服务注册)、Event(类型化事件)、Effect(可逆副作用)。

Q3:Profile 和 Bundle 是什么关系?

考察点:能不能说清 dsh 的配置分层。

答题思路:Bundle 是发布单位——一个 npm 包,声明自己往运行时贡献哪些插件和配置。Profile 是运行组合——存在 $DSH_HOME/profiles/<名称>/ 下,是一组 Bundle 的集合,决定"这棵插件树长什么样"。web、headless 都是 Profile,它们的差别只是叠了不同的 Bundle。可以把 Bundle 理解成"菜",Profile 理解成"点好的一桌菜"——同一个菜可以出现在不同桌,每桌的组合不同。

Q4:dsh 的四种运行模式分别适合什么场景?

考察点:有没有实际用过不同模式,而不是只跑过 Web UI。

答题思路:Web 模式是交互式对话,日常开发、调试、看着 Agent 干活用;Headless 模式是一次性任务,跑完就退出,适合自动化脚本、CI/CD、定时任务;SDK 模式是嵌进自己的程序里调用,适合把 Agent 能力集成到现有系统;还有极简模式(minimal),只保留最核心的 Agent 循环,适合研究底层机制或做高度定制。四种模式共用同一套插件层,差别只是叠的 Bundle 不同——这也是"一切皆插件"的直接体现。

实践题

Q5:dsh 的工具调用流水线是怎么工作的?为什么要设计成流水线而不是直接执行?

考察点:对核心机制的理解,能不能说出设计意图。

答题思路:模型说要调一个工具后,不是直接执行,而是走一条多环节流水线:先过 pre-execute 策略(可以拦截、修改、拒绝),再过审批(超出权限时弹窗问用户),再进沙箱执行(OS 内核级隔离,限制能碰哪些文件),执行结果再过 post-execute 处理(可以记录、转换、审计),最后才返回给模型。设计成流水线的原因是每个环节都能被插件拦截和增强——想加审计日志、想加工具白名单、想改执行参数,都不需要改核心代码,挂一个插件就行。这也是"一切皆插件"在执行层的体现。

Q6:MCP 和 Skill 有什么区别?分别在什么场景下用?

考察点:能不能区分两类能力扩展方式。

答题思路:MCP 是接外部工具的标准协议——比如让 Agent 能操作 GitHub、抓网页、查数据库,这些是"动手能力",通过 MCP 服务器暴露一组工具函数,Agent 调工具拿到结果。Skill 是写给模型看的指令——告诉它"遇到这类任务按这套步骤来",比如代码审查清单、周报模板,它不新增工具,而是改变模型的行为方式。简单说:MCP 给 Agent 多一双手,Skill 给 Agent 多一份说明书。需要接外部系统用 MCP,需要固化做事流程用 Skill。

Q7:dsh 的安全模型是怎么设计的?

考察点:有没有关注安全,能不能说出多层防护的思路。

答题思路:三层防护。第一层是文件沙箱——OS 内核级隔离,不是 JS 判断,三档权限:read-only(只读)、workspace-write(默认,只能写当前工作区)、danger-full-access(不限制)。第二层是操作审批——Agent 想做超出权限的事,弹窗问你,允许一次就是一次,不是永久放行。第三层是密钥只写——API Key 保存后界面不回显明文,只显示脱敏描述符,明文只存在本地 .credentials.yaml。核心思路是"默认受限,按需放行",而不是先给全部权限再靠用户小心。

开放题

Q8:如果让你给团队选型,dsh 和 Claude Code、Codex 比,优势和劣势分别是什么?

考察点:技术选型能力,能不能客观分析而不是无脑吹。

答题思路:dsh 的优势:第一,完全开源、MIT 协议,不绑定任何厂商,模型可以随便接——DeepSeek、OpenAI、本地模型都行;第二,插件化程度最高,连 Agent 循环都能换,定制空间大;第三,Headless 和 SDK 模式适合自动化和集成场景,不只是个聊天工具。劣势:第一,太新,developer preview 阶段,API 不稳定、文档不全、社区生态还在成长;第二,默认 Web UI 的体验和 Claude Code、Codex 比还有差距,很多能力要靠装插件补齐;第三,团队里如果没人愿意折腾配置和插件,开箱即用的体验不如商业产品。选型建议:团队有定制需求、想自建 Agent 基础设施、不介意踩坑,选 dsh;个人日常写代码追求省心,商业产品更成熟。

Open Source · MIT · Community Driven