项目背景与核心概念
大家好,我是小木头。近期 AI 圈内最热门的话题之一无疑是 DeepSeek Harness。这是一个由 DeepSeek 发布的开源智能体框架或项目,其核心特性在于以插件形式灵活集成模型、工具、技能及会话功能。在之前的分享中,我已经详细介绍过 Harness 的基本概念以及如何构建第一款小插件。Harness 的灵活性允许用户将各种能力模块化,从而快速搭建个性化的 AI 应用。本期视频的核心目标是分享一款由我编写的飞书插件,旨在帮助用户在飞书环境中直接与本地运行的 Harness 进行对话。这种集成方式类似于之前介绍的 OpenClaw 和 Hermes,其最大价值在于打破了设备限制,让用户能够通过移动设备随时随地与自己的 Harness 进行交互。为了达成这一目标,我们需要先在本地确保 Harness 正常运行,随后通过配置飞书应用和插件实现端到端的连接。
本地环境准备与 Harness 启动
在开始配置飞书插件之前,首要任务是确保本地的 DeepSeek Harness 正在运行。对于尚未安装的朋友,建议回看上一期视频了解本地安装步骤。启动 Harness 的关键命令是 npx @deepseek-ai/dsh web。在终端中运行此命令后,系统会启动一个 Web Profile。此时需要特别注意端口号,确保 Harness 运行在默认的 3080 端口上。如果看到类似 WebSocket 就绪或客户端连接成功的输出,即表示服务已正常启动。接着,复制终端中显示的 URL 并在浏览器中打开。这一步是为了验证 Harness Web 界面是否可访问,这是后续插件配置的基础。> “复制这个命令在终端这里运行...确保 Harness 运行在了 3080 端口”。虽然不同环境下输出可能略有差异,但只要确保服务在指定端口监听即可。这个 Web 界面不仅是调试工具,也是后续验证消息接收的重要参考窗口。
飞书应用创建与权限配置
接下来进入核心配置阶段,首先需要前往飞书(国内版)或 Lark(国际版)的控制台创建一个自建应用。以 Lark 为例,创建的应用名称建议设为 deepseekbot。应用创建完成后,第一步操作是添加机器人的特性。随后进行权限配置,代码仓库文档中提供了一组最小化所需的权限集合。为了避免繁琐的逐条选择,推荐使用批量导入方式。> “在 Permission & Scopes 点击批量导出...我们可以用批量导入的方式”。将文档中提供的 JSON 代码块复制,回到应用后台的权限设置页面进行导入。除了基础权限外,还必须添加消息接收事件。需要订阅的事件是 im.message.receive_v1,这允许应用接收用户发送的消息。在 Events & Callbacks 设置中,选择订阅模式为长连接(Long Polling)而非开发者服务器。> “我们选择长链接而不使用开发者服务器...好处呢就是你不需要自己拥有一台服务器来维护这个连接”。这种设置简化了部署架构,无需额外配置公网服务器即可维持通信。
应用发布与凭证获取
完成权限和事件订阅后,需要保存并发布该飞书应用。在发布版本时,可以自定义更新笔记或备注,但重点在于点击“保存发布”以激活应用配置。发布成功后,回到应用的「基本信息」页面。我们需要提取两个关键凭证:App ID 和 App Secret。这两个值将用于后续的环境变量配置。> “我们需要的是 App ID 和 App Secret...先回到代码仓库”。请注意,App ID 是应用的唯一标识符,而 App Secret 则是用于身份验证的密钥。确保在复制时不要包含多余的空格或换行符,否则会导致后续连接失败。这两个凭证是飞书应用与 Harness 插件建立信任关系的基石,必须妥善保管并在后续步骤中准确填入。
插件安装与环境变量配置
回到代码仓库,首先执行安装命令:npx @deepseek-ai/dsh plugin install --profile web dsh-lark(具体命令可能随版本更新略有不同,请以文档为准)。> “复制这条 npx 命令...将其安装”。如果之前已安装过,系统会提示已是最新版本;初次安装则会显示下载进度。可以通过 plugin --profile web list 命令查看已安装的插件列表。安装完成后,需要配置环境变量。在终端或系统环境中设置两个变量:FEISHU_APP_ID 和 FEISHU_APP_SECRET(名称可自定义,但需与后续配置文件一致)。将之前从飞书控制台复制的 App ID 和 App Secret 分别赋值给这两个变量。> “另一个呢就是密钥...同样的从控制台将密钥复制粘贴过来就好”。这一步确保了插件在运行时能够动态获取飞书应用的认证信息,避免将敏感数据硬编码在代码中。
配置文件修改与关键开关
最后一步是修改 Harness 的补丁文件(patch file)。在运行过一次 Harness 后,本地会生成一个 .cordis.patch.yaml 文件。打开该文件,找到 Lark channel 的配置部分。> “在这个 cordis.patch YAML 文件里面做一番小小的配置”。在配置中,App ID 和 App Secret 字段应引用之前设置的环境变量名(如 ${FEISHU_APP_ID})。最关键的一点是确保 disabled 字段设置为 false。> “最为重要的一点是在这里呢...将其设为 false 表示启用这个插件”。如果该字段为 true,插件将被禁用。此外,根据使用的平台版本不同,需调整 domain 字段:国内版飞书设为 feishu,国际版 Lark 设为 lark。如果需要指定特定的工作区(Workspace),可以通过 workspace 字段进行配置。保存文件后,所有配置即告完成。
端到端测试与对话验证
一切就绪后,打开桌面端的飞书或 Lark 客户端。在搜索栏中输入之前创建的应用名称 deepseekbot,进入对话界面。在此之前,确保终端中的 Harness 服务仍在运行。启动后,观察终端输出是否显示 WebSocket 连接成功。> “WebSocket 已经就绪...客户端已经连接成功”。在飞书对话框中输入 hi,如果配置正确,你将立即收到来自本地 Harness 的回复。> “看到吗现在呢就收到了来自于我本地运行的 Harness 的消息”。为了验证功能完整性,可以发送更复杂的指令,例如让 AI 解释当前项目。> “我现在让它解释一下这个项目是干嘛的”。由于飞书客户端目前不支持流式实时状态更新,消息可能在发送后稍显延迟。此时可以切换回浏览器中的 Harness Web 界面。在 Web UI 中可以看到消息正在实时生成,随后飞书端会同步显示完整的回复内容。> “在桌面上看看这个Web界面的UI这里呢...正在实时的吐出消息”。这证明了端到端的通信链路已完全打通。
结论
本期视频详细演示了如何将 DeepSeek Harness 与飞书/Lark 集成,实现从本地服务器到移动端的无缝对话体验。核心流程包括:启动 Harness Web 服务、创建飞书自建应用并配置长连接权限、安装插件并设置环境变量、修改 Patch 文件启用 Lark Channel。通过这一集成,用户不再局限于桌面端操作,可以将 Harness 部署在家庭电脑或云端服务器,并通过飞书应用在任何移动设备上访问。这种架构不仅利用了 Harness 的开源灵活性,还借助飞书的普及性提升了 AI 助手的可及性。对于开发者而言,参考代码仓库中的文档和示例配置是成功集成的关键;对于普通用户,只需按照步骤替换 App ID 和 Secret 即可快速上手。未来,随着插件生态的丰富,这种本地 AI 与即时通讯工具的结合将为个人工作流带来更大的效率提升。