呕吼~年初五,迎财神!各位佬儿们在新的一年一定财源滚滚!!
欢迎来到爱因斯晨栏目!
今天给大家带来程序员最强辅助——Marscode
更多文章:个人主页
风雪压我两三年,我笑风轻雪如棉!大家一起进步!一起加油哦!

本文正在参加豆包MarsCode上新Apply体验活动
前言
作为一个程序猿,大家是不是跟我一样:每当程序出现bug想寻求AI帮助时,都要将一大段程序全部复制下来并写出我的需求。如此麻烦繁琐,有时还会出现驴头不对马尾的现象。
有同学说了,使用Copilot
呀~可以是可以,但是他每个月10$的价格真的很不美妙!
于是,众望所致——Marscode
应运而生!可谓不是copilot
用不起,而MarsCode
更有性价比!!
一、Marscode介绍
豆包 Marscode
由深耕人工智能领域、技术实力强大的字节跳动
开发,旨在满足人们在信息获取、内容创作、技术支持等多方面需求。它能凭借强大的语言理解能力快速准确回答各类知识问题,根据主题和风格要求生成逻辑清晰、富有创意的内容,支持多种编程语言的代码编写与调试,且作为基于云端的智能服务,用户通过网页浏览器或移动应用联网即可使用,无需复杂本地配置。主要支持网页端 IDE插件.
二、Marscode环境配置
我们来示范一下在IDEA中的配置吧~
-
首先点击文件,出现菜单栏,点击设置。
-
选择插件,在插件中搜索Marscode,点击安装。
-
在界面底部可以查看安装进程,安装成功后重启IDE。
-
重启后可以看到右半部以显示插件(登录)
-
点击-,可以隐藏。
-
若要启用可以点击图标,可以出现对话面板。
当然Marscode最牛的一点就是云端配置。可以满足几乎所有语言云端开发,还可以从github
直接导入项目。这是不是代表可以省下一笔给设备氪金的钱啦~
比如我新建一个关于java的项目,它拥有idea应有的所有插件,还支持Debug调试程序,还支持AI编程,简直不要太爽~Marscode官网
三、使用讲解
在对话面板中,底部有对话框。可以理解为它是基于代码场景调优过的豆包大模型。可以在书写代码的同时和AI交流。(快捷键:Ctrl
+U
)
- 生成代码
这个功能分为两种,一个是根据注释书写代码,另一个是边写边推断。
在根据注释书写代码时,我们可以发现它考虑的还是很全面的。
在边写边推断时,它可以结合上文代码的逻辑链来推断,如果推断是正确的我们可以Tab
一下~
- 写注释(
/doc
)
这个功能还是很简单的,你只需选中你需要注释的代码,然后点击左侧的图标,选中注释代码
即可。
我们在右侧可以看到对代码的预览,点击插入即可替换原代码。
- 解释代码(
/explain
)
这个功能对大型项目十分友好,可以帮助我们快速读懂这一团代码,十分节省时间。
- 单元测试(
/test
)
对于单个方法和单个类,这里可以一键生成测试用例。这里使用的时mokito,要运行这个代码的前提是你要在maven当中引入对mokito的相关依赖。
- 代码修复(
/fix
)
在我们写代码的过程中经常会出现报错的情况,会有黄色波浪线提示。我们可以选中这段代码,输入快捷键/fix
,它就可以分析这段代码的错误原因。
或者将报错信息(红字)直接喂入对话框,会给你报错查询。
- 代码优化
可以直接在对话框中输入指令。
-
新功能——Apply 效率翻倍!
功能介绍
告别重复操作
:可将 AI 生成的代码片段自动应用到项目对应文件位置并形成 Diff,无需手动打开文件、复制粘贴与调试等繁琐操作。
精准问题解决
:能自动识别文件路径,按需求完成代码插入 / 修改;通过 /fix 指令可快速定位并修复代码错误,一处修改处处应用;还能自动完成函数名称的查找与替换,避免连锁错误。
助力新项目开发
:在创建新项目时,如初始化 React 项目,可提供初始化和安装依赖等功能,一键运行完成初始化,自动识别新增文件路径,创建新文件与代码。
代码快速切换
:可以快速修改代码中想要更改的函数名称等,直接将更改的代码贴到源代码中进行修改。
代码注释生成
:能帮用户快速解析代码结构与逻辑,自动生成精准且格式规范的注释,减轻工作量。
使用方式:
安装插件
:在 VSCode 中安装豆包 MarsCode 编程助手,插件版本需达到 1.1.40,安装地址为https://sourl.cn/MJcubj。
代码修改应用
:在需求开发场景中,告知豆包 MarsCode 需求,AI 提供相关代码方案并自动识别文件路径,在对应位置完成代码插入 / 修改,点击 AI 生成代码块右上角的 Apply 按钮,选择部分采纳或全部采纳即可。
错误修复应用
:通过 /fix 指令让豆包 MarsCode 查找代码中的错误,点击 Apply 后将在预期文件中完成修改,差异清晰呈现,选择 “全部采纳” 可让多处修复结果一次性应用到需修复位置。
函数名称修改
:通过自然语言要求模型修改函数名称,Review 结果后点击代码块上的 Apply 按钮即可在文件中进行应用,也可通过多轮对话补充需求,使函数名修改更轻松。
注释生成应用
:当需要生成代码注释或文件注释时,与 AI 对话提出需求,AI 生成注释后点击 Apply 按钮,即可将精准且格式规范的注释应用到相应代码或文件中。
全新代码创建
:创建新项目时,向豆包 MarsCode 发出指令,如 “帮我在当前项目中初始化一个 React 项目,并完成记事本的功能” 等,AI 生成全新的文件和代码后,点击 Apply 采纳代码,即可在对应目录下一键创建新文件并应用代码。
注:这一功能只能在VScode中运行,jetbrains敬请期待!
使用心得:
在日常编程工作中,效率和准确性是我一直追求的目标,而豆包MarsCode的“一键Apply”功能极大地提升了我的编程体验。以往获取AI生成的代码片段后,手动复制粘贴到对应文件、检查调试的过程繁琐又易出错,现在该功能能自动识别文件路径,将代码精准应用到项目对应位置并形成Diff,点击Apply即可完成操作,让我能更专注于代码逻辑与功能实现。遇到代码错误时,通过/fix指令可快速定位并修复,还能自动完成函数名称查找与替换,避免手动修改导致的连锁错误,确保代码一致性与正确性。在新项目开发中,像初始化React项目,它能提供初始化和安装依赖等功能,自动识别新增文件路径,点击Apply就能一键创建新文件并应用代码,快速搭建项目框架,是编程道路上的得力助手。
四、爽一把~(贪吃蛇代码实现)
基于以上功能,我们完全可以通过关键词来使其独立开发出一个项目,比如我们可以做一款贪吃蛇游戏。
我们输入提示词:
目标: 使用 Java 在 MarsCode 中编写一款简单的贪吃蛇游戏。
核心功能:
-
游戏界面:
- 使用字符或图形表示蛇、食物和墙壁。
- 实时更新游戏画面,显示蛇的移动和分数。
-
蛇的控制:
- 使用键盘方向键控制蛇的移动方向 (上、下、左、右)。
- 蛇身跟随蛇头移动,保持连贯性。
-
食物生成:
- 随机在地图上生成食物。
- 蛇吃到食物后,蛇身变长,分数增加,并在新位置生成食物。
-
碰撞检测:
- 检测蛇头是否撞到墙壁或自身,游戏结束。
-
游戏循环:
- 不断更新游戏状态,处理用户输入,渲染画面,直到游戏结束。
将其喂入Marscode,可得以下结果。
复制到IDEA,运行可得:
原码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class game extends JPanel implements ActionListener {
private final int WIDTH = 300;
private final int HEIGHT = 300;
private final int DOT_SIZE = 10;
private final int ALL_DOTS = 900;
private final int RAND_POS = 29;
private final int DELAY = 140;
private final int x[] = new int[ALL_DOTS];
private final int y[] = new int[ALL_DOTS];
private int dots;
private int apple_x;
private int apple_y;
private boolean leftDirection = false;
private boolean rightDirection = true;
private boolean upDirection = false;
private boolean downDirection = false;
private boolean inGame = true;
private Timer timer;
public game() {
initGame();
}
private void initGame() {
dots = 3;
for (int z = 0; z < dots; z++) {
x[z] = 50 - z * 10;
y[z] = 50;
}
locateApple();
addKeyListener(new TAdapter());
setBackground(Color.black);
setFocusable(true);
timer = new Timer(DELAY, this);
timer.start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
doDrawing(g);
}
private void doDrawing(Graphics g) {
if (inGame) {
g.setColor(Color.red);
g.fillOval(apple_x, apple_y, DOT_SIZE, DOT_SIZE);
for (int z = 0; z < dots; z++) {
if (z == 0) {
g.setColor(Color.green);
} else {
g.setColor(Color.yellow);
}
g.fillRect(x[z], y[z], DOT_SIZE, DOT_SIZE);
}
Toolkit.getDefaultToolkit().sync();
} else {
gameOver(g);
}
}
private void gameOver(Graphics g) {
String msg = "Game Over";
Font small = new Font("Helvetica", Font.BOLD, 14);
FontMetrics metr = getFontMetrics(small);
g.setColor(Color.white);
g.setFont(small);
g.drawString(msg, (WIDTH - metr.stringWidth(msg)) / 2, HEIGHT / 2);
}
private void checkApple() {
if ((x[0] == apple_x) && (y[0] == apple_y)) {
dots++;
locateApple();
}
}
private void move() {
for (int z = dots; z > 0; z--) {
x[z] = x[(z - 1)];
y[z] = y[(z - 1)];
}
if (leftDirection) {
x[0] -= DOT_SIZE;
}
if (rightDirection) {
x[0] += DOT_SIZE;
}
if (upDirection) {
y[0] -= DOT_SIZE;
}
if (downDirection) {
y[0] += DOT_SIZE;
}
}
private void checkCollision() {
for (int z = dots; z > 0; z--) {
if ((z > 4) && (x[0] == x[z]) && (y[0] == y[z])) {
inGame = false;
}
}
if (y[0] >= HEIGHT) {
inGame = false;
}
if (y[0] < 0) {
inGame = false;
}
if (x[0] >= WIDTH) {
inGame = false;
}
if (x[0] < 0) {
inGame = false;
}
if (!inGame) {
timer.stop();
}
}
private void locateApple() {
int r = (int) (Math.random() * RAND_POS);
apple_x = ((r * DOT_SIZE));
r = (int) (Math.random() * RAND_POS);
apple_y = ((r * DOT_SIZE));
}
@Override
public void actionPerformed(ActionEvent e) {
if (inGame) {
checkApple();
checkCollision();
move();
}
repaint();
}
private class TAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if ((key == KeyEvent.VK_LEFT) && (!rightDirection)) {
leftDirection = true;
upDirection = false;
downDirection = false;
}
if ((key == KeyEvent.VK_RIGHT) && (!leftDirection)) {
rightDirection = true;
upDirection = false;
downDirection = false;
}
if ((key == KeyEvent.VK_UP) && (!downDirection)) {
upDirection = true;
rightDirection = false;
leftDirection = false;
}
if ((key == KeyEvent.VK_DOWN) && (!upDirection)) {
downDirection = true;
rightDirection = false;
leftDirection = false;
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Snake Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game game = new game();
game.setPreferredSize(new Dimension(300, 300));
frame.getContentPane().add(game);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
五、总结
在当今快节奏的编程世界中,高效的开发工具和辅助手段至关重要。豆包 Marscode
的出现为广大程序员带来了极大的便利,堪称程序员的最强辅助。
与传统寻求 AI 帮助时复制大量代码并详细描述需求的繁琐方式相比,Marscode
极大地简化了流程。而和需要付费且价格不低的 Copilot
相比,Marscode
凭借其高性价比脱颖而出,成为了更多开发者的选择。
从功能方面来看,Marscode
功能强大且丰富。在环境配置上,以 IDEA 为例,简单几步操作就能完成插件的安装和配置,并且其云端配置更是一大亮点,支持多种语言的云端开发,还能直接从 github
导入项目,为开发者节省了硬件成本。
在使用上,Marscode
提供了多样化的功能。生成代码功能既可以根据注释书写代码,又能边写边推断,十分智能;写注释功能能快速为代码添加清晰的注释;解释代码功能对大型项目的理解有很大帮助;单元测试功能能一键生成测试用例;代码修复功能可以分析代码错误原因;代码优化功能则可通过对话框指令实现。
通过实际案例,如使用 Java 开发贪吃蛇游戏,我们看到了 Marscode
独立开发项目的强大能力。它根据我们提供的详细提示词,生成了完整可用的代码,运行后能实现预期的游戏功能。
总的来说,豆包 Marscode
以其便捷的使用方式、丰富的功能和高性价比,成为了程序员开发过程中不可或缺的好帮手。它不仅能提高开发效率,还能降低开发成本,帮助开发者更加轻松地应对各种编程任务,让程序员在开发过程中更加得心应手,告别繁琐和低效,真正实现 “气死资本家” 的高效开发。相信在未来,Marscode
会不断发展和完善,为开发者带来更多的惊喜和便利。
能一键生成测试用例;代码修复功能可以分析代码错误原因;代码优化功能则可通过对话框指令实现。
通过实际案例,如使用 Java 开发贪吃蛇游戏,我们看到了 Marscode
独立开发项目的强大能力。它根据我们提供的详细提示词,生成了完整可用的代码,运行后能实现预期的游戏功能。
总的来说,豆包 Marscode
以其便捷的使用方式、丰富的功能和高性价比,成为了程序员开发过程中不可或缺的好帮手。它不仅能提高开发效率,还能降低开发成本,帮助开发者更加轻松地应对各种编程任务,让程序员在开发过程中更加得心应手,告别繁琐和低效,真正实现 “气死资本家” 的高效开发。相信在未来,Marscode
会不断发展和完善,为开发者带来更多的惊喜和便利。
注:提示词来源与Deepseek