deepseek harness实现AI问答助手智能体
因外包项目即将解散,准备面临找工作了,所以突然想到使用deepseek harness构建一个AI面试问答助手!
想法是打造一款专注于AI测试工程师面试备考的智能体产品。通过导入XLSX题库,实现“题目推送-回答评估-智能打分-记忆强化-错题追踪”的闭环学习路径,帮助用户在真实面试前最大化掌握核心知识点,增强面试通过率!
想到了就做!
第一次使用dsh研发智能体,遇到了很多困难,他不像dify和扣子空间那么简单,有一定的门槛,对于我来说有一定的难度;
首先从prd文档开始入手(AI生成)
1. 文档信息
属性 内容
文档名称 AI面试问答助手产品需求文档
版本号 V1.2
作者 AI产品经理
日期 2026-11-02
状态 待评审
2. 产品概述
2.1 产品背景
在AI测试工程师及中高级测试岗位的求职过程中,候选人面临知识点繁杂、面试场景模拟困难、缺乏即时反馈等痛点。传统的死记硬背效率低下,且难以应对面试官的追问。市场亟需一款能够基于自定义题库、提供沉浸式模拟面试体验并具备智能评分与记忆辅助功能的工具。
2.2 产品目标
打造一款专注于AI测试工程师面试备考的智能体产品。通过导入XLSX题库,实现“题目推送-回答评估-智能打分-记忆强化-错题追踪”的闭环学习路径,帮助用户在真实面试前最大化掌握核心知识点。
2.3 目标用户
•核心用户:准备跳槽或校招的AI测试工程师、软件测试中高级工程师。
•特征:有一定技术基础,需要针对性查漏补缺,渴望获得类似真实面试的压迫感与反馈。
2.4 产品价值
•对用户:提供个性化的模拟面试环境,通过科学的错题间隔重复算法(类似Anki)提升记忆留存率,增强面试信心。
•对平台:通过垂直领域的AI应用,积累测试领域的面试数据与交互模型,构建行业壁垒。
......
然后是构建AI智能体,配置知识库,开发定制插件(需要匹配题库格式),然后对接API,最后实现问答!

其中也是遇到了很多的问题,如:dsh默认知识库只能识别md格式的文档,无法解析xlsx格式的文档,版本冲突问题,配置问题......
整体弄下来,dsh方方面面都需要自己配置,可塑造性更强,但是门槛更高,难度更大!
项目文档(0到1)

以下是AI生成的总结文档:
AI 面试问答助手智能体 - 开发归档与架构文档
文档版本:V1.0
当前状态:MVP 基础链路已跑通(LLM + 知识库检索 + 自研工具调用 + API 扩展)
运行环境:DeepSeek Harness (DSH) v0.2.1-rc.2 / Windows / Node.js >= 24.9.0
一、 整体架构设计 (LLM + Plan + RAG + Tool)
本智能体基于 DeepSeek Harness 的“一切皆插件”理念构建,整体架构分为四层:
- LLM 层(大脑):使用 DeepSeek API 提供核心推理和语义理解能力。
- Plan 层(工作流调度):当前采用轻量级方案,通过系统提示词(System Prompt)+ Agent Loop 推进流程(导入 → 解析 → 抽题 → 回答 → 评分 → 结论)。未来若需严格门禁,可引入 DSH 的
dsh-orchestrator调度插件。 - RAG 层(知识库):使用社区插件
@domitor-syh/dsh-knowbase。将 PRD 文档与结构化题库导入知识库,在 API 调用或 Web 会话中通过/kb use <库名>开启检索。 - Tool 层(核心业务插件):
- 已实现:
dsh-bank-parser(负责 XLSX 文件的纯 IO 解析)。 - 待开发:
mistake_manager(错题状态机控制)、score_answer(结构化评分工具)。
- 已实现:
- API 层(外部集成):使用社区插件
dsh-api-expand,通过 HTTP 接口对外暴露智能体能力,供外部业务系统(如 Spring Boot)调用。
二、 当前项目目录与结构
1. 自研插件目录 (dsh-bank-parser)
dsh-bank-parser/
├── package.json # 声明 xlsx 依赖,及 peerDependencies(锁定 dsh-tools 版本)
├── cordis.patch.yml # 插件注册文件(--patch 模式下使用绝对路径)
├── tsconfig.json # TypeScript 编译配置
└── src/
└── index.ts # parse_xlsx_bank 工具核心代码
2. 全局 Profile 配置
- 位置:
C:\Users\<用户名>\.dsh\profiles\web\ - 核心文件:
package.json(记录插件依赖及 bundle 清单)。
三、 开发排坑指南(血泪教训归档)
在 Windows 环境下开发 DSH 插件,我们遇到了以下关键阻碍,其解决思路对后续开发具有极高参考价值:
1. 依赖版本冲突引发 CallId 导出错误
- 现象:插件启动报错
SyntaxError: The requested module '@deepseek-ai/dsh-llm' does not provide an export named 'CallId'。 - 原因:DSH 核心包版本迭代极快(当前为 0.2.1-rc.2),旧版
dsh-tools的内部实现与宿主环境不兼容。 - 解决:严禁在插件的
dependencies中安装@deepseek-ai/*核心包。应将其移入peerDependencies并锁定与宿主一致的精确版本:npm install --save-peer @deepseek-ai/dsh-tools@0.2.1-rc.2
2. 模块找不到 (ERR_MODULE_NOT_FOUND)
- 现象:移除本地
node_modules后,报错Cannot find package '@deepseek-ai/dsh-tools'。 - 原因:
--patch模式不会自动向插件注入宿主环境的模块解析上下文。 - 解决:确保使用
npm安装依赖(pnpm易导致软链接路径混乱),且必须保留精确版本的peerDependencies和本地devDependencies。
3. --patch 模式与 plugin add 模式混淆
- 踩坑点:
cordis.patch.yml中的name字段路径要求不同。 - 解决:
- 使用
dsh plugin add正式安装时:name: dsh-bank-parser(使用裸包名)。 - 使用
dsh web --patch <path>调试时:name: 'D:/绝对路径/src/index.ts'。
- 使用
4. 端口占用导致启动失败 (EADDRINUSE)
- 原因:之前运行的 DSH 进程未彻底退出,占用了
3080端口。 - 解决:执行
netstat -ano | findstr :3080找到 PID,然后用taskkill /PID <PID> /F强制结束进程,或更换启动端口dsh web --port 8080。
5. Excel 解析逻辑冲突
- 现象:
bank_parser提取的题干变成了“题目类型”列。 - 原因:直接使用
.includes()进行模糊匹配,导致“题目”命中了“题目类型”的表头。 - 解决:优化正则与匹配策略,优先精确匹配,其次进行包含匹配但排除含有“类型、分类、序号”的干扰表头。
四、 关键接口定义与现状
1. 题库解析工具 (parse_xlsx_bank)
- 入参:
file_path(String, 绝对路径) - 出参:
{ questions: Array, total_parsed: Int, skipped: Int, headers: Array } - 状态:✅ 已跑通,并修复了列匹配逻辑。
2. 知识库 (dsh-knowbase)
- 开启方式:API 调用时,在 prompt 中前置
/kb use 面试题库。 - 状态:✅ 已配置并生效(已加载 2 份资料)。
3. API 访问 (dsh-api-expand)
- 自检接口:
GET /api-expand/inspect - 驱动接口:
POST /api-expand/run - 鉴权:需携带
Authorization: Bearer <Token>。 - 状态:✅ 可通过 curl 或外部代码驱动 Agent 对话。
五、 下一步迭代计划 (Action Items)
- 开发
mistake_manager插件(纯状态逻辑,无模型调用):- 定义
record_answer工具:接受题目 ID 与得分,更新mistake.json状态。 - 定义
get_next_question工具:实现错题<8分入池、>=8分移出、以及“至少间隔 3 题”和“4:6 混合抽取”算法。
- 定义
- 开发
score_answer工具(涉及模型调用):- 对传入的
question、user_answer、standard_answer,严格对照 PRD 中的 0-10 分 SOP 进行语义评分。 - 约束模型输出严格 JSON 格式(包含
score、passed、strengths、weaknesses、suggestions)。
- 对传入的
- 引入
Skill体系:- 将面试开场白、鼓励式话术、追问机制等“软规范”写成
SKILL.md文件,替代冗长的系统提示词。
- 将面试开场白、鼓励式话术、追问机制等“软规范”写成
- 接入本地模型(可选测试):
- 尝试接入 Ollama 运行 Qwen2.5-3B,仅用于处理轻量工具调用,评估成本节约与响应速度。

浙公网安备 33010602011771号