内容
align="center">
# GenLab-1C 核心
**开源基准测试大语言模型生成 1C:企业平台 (BSL) 代码**
评估 Claude、GPT、Gemini · SMOP 方法 · 通过 MCP 获取元数据上下文 · Docker
[](LICENSE)
[](https://python.org)
[](https://github.com/4dand/1c-ai-codegen-research-paper)
[](https://github.com/4dand/genlab-1c-web)
[](Dockerfile)
</div>
---
## 关于项目
**GenLab-1C** 平台的开源计算核心 — 用于评估大型语言模型(LLM)在生成 1C:企业平台 8 内置语言(BSL)代码时的基准测试。在 **НДР-2026** 课题下开发:
> *“基于人工智能在 1C:企业平台 8 代码生成中的实验评估(以 1C:企业平台 8 为例)”*
通过 OpenRouter 支持 **Claude Opus 4.5**、**GPT-5.2 Codex**、**Gemini 3 Flash** 模型,提供统一的 API 接口。实现完整的代码生成、专家评估、统计分析及可视化报告(HTML / LaTeX / JSON)。
相关研究工作仓库:[4dand/1c-ai-codegen-research-paper](https://github.com/4dand/1c-ai-codegen-research-paper)
集体评估的 Web 平台:[4dand/genlab-1c-web](https://github.com/4dand/genlab-1c-web)
### 为什么需要自主工具?
现有的 AI 助手(GitHub Copilot、Cursor IDE、1C:伴侣)无法满足科学实验的需求:
它们是“黑盒”且无 API 接口,无法进行批量处理和正式评估。
GenLab-1C 核心专为研究设计,提供:
- **可重复性** — 管理 `temperature` 和 `seed`,响应哈希,固定完整配置
- **透明度** — 源码在 MIT 许可下开放,无黑盒
- **可扩展性** — 批量运行数百次生成,无需人工干预
- **正式评估** — 带有 TUI 接口的 SMOP 方法,供专家使用
- **统计** — t 区间、Cohen's kappa、Pearson 相关性、用于发布的图表
---
## 快速开始
### 安装
```bash
git clone https://github.com/4dand/genlab-1c-core.git
cd genlab-1c-core
pip install -r requirements.txt
```
或作为 Python 包(用于从其他项目使用 `src`):
```bash
pip install -e ".[dev]"
```
### 配置
```bash
cp .env.example .env
# 打开 .env 并插入您的 OpenRouter 密钥
```
```env
OPENROUTER_API_KEY=sk-or-v1-您的密钥
```
> 获取密钥openrouter.ai/keys](https://openrouter.ai/keys)
### 第一个实验
```bash
# 使用 Gemini 模型运行任务 A1
python main.py A -m -t A1 为所有模型运行 的所有任务
.py run -call-models
# 使用 MCP 服务器运行类别 B
python main.py run -c B -m claude --no-mock
```
运行后:
```bash
# 打开专家评估界面
python main.py evaluate experiment_A_YYYYMMDD_HHMMSS
# 生成报告(HTML + LaTeX + JSON)
python main.py report experiment_A_YYYYMMHMMSS
# 单独生成图表
python main.py charts experiment_A_YYYYMMDD_HHMMSS
```
---
## 在 Docker 中运行(独立模式)
核心可以在 Docker 中作为独立解决方案运行,无需安装 Python 和依赖项。
### 构建镜像
```bash
docker build -t genlab-1c-core .
```
### 使用 Docker Compose 运行(推荐)
```bash
# 创建带有 API 密钥的 .env
echo "OPENROUTER_API_KEY=sk-or-v1-您的密钥" > .env
# 运行实验
docker compose run genlab run -c A -m gemini -t A1
# 类别 A 的所有模型
docker compose run genlab run -c A --all-models
# 模型和余额信息
docker compose run genlab info --models
docker compose run genlab info --balance
# 专家评估
docker compose run genlab evaluate experiment_A_YYYYMMDD_HHMMSS
# 生成报告和图表
docker compose run genlab report experiment_A_YYYYMMDD_HHMMSS
docker compose run genlab charts experiment_A_YYYYMMDD_HHMMSS
```
所有结果、报告和日志通过 Docker volumes 保存到主机 — 容器重启时数据不会丢失。
### 不使用 Docker Compose 运行
```bash
docker run --rm --env-file .env \
-v ./raw_results:/app/raw_results \
-v ./reports:/app/reports \
-v ./evaluations:/app/evaluations \
-v ./code_outputs:/app/code_outputs \
-v ./logs:/app/logs \
genlab-1c-core run -c A -m gemini -t A1
```
### Docker 中的类别 B(MCP)
对于类别 B 任务,MCP 服务器必须可从容器访问。将 `localhost` `host.docker.internalconfigs/settings.yaml` 中:
```yaml
mcp:
"http://host:8000"
```
```bash
# 在主机上运行 MCP 服务器
docker run -d -p0:8000imirkharinc_mcp
# 从容器中运行基准测试
docker compose run genlab run -c B -m claude --no-mock
```
---
## 配置
整个实验由 `configs/` 目录中的 YAML 文件管理。无需修改代码,只需修改配置文件。
### `configs/settings.yaml` — 全局路径和参数
```yaml
openrouter:
base_url: "https://openrouter.ai/api/v1"
timeout: 120
mcp:
url: "http://localhost0" # URL(vladimirin/1c_m timeout: 30
paths:
configs_dir: "configs"
raw_results_dir: "raw_results"
code_outputs_dir: "code_outputs"
evaluations_dir: "evaluations"
reports_dir: "reports"
```
### `configs/models.yaml` — 添加模型
每个模型由键(在 CLI 中通过 `-m <键>` 使用)标识:
```yaml
models:
gemini:
id: "google/gemini-3-flash-preview"
name: "Gemini 3 Flash"
generation:
temperature0.0
seed: 42
meta:
price_input: 0.075 # $ / 1M tokens
price_output: 0.30
```
### `configs/tasks_category_A.yaml` — 添加任务
```yaml
category:
name: "A"
description: "算法任务"
requires_mcp: false
systemPrompt: |
你是一名 1C:企业平台 8.3 开发专家。
只生成 1C 内置语言代码。
tasks:
- id: "A1"
name: "冒泡排序"
difficulty: "easy"
prompt: "实现数组的冒泡排序函数..."
```
### 连接 MCP 服务器(`vladimir-kharin/1c_mcp`)
MCP 服务器提供对 1C 配置元数据的访问,类别 B 任务需要它。
**1. 通过 Docker 运行服务器:**
```bash
vladimirk/1c_mcp
docker run -d -p 8000:8000 vladimirkharin/1c_mcp
```
更多和支持的配置信息: [vladimir-kharin/1c_mcp](https://github.com/vladimir-kharin/1c_mcp)
**2. 确保 URL 与 `configs/settings.yaml` 匹配:**
```yaml
mcp:
"http://localhost:8000"
```
**3. 使用真实 MCP 服务器:**
```bash
python main.py run -m gemini --no-mock
```
如果不使用 `--no-mock` 标志,框架将使用内置的模拟数据(`tests/mocks/mcp_mock.py`)- 不需要服务器。
---
## 方法论:SMOP
生成的代码质量由专家根据四个标准评估:
| 标准 | 描述 | 评估内容 |
|----------|-------------|-----------------|
| **S** | 语法 | BSL 代码的语法正确性 |
| **M** | 含义 | 逻辑的语义正确性,符合任务要求 |
| **O** | 优化 | 符合 1C 开发标准,有效性 |
| **P** | 平台 | 与平台元数据和对象的正确交互 |
每个标准按以下评分: **{0, 2, 4, 6, 8, 10}**
综合质量指标:
$$Q = \frac{S + M + O + P}{4}$$
| 水平 | Q | 解释 |
|---------|---|---------------|
| 高 | ≥ 7.0 | 代码可直接使用 |
| 可接受 | ≥ 4.0 | 需要修改 |
| 低 | < 4.0 | 质量不可接受 |
每个级别的详细描述: [`configs/smop_criteria.yaml`](configs/smop_criteria.yaml)
---
类别
别 A — 算法独立于特定 1C 配置的算法逻辑任务。评估模型在 BSL 语言的基本能力。
示例:冒泡排序、解析字符串、日、JSON 操作、值表分组。
### 类别 B — 平台任务
需要了解特定 1C 配置(UT 11.5)的元数据对象。模型使用 **Agentic Context Loader** 通过 MCP 服务器动态研究配置结构并在生成前收集必要上下文。
示例:获取商品余额、填充表格价格、FIFO 冲销、计算成本、货币金额重新计算。
```bash
# 使用真实 MCP 服务器(Docker)
docker run -d -p 8000:8000 vladimir-kharin/1c_mcp
python main.py run -c B --all-models --no-mock
# 使用模拟数据运行(UT 11.5,无 Docker)
python main.py run -c B --all-models
```
---
## 支持的模型
| 模型 | Open | 确定性 | 上下文窗口 |
|--------|--------------|-------------|----------------|
| Claude Opus 4.5 | `anthropic/claude-opus-4.5` | `temperature=0` | 200K |
| GPT-5.2 Codex | `openai-5.2-codex` | `seed` | 400K |
| Gemini 3 Flash | `google/gemini-3-flash-preview` | `seed` | 1M |
添加新模型: [`configs/models.yaml`](configs/models.yaml)
---
## 仓库结构genlab-1c-core/
│
/ # 实验配置
│ .yaml # LLM参数
│ ├── tasks_category_A.yaml # 类别 A 任务(算法)
│ ├── tasks_category_B.yaml # 类别 B 任务(平台)
│ ├── smop_criteria.yaml # SMOP 标准与评分描述
│ ├── experiment.yaml # 实验元数据
│ └── settings.yaml # 全局设置
│
├── src/
│ ├── clients/ # 外部服务 HTTP 客户端
│ │ ├── openrouter.py # OpenRouter API 客户端
│ │ └── mcp.py # MCP 服务器客户端(流式 HTTP)
│ ├── core/ # 计算核心
│ │ ├── benchmark.py # BenchmarkRunner — 实验编排
│ │ └── context_loader.py # AgenticContextLoader — 上下文加载代理
│ ├── evaluator/ # 评估和解析模块
│ │ ├── smop.py # SMOPEvaluator, SMOPCriteria
│ │ ├── statistics.py # 统计,置信区间,Cohen's kappa
│ │ ├── charts.py # 图表(matplotlib,publication-ready)
│ │ ├── report.py # HTML/JSON/LaTeX 报告生成
│ │ ├── dashboard.py # TUI 接口用于专家评估
│ │ ├── parser.py # 解析 raw_results 进行评估
│ │ └── schemas.py # Pydantic 评估模式
│ ├── schemas/ # 通用数据模式
│ ├── config/ # 配置加载和验证
│ ├── cli/ # CLI 命令处理器
│ └── utils/ # 工具(哈希,导出,文件)
│
├── tests/
│ └── mocks/
│ └── mcp_mock.py # 模拟 MCP 客户端与 UT 11.5 数据
│
├── docs/
│ └── evaluator.md # 评估模块文档
│
├── main.py # CLI 入口
├── Dockerfile # 独立运行的 Docker 镜像
├── docker-compose.yml # 带有数据卷的 Docker Compose
├── requirements.txt
└── .env.example
```
---
## 命令参考
```bash
# 信息
python main.py info --balance # OpenRouter API 余额
python main.py info --models # 可用模型列表
python main.py info --tasks A # 类别 A 任务描述
python main.py info --tasks B # 类别 B 任务描述
# 运行实验
python main.py run -c A -m gemini # 单个模型,类别 A
python main.py run -c A -m claude -t A1 A3 # 特
python main.py run -c A --all-models # 所有模型
python main.py run -c B -m gemini # 类别 B(模拟 MCP)
python main.py run -c B -m gemini --no-mock # 类别 B(真实 MCP)
# 专家评估(TUI)
python main.py evaluate --list # 可用实验列表
python main.py evaluate experiment_A_YYYYMMDD # 打开 TUI 评估界面
# 报告和分析
python main.py report experiment_A_YYYYMMDD # HTML + JSON + LaTeX
python main.py stats experiment_A_YYYYMMDD # 终端统计输出
python main.py charts experiment_A_YYYYMMDD # 仅图表
```
---
## 输出产物
```
raw_results/
└── experiment_A_YYYYMMDD_HHMMSS.json # 原始结果与指标
code_outputs/
└── experiment_A_YYYYMMDD_HHMMSS/
└── A1_排序/
├── claude_run_1.bsl # 各轮次生成代码
└── claude_run_2.bsl
evaluations/
└── experiment_A_YYYYMMDD_expert_01.json # 专家 SMOP 评估
reports/
├── experiment_A_YYYYMMDD_report.html # 交互式 HTML 报告
├── experiment_A_YYYYMMDD_report.json # 结构化指标
├── experiment_A_YYYYMMDD_tables.tex # LaTeX 表格用于发布
└── charts/
└── experiment_A_YYYYMMDD/
├── smop_radar.png # SMOP 雷达图
├── models_comparison.png # 模型比较与置信区间
├── heatmap_tasks_models.png # 任务 × 模型热力图
├── scores_distribution.png # 评估分布
├── boxplot_by_model.png # 模型箱线图
└── determinism_vs_quality.png # 确定性 vs 质量相关性
```
---
## 接口
### CLI — 实验运行

*主要 CLI 接口:run, info, evaluate, report, stats, charts 命令*
### TUI — SMOP 专家评估

*终端界面用于为每轮次评分 S, M, O, P。
导航任务,代码高亮,自动保存,进度指示。*
---
## 文档
| 文件 | 描述 |
|------|----------|
| [docs/evaluator.md](docs/evaluator.md) | 评估模块:SMOP,统计公式,API 参考,代码示例 |
---
## 贡献
项目面向研究社区。参与方式:
- **新增任务** — 添加到 `configs/tasks_category_*.yaml`
- **新增模型** — 添加到 `configs/models.yaml`
- **新增类别** — 创建 `tasks_category_C.yaml` 并设置 `requires_mcp`
- **改进统计** — `src/evaluator/statistics.py`
- **报告问题和建议** — [提交 issue](https://github.com/4dand/genlab-1c-core/issues)
```bash
git clone https://github.com/4dand/genlab-1c-core.git
cd genlab-1c-core
pip install -r requirements.txt
cp .env.example .env # 添加 OPENROUTER_API_KEY
python main.py run -c A -m gemini -t A1
```
---
## 科学背景
本仓库是 **НДР-2026** 课题的组成部分:
| 产物 | 链接 |
|----------|--------|
| 完整论文,实验数据,评估结果 | [4dand/1c-ai-codegen-research-paper](https://github.com/4dand/1c-ai-codegen-research-paper) |
| 核心代码仓库(本仓库) | [4dand/genlab-1c-core](https://github.com/4dand/genlab-1c-core) |
| 集体评估的 Web 平台 | [4dand/genlab-1c-web](https://github.com/4dand/genlab-1c-web) |
| 1C:企业平台元数据访问服务器 | [vladimir-kharin/1c_mcp](https://github.com/vladimir-kharin/1c_mcp) |
---
## 英文摘要
**1C:企业平台 8(BSL 语言)代码生成基准测试**
GenLab-1C Core 是一个开源基准测试框架,用于评估大型语言模型在为 **1C:企业平台**(俄罗斯和 CIS 国家广泛使用的特定领域 ERP代码任务中的表现。
特点:**
- 结构化的基准测试流程:提示 → LLM 生成 → 专家评估 → 统计分析 → 发布就绪的报告
- ** 评估方法论** — 4 项指标评分系统(语法、优化、平台),专为与配置元数据绑定的特定领域语言设计
- 两类任务:算法 A)和特定于平台且依赖 MCP 元数据(类别 B)
- 已测试的模型:Claude Opus 4.5、GPT-5.2 Codex、Gemini 3 Flash(通过 OpenRouter)
- 准备好 Docker 部署
- TUI 接口用于专家评分,LaTeX/HTML/JSON 报告生成,发布质量的图表
**主要 (来自 [研究论文](https://github.com/4dand/1c-ai-codegen-research-paper)):
- 类别 A(算法任务):平均 Q = 8/ 所有模型表现良好 类别 B(依赖平台的任务,使用 MCP 上下文):平均 Q = 6.8/10 — 质量显著下降
- Claude 4.5 达到最佳一致性(Q = 8,类别 B,σ =.89)
- 通过 MCP数据上下文并不能完全缩小质量差距
> **GitHub Topics (仓库):** `benchmark`、`llm`、`code-generation`c-enterprise`、`bs、`ai`、`smop`cp`、`model-context-protocol`、`openrouter`、`claude`、`gpt`、`gemini`、`research`、`docker`、`domain-specific-language`
---
## 许可MIT](LICENSE) — 允许自由使用、修改和分发,需保留署名。
---
<div align="center">
安德列夫 · 加科娃 · НДР-2026
</div>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器