研究优先工作流(Search-First Workflow)

入门 Starter 纪律型 Discipline ⚡ Claude Code 专属 ⚡ Claude Code Optimized
4 min read · 194 lines

写代码前先搜索现有方案,避免重复造轮子

研究优先工作流(Search-First Workflow)

概述

研究优先工作流系统化了"在编写自定义代码之前搜索现有解决方案"的方法论。它要求在实现任何新功能之前,先搜索现有工具、库和模式,然后根据搜索结果做出"直接采用"、"扩展包装"或"自行构建"的决策,避免重复造轮子。

二、工作流程

+---------------------------------------------+
|  1. 需求分析                                 |
|     定义需要什么功能                          |
|     识别语言/框架约束                         |
+---------------------------------------------+
|  2. 并行搜索(研究者代理)                    |
|     +----------+ +----------+ +----------+   |
|     |  npm /   | |  MCP /   | | GitHub / |   |
|     |  PyPI    | |  Skills  | |  Web     |   |
|     +----------+ +----------+ +----------+   |
+---------------------------------------------+
|  3. 评估                                     |
|     评分候选方案(功能、维护、社区、          |
|     文档、许可证、依赖)                      |
+---------------------------------------------+
|  4. 决策                                     |
|     +---------+  +----------+  +---------+   |
|     | 直接    |  |  扩展   |  |  自行   |   |
|     | 采用    |  |  /包装  |  |  构建   |   |
|     +---------+  +----------+  +---------+   |
+---------------------------------------------+
|  5. 实施                                     |
|     安装包 / 配置 MCP /                      |
|     编写最少自定义代码                        |
+---------------------------------------------+

三、决策矩阵

信号 行动
精确匹配,维护良好,MIT/Apache 许可 直接采用 -- 安装并直接使用
部分匹配,基础良好 扩展 -- 安装 + 编写薄包装层
多个弱匹配 组合 -- 组合 2-3 个小包
没有找到合适的方案 自行构建 -- 编写自定义代码,但基于研究成果

四、使用方式

快速模式(内联)

在编写工具函数或添加功能之前,心理快速检查:

  1. 这是一个常见问题吗? -> 搜索 npm/PyPI
  2. 有对应的 MCP(Model Context Protocol)吗? -> 检查 ~/.claude/settings.json 并搜索
  3. 有对应的技能(Skill)吗? -> 检查 ~/.claude/skills/
  4. 有 GitHub 模板吗? -> 搜索 GitHub

完整模式(代理)

对于非平凡的功能,启动研究者代理:

Task(subagent_type="general-purpose", prompt="
  研究以下需求的现有工具: [描述]
  语言/框架: [语言]
  约束条件: [任何约束]

  搜索范围: npm/PyPI, MCP 服务器, Claude Code 技能, GitHub
  返回: 结构化对比及推荐
")

五、按类别搜索快捷参考

开发工具

类别 推荐工具
代码检查(Linting) eslint, ruff, textlint, markdownlint
格式化(Formatting) prettier, black, gofmt
测试(Testing) jest, pytest, go test
提交前检查(Pre-commit) husky, lint-staged, pre-commit

AI/LLM 集成

类别 推荐工具
Claude SDK 使用 Context7 获取最新文档
提示管理 检查 MCP 服务器
文档处理 unstructured, pdfplumber, mammoth

数据与 API

类别 推荐工具
HTTP 客户端 httpx(Python), ky/got(Node)
数据验证 zod(TypeScript), pydantic(Python)
数据库 优先检查是否有 MCP 服务器

内容与发布

类别 推荐工具
Markdown 处理 remark, unified, markdown-it
图片优化 sharp, imagemin

六、与其他组件的集成

与规划代理(Planner Agent)集成

规划代理应在架构审查阶段之前调用研究者:

  • 研究者识别可用工具
  • 规划者将工具纳入实现计划
  • 避免在计划中"重新发明轮子"

与架构师代理(Architect Agent)集成

架构师应就以下方面咨询研究者:

  • 技术栈选型决策
  • 集成模式发现
  • 现有参考架构

与迭代检索技能集成

结合使用实现渐进式发现:

  • 第 1 轮:广泛搜索(npm, PyPI, MCP)
  • 第 2 轮:详细评估顶级候选方案
  • 第 3 轮:测试与项目约束的兼容性

七、实际示例

示例 1:"添加死链检查"

需求: 检查 Markdown 文件中的断开链接
搜索: npm "markdown dead link checker"
发现: textlint-rule-no-dead-link (评分: 9/10)
行动: 直接采用 -- npm install textlint-rule-no-dead-link
结果: 零自定义代码,经过实战检验的解决方案

示例 2:"添加 HTTP 客户端包装器"

需求: 具有重试和超时处理的弹性 HTTP 客户端
搜索: npm "http client retry", PyPI "httpx retry"
发现: got (Node) 带重试插件, httpx (Python) 内置重试
行动: 直接采用 -- 直接使用 got/httpx 配置重试
结果: 零自定义代码,生产环境验证过的库

示例 3:"添加配置文件检查器"

需求: 根据模式(Schema)验证项目配置文件
搜索: npm "config linter schema", "json schema validator cli"
发现: ajv-cli (评分: 8/10)
行动: 采用 + 扩展 -- 安装 ajv-cli,编写项目特定的模式
结果: 1 个包 + 1 个模式文件,无自定义验证逻辑

八、反模式

反模式 说明
直接编码 不检查是否存在现成方案就编写工具函数
忽略 MCP 不检查是否已有 MCP 服务器提供所需功能
过度自定义 对库进行过度包装,使其失去原有优势
依赖膨胀 为一个小功能安装庞大的包

相关技能 Related Skills