A Product Manager's Workflow

Claude Code
is All You Need

一个产品经理如何用 Claude Code 完成从调研到产品上线的全链路工作

7
项目
37
会话
0
行代码
6
Skills

我是一名产品经理,不写代码、不看代码。但过去一个月,我通过 Claude Code 独立完成了 7 个项目,覆盖竞品调研、数据管线、Agent 产品开发、实验设计、评测体系构建。

以下是真实案例。

竞品逆向工程 — Flipbook.page 技术拆解

背景

Flipbook 是一个"AI 生成无限视觉浏览器",每一页都是实时生图,我想做一个 HTML 版本。问题是:它的技术细节没有公开文档,也没有开源代码。

完整对话过程(真实还原)

这个案例的核心不是"一句话搞定",而是一个我持续引导、追问、纠偏的过程:

第一轮:启动调研

我提出目标,Claude Code 先通过 WebFetch 和 WebSearch 静态分析,输出了一份初步的技术摘要。但我觉得不够深入——它没有真正"用过"这个产品。

"请你研究下 flipbook 这个项目,我想做一个 HTML 版本,重点研究生成内容以及下一步点击输入和输出是怎么做的"

第二轮:我引导它用 Playwright 实际体验

关键是——Playwright 方案不是 Claude 自己想到的,是我提示"能否操作浏览器"后它才想出来的替代方案

"你能直接操作我的浏览器体验一下吗"
Claude"不能,我没有操控浏览器的能力..."
"claude 做了一个 claude in your browser 呀"
Claude"你说的是 computer use...不过我可以用 Playwright 无头浏览器来访问...要我试试吗?"
"试试吧"

第三轮:Playwright 自动体验

这一段 Claude Code 自主执行了很多步:

第四轮:我追问技术细节

Claude 给了一份总结,但我觉得关键细节不够:

"用户主动输入是搜索模式,用户点击是 tap 模式对吗,点击的话传给模型的上下文是什么"

Claude 回答了 tap 模式的请求结构。我继续深挖:

"视觉上下文输入给下一次模型生成的时候是怎么写 prompt 的"

Claude 发现之前抓的 prompt 被截断了,重新注入 JS 脚本抓取完整的 authored_promptfinal_prompt

"{parent_title}。{parent_query} 是什么呢"

追问变量的具体含义和实测值。Claude 给出了三个场景下的实测数据表。

"这个很重要,需要写进去"

指出哪些发现需要落入文档。

第五轮:文档质量反馈

看完文档后给出质量反馈:

Claude"要不要做成网页?"
"先不着急做网页,我先看看文档给你一些反馈"
"prompt 翻译成中文吧,另外输入输出说的还是不够细,要重点说明对用户 query 做什么加工,然后传什么给生图模型"

Claude 重写了技术原理部分,增加了完整的加工链路流程图。

第六轮:产出网页并部署

做完后我继续反馈:

"根目录放了一个 tada-artifact-design 这个 skill,帮我用它做网页"
"hn points、生成耗时、宽高比同时生成这几个看不懂,去掉"
"做 web 端适配,现在看起来很小很窄"
"我有一个 deploy cloudflare 的 skill 你找找"

最终部署上线,拿到链接。

我的角色是什么

我做的事本质
"你能操作浏览器吗"提供方法灵感,它自己解决技术方案
"tap 传给模型的上下文是什么"追问关键细节,不满足于表面回答
"{parent_title} 是什么"深入追问变量含义,确保理解准确
"这个很重要,写进去"判断重要性,决定什么值得记录
"先不着急做网页"控制节奏,确认质量再推进
"输入输出说的还不够细"质量把控,要求更高精度
"我有个 deploy skill 你找找"提供资源,告诉它可用的工具

关键成果

从"我想了解这个产品怎么做的"到拿到部署好的研究报告网页,全程 1 个对话,但包含 6 轮有实质引导的交互。最终产出:

数据管线 — 从小红书爬取到内容蒸馏

背景

我在做一个 Agent 产品,需要从小红书爬取优质创作者的内容,然后"蒸馏"成结构化的经验供 Agent 使用。

完整管线(全部在 Claude Code 中完成)

搜索垂类关键词 筛选创作者 人工 Check 批量下载 多模态处理 经验提取

Step 1:创作者发现

我让 Claude Code 使用 xhs-cli 搜索旅行垂类创作者,自动整理成表格:

"你先找 10 个旅行类的,给我整理成一个表格,列好基础信息和主页链接,我来 check 给你反馈"

Claude Code 搜索后生成 Markdown 表格,我在表格里加"bob 备注"列,逐个标注通过/不通过。然后:

"我写了十个,你同步看看,我继续看"

Claude Code 自动分析我的标注模式(看了多少内容、准确率如何),反推改进搜索策略。

Step 2:批量下载

使用 media-crawler-pro skill 批量下载创作者的全部笔记(图文 + 视频),包括:

Step 3:多模态处理

实际案例:一篇保险科普笔记原文只有 200 字,9 张信息图经视觉模型理解后,正文扩展为完整的险种体系 + 保额表 + 各险攻略。

Step 4:经验蒸馏

"看一下小菜这个作者的内容,能总结出哪些实际旅行经验"

Claude Code 阅读全量内容后,提取出结构化的"经验条目"—— 不是攻略,而是"只有真实去过才说得出的判断"。

关键交互模式

人机协作标注:AI 批量处理 + 我做质量判断,形成迭代闭环。典型对话:

我:"我觉得不能只看一篇的原因是我们需要蒸馏一个人,至少需要主页内容丰富"
Claude Code:自动更新筛选策略文档

实验设计 — 访谈 Agent 的迭代系统

背景

我的 Agent 产品需要"访谈"创作者来收集他们的经验。访谈 Agent 的设计直接决定了经验的质量。

对话过程(从讨论到系统设计)

这是一个纯对话式的产品设计过程,Claude Code 扮演我的产品搭档:

Phase 1:对齐目标

"先不用这么细,我们继续讨论清楚实验逻辑,不用进入执行"

我先拒绝了 Claude 要去执行的冲动,坚持讨论清楚实验变量:

Phase 2:概念澄清

"之前文档里写了 skill,但目前这几个作者的内容更适合产出经验"
Claude"需要,请澄清。"

我定义了"经验"的概念:一个人真实做过某件事之后形成的判断和感受。不是攻略,不是框架,是"朋友会怎么跟你说"。

Phase 3:评估标准讨论

Claude 提出三层评估标准,我说"第二层不清楚,第三层数量不是绝对要求"。经过 3 轮拉扯后收敛到:

经验条目的质量只看两件事:专属性(只有她才说得出)和 可用性(能帮用户做判断)

Phase 4:系统设计

"你今天特别一根筋呀,你要整体从目标开始拆解"

Claude 重新来过,设计了一个三模块的迭代系统:

内容理解模块 → 问题设计模块 → 对话执行模块 每模块独立可测、独立迭代

Phase 5:实现架构

讨论出访谈者必须做成 Agent(而非纯 model + SP),因为需要诊断失败在哪一步。三个组件:

  1. 人物模型更新(每轮动态增长)
  2. 深度判断(这条回答够不够深)
  3. 追问策略库(回到骨干 / 追细节 / 反例挑战)

关键洞察

整个设计过程没有写一行代码。我只是在和 Claude Code 讨论,它帮我:

后续我真的跑了 3 轮实验(v1 → v2 → v3),每轮根据结果迭代 system prompt。

产品从 0 到 1 — PMCreate(无代码 Agent 创作平台)

背景

我想做一个 no-code 的产品:用户不看代码,只看文档和结果。底层用 Claude Code SDK 驱动 Agent 执行任意操作。

启动方式

"根目录下放了我的产品文档和技术文档,请你阅读并帮我实现,实现前请先规划,另外质疑不合理的地方以及可以简化验证版本的地方"

Claude Code 的第一反应不是开始写代码,而是质疑我的技术方案

Claude"技术文档把 query() 当成普通流式 API 用,但 Claude Code SDK 实际上会启动一个完整的 agent 执行循环。你无法直接截获它的文件写入事件。"

我坚持必须用 Claude Code SDK(因为 Agent 能力是核心),Claude Code 接受后调整方案:用 CLI 子进程 + stream-json 模式驱动。

开发过程

Claude Code 完成了全栈开发:

过程中我不断报 Bug:

每次我只描述"看到的现象",Claude Code 自己定位代码位置并修复。

关键体验

我:"现在好了,这个问题我们改了好久,总结一下"

Claude Code 输出了问题根因分析和修复历程。这就是 vibe coding 的真实体验——我只看页面效果,它负责所有技术细节

评测体系 — 从零构建 Agent 评测数据集

背景

我在做一个 Skill 驱动的生活助手 Agent 产品,需要一套系统化的评测框架来衡量 Agent 的能力。这不是一个点状任务,而是一个完整的评测数据集构建工程

框架设计

我先设计了一个多维度的评测框架(agent-eval-framework.md),覆盖:

每个维度下写了具体的 Case,形成可执行的评测数据集,自动构建成 Wiki 页面并部署。

Case 编写与迭代(逐条打磨)

这是最耗时的部分——我和 Claude Code 逐条审查和修改 Case 的判定标准

"B3-AC-01 这个 case 说'简短',判定标准固定了字数,但'简短'本身是模糊词,不应该用固定数量来评判"
"B3-AC-05 判定标准中的价格也不应该固定,应该是一种模糊判断"
"B3-MC-06 这个有点怪,强行要求 agent 说明无法满足数量要求,但其实搜二手可以搜到十个"
"B3-PC-02 这个 case 为什么要求输出不包含火锅?"

每一条我都在追问"这个评判标准本身是否合理",而不是让 AI 自己决定。

论文对标与维度校验

"请你阅读这个论文(GAIA),看看我的评测逻辑和文章是否类似,有哪些需要优化"
"我更想了解我的 case 设计维度是否合理"

Claude Code 对比了 GAIA 论文的三级难度分类方法,指出我的框架缺少 C3(记忆管理)的具体 Case。我让它直接构建:

"c3 当时做的时候没有写 case,请你基于 agent-eval-framework.md 帮我构建 c3 吧"

Claude Code 写了 21 条 C3 Case,覆盖 5 个子维度(短期记忆利用、记忆更新、记忆冲突...),每条都有明确的信息不对称设计。

新增维度:图片输出(M1)

发现模型"不爱输出图片"这个系统性问题后,我让 Claude Code 新建一个评测维度。写了 21 条 Case 后我反馈:

"你这些 case,不是景点就是美食,我说啥就是啥么"

Claude Code 承认偷懒,重新梳理了高频出图场景(商品、穿搭、家居、健身动作、发型、家装...),补充了多样化的 case。

深度调研:对标学术基准

"请你倾尽全力寻找所有的相关资料,帮我分析我的评测方式"

Claude Code 并行启动 5 个研究方向

  1. Agent 评测基准(AgentBench、WebArena、tau-bench)
  2. LLM-as-judge 方法论(MT-Bench、G-Eval)
  3. 记忆与规划评测(MemGPT、AgentBoard)
  4. 安全对抗评测(AgentDojo、InjecAgent)
  5. 指令遵从评测(IFEval、FollowBench)

我和 Claude 就报告结论展开讨论:

Claude"整个框架缺少'可靠性'视角:τ-bench 发现 pass^1=50% 的 agent 其 pass^8 可能低于 25%"
"我的 X(输出一致性)不就是这个吗?"
Claude"X 测的是输出是否看起来一致,pass^k 测的是任务是否功能性地成功,两者不同。"

然后讨论了"结果有效性"应该作为独立维度还是在现有 Case 上调整:

"结果有效性单独加一个维度比较好,还是在现有 case 上调整比较好"
"你不能在这里摇摆,你要结合 paper 或者他人的可信经验回答我"

最终确认了 process 评测和 outcome 评测并存的方案。

跑测与难度校准

评测数据集构建完成后我跑了一轮测试,发现通过率太高:

"我已经测完了 b1 b2 b3,但我发现满分通过的 case 很多,是不是我们的评测数据集太简单了"

Claude Code 对比了公开测试集的客观难度,帮我分析了后续如何增加难度和"陷阱 case"。

关键特征

这个项目体现了一种产品经理做评测工程的方式:

经验沉淀:我为什么选择 Claude Code 而不是 Claude Chat

核心原因:Context 管理

我在一次产品设计讨论中说过:

"我乐于使用 Claude Code 因为它可以帮我做产品研究,并且方便地管理上下文。如果直接在 Claude 中使用,就没有这样的上下文管理体验,因为它是一个瀑布流。但在 Claude Code 中我可以和 agent 脑暴,让他写方案并修改,然后和 agent 一起协作。"

这不是一个程序员的选择,而是一个信息管理者的选择。对我来说,Claude Code 的核心价值不是"能写代码",而是:

1. 文件系统即持久化 Context

每个 .md 文件都是 agent 可以随时读取的 context。我的蒸馏项目里:

  • 蒸馏项目思路.md — 全局目标和方法论
  • 蒸馏平台产品方案.md — 具体的产品设计
  • 创作者搜索运行流程.md — 可执行的操作手册
  • 候选创作者/旅行垂类_v4.md — 数据和我的标注

这些文件不只是文档,它们是跨会话的 context 层。新开一个对话,一句"请你阅读蒸馏项目思路"就能把之前所有的决策历史加载进来。

2. 项目目录即 Context 作用域

我在不同文件夹下工作,每个文件夹就是一个独立的 context 域:

  • skill-distillation-test/ — 蒸馏实验
  • pmcreate/ — 产品开发
  • skilllab/ — 评测框架

切换目录 = 切换工作上下文,不用手动"告诉 AI 我在做什么"。

3. Skill 即可复用的能力 Context

Skill 不只是工具,它是一种结构化的 context 注入。当我说"使用 media-crawler-pro"时,agent 不只是获得了爬虫能力,而是获得了一整套关于"如何签名、如何处理限流、cookie 格式是什么"的结构化知识。

我把能力沉淀为 Skill 后,以后任何项目都可以直接调用,不用重复解释。

4. 文档即协作界面

我说过:"我们最关键的是管理 context...文档交互只是一个更合适的创作环境。"

实际工作中的交互模式:让 agent 写文档 → 我在文档上反馈 → agent 读反馈修改 → 循环。

这和 Chat 对话的根本区别是:产出物本身就是持久化的 context,而不是消失在对话流里。

总结:工作方法论

1. 对话式设计,不急于执行

"先不用这么细,我们继续讨论清楚实验逻辑,不用进入执行"

我经常阻止 Claude Code 直接动手,先把逻辑讨论清楚。讨论清楚后一句"开始吧"即可。

2. 主动管理 Context — 而不是依赖 AI 自己记住

我的每一个指令几乎都在管理 context:

本质上,我在不断地把 ephemeral 的对话 context 转化为 persistent 的文件 context

3. 人机协作闭环

AI 批量处理 → 我标注/判断 → AI 根据我的反馈更新策略 → 再跑

我不做执行层面的事,只做判断层面的事。典型例子:

4. Skill 生态 — 能力封装复用

把常用能力封装成 Skill(类似插件):

之后每个项目都可以直接调用。实际案例:flipbook 调研结束后,我说"根目录放了 tada-artifact-design 这个 skill,用它做网页","我有一个 deploy cloudflare 的 skill 你找找"——我的 skill 库就是我的工具箱

5. 控制节奏 — 知道什么时候该讨论、什么时候该执行

我的指令本质
"先不着急做网页,我先看看文档给你一些反馈"拉回来,先确认质量
"先不用这么细,我们继续讨论清楚实验逻辑"阻止盲目执行
"我是产品经理,不是让你写技术方案"纠正产出格式
"怎么在装 anthropic sdk 了?不用装,这里面 llm 就是你"阻止过度工程化
"你今天特别一根筋呀"要求重新思考
"这次完全认同了,特别好"确认方向正确,继续推进

6. 把 Claude Code 当产品搭档而不是执行者

我最常做的几件事:

这不是"人给 AI 下指令"的关系,更像两个产品经理在讨论方案,只是其中一个能力超强且能立即执行。

作为产品经理,Claude Code 对我来说不是代码工具,而是一个可以持久化管理 context、封装能力为 skill、随时回溯决策历史的 AI 协作系统。写代码只是它恰好能做的事之一。