让你的AI代码助手越用越强:agentic-eval 让Claude学会自我反思
让你的AI代码助手越用越强:agentic-eval 让Claude学会自我反思
用过 Claude Code 的同学,有没有这种感觉——第一遍出来的代码总觉得差口气,但又说不上来哪里不对,只能自己动手改?
以前这种情况只能靠你自己 review。但现在 Claude 可以自己 review 自己——靠的就是 agentic-eval 这个 Skill。
GitHub 仓库 github/awesome-copilot,⭐ 38k+,安装量 10k+,是 GitHub 官方维护的 awesome-copilot 技能库里的核心成员之一。
它解决什么问题
简单说:让 AI 输出从「一次生成」变成「迭代优化」。默认 Claude 是生成→直接输出,中间没有任何反思环节。agentic-eval 在中间插入了一个评估-反馈-改进的循环,Claude 可以自己判断输出的质量,然后主动修改,直到达标。
这套思路来自人类工程师的实践:先写代码,再写测试,跑不过就改,改完再跑——只不过现在这套流程可以闭环给 AI 自动化执行。
三个核心模式,哪个最实用
模式一:Basic Reflection(自我反思循环)
这是最直觉的用法:让 Claude 生成内容后,自己给自己打分,哪里不达标就改进哪里。具体流程是:生成 → 评估 → 给出 PASS/FAIL + 理由 → 根据失败项重新生成,最多跑 N 轮。
def reflect_and_refine(task, criteria, max_iterations=3):
output = llm(f"完成:{task}")
for _ in range(max_iterations):
critique = llm(f"按标准评估:{criteria},输出:{output},返回JSON格式的通过/失败及理由")
critique_data = json.loads(critique)
if all(c["status"] == "PASS" for c in critique_data.values()):
return output
failed = {k: v["feedback"] for k, v in critique_data.items() if v["status"] == "FAIL"}
output = llm(f"根据以下问题改进:{failed},原输出:{output}")
return output
关键是 structured JSON 输出——让评估结果机器可解析,Claude 能准确识别哪几项没达标。
模式二:Evaluator-Optimizer(生成-评估分离)
这个模式把「运动员」和「裁判」角色分开——一个专门生成,一个专门打分。它的适用场景是:评估标准比较复杂,需要多个维度打分,而且打分维度的权重各不相同。
class EvaluatorOptimizer:
def __init__(self, score_threshold=0.8):
self.score_threshold = score_threshold
def run(self, task, max_iterations=3):
output = self.generate(task)
for _ in range(max_iterations):
evaluation = self.evaluate(output, task)
if evaluation["overall_score"] >= self.score_threshold:
return output
output = self.optimize(output, evaluation)
return output
典型阈值 0.8——总分达到 80% 就收工,避免无限迭代。
模式三:Code-Specific Reflection(测试驱动代码优化)
这个最硬核,专门针对代码场景:先生成代码,再自动生成测试用例,跑测试,失败就修,直到全部通过。
def reflect_and_fix(spec, max_iterations=3):
code = llm(f"为以下需求写代码:{spec}")
tests = llm(f"为代码生成 pytest 测试:{spec},代码:{code}")
for _ in range(max_iterations):
result = run_tests(code, tests)
if result["success"]:
return code
code = llm(f"修复错误:{result['error']},当前代码:{code}")
return code
这其实就是 TDD(测试驱动开发)的 AI 版——红→绿→重构循环完全自动化。
三种评估策略怎么选
除了三大模式,agentic-eval 还给了三种评估输入策略:
- Outcome-Based:看最终结果对不对,最直接,适合有明确正确答案的场景
- LLM-as-Judge:让另一个 LLM 来评判质量,适合主观性强的输出(文案、设计)
- Rubric-Based:多维度加权打分,适合复杂任务(代码质量 + 可读性 + 性能都要考虑)
实际使用感受
我实际跑下来最有体感的是 模式三——用在代码生成任务上。以前让 Claude 写一个复杂函数,第一版往往有边界条件没考虑到。现在加上测试驱动循环,通常 2-3 轮就能拿到可直接提交的代码。
需要注意的点:最大迭代次数设 3-5 轮,太少没效果,太多浪费 token。收敛检测要做好,避免 Claude 在某一项上反复改不出来。
安装方式
npx skills add https://github.com/github/awesome-copilot --skill agentic-eval
装完之后,在 Claude Code 里直接说「用 agentic-eval 评估这段代码」,它就会自动跑评估循环。
GitHub:https://github.com/github/awesome-copilot
评论区
登录后可评论。