AI协作开发中医游戏:从Claude 3.5 Sonnet实战看大模型能力边界与高效人机协作

📅 2026/8/25 10:58:53
AI协作开发中医游戏:从Claude 3.5 Sonnet实战看大模型能力边界与高效人机协作
1. 项目概述当Claude遇上中医一场“翻车”的跨界实验最近我尝试用Anthropic推出的Claude 3.5 Sonnet模型扮演一个“AI队友”的角色共同开发一款以中医知识为背景的轻量级游戏。这个想法听起来挺酷对吧一个拥有强大逻辑和代码能力的AI加上我作为产品经理和开发者的经验去挑战一个融合了传统文化与现代游戏设计的项目。我本以为这会是一次高效、有趣的“人机协作”典范结果却成了一场充满意外和教训的“翻车”实录。这个项目标题里的“翻车”指的不是彻底失败而是在协作过程中遇到的种种预料之外的难题、认知偏差和效率陷阱它们远比单纯的技术bug更有意思也更能揭示当前AI作为“开发伙伴”的真实能力边界。这款“中医游戏”的核心构想并不复杂玩家扮演一位初入杏林的学徒通过望、闻、问、切等传统诊断方式为虚拟病人辨证施治。游戏目标是寓教于乐让玩家在游玩中潜移默化地了解一些基础的中医概念比如阴阳、五行、八纲辨证等。我选择Claude Teammate是看中了它在长上下文理解、复杂任务分解和代码生成方面的进步希望它能承担一部分游戏逻辑设计、文案撰写甚至简单原型代码编写的工作。然而从项目启动到第一个可交互原型诞生整个过程充满了“理想很丰满现实很骨感”的戏剧性转折。2. 协作模式设计与初期构想2.1 为什么选择Claude作为“Teammate”在众多大语言模型中我这次特意选择了Claude 3.5 Sonnet并尝试以“Teammate”队友的模式与它互动而非简单的问答工具。这背后有几个核心考量。首先Claude 3.5 Sonnet在代码和逻辑推理方面的基准测试表现突出其200K的上下文窗口足以容纳一个中小型游戏项目的完整设计文档、多次对话历史和生成的代码片段这对于保持对话连贯性至关重要。其次“Teammate”的定位意味着我希望它不仅仅是执行命令而是能主动提出想法、发现设计矛盾、甚至进行一定程度的自主决策。比如我不再给出“写一个判断风寒感冒的函数”这种具体指令而是描述“我们需要一个游戏机制来模拟中医里‘风寒表证’的诊断过程玩家需要收集症状并做出判断”期待Claude能自己构思出实现这个机制需要的步骤、数据结构和交互流程。注意将AI定位为“队友”而非“工具”意味着你需要投入更多精力在前期沟通和上下文管理上。你必须像对待一个人类新手同事一样清晰地交代项目背景、目标和约束条件否则极易产生误解。初期我准备了一份详细的游戏设计文档GDD Lite版大约3000字涵盖了游戏核心循环、中医知识框架确保准确性我参考了权威教材、预期的技术栈我计划用React Canvas做前端原型以及美术风格意向。我将这份文档一次性喂给了Claude并开启了这次合作。最初的几轮对话令人振奋Claude不仅能复述设计要点还能提出一些有价值的补充例如建议将“药材采集”小游戏与五行季节相关联增加游戏的世界观沉浸感。它甚至生成了一份初步的模块清单和开发优先级建议看起来完全像一个靠谱的策划伙伴。2.2 中医知识融合的技术挑战预判在项目构思阶段我就预见到了几个关键挑战并认为Claude能帮助解决。第一是知识的结构化。中医知识体系庞大且存在一定的模糊性和经验性如何将其转化为游戏内清晰、可量化的规则例如“阳气虚”这个状态在游戏中应该表现为哪些可感知的属性下降如体力恢复速度、耐寒能力又该对应哪些草药或针灸方案来调理第二是交互的趣味化。“切脉”在现实中是精妙的触觉艺术在游戏中如何通过鼠标或触控屏来模拟是做成节奏游戏还是图案匹配谜题第三是叙事的平衡。如何在不变成枯燥教学软件的前提下将中医哲学如“治未病”、“整体观”融入游戏叙事我期望Claude能利用其强大的知识关联和创意生成能力为这些挑战提供多种解决方案草图。事实上在初期头脑风暴中它的确输出了不少点子比如将“望诊”设计为一个寻找画面中特定颜色或形态细节的“找茬”游戏将“闻诊”与声音识别或气味描述选择题结合。这些想法虽然粗糙但提供了很好的讨论起点。3. 开发过程中的“翻车”现场实录3.1 “精准”的误解当AI过于字面理解需求第一个“翻车点”出现在具体功能开发阶段。我要求Claude为“辨证论治”系统设计一个数据模型和核心判断逻辑。我给出的描述是“系统需要根据玩家收集到的症状集合如‘恶寒’、‘发热’、‘无汗’、‘脉浮紧’判断出对应的‘证型’如‘风寒表实证’并推荐一个基础的‘方剂’如‘麻黄汤’。”Claude很快给出了一份看似严谨的JSON数据结构和一段JavaScript逻辑代码。数据结构中每个证型关联了一系列症状并设置了权重。逻辑代码则遍历玩家症状列表计算与每个证型的匹配度得分最高者即为诊断结果。问题来了它设计的匹配算法是“症状完全匹配”且“权重相加”。这意味着如果玩家收集的症状列表是[“恶寒” “发热” “无汗”]但数据模型中“风寒表实证”的定义是[“恶寒” “发热” “无汗” “脉浮紧”]那么匹配度就只有75%可能输给一个症状列表为[“恶寒” “乏力”]但权重设置奇怪的“阳气虚证”。这完全违背了中医辨证的基本原则——某些关键症状如“脉浮紧”具有一票否决或一票肯定的意义而非简单的加权计算。当我指出这个问题时Claude能够理解并道歉然后修改代码加入了“关键症状”字段。但新的问题又出现了它无法自行定义什么是“关键症状”。这需要深厚的中医临床知识来判断而AI的知识库是基于统计概率的文本关联无法做出这种蕴含深刻医学逻辑的决策。最终这个最核心的辨证逻辑还是由我查阅专业资料后亲自定义规则Claude只负责将其转写成代码。这次翻车揭示了一个核心问题AI擅长处理明确定义、可枚举的规则但对于依赖深层领域知识尤其是存在模糊和辩证关系的知识进行抽象建模和规则制定能力非常有限。3.2 创意发散与项目锚点的失控第二个“翻车”体现在项目范围的蔓延上。作为“队友”Claude非常乐于提出新想法。在讨论“药材系统”时它突然提议“我们可以加入一个‘药材炮制’迷你游戏不同炮制方法会影响药性这既能增加游戏深度也能普及中药学知识。” 这个点子本身不错。但紧接着它开始详细描述炮制游戏该如何设计——涉及时间控制、温度滑块、多种工具选择甚至提议为每种药材制作不同的动画效果。这立刻拉响了警报。我们最初的目标是快速创建一个验证核心玩法的“最小可行产品”MVP。一个复杂的炮制系统显然超出了MVP的范围会极大地增加美术和开发工作量。作为人类项目经理我本能地知道需要否决或延后这个提议。但AI“队友”不会主动评估优先级和资源消耗它只会基于“合理性”和“趣味性”无限发散。在后续的对话中类似的情况多次发生从“针灸穴位模拟”发散到“经络气血流动的可视化”从“问诊对话树”发散到“搭载情感识别AI的动态剧情生成”。实操心得与AI进行创意协作时必须由人类牢牢掌握“项目锚点”和“范围边界”。每次对话开始前最好重申当前阶段的核心目标。对于AI提出的额外建议可以建立一个“创意停车场”文档记录下来但明确告知AI“这个想法很好我们先记下但当前迭代暂不实施”以避免上下文被无关细节污染。3.3 代码的“缝合怪”与上下文遗忘当进入具体的原型编码阶段时第三个问题浮现代码的连贯性和架构意识薄弱。我让Claude帮我编写一个使用React和Canvas绘制简单中医人体示意图并可以点击穴位交互的组件。它生成的代码往往是“模块化”的但模块之间的接口设计怪异状态管理混乱。例如它可能会生成一个独立的Acupoint穴位类但将这个类的实例数据管理放在父组件的状态里而将渲染逻辑又写在另一个工具函数中导致数据流支离破碎。更麻烦的是“上下文遗忘”。在长达几十轮、涉及多个文件的对话后当我要求它修改之前生成的某个组件比如DiagnosisSystem时它有时会“忘记”这个组件已有的部分属性和方法或者基于错误的内存生成一个与之前代码风格、接口不一致的新版本。虽然200K的上下文很长但当信息密度极高、技术细节繁多时AI对早期具体细节的记忆和关联能力还是会下降导致生成的代码像不同人写的“缝合怪”整合起来非常耗时甚至不如重写。排查与解决我不得不采取更严格的“分治”策略。不再让它一次性生成大模块而是拆解成原子级任务并频繁提供当前完整的代码文件内容作为上下文。例如指令变为“这是GameCore.js文件的当前全部代码。请你在其中找到calculateSyndrome函数并在其中第45行之后添加对‘关键症状’的检查逻辑逻辑规则如下……” 这种方式下AI的输出准确率大幅提升但同时也意味着我作为“人类队友”需要承担更多的系统架构设计、模块拆分和代码集成工作AI更像一个严格的代码打字员而非设计伙伴。4. 核心环节实现与方案调整4.1 重构协作流程从“伙伴”到“专家顾问”经历了几次“翻车”后我调整了与Claude的协作模式。我不再追求让它作为一个平等的、全能的“Teammate”而是将其定位为多个领域的“专家顾问”和“高效执行者”。新的工作流如下我作为总设计师和架构师完成游戏最核心的机制设计、数据结构定义和系统架构图。例如我亲自用流程图定义了“辨证论治”的决策树明确了“症状-证型-方剂”之间的硬性规则和权重关系。Claude作为知识库与文案顾问当我需要为20种常见证型撰写通俗易懂的游戏内描述时我向Claude提供证型名称和关键症状它能快速生成风格统一、易于理解的文字说明比我手动撰写快得多。它还能根据“桂枝汤”的组成生成一段关于其功效和故事的趣味文本。Claude作为代码生成器特定任务我会给出极其具体的指令和上下文。例如“在现有的PlayerState对象中新增一个meridians经络属性它是一个对象包含‘手太阴肺经’、‘足阳明胃经’等12条经络作为key每条经络的值是一个0到100的数字代表通畅度。请写出初始化这个属性的代码以及一个名为updateMeridian的函数用于根据服用方剂来更新特定经络的通畅度。”Claude作为审查员将我写的代码或设计片段丢给它要求它从代码规范、潜在bug、逻辑矛盾等角度进行审查。它往往能发现一些我疏忽的边缘情况比如“如果玩家同时满足两个证型的条件且关键症状冲突你的决策树会如何处理”这种模式下项目的控制权完全在我手中AI的价值被用在它真正擅长且能提升效率的地方信息检索、内容生成、模板代码编写、基础审查。项目的进展反而变得顺畅起来。4.2 中医游戏原型的关键实现片段以下是调整策略后我们协作完成的部分核心代码与设计展示了如何将中医概念转化为可运行的游戏逻辑。数据模型定义精简示例 我们定义了游戏的核心数据模型。这个模型由我设计结构Claude协助填充了示例数据和格式校验代码。// 症状库 const symptomLibrary { coldSevere: { id: coldSevere, name: 恶寒重, isCritical: false, element: metal }, fever: { id: fever, name: 发热, isCritical: false, element: fire }, noSweat: { id: noSweat, name: 无汗, isCritical: true, element: water }, // 关键症状 floatingTightPulse: { id: floatingTightPulse, name: 脉浮紧, isCritical: true, element: wood }, // ... 更多症状 }; // 证型定义 const syndromePatterns [ { id: windColdExterior, name: 风寒表实证, requiredSymptoms: [noSweat, floatingTightPulse], // 必须同时具备的关键症状 otherSymptoms: [coldSevere, fever], // 其他相关症状用于加权或描述 herbalFormula: maHuangTang, // 对应方剂ID description: 外感风寒卫阳被遏腠理闭塞所致。需发汗解表。 // 描述由Claude生成 }, // ... 更多证型 ]; // 方剂库 const herbalFormulas { maHuangTang: { id: maHuangTang, name: 麻黄汤, composition: 麻黄、桂枝、杏仁、甘草, effect: 发汗解表宣肺平喘, targetMeridians: [lung, bladder], // 主要作用的经络 // ... 其他属性 } };辨证逻辑函数 这个核心判断函数由我制定规则Claude实现代码并添加了详细的注释。/** * 根据患者症状列表辨证论治 * param {Arraystring} patientSymptomIds - 患者症状ID数组 * returns {Object|null} - 返回匹配的证型对象否则返回null */ function differentiateSyndrome(patientSymptomIds) { // 1. 检查关键症状缺失如果某个证型的所有requiredSymptoms患者不具备其中任何一个直接排除该证型 const candidates syndromePatterns.filter(pattern { return pattern.requiredSymptoms.every(reqSymptom patientSymptomIds.includes(reqSymptom) ); }); if (candidates.length 0) { console.log(无法确诊未匹配到任何证型的关键症状组合。); return null; } // 2. 在符合关键症状的候选证型中计算其他症状的匹配度简单计数 const scoredCandidates candidates.map(pattern { const matchedOther pattern.otherSymptoms.filter(symptom patientSymptomIds.includes(symptom) ).length; const score matchedOther; // 这里可以用更复杂的加权算法 return { pattern, score }; }); // 3. 选择分数最高的证型假设分数高者更符合 scoredCandidates.sort((a, b) b.score - a.score); const bestMatch scoredCandidates[0]; // 4. 简单阈值判断如果最佳匹配分数为0且有关键症状匹配仍可诊断但置信度低 if (bestMatch.score 0) { console.log(诊断${bestMatch.pattern.name}仅基于关键症状其他症状支持度低); } else { console.log(诊断${bestMatch.pattern.name}匹配度较高); } return bestMatch.pattern; } // 使用示例 const patientSymptoms [coldSevere, fever, noSweat, floatingTightPulse]; const diagnosis differentiateSyndrome(patientSymptoms); // 输出风寒表实证 if (diagnosis) { const prescription herbalFormulas[diagnosis.herbalFormula]; console.log(推荐方剂${prescription.name}${prescription.composition}); }这个实现虽然简化但抓住了中医辨证中“抓主证”的核心思想避免了早期纯加权算法导致的误判。5. 经验总结与避坑指南5.1 AI作为协作者的能力边界再认识这次“翻车”开发经历是一次对当前大语言模型作为“开发伙伴”能力的压力测试。结论非常清晰优势领域信息整合与内容生成快速生成大量风格统一的文案、对话、物品描述。代码片段生成对于有明确输入输出、功能描述清晰的原子级函数或组件效率极高。多方案脑暴针对一个开放性问题能提供多个不同角度的创意起点。代码审查与查错能发现常见的语法错误、逻辑漏洞和代码风格问题。当前局限缺乏深层次领域知识建模能力无法理解中医、法律、金融等专业领域内隐性的、非结构化的逻辑规则需要人类提供精确的“规则引擎”。无真正的项目管理和优先级概念会无限发散创意无法权衡“必要性”与“实现成本”。系统架构能力薄弱生成的代码往往缺乏良好的模块化设计和清晰的数据流规划容易产生“缝合代码”。长上下文下的细节一致性在复杂项目对话中对早期细节的记忆和关联能力会衰减需要人类频繁“提醒”和“锚定”。5.2 高效人机协作的实操建议基于这次经验我总结出几条与AI协作开发尤其是涉及专业领域时的实用建议1. 人类主导设计AI辅助执行永远不要期望AI能独立完成从0到1的设计。你应该成为项目的“大脑”和“架构师”将AI作为你的“超级手”和“知识外挂”。先画出详细的设计图哪怕是草图再让AI去填充血肉。2. 任务拆解要足够“原子化”给AI的指令越具体、上下文越完整它的输出质量越高。将“开发一个辨证系统”拆解为“定义症状数据结构”、“编写证型匹配函数”、“创建结果反馈UI”等多个子任务并逐个击破。3. 建立持续的“上下文锚点”定期在对话中复述核心设计决策、关键数据结构和当前进度。对于重要的代码文件在要求修改时最好直接粘贴其全部内容到上下文中。可以建立一个共享的“项目状态”文本在关键对话节点引用它。4. 设立明确的“创意边界”鼓励AI提出想法但必须立即跟进一个过滤动作。明确告诉它“当前阶段我们只聚焦于核心诊断循环关于药材炮制/经络动画的想法已记录暂不讨论。” 避免对话偏离主线。5. 将AI用于验证而非创造核心规则对于中医辨证、法律条文解释、金融风控模型等核心业务规则必须由人类专家定义。AI可以帮你检查这些规则是否存在形式逻辑矛盾或者为你生成规则的应用示例代码但它不能替你制定规则。5.3 项目成果与反思最终我们我和我的AI“顾问”成功产出了一个非常粗糙但可运行的中医诊断游戏网页原型。玩家可以通过点击收集症状系统会基于规则进行辨证并推荐方剂。虽然离一个完整的游戏还很远但核心循环跑通了。这次“翻车”的价值远大于一次顺利的开发。它让我更深刻地认识到当前阶段的AI最强大的地方在于放大人类的能力而非替代人类的决策。它像一个拥有海量知识、不知疲倦、执行力强的实习生但它需要一位经验丰富、方向明确的导师来带领。对于开发者而言学会如何精准地向AI描述问题、拆解任务、管理上下文将成为一项至关重要的新技能。而跨界项目尤其是像“中医游戏”这样融合了深厚传统文化与现代技术的尝试其核心的创意和设计灵魂仍然牢牢掌握在人类手中。AI能帮我们画龙但点睛之笔仍需我们自己来完成。