免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

灵码+Qwen3-Coder——使用Skill机制实现代码审核

发布日期:2026-02-12 10:03:34 浏览次数: 1517
作者:阿里云开发者

微信搜一搜,关注“阿里云开发者”

推荐语

探索灵码如何巧妙集成Claude Skills机制,为代码审核带来智能升级!

核心内容:
1. Claude Skills的核心原理与动态上下文注入机制
2. 详细解析Skill的文件结构与调用流程设计
3. 灵码通过openskills实现代码审核功能的具体实践方案

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

一、背景

Claude Skills是Anthropic推出的一套基于提示词的模块化能力扩展系统,它通过"渐进式披露"机制让AI在需要时动态加载特定领域的专业知识,实现从通用助手到领域专家的无缝切换,受到很多客户的追捧。目前很多很多AI编程产品都开始支持,灵码产品官方还没有支持,本文主要探索如何在灵码内使用Skill能力,用作提供客户做技术方案参考。

二、Skill实现机制

Claude Skills的本质不是可执行代码,而是基于提示词的动态上下文注入与元工具架构。与传统观念不同,Skill并非让模型调用外部函数,而是将领域特定的指令、工作流和知识"展开"并"注入"到对话上下文中。

1.文件结构

每个Skill都是一个包含以下核心组件的文件夹:

my-skill/├── SKILL.md              # 核心提示模板├── scripts/              # 可执行Python/Bash脚本│   ├── validator.py│   └── processor.sh├── references/          # 参考文档│   ├── terminology.md│   └── examples.md└── assets/              # 模板和静态资源    ├── template.docx    └── config.json

SKILL.md文件结构:

---name: my-skilldescription: 清晰描述技能功能和触发场景allowed-tools: "Read,Write,Bash"---
# 技能详细指令## 工作流程1. 第一步说明2. 第二步说明3. 第三步说明
## 输出规范- 格式要求- 质量要求- 示例输出

2.调用流程

Claude使用"纯LLM推理"进行Skill选择,没有使用算法匹配、向量嵌入或分类器。系统在Skill工具的描述中提供格式化的可用Skills列表,Claude根据description中的关键词和使用场景描述,判断是否匹配当前任务。

调用流程:

1.搜索匹配:Claude回顾所有Skills的元数据和描述,判断哪些技能与当前任务相关;

2.加载技能说明:若匹配到某技能,Claude使用bash命令读取该技能文件夹下的SKILL.md;

3.执行内部流程:根据SKILL.md的说明,按需读取额外的文档或运行代码脚本;

4.串联复用:如果一个任务需要多个技能协作,Claude可以依序调用它们;

三、灵码实现方案

在搞清楚skill实现机制以后,我们就开始探索如何在灵码内使用skill。本次主要使用的是openskills方案。

1. 环境配置

1.1 安装openskills

npm i -g openskills

1.2 初始化skill

openskills install anthropics/skills

完成后可以看到在.claude下已经生成好相关的skill库能力。

1.3 同步skill

openskills sync

同步后会在当前项目根目录 Agent.md下生成相关skill指令。

2. 灵码适配

熟悉AI编程的大伙应该不陌生,上面生成的文件,就是Rule,只不过在不同的AI编程工具里有不同的叫法,比如Claude Code中叫claude.md,Codex 中叫AGENTS.md,灵码中其实就对应 project_rules.md。在Rule中,详细的定义了每个Skill的功能描述以及调用时机。我们要做的就是把AGENTS.md文件中的提示词,粘贴到project_rules.md就然后做些改造可以了,如下图所示,然后配置成一直生效的project_rules即可。

openskills内置的docx技能为例,可以实现docx文档生成,我们在灵码内测试使用效果如下,验证可以正常解析skill,生成doc文档:

四、代码审核Skill

我们也可以实现自己的Skill,以代码审核场景为例,实现举例如下:

1. 添加skill元信息

<skill><name>code-reviewer</name><description>这个 Skills 帮助进行代码审查,提供代码质量分析/在线报告预览、最佳实践建议和潜在问题识别。</description><location>project</location></skill>

2. 生成SKILL.md

---name: code-reviewerdescription: 这个 Skills 帮助进行代码审查,提供代码质量分析/报告生成、最佳实践建议和潜在问题识别。---# 代码审查专家 Skills你是一个经验丰富的代码审查者,遵循业界最佳实践,提供专业的代码评估和改进建议。## 审查重点1. **代码质量**   - 命名规范   - 代码复杂度   - 重复代码2. **安全性**   - SQL 注入风险   - XSS 漏洞   - 认证授权问题3. **性能**   - 算法效率   - 资源使用   - 缓存策略4. **可维护性**   - 代码注释   - 模块化设计   - 测试覆盖## 审查流程1. 理解代码变更的目的2. 检查代码风格和规范3. 分析潜在的 Bug 和性能问题4. 验证安全性5. 提供建设性的改进建议## 输出格式### 文本报告格式- ✅ **优点**:列出做得好的地方- ⚠️ **问题**:指出需要改进的地方(按严重程度分类)   - 🔴 严重:需要立即修复的问题   - 🟡 中等:建议修复的问题   - 🟢 轻微:可选的改进建议- 💡 **建议**:提供具体的改进方案和示例代码- 📊 **总体评分**:1-10 分### HTML 报告生成(必选)当用户要求审查代码时,**自动生成 HTML 报告**:#### 报告生成步骤1. **创建 HTML 报告文件**,包含以下内容:   - 页面标题和审查时间   - 审查摘要和总体评分(大号显示,带进度条)   - 四个维度的评分卡片:      * 代码质量(Code Quality)      * 安全性(Security)      * 性能(Performance)      * 可维护性(Maintainability)   - 问题列表(按严重程度分类):      * 🔴 严重问题(Critical)- 红色标识      * 🟡 中等问题(Medium)- 黄色标识      * 🟢 轻微问题(Minor)- 绿色标识   - 改进建议和代码示例(带语法高亮)   - 优点列表2. **样式要求**:   - 使用现代化的 CSS 设计(渐变背景、卡片阴影、圆角)   - 响应式布局,适配不同屏幕尺寸   - 使用专业的配色方案   - 代码块使用等宽字体和语法高亮   - 添加图标和视觉元素提升可读性3. **保存和预览**:   - 文件名格式:`code-review-report-{timestamp}.html`   - 保存到工作区根目录#### HTML 模板结构```html<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>代码审查报告</title>    <style>        /* 现代化样式 */        * { margin0padding0box-sizing: border-box; }        body {            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;            backgroundlinear-gradient(135deg#667eea 0%#764ba2 100%);            padding20px;            line-height1.6;        }        .container {            max-width1200px;            margin0auto;            background: white;            border-radius20px;            padding40px;            box-shadow020px 60px rgba(0,0,0,0.3);        }        .header {            text-align: center;            margin-bottom40px;            padding-bottom20px;            border-bottom3px solid #667eea;        }        .score-circle {            width150px;            height150px;            border-radius50%;            backgroundconic-gradient(#667eea 0% var(--score), #e0e0e0 var(--score) 100%);            display: flex;            align-items: center;            justify-content: center;            margin20px auto;            position: relative;        }        .score-inner {            width120px;            height120px;            border-radius50%;            background: white;            display: flex;            align-items: center;            justify-content: center;            font-size48px;            font-weight: bold;            color#667eea;        }        .metrics {            display: grid;            grid-template-columnsrepeat(auto-fit, minmax(250px1fr));            gap20px;            margin30px 0;        }        .metric-card {            backgroundlinear-gradient(135deg#f5f7fa 0%#c3cfe2 100%);            padding20px;            border-radius15px;            box-shadow04px 6px rgba(0,0,0,0.1);        }        .issue {            margin15px 0;            padding15px;            border-left4px solid;            border-radius8px;            background#f9f9f9;        }        .critical { border-color#e74c3cbackground#fee; }        .medium { border-color#f39c12background#ffeaa7; }        .minor { border-color#27ae60background#d5f4e6; }        pre {            background#2d2d2d;            color#f8f8f2;            padding15px;            border-radius8px;            overflow-x: auto;            margin10px 0;        }        code {            font-family'Courier New', monospace;        }    </style></head><body>    <!-- 报告内容 --></body></html>```## 审查示例### 命名规范检查```python# ❌ 不好的命名def f(x, y):    return x + y# ✅ 好的命名def calculate_total_price(base_price: float, tax_rate: float) -> float:    return base_price * (1 + tax_rate)```### 安全性检查```python# ❌ SQL 注入风险query = f"SELECT * FROM users WHERE id = {user_id}"# ✅ 使用参数化查询query = "SELECT * FROM users WHERE id = ?"cursor.execute(query, (user_id,))```### 性能优化检查```javascript// ❌ 低效的循环for (let i = 0; i < arr.length; i++) {    for (let j = 0; j < arr.length; j++) {        // O(n²) 复杂度    }}// ✅ 使用 Map 优化constmap = new Map();arr.forEach(item => map.set(item.id, item)); // O(n)```## 评分标准### 总体评分(1-10分)- **9-10分**:优秀,代码质量高,几乎没有问题- **7-8分**:良好,有少量改进空间- **5-6分**:中等,存在一些需要修复的问题- **3-4分**:较差,有较多问题需要解决- **1-2分**:很差,存在严重问题### 各维度评分每个维度(代码质量、安全性、性能、可维护性)独立评分:- **优秀(8-10)**:符合最佳实践- **良好(6-7)**:基本合格,有改进空间- **需改进(4-5)**:存在明显问题- **差(1-3)**:有严重缺陷## 使用示例当用户说"帮我审查这段代码"或"review 这个文件"时:1. 仔细分析代码2. 识别问题和优点3. 生成详细的 HTML 报告4. 告知用户报告已生成并可以查看

3. 生成效果

五、总结

Claude Skills通过"渐进式披露+元工具架构"的设计,实现了AI能力的模块化封装和按需加载。它解决了传统提示词工程的三大痛点:重复劳动、上下文浪费、知识无法沉淀。适用以下场景:

1. 高频重复任务:每周都要写的周报、固定格式的PRD、定期发的newsletter;

2. 团队标准化:确保多个团队成员输出格式统一;

3. 复杂工作流:需要多步骤、多工具协同的自动化任务;

4. 知识沉淀:将专家经验封装为可复用的能力包。

同时Skills和MCP处于不同层级,形成互补架构,使用MCP连接外部数据源,使用Skills定义处理流程,形成"数据输入-任务处理-结果输出"的完整闭环。未来,随着开发者生态的完善,Skills可能会形成"垂直领域技能市场",而MCP则作为"集成中枢",最终实现"AI能力模块化、业务流程自动化、系统集成标准化"的落地目标。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询