Skip to content

Code 任务Bench相关

📅 发表于 2025/12/15
🔄 更新于 2025/12/15
👁️ -- 次访问
📝 0 字
0 分钟
code-task
#metrics
#task

参考文章

参考文章

评估指标

传统指标

1. CodeBLEU

  • 词汇重合度

2. CodeBERTScore / RTC

  • CodeBERTScore:向量相似度
  • RTC(Round-Trip Correctness):把代码翻译成另一种形式,再翻译回来,对比前后一致性。

3. Pass@k

  • 评估功能正确性,实际执行。给k次机会,只要有1个成功,就算成功。
LLM-as-a-Judge 指标

核心思想

  • 让LLM来评估是否写得好。

1. ICE-Score

  • 引入Rubrics打分细则,输出1个量化的分数。
    • 比如完全没用大0分、语法错误打1分、解决问题打4分。

2. CodeJudge/CodeJudgeBench

  • 输入task和task_code,让模型先思考(哪里写得好/哪里有bug),再打分
  • 缺点:不稳定。

3. BigCodeReward (多模态评估)

  • 输入代码代码运行结果,去做打分,更关心实际效果
    • 运行结果:报错日志、图标、网页截图等。
  • 偏好打分:给2个方案及运行结果,判断谁更好。
执行指标

1. ProbGen/差异测试

  • 背景:判断代码和标准答案是否一致
  • 让llm自动生成多个输入数据(探针),分别喂给2段代码;若输出结果不同,则功能不同

2. REFUTE/反例生成

  • 给一段有bug的代码,生成输入,让代码跑崩溃。

3. EvaLooop/循环转换测试

  • 代码需求循环:需求 -> 代码 -> 需求 -> 代码 -> ...
  • 多语言转换循环:Python -> Java -> Python -> Java -> ...
  • 评估标准:如果能坚持多轮,则效果稳健ASL分数高;否则,分数低。
Multi-Agent

1. MCTS-Judge

  • 搜索输,每个节点代表一个特定检查视角(边界条件/异常/需求规范等等)。
  • 沿推理路径做预测和模拟执行,如果推理和执行结果一致,则给一个奖励。

2. CodeVisionary

  • 让多个模型一起打分。先收集情报,再让n个LLM进行打分。
  • 指标:共识分数,降低评估方差。
稳定性测试

1. Incoherence/不连贯性/不一致性

  • 1个任务,让模型生成2个程序,观察输出是否一致。
    • 高Incoherence:模型随机性很强,不可靠。
    • 低Incoherence:模型很稳定,一致性好。

2. Mean Absolute Deviation (MAD)/鲁棒性测试

  • 先测原始代的准确率,做一些表面修改(如变量命名),计算评分准确率。
  • 判断两个准确率之间的差距。MAD越小越好。
其他

1. SBC 语义相似性

  • 原始需求 -> 模型 -> 代码,再把代码 -> 新需求。
  • 判断原始需求描述新需求描述是否一致。

2. Copilot Arena / BigCodeArena

  • 系统同时给模型A和B的代码,开发者采纳谁,就算赢。计算排名。

3. CodeCriticBench

  • 给一段代码,具体两个指标由大模型来判断
    • Acc准确率:模型对不对
    • Checklist:比如安全性达标吗、命名规范吗、效率高吗?
  • 人类均方误差:LLM打分和人类打分偏离多少。

片段级任务

代码补全和FIM

给定部分上下文,评估模型预测正确代码片段的能力。

代码补全

核心点

  • 利用上文前缀Prefix,继续编写修复代码

Statement-Level(语句级)

  • 基于上文预测单行代码或表达式,关注局部语法。
  • CodeXGLUE:下一行补全,6种语言,精准匹配作为指标。
  • HumanEval-Infill/Qwencoder2.5:给定文档,可执行单元测试作为指标。

Function-level(函数级)

  • 给定函数签名或部分代码,生成完整函数,关注算法逻辑。
  • BigCodeBench:从github上提取真实代码,做函数还原。评估:正确性和复杂度。
  • MultiPL-E:同一个功能,可以有多个写法

Class-Level(类级)

  • 给定部分类定义中,实现整个类、多个方法。
  • ClassEval:不仅写一个函数,要写整个类,关注全局类结构理解能力
  • ClassEval-T:口占了Java和CPP,更强调面向对象。
  • OOP:关注设计模式。
FIM

核心

  • 利用前缀prefix和后缀suffix,来预测中间部分。
  • FIM是一个预训练任务,现在单独出来,评估是否好用。

主要工作

  • CCCI:强调上下文
    • 喂外部知识,如数据库结构关系等;模型懂了业务逻辑,补全代码质量更高。
  • SAFIM:强调语法感知的评估
    • 挖空的是完整的语法块,避免随机mask。
    • 如果预训练效果不好,则SAFIM能力就会差。
  • ASR-FIM
    • 也是避免随机mask。
    • 使用抽象语法树(AST)来做掩码,遮住完整的语法结构。
    • 强迫模型去预测整个逻辑结构。

代码生成

Funtion-Level

早期-简单函数生成

  • CodeXPLUG,
  • HumanEval&MBPP (最流行):Prompt -> Code -> 单元测试
  • 缺点:测试用你太少,容易过拟合

增强测试严谨性

  • HumanEval+, MBPP+:自动生成测试用例,去验证是否真的懂,避免过拟合
  • HumanEval Prom MBPP PRo:增加难度、扩大题库、改进评估方式等。

多语言扩展

  • MBXP/Multi-HumanEval:把测试用例扩展至Java/C++/JS等语言。
  • HumanEval-XL:测试自然语言和编程语言的交叉组合。英语中文俄语、python/java 等混搭组合。

真实场景/上下文/复杂性

  • McEval/BigCodeBench:强调代码不是孤立的,需要结合代码库上下文、显示世界等。
  • MERA Code:超越简单函数到复杂系统的全方位评估框架
  • CodeFuseEval:中文指令、多任务能力。
Class-Level
  • ClassEval:100个python类,需要内部多个方法调用
  • ClassEvalT:
  • OOP:面向对象
编程

核心思想

  • 不仅要代码能跑通,还要逻辑强、效率高。

主要工作

  • LiveCodeBench, LiveCodeBench Pro:收集模型训练截止日期之后的题目,测试OOD题目。
  • CruxEval:让模型写代码、还预测输入输出,测试解题能力。
  • CodeNet:多语言数据集。
  • APPS:竞赛问题+人类写的代码。
  • MultiPL-E:要求模型为每个问题生成多个答案,评估多样性。
领域Benchmark

垂直技术栈

  • Deep-Bench:写pytorch/tensorflow的能力。
  • KernelBench/TritonBench:测试GPU编程。
  • SciCode:科学计算。

复杂结构和全栈

  • FullStackBench:测试全栈能力(前端、后端、数据库)
  • YABLoCo:长上下文,读几千行代码,写新代码。一般用作老旧项目维护。

评测方法创新

  • Meta-Benching/AutoCodeBench:设计框架自动构建Bench,让AI自动抓取代码生成测试用例
  • RAG/CodeRAG-Bench:考察看文档写代码的能力。

代码编辑和修bug

改原始代码。

代码编辑&修bug

语句级Bench

  • 早期数据集(版本控制的提交历史)
    • MegaDiff:66.3万个Java变更。
    • TSSB-3M:300w个python合成的单语句错误。
    • 特定类型错误:TFix (10.5万个js修复)、FixJS(32.4万个js)、PyTer(python错误)
  • 后来的工作:规模、可执行和语言改进。
    • RunBugRun:8种语言,45w个可执行错误修复Pair。
    • xCodeEval:450个多语言样本,10+语言。
    • DebugBench:4.2k的debug任务和配套测试,c++,python,java
  • 最近数据集:把调试集成到指令微调中
    • HumanEvalPack:把HumanEval扩展到6种语言,并增加调试变体
    • MDEval:18种语言、3513个调试任务

交互迭代式Bench

  • 传统:一次性修复
  • 迭代与反馈
    • SWT-Bench:1900个,可执行测试用例,真实Github错误
    • FeedbackEval:带有结构化外部提示的迭代修复
    • 写代码 -> 报错 -> 改代码 -> 跑通
  • Agentic & Tool Use
    • CodeEditorBench:模拟IDE环境,涉及增量编辑和文件间依赖。
    • DebugEval:自我调试,模型生成调试信号来指导多步修复。
    • Debug-gym
      • 教模型使用debug工具(pdb),包括打断点、单步执行、查看变量值等。
      • 通过SFT/RL教模型使用有状态工具,解决预训练此类数据稀缺问题。

代码效率

代码效率

背景

  • LLM 写的代码可能效果好,但效率很低,希望写对代码->写好代码
  • 效率:运行时间、内存使用、算法复杂度、能耗。

性能和复杂度测试

  • EffiBench:1k+算法任务,GPT4代码比人类代码慢3倍、内存占用多14-44倍。
  • Mercury:扩展并提出多维框架,测量各种编程问题在最佳/最差下的执行时间、内存占用和复杂度。
  • EffiBench-x:多种编程语言。
  • BigO/DynCode:侧重算法复杂度,是否达到算法复杂度。
  • COFFE:强调在现实执行负载下的实际运行时间评估,提供了互补的系统级视角。
  • EvalPerf:引入了一个差分性能评估框架,评估 LLM代码在性能挑战任务上的效果。

能耗和效率优化

  • ECCO/Solovyeva/Cappendijk:量化了LLMCode和人类Code的能耗开销,探索微调策略降低功耗。
把效率纳入建模/训练过程的方法

训练时干预 (Training Objective)

  • EffiCoder 试图在训练阶段就告诉模型:“写得快的代码才是好代码”,把效率信号加入损失函数

强化学习 (RL):

  • ACECode 使用 RL,如果代码运行速度快,则给奖励,来激励模型优化代码。

事后修补 (Post-generation Refinement):

  • Rethinking Code Refinement :先让模型写,再用专门步骤去检查“哪里写慢了”,再重构优化。

代码偏好

代码偏好

背景

  • 不仅是写对代码,还要评估谁的代码更好,更符合人类标准:(正确安全易读).

方法1:硬指标打分法

  • CodeArena:题越难,分数越高;运行时间越短,分数越高。
  • Long CodeArena:项目级,看能否在大项目里理解项目架构。

方法2:竞技场LLM-as-a-Judge法

  • 找强力模型做裁判。
  • CodePrefBench:直接测模型有无鉴赏力,能不能挑出好代码。
  • AutoCodeArena:自动化擂台。裁判看2者的代码+各自沙盒运行结果,来打分。

代码推理和问答

代码推理和问答

背景

  • 评估模型理解分析代码的能力。

基于QA的评估

  • CodeQA:把代码注释转换成问答对,10w的数据集。
  • CS1QA:从python入门课程的聊天记录中收集问答对。
  • CodeMMLU:多种任务,包括代码修复、执行推断和填空挑战。
  • CodeSense真实软件项目细粒度的代码语义推理任务。
    • 现有Bench依赖合成数据或教育性编程。

基于代码语义推理的评估 (更具体的任务)

  • SpecEval:4个任务来评估,规范判断、选择、补全和生成。
  • CRUXEval/CRUXEval-X:执行预测,输出预测输入预测s。
  • EquiBench:程序等价性检查,两段代码,修改了语法结构,看是否一致。
  • CORE:通过静态分析来判断,如数据流(Data Flow)和控制流(Control Flow)。
    • 变量 A 的值是否依赖于变量 B?,这段代码的死代码(Dead Code)在哪里?

多模态维度

  • ScratchEval 非常新颖。Scratch 是图形化编程(拖拽积木块),代码是“画”出来的。
    • 这测试了多模态模型(如 GPT-4V)能否看懂视觉化的逻辑结构

代码翻译

Code Translation

早期方法:语法结构驱动

  • AST: 抽象语法树,类似先把英文句子分析成主谓宾结构树,再把树变成中文结构。难以处理复杂结构。
  • TransCoder:只给模型看大量的中文书和大量的英文书(单语语料),模型也能通过无监督学习学会翻译

基于执行反馈的方法 (测试用例)

  • 保留原有代码结果,LLM翻译成新代码,执行新代码的单元测试,
    • 如果结果一致,说明正确;否则,把不同信息给到,让LLM继续改。

Prompt工程

  • 先解释后翻译,效果好。

安全

  • 使用差分模糊测试(differential fuzzing来验证等价性。
    • 如c++ -> rust,内存不安全->内存安全语言。

数据与评估的进化

  • 数据合成: 很难找到完全对应的代码对,用 Back-Translation(回译) 来造数据。
    • Python -> Java, 再Java -> Python,看能否复原,以此来造数据,
  • 超越 BLEU: 之前看BLEU(看词重叠率,发现没用,现在看功能等价性(能不能跑通测试)和复杂度分级(是简单的改变量名,还是复杂的算法重写)。

测试用例生成

测试用例生成

面向软件工程

  • SWT-Bench/TestGenEval
    • 转换了SWE-Bench代码,提供了有bug的代码和对应的补丁。
    • 要求生成的测试用例,在bug代码不通过、在修复后的代码上通过。

面向程序竞赛

  • TestEval:LeetCode 210个问题;其评估仍然局限于覆盖率指标。
  • CodeForce-SAGATCGBenchTestCase-Eval
    • 收集了大量的错误正确的代码提交,以进行端到端的评估。
    • 核心指标:测试用例能否拒绝错误代码同时通过正确代码的比例。

Repo-Level 任务

代码生成和补全

仓库级代码生成和补全
  • 单一代码刷题 -> 写工程代码
  • 整个代码库上下文(多文件/项目结构/依赖关系/跨文件关系),来预测/补全或生成代码片段
相关Bench
  • RepoBench
    • 仓库级,在检索和补全任务上评估模型。
    • 训练集:22年之前的代码;测试集:22年之后的代码。
  • RepoEval
    • 处理仓库级时:RAG(检索+生成) > 纯模型。RepoCoder利用完整仓库上下文,效果好于其他模型。
    • 使用单元测试来评估14个真实代码仓库的代码补全
  • Execrepobench
    • 重新生成多粒度(表达式/语句/函数)的masked spans,来评估 LLM 的仓库级补全能力
    • 通过仓库测试文件进行验证;并在其上微调Qwen2.5-Coder以增强补全性能。
  • CoderEval
    • 专门测试非独立函数,需要调用其他文件代码等。
      • 模型效果:非独立函数 弱于 独立函数。460 个 Java/Python问题。
  • CrossCodeEval :多语言bench,10k,通过静态分析测试跨文件上下文的需求。
  • M2rc-Eval:多语言Bench,使用AST(抽象语法树)来做标注的。
  • Codev-Bench:使用工业数据评估repo补全能力。
    • CodeLLM 优于通用模型,但在不完整后缀场景效果都不好
  • RepoCod:Python Bench,11个项目,980个任务,50%都需要仓库级上下文。
  • DI-Bench评估依赖推理,4语言,581仓库。顶级模型效果也不好。
  • DependEval分层评估 仓库级依赖,8种语言,15k仓库。
  • REPOST沙盒测试构建仓库级环境。
    • REPOST-TRAIN训练的模型在HumanEval/RepoEval 有效果
    • 但在 REPOST-EVAL 效果一般
  • SecRepoBench:在仓库级别评估安全代码生成(318 个任务,C/C++ 中的 15 种 CWE 类型)。
  • DevEval人工注释的Bench(1.8k样本,117 仓库);有难度,当前 LLM 表现很差。

领域复杂代码生成

需要特别的领域知识逻辑复杂多重依赖等。

相关Bench
  • BioCoder

    • 生物学代码生成Bench,1.7k生物学仓库、2.2k高质量代码问题。
  • PaperBench

    • 要求模型去复现论文,20篇ICML2024的论文。
      • 论文写公式原理,模型需深刻理解,才能写出和跑通代码。
    • 评分树(Rubric Tree):不只看最终结果,而是把大任务拆解为8.3k个小步骤子任务,一步步打分。
      • 如数据预处理、模型定义、loss函数等。
    • 也有一个llm-as-a-judge方法
  • Commit0

    • 输入文档空函数体从0开始编写代码库,实现所有函数,通过单元测试。54个python库。
  • HackerRank-ASTRA

    • 评估跨领域、多文件的能力。每个问题运行32次做评估。
  • ProjectEval

    • 模拟用户交互,来测试repo-level 代码生成能力,284个测试用例,共3级输入
      • Level1:NL Prompt;Level2:NL Checklist;Level3:Skeleton
    • 模型在需要系统性思维全项目理解的任务上表现很差。
  • DA-Code

    • 数据科学上的代码生成。500个任务。存在挑战。

代码编辑重构Agent合作

**代码编辑、重构和智能体协作**
  • 对代码进行修改、重组以改进质量。
  • 并由多个Agent协同工作以完成编程目标。
  • 从简单代码补全插件 -> 能干脏活的agent。
  • 可靠性(不能影响别的代码)、长代码不懒惰、大局观(复杂计划、跨文件依赖处理)。
代码编辑重构Bench
  • Aider Edit Bench

    • 编辑python源文件,完成133个Exercism的编程练习
  • Aider Refactor Bench

    • 重构大python类的89个大方法
    • 需要长上下文能力
  • Aider Polyglot Bench

    • 基于edit bench,扩展了多种语言,共225个case。
  • RES-Q

    • 100个真实repo的评估bench,在重构、编辑和问答中都有测试用例。
  • LiveRepoReflection

    • 提出一个系统收集仓库数据,RepoReflect数据集,包含580个reflection实例。
    • 集成执行反馈,解决当前llm的局限性(复杂/长上下文等)
  • RepoExec

    • 仓库级代码生成测试,构建可执行环境来分析上下文如何影响代码的质量
    • 指标:pass@k, 依赖调用率(DIR)。
    • 结果:完整依赖能提高模型效果,指令微调模型比base模型更善于使用依赖。
  • CodePlan

    • 解决复杂任务,Planning + Multi-step Edits

      • 先生成多步计划,再一步步编辑,确保每一步的依赖关系都正确。
    • 仓库级编码的框架。自动化了需在整个仓库中进行广泛编辑的任务。

Commit Message 生成

提交信息生成

任务

  • 根据代码差异,自动生成简单信息丰富的文本描述。

早早期方法:统计和规则

  • 猜词,用朴素贝叶斯猜提交是fix还是add。

早期方法:检索&NMT

  • NMT:把diff使用翻译模型翻译成英文
  • 检索:去数据库里检索一个最像的diff,抄这个message。

Bert/大模型

  • CommitBert:
  • CoRec:
  • ExGroFi:整合链接的issue描述,增强消息的rationale
  • CommitChronicle:利用提交历史,提高对时间和风格的连贯性。

评估的挑战

  • BELU有局限:传统指标看词重叠,一般commit消息比较短暂,稍微换个词,意思一样,但bleu分数会很低。
  • B-Norm:通过平滑和忽略大小写,尽量让打分接近人类直观感受。

SWE 任务

软件工程任务
  • 来源真实的github开源项目,给定真实的issue,
  • 徐自己去读代码、复现bug、定位文件、修改代码并通过测试。
SWE-Bench

SWE-Bench 家族

  • SWE-bench:2.2k issuse-PR对,真实github python 问题fail-to-pass 单元测试
  • Java bench:SWE-Bench扩展至Java。
  • SWE-bench-light:为降低计算成本,仅保留300个任务。
  • SWE-bench-Multilingual:9种编程语言、42个仓库、300个手动验证的任务。
  • SWE-bench-Multimodal:517个基于图像的问题,测试是否解释视觉线索(屏幕截图/GUI错误等)。
  • SWE-bench-verified500个人工策划的例子,基于docker评估,确保一致性

SWE-Bench 扩展

  • SWE-bench-Live:持续纳入新的github问题,164仓库、1565任务,更动态、比静态数据难。
  • SWE-rebench:自动化大规模问题收集(>21k任务),实现时间纵向评估。
  • SWE-dev:从bug修复转到功能实现1.4万个训练数据500个评估数据
  • BugPilot:让LLM添加新功能而非直接插入bug,来合成更逼真的bug
    • 使用Qwen3在swe-bench-verified达到SOTA
  • Gistfy:要求agent把仓库提炼为复制其运行时行为的最小单文件代码
  • SWE-PolyBench:跨语言推理能力,21仓库,2110任务。
  • Multi-SWE-Bench:7语言,1632 issue,c/c++/rust性能最弱。
  • SWE-Bench+:包括截止日期后的仓库,避免数据泄露/
  • SWE-bench-M:视觉调试,17个JS项目,619个视觉issue。很有挑战。

超越SWE-Bench

  • SWE-Lancer:经济价值,1.4k真实Upwork任务(100万美元),
  • FAUN-Eval:300个github细粒度问题。
  • FEA-Bench:跨83个仓库的仓库级功能实现,最好模型仅10%
  • SwingArea/CoreCodeBench:分别把评估扩展至持续集成和复合任务。
  • AgentIssue-Bench:agent的自我维护能力,201个问题、50个任务,长期记忆挑战。

综合软件开发

综合软件开发
  • 代码只是一小部分。
  • 还需要:写文档、看图修bug、用git、跟进项目等。
关键Bench
  • README Eval:文档生成,根据项目的issue和commits等数据生成readme
  • OminiGIRL:评估github issue能力,引入多模态挑战,错误包括图像。
  • GitGoodBench:版本控制。
  • EvoCodeBench:动态范式,不断演进真实的仓库。
  • Stack-Repo:策划大规模去重的源代码数据,对提高真实任务性能很重要。

Repo-Level和长上下文理解

仓库级和长上下文理解

思想

  • 在整个代码库或大量文档做理解推理,需要跨越多个文件、可能需保持高达数百万token的上下文。

基准测试:海量代码大海捞针

  • RepoQA:仓库级问答,需对多个文件进行检索和推理
  • CodeRepoQA:仓库级问答
  • CoreQA:真实github仓库问题和评论构建的数据集
  • LongCodeU:更全面和挑战的任务,四个方面来评估:
    • 代码单元感知、代码单元内部理解、代码单元关系理解、长文档理解

长上下文压缩

  • LongCodeZip:减少上下文长度,高效压缩长代码上下文
    • 困惑度:如果一段代码对当前问题重要,去掉其以后,模型对该问题的困惑度会飙升。
    • 粗粒度压缩:以函数为单位,计算每个函数对当问题的贡献度(互信息),只保留贡献大的函数。
    • 细粒度压缩:基于困惑度的边界检测,把保留的函数分割成快,使用背包算法进行token预算优化

Agentic System

Agentic Tool Use

Agentic Tool Use

核心

  • 考察选择和使用工具的能力。

入门级

  • API-Bank:天气如何,意图识别。
  • ToolBench

多轮交互

  • BFCL:多步多轮交互。
  • 还有AppWorld。

领域任务

  • TauBench:复杂的公司内部流程(客服)

Deep Research Bench

DeepResearch

核心

  • 信息检索、深度推理。

Bench

  • GAIA:真实问题,结合推理、网页浏览、工具使用。
  • xbench:人才搜寻和市场营销领域。
  • DeepResearch Bench:学术标准,需达phd-level,自主研究和生成报告。

WebSearch Bench

WebSearch

核心

  • 开放的、不受约束的网络环境。需要持久、适应和过滤噪声和矛盾信息的能力。

Bench

  • BrowseComp:把信息检索构建为组合推理任务,要求聚合多个网站上的碎片化信息。
  • BrowseComp-ZH:多语言版本。
  • BrowseComp-Plus:推理和检索解耦,分为找信息根据信息推理2步。
  • WebWalker-QA:强调网页之间的跳转,像人逛维基百科一样。
  • Widesearch:大规模、开放域的信息综合synthesis。

GUI Bench

GUI Bench

核心

  • 要求理解图像用户界面。
  • 把NL指令变成Grounding的UI动作,多步计划、泛化性仍然存在挑战。

前端导航Bench

  • WebShop/Mind2Web:数千个目标导向的任务,要求在真实网站中操作。
  • OminiACT:扩展,引入跨网页、桌面和移动设置的bench。
  • WebChoreArena:长期记忆和计算的复合家务任务。
  • PersonalWAB:用户历史和偏好引入个性化。
  • Sphinx/NovelScreenSpot:GUI分解子技能,如目标理解、UI落地和规划。

前端开发Bench

  • Design2Code/WebCode2M:设计和代码实现的pair数据集。看图写代码。
  • Sketch2Code:看草图写代码
  • Interaction2Code:生成动态交互式的网站。
  • WebGen-Bench:从0开始生成多文件网站。
  • Web-Bench:模拟了具有顺序依赖任务的真实软件开发,不仅是一次生成,还有后续修改和迭代。

Terminal Use

Terminal Use

核心

  • 在终端环境中做真实任务的自主操作能力。
  • 超越了自定义环境,还需要在真实系统里做操作。
    • SWE-Bench:定义好环境,边界清晰。
    • Terminal-Bench:无边界,整个系统都是环境。

Bench

  • Terminal-Bench:
    • 需要系统级开发能力,探索系统、执行shell和各种命令行工具,完成复杂系统任务。
      • 比如从源码编译和启动一个完整的linux内核。
    • 整个环境都是待解的空间。
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2026