10种方法让生成式AI像专业人士一样编写R代码,提升代码质量!
让生成式AI专业编写R代码的10种方法
在正确的设置和指导下,Claude Code、Codex、Posit Assistant等编码助手能像专业人士一样编写R代码。以下是具体方法。
生成式AI对R语言的了解现状
由于每种语言可用的训练数据量不同,大多数生成式AI工具对R语言的了解不如JavaScript和Python等语言。不过,只需进行一些额外设置,大语言模型(LLM)就能掌握提升R语言技能所需的知识。
使用编码助手
与通用聊天机器人相比,AI编码助手功能更强大、更灵活,且具备专注于编码的工具。Anthropic的Claude Code和OpenAI的Codex都有可在终端、IDE扩展、桌面和移动应用程序以及其他集成环境中运行的版本。R用户可能还会对Posit的Posit Assistant感兴趣,它专为R和Python中的数据分析而设计。与通用编码助手相比,它在R语言方面的设置更简单,并且对数据科学、R包开发和Shiny应用程序有更多的内置知识。此外,它默认可以读取你R和Python环境中的对象,这在某些情况下很有用(不过,如果你处理的是敏感数据,可能就不太适用了)。Posit Assistant有适用于RStudio、Positron IDE和终端的版本,设置信息可在此处查看。
注意:Posit Assistant与去年posit::conf()上展示的旧版Positron Assistant不同。旧版助手最终将被Posit Assistant取代。Posit Assistant已预装在RStudio中,但未预先激活,所以你可以根据需要选择是否使用。
从6月18日起,Google最初在这一领域推出的Gemini CLI将被新的“Antigravity CLI”取代。还有其他一些内置编码助手的IDE平台,如Cursor和Windsurf,以及终端 + 订阅式编码助手,如4月开源的Warp。不过,这里就不详细介绍这些了。
工作时,你可能会受到雇主允许使用的工具的限制,但你仍然可以使用公共数据自行进行实验。如果有更适合你需求的编码助手,你还可以争取让公司采用。无论你选择哪种编码助手,从基于网页的聊天机器人转向这些工具都应该能生成更好的代码。宾夕法尼亚大学沃顿商学院生成式AI实验室联合主任Ethan Mollick表示:“自ChatGPT推出以来,从聊天机器人转向编码助手是人们使用AI方式最重要的改变。”
设置CLAUDE.md、AGENTS.md或GEMINI.md知识文件
每次启动会话时,所有主要的编码助手都会查找并加载知识文件,而且你可以轻松编辑这些文件。这些文件可以包含你对各种语言的熟练程度以及你喜欢的项目文档方式等信息。例如,会告诉大语言模型,希望每个项目都有一个README.md文件,其中包含项目使用方法和编码技术信息。大多数编码工具允许你设置一个全局主文件,在每次会话中都会加载,还可以为每个项目设置一个额外的文件。如果你要将Claude或Codex添加到现有代码库中,/init斜杠命令会在扫描和分析代码后创建一个.md项目文件。你也可以让大语言模型对你进行询问,以创建或添加到这些文件中。
Claude Code会在~/.claude/CLAUDE.md查找用户级别的主CLAUDE.md文件,然后在./CLAUDE.md或.//.claude/CLAUDE.md查找项目级别的文件。/memory斜杠命令可以显示这些文件的位置。Codex使用AGENTS.md文件。Antigravity文档显示,它会在工作目录中查找主GEMINI.md文件以及GEMINI.md和/或AGENTS.md文件。根据文档,Positron Assistant会在工作区根目录中读取AGENT.md、AGENTS.md、POSITRON.md、CLAUDE.md、GEMINI.md和LLMS.txt。更多自定义指令信息可查看Positron文档。
使用助手技能
助手技能可以将对R语言了解有限的大语言模型变成一个了解你编码需求的专家。你可以开发自己的技能,与大语言模型合作创建技能,或者下载他人编写的技能。Claude甚至有一个帮助你构建技能的技能。这是避免反复给出相同指令的最佳方法之一。大语言模型会在需要时加载技能文件,从而“记住”其中的内容。
上面提到的知识.md文件和技能有什么区别呢?喜欢将CLAUDE.md或AGENTS.md文件视为始终可用的重要背景信息,而技能则是在特定时间有用的更具体的指令。或者,就像Claude Opus 4.7所说:“技能用于触发工作流(‘当用户询问X时,执行Y’)。适用于每个项目的常规规则不是基于触发的,而是我应该始终遵循的指令。”常规规则应该放在CLAUDE.md中。
根据Anthropic的Claude Code文档,“当你不断在聊天中粘贴相同的指令、清单或多步骤流程时,或者当CLAUDE.md的某个部分已经发展成一个流程而不是一个事实时,就可以创建一个技能。”“与CLAUDE.md内容不同,技能的主体只有在使用时才会加载,所以在你需要之前,长参考材料几乎不会占用任何资源。”每个会话开始时,只会加载技能描述,这样大语言模型就知道有哪些技能可用。
Anthropic于2025年10月为Claude创建了技能,并在几个月后将这一概念作为开放标准发布。现在大多数编码助手都使用技能。如果你想尝试自己构建技能,Anthropic有一个易于遵循的自定义技能创建指南。
Posit Assistant内置了几个与R相关的技能,并允许用户添加更多。你可以在此处找到这些技能。如果你不使用Posit Assistant,也可以将Posit开发的技能添加到其他编码助手中。Posit在GitHub上发布了一个包含创建R包、Shiny应用程序和Quarto文档的技能的仓库;还有用于创建和解决GitHub拉取请求、开源R和Python包发布、代码审查(R、Python、JavaScript/TypeScript、SQL)以及为代码库创建架构文档的技能。你可以在此处浏览所有技能。
阅读和编辑下载的技能
技能只是一个包含一个或多个带有结构化YAML头部的Markdown文本文件的文件夹。该文件夹还可以包含可选的资源和脚本。技能指令文件易于阅读和编辑,这样你就可以确保它们符合你的需求。根据需要对其进行调整。例如,Claude帮助编写了自己的自定义R技能。Claude倾向于使用tidyverse包,但也很喜欢其他一些包,如data.table。确保这个R技能了解对包的偏好,以及在什么情况下更喜欢使用哪个包。
如果你的首选流程发生了变化,记得更新相关技能。或者,让大语言模型帮你更新。保持技能的更新将使你的编码助手更有用。同时,也要更新你的CLAUDE.md或AGENTS.md文件。也许你一开始的CLAUDE.md文件中说你是一个有经验的Python程序员,刚刚开始学习R。三个月后,你可能想更新你在R语言方面的技能水平。或者,你可能在AGENTS.md文件中说你喜欢详细记录的代码,但现在你可能更喜欢简洁一些的风格。你可以时不时地让你的编码助手和你一起检查这些文件,询问你主要要点以及是否需要更新。
使用btw R包及其MCP服务器
当大语言模型根据其训练数据中的旧版R包编写代码,或者根本不知道某个相对较新的包时,这会让人很沮丧。btw可以解决这个问题,它允许你的编码助手访问你系统上安装的所有R包的信息。这意味着它可以根据你特定的R环境编写代码。此外,btw还允许大语言模型通过模型上下文协议(MCP)服务器访问你当前R环境中的变量。MCP服务器是大语言模型访问外部数据的标准化方式——在这种情况下,是你正在运行的R会话(外部不一定意味着云端)。
和技能一样,MCP也是由Anthropic创建的开放标准,此后被大多数主要的AI平台采用。btw R包包含一个MCP服务器,你可以在终端窗口(不是R控制台)中运行以下代码为Claude Code安装它:
claude mcp add -s "user" r-btw -- Rscript -e "btw::btw_mcp_server()"
btw附带了很多工具。给大语言模型加载它可能永远不会使用的工具并不是一个好主意。如果你只是想注册btw工具以访问你的R会话和查找包文档,你可以运行如下命令:
claude mcp add -s "user" r-btw -- Rscript -e "btw::btw_mcp_server(tools = btw::btw_tools('btw_tool_run_r', 'docs', 'env'))"
你只需要做一次这个设置。要将Claude Code连接到你打开的R会话,你还需要在每个新的R会话中运行`btw::btw_mcp_session()`。(有时会忘记这一步,直到疑惑为什么Claude无法读取我的R变量,甚至看不到我安装了哪些包。)你可以在这个比较Claude Code和Posit Assistant的Posit视频中看到btw的演示。btw R包允许Claude Code和其他助手读取你R会话中的对象。
对于Posit Assistant,你不需要进行此设置,因为访问R会话和变量的工具已内置其中。
为你的项目使用计划模式
就像人类在开始实施项目之前制定计划会受益一样,大语言模型在开始生成代码之前制定计划也会受益。此外,有时与大语言模型就结构和功能进行“头脑风暴”、询问替代方案,甚至在实施计划之前让另一个大语言模型进行审查,都是很有用的。
Anthropic建议从计划模式开始。他们在一份最佳实践文档中写道:“让Claude直接开始编码可能会生成解决错误问题的代码。使用计划模式将探索和执行分开。”Claude、Codex、Gemini和Posit Assistant的CLI版本都有计划模式,可以通过/plan斜杠命令激活。
当使用/plan激活计划模式时,Claude通常会在提出计划之前先询问一些问题。
确保你的编码助手从错误中学习
这是从蒙特克莱尔州立大学合作媒体中心运营副主任Joe Amditis那里读到的最好的建议之一:如果你的编码助手犯了错误,你和它一起修复后,一定要保存这个记忆,这样它就不会再犯同样的错误。你的助手可能有一个自动记忆系统来完成部分工作(使用过Claude Code的),但你也可以指示任何编码助手为每个项目单独保存一个经验教训文件,或者询问它确保不再犯同样错误的最佳方法。这并不能保证它不再犯错,就像你不能保证大语言模型会遵循CLAUDE.md或AGENTS.md文件中的所有规则,或者技能中的所有步骤一样。但这确实大大减少了助手反复犯同样错误的情况。
让你的助手编写测试和进行代码审查
编码助手进行的测试和代码审查不能替代人类检查软件是否正常工作。在任何重要任务中,你都应该自己审查大语言模型的结果!不过,助手生成的测试仍然是避免一些问题和减少你作为大语言模型调试伙伴所花费时间的好方法。
如果你不知道如何帮助你的助手了解如何测试和审查代码,可以参考Posit的testing-r-packages和critical-code-reviewer技能。你的助手可能也有内置的代码审查技能,如Claude Code的/code-review斜杠命令。代码审查技能有很多来源。例如,Sentry在其仓库中有一个代码审查技能。针对其项目需求专门设计的这个技能,对于类似技能来说是一个有用的示例。
superpowers是一套流行的通用编程技能,号称“为你的编码助手提供完整的软件开发方法,基于一组可组合的技能和一些确保你的助手使用这些技能的初始指令”。没有使用过superpowers,但考虑到它在GitHub上有超过227,000颗星和20,000个分支,显然很多人都在使用。
另一个建议是:几位专家建议使用不同的大语言模型(甚至可以来自不同的供应商)进行代码审查,因为每个模型都有自己的优缺点。
不要忘记通用提示的良好习惯
无论你使用哪种编程语言,明确的提示都会提高输出质量。保持你的请求目标明确,不要期望大语言模型能读懂你的心思。OpenAI在其开发者文档中表示:“当你将复杂的工作分解成更小、更专注的步骤时,Codex处理起来会更好。”“较小的任务对Codex来说更容易测试,对你来说也更容易审查。如果你不确定如何拆分任务,可以让Codex提出一个计划。”
Google在《使用AI编码助手的五大最佳实践》中建议:“花时间让你的提示尽可能相关,就像你帮助新队友确定任务范围时一样。”“考虑你需要分享哪些细节才能让一个人成功完成任务,并将所有这些细节提供给你的AI工具。”
此外,不要将上下文窗口填充到大语言模型公布的限制。当接近最大令牌限制时,性能通常会下降。
利用开源大语言模型,特别是在有预算和令牌限制的情况下
开源权重模型(特别是小到可以在桌面计算机上运行的模型)可能永远无法与Claude、GPT或Gemini等前沿大语言模型相媲美。但对于很多R语言编码来说,它们并不需要这样。要了解一个大语言模型编写R代码的能力,它应该具备与Claude Code、Codex或Posit Assistant为大型大语言模型提供的类似工具。
AI教育公司Sidecar的Mallory Mejias认为:“工具才是关键,模型就像引擎,虽然重要,但越来越具有可替换性。”不完全认同这种观点,因为仍然认为大语言模型是这个等式中的关键部分,而且不同模型之间存在差异。但同一个大语言模型在不同的工具和上下文环境中表现会有所不同。
Posit最近在Assistant现有的大型闭源大语言模型选项中增加了Google的开源Gemma 4 26B。Posit高级软件工程师Simon Couch在Posit博客上写道:“到目前为止,这种大小(小到可以在高端消费级笔记本电脑上轻松运行)的模型一直在我们的关注范围内,但还不足以驱动像Posit Assistant这样的编码助手。但在过去几个月里,随着Gemma 4等模型的发布,情况发生了变化。”不过,要在RStudio的Posit Assistant中使用它,你仍然需要通过Posit AI订阅来运行,而不是在本地运行。它消耗的预算是使用Claude Sonnet进行相同会话的十分之一。
有几个项目可以使用Claude Code运行本地大语言模型。开源软件Ollama可以通过终端命令`ollama launch claude --model`来实现,例如:
ollama launch claude --model gemma4:26b
开源框架Unsloth的开发者表示,由于缓存失效问题,在Claude Code中运行本地大语言模型可能会非常慢。他们说可以通过在~/.claude/settings.json的 “env” 下添加 "CLAUDE_CODE_ATTRIBUTION_HEADER": "0" 来解决这个问题。Unsloth也可以使用Claude Code运行本地模型,但它的安装和设置比Ollama稍微复杂一些。可查看这个Unsloth教程。
开源编码助手Open Code可以运行来自OpenAI、Anthropic、Google、Kimi、阿里巴巴的Qwen等的大语言模型。与尝试过的商业支持的CLI工具相比,还没有完全适应它,但它在GitHub上有174,000颗星,显然有很多粉丝。从Claude转向Open Code的AI顾问Thomas Wiegold表示:“OpenCode满足了我日常工作流程的所有需求。它速度快,供应商的灵活性是实实在在的,而不是理论上的,而且TUI更适合长时间使用……不过,我也不会假装一切都很顺利。”他指出今年早些时候存在一些稳定性问题和远程代码执行漏洞。Wiegold的建议是:“两个都安装,尝试其他工具,保持灵活性。”
总结
大语言模型仍然是不完善且不可预测的工具,但它们正在迅速改进,围绕它们的工具也是如此。即使是商业编码助手中的前沿大语言模型有时也会忽略指令,以令人不快的意外方式运行。然而,如果你使用编码助手,花时间用高质量的指令对它们进行设置,并记住良好的提示技巧,你生成高质量代码的机会将大大提高。祝你好运!
编码助手信息
- Claude Code:Anthropic的编码助手可在终端使用,也有IDE扩展、桌面应用程序、移动应用程序、Slack应用程序以及可直接在GitHub仓库中工作的云版本。可以说它是第一个突破性的编码助手,现在还提供了一个优雅的远程控制选项,你可以在桌面启动会话,然后在手机或平板电脑上继续。虽然它是为Claude大语言模型设计的,但你也可以通过Ollama或Unsloth Studio等工具使用它来运行本地大语言模型。使用Claude模型时,它的使用量往往比其他供应商的选项少。Anthropic已将终端版本的代码发布在GitHub上,使用受Anthropic的商业服务条款约束。你可以通过API按使用量付费使用Claude Code,也可以作为Claude订阅的一部分使用。
- Codex:OpenAI针对Claude Code推出的产品,可通过终端、应用程序、IDE扩展或云端使用,与GitHub、Slack和Linear集成。CLI工具根据Apache许可证开源,可在GitHub上获取,可通过API按使用量付费使用,也可作为ChatGPT订阅的一部分使用。
- Posit Assistant:Posit(前身为RStudio)的编码助手专为R和Python中的数据工作而设计,不过Posit高级软件工程师Simon Couch表示,它也适用于其他用途和其他语言的编程工作。它可用于RStudio IDE(通过RStudio中的Posit AI订阅)、Positron IDE,以及作为独立的CLI终端应用程序,不过目前CLI工具的功能感觉不如IDE集成版本(可能会有所改变)。截至撰写本文时,你还可以在Positron中使用来自Anthropic、OpenAI和Snowflake Cortex的API密钥以及GitHub Copilot账户。Couch表示,Posit Assistant正在频繁更新。如果你一两个月前测试过它,现在它的功能会更多。
- Antigravity CLI:Google基于终端的工具本月将为未付费用户和Google One用户取代Gemini CLI。还有一个Antigravity IDE、SDK和用于编排多个助手的平台。Antigravity的一个优势是:Google提供了一个免费计划,可访问Gemini 3.5 Flash、Gemini 3.1 Pro、Gemini 3 Flash、Claude Sonnet 4.6、Claude Opus 4.6和gpt-oss-120b,以及根据“我们的容量程度”设定的“慷慨”但未明确的每周使用限制。
