进行技术调研的案例
案例概述
本案例记录了一次完整的技术调研任务:分析Claude Code Base Action的实现机制,并创建直接调用Claude Code CLI的完整解决方案。整个过程展现了如何使用Claude Code进行深度技术分析、代码实现和文档编写的完整工作流程。
任务背景
需求场景: 开发者希望在Node.js应用中直接调用Claude Code,而不依赖GitHub Actions环境,需要理解Claude Code Base Action的核心实现并创建可复用的解决方案。
技术挑战:
- 理解复杂的开源项目架构
- 提取核心技术实现要点
- 创建可复用的代码解决方案
- 发现和解决关键技术细节
完整过程分析
阶段一:需求理解与任务规划
输入
用户需求: "分析一下如何像Claude Code Base Action这样在代码中调用Claude Code,
把结果输出到另一个md文件中,给出调用Claude Code的代码示例。think hard."
Claude Code执行过程
- 使用TodoWrite工具 进行任务规划
- 分解任务为5个子任务
- 设置优先级和状态跟踪
- 建立清晰的执行路径
输出
任务规划:
1. 分析Claude Code Base Action的核心实现
2. 查看src/index.ts了解调用方式
3. 理解prompt准备和执行机制
4. 创建直接调用Claude Code的代码示例
5. 实现输出到md文件的功能
阶段二:深度技术分析
输入
目标: 理解Claude Code Base Action的架构和核心实现
分析对象: action.yml, src/index.ts, src/run-claude.ts, src/prepare-prompt.ts
Claude Code执行过程
-
并行读取多个核心文件
- 使用Read工具分析主要源码文件
- 使用Glob工具发现项目结构
- 系统性理解代码架构
-
提取关键技术要点
- Named Pipes进程间通信机制
- 流式JSON输出处理
- 进程生命周期管理
- 多Provider认证支持
输出
核心发现:
1. 使 用mkfifo创建命名管道实现进程间通信
2. 通过--output-format stream-json获取结构化输出
3. 使用spawn而非exec进行进程管理
4. 支持Anthropic API、AWS Bedrock、Google Vertex AI认证
阶段三:代码实现与文档编写
输入
技术需求: 创建完整的TypeScript类,实现直接调用Claude Code的功能
输出要求: 完整的实现代码 + 详细的分析文档
Claude Code执行过程
-
设计接口和类结构
- 定义ClaudeExecutionOptions接口
- 设计ClaudeCodeRunner类架构
- 规划错误处理和资源管理
-
编写完整实现代码
- 实现Named Pipes通信机制
- 处理流式输出解析
- 添加超时控制和错误处理
- 提供Markdown输出功能
-
创建技术分析文档
- 使用Write工具创建详细的分析文档
- 包含架构分析、实现代码、使用示例
输出
deliverables:
1. 完整的ClaudeCodeRunner类实现 (500+ 行代码)
2. 详细的技术分析文档 (claude-code-direct-call-analysis.md)
3. 使用示例和接口定义
4. 与原Action的对比分析
阶段四:关键问题发现与解决
输入
用户质疑: "是不是要先cd到项目目录执行Claude Code命令呢?分析一下这个项目回答我。"
Claude Code执行过程
-
深入分析工作目录设置
- 使用Grep工具搜索工作目录相关代码
- 分析action.yml中的目录切换逻辑
- 检查run-claude.ts中的进程启动配置
-
发现关键技术细节
- GitHub Action通过shell级别的cd命令切换目录
- Claude进程继承Node.js进程的当前工作目录
- spawn调用中没有设置cwd选项的重要含义
-
修正实现并补充文档
- 使用process.chdir()确保工作目录正确
- 添加原始工作目录的保存和恢复
- 补充工作目录重要性的详细分析
输出
关键发现:
1. 工作目录设置是Claude Code正确执行的关键因素
2. 必须通过process.chdir()切换到项目目录
3. 需要在finally块中恢复原始工作目录
4. 更新了实现代码和文档分析
阶段五:完整攻略整合
输入
用户需求: "整合claude-code-direct-call-analysis.md出一版完整的在代码中调用Claude Code Cli的攻略"
Claude Code执行过程
-
整合所有分析结果
- 读取现有分析文档
- 提取核心技术要点
- 重新组织内容结构
-
创建完整攻略文档
- 包含前置准备、核心实现、使用示例
- 添加最佳实践和故障排除
- 提供多种使用场景的示例代码
输出
最终交付:
1. 完整的技术攻略文档 (claude-code-cli-guide.md)
2. 包含环境准备、完整代码实现、使用示例
3. 最佳实践指南和故障排除手册
4. 多种实际应用场景的代码示例
职责分工分析
需求提出者(用户)职责
核心职责
-
需求定义与边界设定
- 明确技术调研的目标和范围
- 指定输出格式和质量要求
- 提供必要的上下文信息
-
关键性技术质疑
- 发现实现中的潜在问题(如工作目录问题)
- 提出深度技术疑问推动完善
- 验证解决方案的可行性
-
需求迭代与优化指导
- 根据初步结果调整需求方向
- 要求整合和完善最终交付物
- 确保最终方案满足实际使用需求
必备能力
- 技术敏感度: 能够发现实现中的关键技术细节
- 需求表达能力: 清晰描述技术需求和期望
- 质量把控能力: 判断技术方案的完整性和实用性
- 迭代思维: 能够基于阶段性成果提出改进建议
实现者(Claude Code)职责
核心职责
-
系统性技术分析
- 深度理解复杂技术项目的架构
- 提取核心技术实现要点
- 分析技术方案的优缺点和适用场景
-
完整解决方案实现
- 设计清晰的接口和架构
- 编写高质量的实现代码
- 提供完整的错误处理和资源管理
-
文档化与知识传递
- 创建详细的技术分析文档
- 提供使用示例和最佳实践
- 整合完整的技术攻略
-
主动问题发现与解决
- 识别实现中的潜在问题
- 主动完善和优化解决方案
- 提供故障排除和调试指南
必备能力
- 代码理解能力: 快速理解复杂开源项目的实现机制
- 架构设计能力: 设计清晰、可维护的代码架构
- 实现能力: 编写高质量、生产级别的代码
- 文档化能力: 创建清晰、完整的技术文档
- 问题解决能力: 发现并解决技术实现中的各种问题