🔥 基于 Monaco Editor 的智能代码建议 DEMO

114 阅读3分钟

作为开发者,我们经常使用现代开发工具,例如 vscode、cursor 都具有 AI 智能辅助编写代码功能, 今天给大家推荐一个开源 Demo ——AI Code Suggestions,一款基于 Monaco Editor 的智能代码建议 DEMO,支持多段代码同时建议、个性化接受/拒绝功能和批量处理操作, 如果有业务需要在 web 页面上添加编辑器,可以结合 AI 服务器来实现 AI 智能辅助效果

🎯 它能帮你做什么?

简单来说,这是一个能给你的代码提供专业优化建议的工具,核心功能包括:

  • 智能代码建议:自动识别可优化的代码段,提供更优实现方案
  • 多段代码同时处理:支持同时对多个代码段生成建议,批量优化
  • 可视化差异对比:用绿色高亮显示新增代码,红色标记待删除代码
  • 灵活的操作控制:每个建议都能单独接受 / 拒绝,也支持一键批量处理
  • 实时预览效果:修改后的效果即时可见,不满意随时可以撤销

demo.png

✨ 为什么推荐它?

1. 交互体验超流畅,完全参照 cursor 效果实现

用起来就两个字:舒服!

  • 建议出现和消失时有平滑过渡动画
  • 按钮悬停有清晰的视觉反馈
  • 自动滚动到建议位置,无需手动查找
  • 响应式布局,适配不同屏幕大小

2. 定制扩展超简单

完全可以根据自己的需求进行定制:

  • 编辑配置文件即可添加新的建议规则
  • 修改 CSS 样式轻松调整视觉效果
  • 支持自定义初始代码,适配不同场景
  • 开源免费,可自由修改和二次开发

🚀 快速上手指南

第一步:启动项目

bash

# 方法1:用Python启动本地服务器
python -m http.server 8000

# 方法2:用Node.js
npx http-server

# 然后访问 http://localhost:8000/AI%20Code%20Suggestions.html

第二步:使用流程

  1. 打开页面,等待代码和配置自动加载
  2. 点击 "🤖 AI 建议" 按钮生成所有优化建议
  3. 查看差异对比,绿色是新增代码,红色是待删除代码
  4. 用单个建议的✓/✕按钮进行选择性处理
  5. 或使用底部的批处理按钮一键接受 / 拒绝所有建议

💡 实用场景举例

场景 1:函数优化

原始代码:

javascript

运行

function createUser(userData) {
    if (validateUser(userData)) {
        console.log("Creating user: " + userData.name);
        return { id: Date.now(), ...userData };
    }
    return null;
}

AI 建议优化后:

javascript

运行

// ✨ AI建议:增强用户创建逻辑
function createUser(userData) {
    if (!validateUser(userData)) {
        throw new Error('Invalid user data provided');
    }
    
    const user = {
        id: Date.now(),
        createdAt: new Date().toISOString(),
        ...userData
    };
    
    console.log(`Creating user: ${userData.name} (${userData.email})`);
    return user;
}

可以看到优化点:

  • 完善了错误处理(从返回 null 改为抛异常)
  • 添加了创建时间戳,增强数据完整性
  • 使用模板字符串,代码更清晰
  • 日志信息更详细,便于调试

场景 2:代码精简

原始代码:

javascript

运行

function filterActiveItems(items) {
    var result = [];
    for (var i = 0; i < items.length; i++) {
        if (items[i].active === true) {
            result.push(items[i]);
        }
    }
    return result;
}

AI 建议直接替换为原生方法:

javascript

运行

// 删除 filterActiveItems 函数:推荐使用原生 filter 方法

items.filter(item => item.active)替代,代码更简洁高效!

🛠️ 如何定制属于自己的建议?suggestions-config.jsfig.js` 文件

  1. suggestionExamples数组中添加新配置:

javascript

运行

{
    range: {  // 代码位置范围
        startLineNumber: 12,
        startColumn: 1,
        endLineNumber: 18,
        endColumn: 2
    },
    oldCode: "原始代码...",  // 要匹配的代码
    newCode: "优化后代码...",  // 建议的新代码
    description: "建议描述",
    confidence: 0.9,  // 建议置信度
    tags: ["error-handling", "enhancement"]  // 标签分类
}

3. 确保行initial-code.jsode.js` 中的实际代码对应

🔗 项目地址

GitHub 仓库

如果你觉得这个工具有用,欢迎给项目点个 Star⭐,也可以提交 PR 一起完善它!

作为前端,这款工具能帮你快速实现 Web 页面上的 AI 编辑器开发。赶紧试试吧!