feat(configs): add code_reviewer skill and coding_harness pipeline
- code_reviewer.yaml: Verifier Agent skill config for adversarial review with structured output schema for ReviewFeedback format - coding_harness.yaml: Example pipeline with adversarial loop develop → test → review (Worker↔Verifier) → archive
This commit is contained in:
parent
dc07c7c60a
commit
6731d96c65
|
|
@ -0,0 +1,63 @@
|
||||||
|
name: coding_harness
|
||||||
|
version: "1.0"
|
||||||
|
description: "Coding pipeline with adversarial review loop - Worker ↔ Verifier 对抗闭环"
|
||||||
|
|
||||||
|
stages:
|
||||||
|
# 阶段 1:Developer 编写代码
|
||||||
|
- name: develop
|
||||||
|
agent: developer_agent
|
||||||
|
action: implement_feature
|
||||||
|
outputs:
|
||||||
|
- code
|
||||||
|
- test_files
|
||||||
|
timeout_seconds: 600
|
||||||
|
retry_count: 1
|
||||||
|
|
||||||
|
# 阶段 2:Tester 运行测试
|
||||||
|
- name: test
|
||||||
|
agent: tester_agent
|
||||||
|
action: run_tests
|
||||||
|
depends_on:
|
||||||
|
- develop
|
||||||
|
inputs:
|
||||||
|
code: "${develop.code}"
|
||||||
|
test_files: "${develop.test_files}"
|
||||||
|
outputs:
|
||||||
|
- test_results
|
||||||
|
timeout_seconds: 300
|
||||||
|
retry_count: 2
|
||||||
|
|
||||||
|
# 阶段 3:代码审查(对抗模式)
|
||||||
|
# Worker (developer_agent) 产出 → Verifier (code_reviewer) 审查 → 不通过则打回修复
|
||||||
|
- name: review
|
||||||
|
agent: developer_agent
|
||||||
|
action: fix_code_issues
|
||||||
|
verifier: code_reviewer
|
||||||
|
depends_on:
|
||||||
|
- test
|
||||||
|
max_adversarial_rounds: 3
|
||||||
|
feedback_mode: "structured+natural"
|
||||||
|
escalate_on_exhaust: human_approval
|
||||||
|
inputs:
|
||||||
|
code: "${develop.code}"
|
||||||
|
test_results: "${test.test_results}"
|
||||||
|
outputs:
|
||||||
|
- final_code
|
||||||
|
- review_report
|
||||||
|
timeout_seconds: 900
|
||||||
|
|
||||||
|
# 阶段 4:归档提交
|
||||||
|
- name: archive
|
||||||
|
agent: archiver_agent
|
||||||
|
action: commit_and_push
|
||||||
|
depends_on:
|
||||||
|
- review
|
||||||
|
inputs:
|
||||||
|
code: "${review.final_code}"
|
||||||
|
timeout_seconds: 120
|
||||||
|
continue_on_failure: false
|
||||||
|
|
||||||
|
variables:
|
||||||
|
target_branch: main
|
||||||
|
require_approval: true
|
||||||
|
commit_message_prefix: "feat"
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
name: code_reviewer
|
||||||
|
agent_type: dynamic_tool_chain
|
||||||
|
version: "1.0.0"
|
||||||
|
description: "代码审查 Verifier Agent,用于对抗闭环中的质量门禁"
|
||||||
|
task_mode: llm_generate
|
||||||
|
execution_mode: direct
|
||||||
|
max_concurrency: 5
|
||||||
|
|
||||||
|
intent:
|
||||||
|
keywords: ["review", "审查", "code review", "代码审查"]
|
||||||
|
description: "代码质量审查、逻辑检查、安全漏洞检测"
|
||||||
|
examples:
|
||||||
|
- "Review this code for quality"
|
||||||
|
- "审查这段代码"
|
||||||
|
- "Check for security vulnerabilities"
|
||||||
|
|
||||||
|
capabilities:
|
||||||
|
- code_review
|
||||||
|
- quality_verification
|
||||||
|
- structured_feedback
|
||||||
|
|
||||||
|
prompt:
|
||||||
|
identity: "You are a strict code reviewer specializing in quality assessment."
|
||||||
|
instructions: |
|
||||||
|
Review the provided code output for:
|
||||||
|
1. **Logic correctness** - edge cases, error handling, boundary conditions
|
||||||
|
2. **Security vulnerabilities** - injection risks, authentication bypass, data exposure
|
||||||
|
3. **Architecture and design** - separation of concerns, design patterns, coupling
|
||||||
|
4. **Test coverage** - are tests comprehensive, do they cover edge cases
|
||||||
|
5. **Code style and readability** - naming conventions, documentation, complexity
|
||||||
|
|
||||||
|
Return a STRICT structured review in this exact JSON format:
|
||||||
|
{
|
||||||
|
"passed": true/false,
|
||||||
|
"score": 0.0-1.0,
|
||||||
|
"summary": "Brief natural language summary of review findings",
|
||||||
|
"issues": [
|
||||||
|
{
|
||||||
|
"severity": "critical|major|minor",
|
||||||
|
"category": "logic_error|security|style|test_failure|architecture",
|
||||||
|
"description": "Clear description of the issue",
|
||||||
|
"location": "file:line if applicable",
|
||||||
|
"suggestion": "How to fix this issue"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Be thorough and specific. If there are no issues, set passed=true and issues=[].
|
||||||
|
|
||||||
|
llm:
|
||||||
|
model: "default"
|
||||||
|
temperature: 0.1
|
||||||
|
max_tokens: 2048
|
||||||
|
|
||||||
|
tools:
|
||||||
|
- shell
|
||||||
|
|
||||||
|
quality_gate:
|
||||||
|
required_fields: ["passed", "issues", "summary", "score"]
|
||||||
|
max_retries: 0
|
||||||
|
output_schema:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- passed
|
||||||
|
- score
|
||||||
|
- summary
|
||||||
|
- issues
|
||||||
|
properties:
|
||||||
|
passed:
|
||||||
|
type: boolean
|
||||||
|
score:
|
||||||
|
type: number
|
||||||
|
minimum: 0
|
||||||
|
maximum: 1
|
||||||
|
summary:
|
||||||
|
type: string
|
||||||
|
minLength: 10
|
||||||
|
issues:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- severity
|
||||||
|
- category
|
||||||
|
- description
|
||||||
|
properties:
|
||||||
|
severity:
|
||||||
|
type: string
|
||||||
|
enum: ["critical", "major", "minor"]
|
||||||
|
category:
|
||||||
|
type: string
|
||||||
|
enum: ["logic_error", "security", "style", "test_failure", "architecture"]
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
minLength: 10
|
||||||
|
location:
|
||||||
|
type: string
|
||||||
|
suggestion:
|
||||||
|
type: string
|
||||||
Loading…
Reference in New Issue