新闻详情

新闻详情

首页 / 资讯中心 / 详情

Reactive Resume 的 dsh-plugin:把简历 MCP 服务接入 DeepSeek Harness 并注入编辑引导提示词

发布时间:2026/9/6 16:03:48来源:尧图网络
Reactive Resume 的 dsh-plugin:把简历 MCP 服务接入 DeepSeek Harness 并注入编辑引导提示词
Reactive Resume 的 dsh-plugin把简历 MCP 服务接入 DeepSeek Harness 并注入编辑引导提示词【免费下载链接】reactive-resumeA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!项目地址: https://gitcode.com/GitHub_Trending/re/reactive-resume本文基于仓库中的packages/dsh-plugin及其文档 README.md 展开讲清dsh-plugin-reactive-resume这个 DeepSeek HarnessDSH插件是如何用一行配置把 Reactive Resume 的简历与求职申请数据接入 Agent 会话的安装与配置方式、四个配置项的默认值与校验规则、dsh.bundle声明如何让它“安装即挂载、缺密钥即静默”、注入系统提示词的编辑引导指南RFC 6902 补丁语义、UUID 键控条目、锁定恢复流程的完整内容以及工具改名防护的测试机制。读完你可以直接在自己的 Harness profile 中安装并配置该插件并理解它背后与 MCP 服务端 的协作关系。一、插件定位MCP 桥接 提示词贡献packages/dsh-plugin/README.md 对插件的一句话定位是把 Reactive Resume 连接到 DeepSeek Harness让用户可以直接在一个 Harness 会话中读取、创建和编辑简历与求职申请job applications。从源码结构看这个插件的价值由两部分组成见 src/index.ts 的apply()实现桥接 MCP 工具把 Reactive Resume 对外发布的 MCP serverStreamable HTTP 传输挂载到 Harness 的工具注册表ctx.tools中让模型可以看到并调用所有简历/申请相关工具贡献系统提示词小节向ctx.systemPrompt注入一段“补丁编写指南”patch guide专门纠正模型在编辑简历时容易犯的错误——先读后改、按已发布的 schema 构造 RFC 6902 路径、用 UUID 键控的 section 条目、处理锁定简历。README 特别指出第一点你可以用一行原生的deepseek-ai/dsh-mcp-client配置自己完成但提示词小节的贡献做不到——这正是这个包存在的理由。二、安装一条命令声明式自动挂载安装命令继承自 README.mddsh plugin --profile name add dsh-plugin-reactive-resume安装行为的关键在于包的 package.json 中声明了dsh.bundledsh: { bundle: { patch: ./cordis.patch.yml } }这意味着 profile 会把这个包识别为一个 bundle 层layerdsh plugin add时自动把 cordis.patch.yml 合并进 profile 的 bundle 栈。该补丁文件的内容只有一条insert指令- insert: - id: reactive-resume name: dsh-plugin-reactive-resume config: apiKey: !!js process.env.RXRESUME_API_KEY ?? 注意?? 这保证了在安装但尚未配置密钥时插件行加载后什么也不挂载仅记录一条警告日志因此“安装插件”永远不会把 profile 弄到无法启动unbootable的状态。这一点在 src/index.ts 的apply()开头得到印证if (config.apiKey ) { ctx.logger.warn(no apiKey configured — set one at %s/dashboard/settings/api-keys to enable the tools, config.url); return; }同时 src/config.ts 中apiKey刻意没有.required()源码注释解释了原因bundle patch 在安装时就挂载了这行配置所以缺失密钥必须是“惰性空操作”而不是让整个 profile 在启动时因校验错误而崩溃。三、配置API Key、选项表与自托管3.1 获取并注入 API Key按照 README.md 的说明在https://rxresu.me/dashboard/settings/api-keys自托管则为你实例的同路径铸造一个 API key并把它导出为环境变量RXRESUME_API_KEY——bundle patch 读取的就是这个变量。如果要显式设置密钥或覆盖其他任意选项从 profile 自己的cordis.patch.yml中按 id 打补丁同一行“最后写入生效”- id: reactive-resume config: apiKey: !!js process.env.RXRESUME_API_KEY3.2 全部配置项完整继承 README 的选项表并结合 src/config.ts 的 schemastery 校验 schema 补充了约束细节Key默认值描述源码中的校验规则apiKey空字符串来自url/dashboard/settings/api-keys的 API key。为空时不挂载任何工具仅记录警告z.string().default()刻意不加.required()urlhttps://rxresu.me你的实例 origin。自托管时设置此项z.string().default(https://rxresu.me)apply()会先执行url.replace(/\/$/, )去掉尾部斜杠serverNameresume工具命名空间。工具到达模型时的名字为mcp__serverName__rawName必须匹配正则/^[A-Za-z0-9_-]{1,32}$/且需在各存活的 MCP 实例间唯一非法值在解析期apply运行前即被拒绝toolCallTimeoutMs60000单次工具调用的超时时间毫秒z.natural()必须为自然数配置解析使用deepseek-ai/schemastery完成src/index.ts 同时 re-export 了接口和 schema 两种形态的ConfigCordis 在插件启动前会读取 schema 导出做配置校验。3.3 自托管实例- id: reactive-resume config: apiKey: !!js process.env.RXRESUME_API_KEY url: http://localhost:3000这与 cordis.patch.yml 顶部注释给出的示例一致。url接受任意 origin本地开发实例可原样工作。四、apply()的完整调用链从配置到挂载当apiKey非空时src/index.ts 的apply()依次做两件事第一步挂载 MCP 桥接。通过ctx.plugin(mcpClient, ...)拉起deepseek-ai/dsh-mcp-clientawait ctx.plugin(mcpClient, { transport: streamable-http, serverName: config.serverName, url: ${origin}/mcp, headers: { x-api-key: config.apiKey }, toolCallTimeoutMs: config.toolCallTimeoutMs, failOnStartupError: true, });几个值得注意的实现细节端点固定为实例 origin 下的/mcp传输方式为streamable-http鉴权走x-api-key请求头。服务端对应实现在 apps/server/src/mcp/auth.tsauthenticateRequest()先尝试Authorization: Bearer的 OAuth token 校验失败或无 Bearer 时回退检查x-api-key头并调用auth.api.verifyApiKey验证两者皆不通过则抛出AuthError。API key 路径无需任何交互式 OAuth 流程failOnStartupError: true让“错误的 API key”在激活阶段就变成响亮的启动失败而不是变成一批在调用时才静默失败的工具。第二步注入提示词小节。ctx.systemPrompt.section({ name: reactive-resume:${config.serverName}, order: 150, text: buildPatchGuide(config.serverName), });小节名带上serverName做命名空间隔离是为了支持同时挂载多个实例例如官方账号 一个自托管账号并存时不产生小节名冲突。order: 150落在 DSH 提示词装配约定的工具指引区间100–199内。五、提示词引导指南告诉模型“简历编辑的正确姿势”buildPatchGuide(serverName)src/prompt.ts是插件的实质内容。它以## Reactive Resume开头声明这些工具操作的是用户真实、存活的简历和求职申请任何修改立即生效并在其账户中可见。指南全文按四个主题组织其中每个工具名都按模型实际看到的形式mcp__serverName__rawName动态生成先读后写Reading before writing先调用mcp__ns__list_resumes发现简历 IDID 是 UUID绝不是标题或 slug任何编辑前必须先调用mcp__ns__read_resume“绝不能补丁一个本会话尚未读过的简历”若某次调用因 “not found” 失败应重跑list_resumes而不是猜测 ID。编辑Editingmcp__ns__apply_resume_patch接收 RFC 6902 JSON Patch 操作作用于简历数据文档路径必须从本会话已读到的简历构造不得凭空猜测。该工具自身的工具描述携带具体的路径形状示例如/basics/name、/sections/experience/items/-、/sections/experience/items/0/company、/metadata/template指南要求模型对齐这些形状section 条目是对象数组每个对象自带 UUIDid。要定位既有条目需从刚读到的文档中找出其数组索引永远不要把id当索引优先用一个包含多个操作operations的补丁而不是多个单操作补丁。操作按顺序应用且整个补丁要么全部成功要么原子失败mcp__ns__update_resume只改元数据name、slug、tags、公开可见性碰不到内容没有任何工具能整体替换既有简历内容——mcp__ns__import_resume是从完整数据文档创建一个全新简历不是覆盖。锁定Locking被锁定的简历拒绝一切写入。当调用因简历被锁而失败时调用mcp__ns__unlock_resume解锁、完成修改、再调用mcp__ns__lock_resume把锁恢复到发现时的状态。边界Scope除非用户在本轮对话中明确要求删除某一条否则不得删除任何简历或求职申请当用户用自然语言描述改动时先复述即将执行的具体编辑再执行。这些引导项并非凭空而来按设计文档 2026-08-16-design.md 的说法它们对应的是 MCP 服务端已编码为错误提示errorHint的失败模式——这些提示的存在本身就说明模型经常在这些问题上出错。另外服务端还发布了 MCP 资源resume://_meta/schemaschema 资源与resume://{id}单份简历资源模板见 packages/mcp/src/mcp-server-card.ts供resources/read读取。六、为什么不能裁剪工具集restrict()的作用域限制README 明确指出Reactive Resume 发布的每一个工具都会全部暴露目前无法从插件侧收窄这个集合因为 Harness 的ctx.tools.restrict()要求一个 agent 作用域agent-scoped的上下文而插件自身的apply(ctx, config)拿到的不是这种上下文。这一点在源码注释src/index.ts 的inject声明处与设计历史中都有印证inject只声明[systemPrompt]刻意不注入tools——插件从不调用restrict()桥接所需的 tools 服务由deepseek-ai/dsh-mcp-client自行声明依赖设计文档 2026-08-16-design.md 开头带有“实现后修订说明”原方案中的tools配置键和ctx.tools.restrict()调用从 v0.1.0 中被砍掉了。spike 调查docs/spikes/2026-08-16-restrict-semantics.md发现restrict()无法触及插件自身ctx.plugin(mcpClient, …)所注册的工具——从无作用域的插件上下文调用它会直接抛错即使在真正的 agent 作用域内它也拒绝触碰该作用域自己而非继承来的注册项。因此 0.1.0 按 spike 记录的 fallback 策略全量暴露工具。换言之从源码结构看当前版本接受“全量 33 个工具 schema 占用上下文预算”的代价换来提示词引导带来的正确性收益。七、工具改名防护与packages/mcp的同仓契约测试README.md 的 Development 一节说明本包位于 Reactive Resume monorepo 的packages/dsh-plugin紧挨着它桥接的服务端packages/mcpsrc/tool-names.test.ts 会把提示词指南中提到的每个工具名逐一与reactive-resume/mcp/tool-names做比对因此在同一个 PR 里给 MCP 工具改名会让这个包同时失败——改名不会静默漂移。测试的机制很直接function toolsReferencedByGuide(): string[] { const guide buildPatchGuide(resume); const matches guide.matchAll(/mcp__resume__([a-z0-9_])/g); return [...new Set([...matches].map((match) match[1] as string))]; }它从指南文本中用正则抽取所有mcp__resume__rawName形式的原始工具名再断言每个名字都包含在 packages/mcp/src/mcp-tool-names.ts 导出的MCP_TOOL_NAME表中。该表当前覆盖 33 个工具涵盖简历侧list_resumes、read_resume、apply_resume_patch、lock_resume/unlock_resume、import_resume、duplicate_resume等与申请侧list_applications、create_application、autofill_application_from_job、tailor_resume_for_application、score_application_match、draft_application_message等。测试还专门设了“至少引用一个工具”的用例防止正则本身被改坏后让下一个断言“空转通过”。值得注意的是这是相对设计文档的一次演进早期方案独立仓库时期依赖抓取线上/.well-known/mcp/server-card.json生成工具名快照 定时 CI 网络比对迁入 monorepo 后这种间接的漂移防护被替换成了上面这种直接读服务端源码符号的同步契约测试生成快照、抓取脚本和定时网络任务均已删除。八、在仓库内开发该插件README.md 给出的开发命令pnpm --filter dsh-plugin-reactive-resume test pnpm --filter dsh-plugin-reactive-resume build结合 package.json 的实际情况补充构建工具是tsdownbuild脚本产物为dist/index.jsdist/index.d.ts发布文件仅包含dist与cordis.patch.ymldeepseek-ai/cordis、deepseek-ai/dsh-mcp-client、deepseek-ai/dsh-system-prompt、deepseek-ai/schemastery均为peerDependencies插件绑定宿主 Harness 的版本避免装第二份运行时Node 引擎要求^22.19.0 || 24.0.0测试套件还包括 src/config.test.ts配置默认值与校验、src/prompt.test.ts提示词文本断言与 src/index.test.ts。设计文档还记录了发布前的手动冒烟流程在一个真实的 Harness 会话中指向https://rxresu.me依次执行列简历、读一份、应用补丁再到 Web 端确认变更生效。九、小结dsh-plugin-reactive-resume是 Reactive Resume 与 DeepSeek Harness 之间的一个薄桥接层其工程取舍清晰工具契约完全复用服务端packages/mcp不重复实现、不漂移插件侧只做两件事——用deepseek-ai/dsh-mcp-client把/mcp端点以x-api-key鉴权挂载进会话并注入一段针对简历编辑常见错误盲改、错用路径、UUID 当索引、忽略锁定的系统提示词。安装即挂载、缺密钥即静默的 bundle patch 设计保证了安装零风险而与packages/mcp同仓的契约测试则把“提示词引用的工具名”与“服务端真实发布的工具名”锁在同一个 PR 内保持一致。对于希望让自己的 Agent 会话直接操作 Reactive Resume 账户中简历与求职申请的场景这是当前仓库提供的、可复制配置的完整接入路径。【免费下载链接】reactive-resumeA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!项目地址: https://gitcode.com/GitHub_Trending/re/reactive-resume创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

如何 10 分钟部署 Teable:新手无代码数据库完整教程 2026/9/6 19:46:23

如何 10 分钟部署 Teable:新手无代码数据库完整教程

如何 10 分钟部署 Teable:新手无代码数据库完整教程 【免费下载链接】teable ✨ AI Spreadsheet for Business 项目地址: https://gitcode.com/GitHub_Trending/te/teable Teable 是一个可自托管的开源无代码数据库,界面像电子表格,底…

阅读更多 →
从文档到可问答的知识库:3 步快速搭好 WeKnora 开源 RAG 平台 2026/9/6 19:46:23

从文档到可问答的知识库:3 步快速搭好 WeKnora 开源 RAG 平台

从文档到可问答的知识库:3 步快速搭好 WeKnora 开源 RAG 平台 【免费下载链接】WeKnora Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki. 项目地址: https://gitcod…

阅读更多 →
PMOS功率管开关电路设计:从选型到缓启动与防倒灌 2026/9/6 19:46:23

PMOS功率管开关电路设计:从选型到缓启动与防倒灌

简介:PMOS功率管开关电路设计文档,面向硬件工程师与电源电路设计人员,针对PMOS管作为功率开关时的可靠性、开关速度与保护设计问题,提供从基础模型到工程实践的完整讲解。内容先梳理PMOS等效电路与寄生二极管机理,再结…

阅读更多 →
如何在 10 分钟内部署 Surya 文档 OCR 实战指南 2026/9/6 19:46:23

如何在 10 分钟内部署 Surya 文档 OCR 实战指南

如何在 10 分钟内部署 Surya 文档 OCR 实战指南 【免费下载链接】surya OCR, layout analysis, reading order, table recognition in 90 languages 项目地址: https://gitcode.com/GitHub_Trending/su/surya 一份扫描件 PDF 躺在你手里,你只需要把它变成结构…

阅读更多 →
深入解析 Hyperswitch 的 router 主 crate:目录布局、双二进制架构与 Feature 切换机制 2026/9/6 19:46:23

深入解析 Hyperswitch 的 router 主 crate:目录布局、双二进制架构与 Feature 切换机制

深入解析 Hyperswitch 的 router 主 crate:目录布局、双二进制架构与 Feature 切换机制 【免费下载链接】hyperswitch Open source, composable payments platform | PCI compliant | SaaS and Self-host options | Enables connectivity to multiple payment, payo…

阅读更多 →
Multica 移动端 RNR 迁移实践:shadcn 式组件体系、CSS 变量暗色主题与三阶段落地方案 2026/9/6 19:43:23

Multica 移动端 RNR 迁移实践:shadcn 式组件体系、CSS 变量暗色主题与三阶段落地方案

Multica 移动端 RNR 迁移实践:shadcn 式组件体系、CSS 变量暗色主题与三阶段落地方案 【免费下载链接】multica Make humans and AI agents work as one team — open-source and self-hostable. 项目地址: https://gitcode.com/GitHub_Trending/mu/multica …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞