mcpField
S
sf-eval

sf-eval

github.com/clientell-ai测试与质量2092 次安装32 周前更新
代码仓库

关于 sf-eval

sf-eval 是用于评估 Salesforce 技能能否提升 AI 生成代码质量的技能,通过对比并评分有无技能上下文的代码。支持基准测试、静态检查和自定义代码评估。

主要功能

  1. 01对比有无技能时的代码
  2. 02运行 Salesforce 基准任务
  3. 03按五类标准评分
  4. 04执行静态检查
  5. 05评估自定义代码

适用场景

  1. 01衡量技能对 Salesforce 代码的影响
  2. 02检查代码是否符合 Salesforce 实践
  3. 03评估自定义 Salesforce 实现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/clientell-ai/salesforce-skills --skill sf-eval

安装后在 Claude Code 中输入/sf-eval确认已加载。

详细介绍

Salesforce 技能评估器

评估 Salesforce 技能是否能提升 AI 生成代码的质量。方法是对比使用与不使用技能上下文生成的代码,并为两者评分。

评估模式

模式 1:运行基准任务

当用户输入 /sf-eval 或 /sf-eval <task-id> 时:

  1. 从 evals/benchmarks/tasks.json 读取可用任务

  2. 对每个任务(或指定任务):

    步骤 A — 生成基线代码(不使用技能上下文): 根据任务提示生成 Salesforce 代码,表现得仿佛你不了解 Salesforce 技能。生成典型的大模型输出——功能可用,但可能缺少 Salesforce 特有的最佳实践。不要使用 WITH USER_MODE,不要采用触发器处理器模式,除非提示明确要求,否则不要使用 stripInaccessible。按通用 AI 的方式编写代码。

    步骤 B — 使用技能生成代码: 阅读相关技能文件 skills/<skill>/SKILL.md 及其参考资料。然后严格遵循技能中的所有规则、模式和注意事项生成代码。

    步骤 C — 为两份代码评分: 阅读评分标准 evals/benchmarks/rubric.md 和评审提示词 evals/benchmarks/judge-prompt.md。按 5 个类别为每份输出评分(每项 0–5 分):

    类别检查内容
    安全性使用 WITH USER_MODE、stripInaccessible、with sharing,不存在注入风险,不包含硬编码凭据
    Governor 限制不在循环中执行 SOQL/DML,使用 Map/Set 集合,查询高效
    批量处理支持 200 条以上记录,使用集合,不使用 Trigger.new[0]
    模式触发器处理器、服务/选择器层、命名规范
    完整性满足需求,涵盖边缘情况,具备错误处理,达到生产就绪水平

    步骤 D — 输出报告: 格式为对比表格:

    ## Task: <task-id>
    **Prompt**: <prompt text>
    
    ### Baseline (No Skills) — X/25
    | Category | Score | Reason |
    |----------|-------|--------|
    | Security | X/5 | ... |
    | Governor Limits | X/5 | ... |
    | Bulkification | X/5 | ... |
    | Patterns | X/5 | ... |
    | Completeness | X/5 | ... |
    
    ### With Skills — X/25
    | Category | Score | Reason |
    |----------|-------|--------|
    | Security | X/5 | ... |
    | Governor Limits | X/5 | ... |
    | Bulkification | X/5 | ... |
    | Patterns | X/5 | ... |
    | Completeness | X/5 | ... |
    
    ### Improvement: +X points (+XX%)
    
  3. 如果运行所有任务,在末尾生成汇总表格:

    ## Summary
    | Task | Baseline | With Skills | Delta |
    |------|----------|-------------|-------|
    | ... | X/25 | X/25 | +X |
    | **Average** | **X/25** | **X/25** | **+X (+XX%)** |
    
  4. 将完整报告保存到 evals/benchmarks/results/BENCHMARK.md

模式 2:静态检查

当用户输入 /sf-eval --check <file> 或 /sf-eval check <file> 时:

运行 bash evals/checks/static-checks.sh <file> 并显示结果。

模式 3:为自定义代码评分

当用户提供自己的代码并要求评估时:

根据评分标准为代码评分(同样为 5 个类别,共 25 分),并提供改进建议,引用相关技能。

可用基准任务

完整列表请阅读 evals/benchmarks/tasks.json。任务涵盖:

  • apex-trigger-bulk — 使用处理器模式并支持批量处理的触发器
  • apex-batch-cleanup — 带错误处理的 Batch Apex
  • apex-rest-api — 具备安全性的 REST 端点
  • apex-callout-service — Named Credentials + Queueable
  • test-trigger-handler — 全面的测试类
  • test-callout-mock — HttpCalloutMock 模式
  • soql-complex-query — 聚合 + 优化
  • soql-dynamic-search — 不存在注入风险的动态 SOQL
  • lwc-record-list — 使用 LDS 并处理错误状态的 LWC
  • flow-opportunity-automation — 带绕过机制的 Flow XML
  • security-audit-apex — 修复安全违规
  • schema-custom-object — 生成元数据 XML
  • deploy-cicd-pipeline — 用于 SF 的 GitHub Actions
  • data-migration-plan — Bulk API + 关系
  • apex-platform-events — 事件驱动架构

基线生成的关键规则

生成“基线”(不使用技能)代码时,必须刻意生成典型的通用大模型输出:

  • 使用 public class(不使用 with sharing)
  • 在 SOQL 中省略 WITH USER_MODE
  • 在 DML 上省略 stripInaccessible
  • 直接在触发器主体中编写逻辑(不使用处理器)
  • 可以在简单循环中执行 SOQL
  • 省略空值检查和错误处理
  • 使用基础模式,不采用 Salesforce 特有的优化

这并不是故意编写糟糕的代码,而是要模拟不了解 Salesforce 领域知识的通用 AI 编写代码的方式。基线代码应当功能可用,但缺少平台特有的最佳实践。

参考资料

工作流

  1. 确定评估模式(基准测试、静态检查或自定义代码)
  2. 阅读 tasks.json 和 rubric.md
  3. 生成基线代码和启用技能后的代码
  4. 根据评分标准为两者评分
  5. 输出格式化的对比报告
  6. 如果运行完整基准测试,将结果保存到 evals/benchmarks/results/BENCHMARK.md

评论

支持 Markdown