Skip to content

Ch0ser/CodeQL-Audit-Agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CodeQL + LLM ่‡ชไธปๆผๆดžๅฎก่ฎก Agent

ๅŸบไบŽ CodeQL ้™ๆ€ๅˆ†ๆžไธŽๅคง่ฏญ่จ€ๆจกๅž‹๏ผˆLLM๏ผ‰็š„่‡ชไธปๆผๆดžๅฎก่ฎก็ณป็ปŸใ€‚้‡‡็”จ ReAct ๆžถๆž„ๅฎž็Žฐ Agent ่‡ชไธปๅ†ณ็ญ–ใ€ๅทฅๅ…ท่ฐƒ็”จๅ’Œๅคš่ฝฎ้ชŒ่ฏ๏ผŒๅฏน C/C++ ๅผ€ๆบ้กน็›ฎ่ฟ›่กŒ่‡ชๅŠจๅŒ–ๅฎ‰ๅ…จๅฎก่ฎกใ€‚

็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ่พ“ๅ…ฅๅฑ‚                                    โ”‚
โ”‚  CodeQL Database โ”€โ”€โ†’ SARIF Report (133 alerts) โ”€โ”€โ†’ ่งฃๆž+ไธŠไธ‹ๆ–‡ๆๅ–  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                 โ”‚
                                 โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Autonomous Audit Agent (ๆ ธๅฟƒ)                       โ”‚
โ”‚                                                                โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Tier 1: ่ง„ๅˆ™้ข„่ฟ‡ๆปค (ๆ—  LLM ่ฐƒ็”จ)                           โ”‚  โ”‚
โ”‚  โ”‚   ไปฃ็ ่ดจ้‡่ง„ๅˆ™ โ†’ ่‡ชๅŠจๅˆคๅฎš FALSE_POSITIVE (96 alerts)        โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                             โ”‚ ๅฎ‰ๅ…จ็›ธๅ…ณ (37 alerts)              โ”‚
โ”‚                             โ–ผ                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Tier 2: ReAct ๅˆ†ๆžๅพช็Žฏ (ๅทฅๅ…ท่ฐƒ็”จ LLM)                      โ”‚  โ”‚
โ”‚  โ”‚                                                          โ”‚  โ”‚
โ”‚  โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”‚  โ”‚
โ”‚  โ”‚   โ”‚  Think  โ”‚โ”€โ”€โ”€โ†’โ”‚    Act    โ”‚โ”€โ”€โ”€โ†’โ”‚ Observe  โ”‚โ”€โ”€โ”       โ”‚  โ”‚
โ”‚  โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚       โ”‚  โ”‚
โ”‚  โ”‚        โ–ฒ              โ”‚                          โ”‚       โ”‚  โ”‚
โ”‚  โ”‚        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚  โ”‚
โ”‚  โ”‚                       โ–ผ (max 3 rounds)                   โ”‚  โ”‚
โ”‚  โ”‚              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚   Tool Box      โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚  ยท read_file    โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚  ยท grep_source  โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚  ยท get_function โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚  ยท get_callers  โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ”‚  ยท get_typedef  โ”‚                         โ”‚  โ”‚
โ”‚  โ”‚              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                         โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                             โ”‚ TRUE_POSITIVE?                    โ”‚
โ”‚                             โ–ผ                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Tier 3: Devil's Advocate ้ชŒ่ฏ                              โ”‚  โ”‚
โ”‚  โ”‚   ๅฏนๆŠ—ๆ€งไบŒๆฌกๅฎกๆŸฅ โ†’ ็กฎ่ฎคๆˆ–ๆŽจ็ฟปๅˆคๅฎš                            โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                 โ”‚
                                 โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ่พ“ๅ‡บๅฑ‚                                    โ”‚
โ”‚  audit_results.json โ”€โ”€โ†’ report_gen.py โ”€โ”€โ†’ Vulnerability Report  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒๅŠŸ่ƒฝ่ฟ่กŒๆˆชๅ›พ

Docker ๆž„ๅปบไธŽ CodeQL ๆ‰ซๆ

Dockerๆž„ๅปบ

ๅœจ Docker ๅฎนๅ™จไธญ่‡ชๅŠจๅฎŒๆˆ curl ๆบ็ ็ผ–่ฏ‘ใ€CodeQL ๆ•ฐๆฎๅบ“ๆž„ๅปบๅ’Œๅฎ‰ๅ…จๆ‰ซๆใ€‚

SARIF ่งฃๆž

SARIF่งฃๆž

่งฃๆž CodeQL ่พ“ๅ‡บ็š„ SARIF ๆŠฅๅ‘Š๏ผŒๆๅ– 133 ๆก็ป“ๆž„ๅŒ–ๅ‘Š่ญฆๅนถๆŒ‰่ง„ๅˆ™ๅˆ†็ฑป็ปŸ่ฎกใ€‚

ไปฃ็ ไธŠไธ‹ๆ–‡ๆๅ–

ไธŠไธ‹ๆ–‡ๆๅ–

ไปŽ curl ๆบ็ ไธญ่‡ชๅŠจๆๅ–ๆฏๆกๅ‘Š่ญฆๅฏนๅบ”็š„ๅ‡ฝๆ•ฐไฝ“๏ผŒไธบ LLM ๅ‡†ๅค‡่พ“ๅ…ฅใ€‚

Agent ่‡ชไธปๅฎก่ฎก๏ผˆTier 1 ้ข„่ฟ‡ๆปค + Tier 2 ReAct ๅˆ†ๆž + Summary๏ผ‰

Agent่ฟ่กŒๅ…จ่ฟ‡็จ‹

Agent ๅฏๅŠจๅŽ๏ผšTier 1 ้ข„่ฟ‡ๆปค่‡ชๅŠจ่ทณ่ฟ‡ 96 ๆก้žๅฎ‰ๅ…จๅ‘Š่ญฆ๏ผ›Tier 2 ๅฏน 37 ๆกๅฎ‰ๅ…จๅ‘Š่ญฆๆ‰ง่กŒ ReAct ๅพช็Žฏ๏ผŒLLM ่‡ชไธป่ฐƒ็”จๅทฅๅ…ท๏ผˆread_fileใ€grep_sourceใ€get_callers ็ญ‰๏ผ‰่Žทๅ–้ขๅค–ไธŠไธ‹ๆ–‡๏ผŒๅคš่ฝฎๆŽจ็†ๅŽ็ป™ๅ‡บๅˆคๅฎšใ€‚ๆœ€็ปˆ Summary ๆ˜พ็คบ 87 ๆฌกๅทฅๅ…ท่ฐƒ็”จใ€‚

็บฟๆ€งๆตๆฐด็บฟๅฏนๆฏ”

็บฟๆ€งๆตๆฐด็บฟๅฏนๆฏ”

็บฟๆ€งๆตๆฐด็บฟ๏ผˆๆ— ๅทฅๅ…ท่ฐƒ็”จ๏ผ‰ไบง็”Ÿ 2 ไธชๅนป่ง‰ๆ€ง TRUE_POSITIVE๏ผ›Agent ๆ–นๆกˆ้€š่ฟ‡ๅทฅๅ…ท้ชŒ่ฏๆถˆ้™คไบ†ๆ‰€ๆœ‰่ฏฏๅˆคใ€‚

ๆŠฅๅ‘Š็”Ÿๆˆ

ๆŠฅๅ‘Š็”Ÿๆˆ

ๆœ€็ปˆ็”Ÿๆˆ็ป“ๆž„ๅŒ–ๅฎก่ฎกๆŠฅๅ‘Š๏ผŒๅŒ…ๅซ็ปŸ่ฎกๆ•ฐๆฎใ€่ง„ๅˆ™ๆœ‰ๆ•ˆๆ€งๅˆ†ๆžๅ’Œ่ฏฆ็ป†ๅˆคๅฎš็†็”ฑใ€‚

ๆ ธๅฟƒ็‰นๆ€ง

็‰นๆ€ง ่ฏดๆ˜Ž
่‡ชไธปๅ†ณ็ญ– ๅŸบไบŽ่ง„ๅˆ™ๅˆ†็ฑป่‡ชๅŠจ่ทณ่ฟ‡้žๅฎ‰ๅ…จๅ‘Š่ญฆ๏ผŒ่Š‚็œ 72% API ่ฐƒ็”จ
ๅทฅๅ…ท่ฐƒ็”จ LLM ่‡ชไธปๅ†ณๅฎš่ฐƒ็”จ 5 ไธชๆบ็ ๅˆ†ๆžๅทฅๅ…ท่Žทๅ–ไธŠไธ‹ๆ–‡
ๅคš่ฝฎๆŽจ็† ReAct ๅพช็Žฏๆœ€ๅคš 3 ่ฝฎ๏ผŒ้€ๆญฅๆทฑๅ…ฅๅˆ†ๆž
ๅฏนๆŠ—้ชŒ่ฏ Devil's Advocate ๆœบๅˆถๆŒ‘ๆˆ˜ TRUE_POSITIVE ๅˆคๅฎš
ๅนป่ง‰็ผ“่งฃ ไฝŽๆธฉๅบฆ + ๆ€€็–‘ๆ€งๆ็คบ + ็ป“ๆž„ๅŒ–่พ“ๅ‡บ + ๅทฅๅ…ท้ชŒ่ฏ

ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

  • Python 3.10+
  • Docker Desktop๏ผˆ็”จไบŽ็ผ–่ฏ‘็›ฎๆ ‡้กน็›ฎๅ’Œ CodeQL ๆ‰ซๆ๏ผ‰
  • LLM API ่ฎฟ้—ฎ๏ผˆOpenAI ๅ…ผๅฎนๆŽฅๅฃ๏ผ‰

ๅฎ‰่ฃ…

pip install openai

่Žทๅ–็›ฎๆ ‡้กน็›ฎๆบ็ 

cd codes/
git clone --branch curl-7_88_0 --depth 1 https://github.com/curl/curl.git

้…็ฝฎ API

ๅˆ›ๅปบ config/config.json๏ผš

{
    "API_key": "your-api-key",
    "base_url": "https://api.example.com",
    "model": "claude-opus-4-6"
}

ๅฎŒๆ•ดๆต็จ‹

# Step 1: ๆž„ๅปบ Docker ้•œๅƒ๏ผˆ็ผ–่ฏ‘ curl + CodeQL ๆ‰ซๆ๏ผ‰
docker build -t codeql-curl .

# Step 2: ๆๅ–ๆ‰ซๆ็ป“ๆžœ
docker create --name codeql-tmp codeql-curl
docker cp codeql-tmp:/workspace/results.sarif output/results.sarif
docker rm codeql-tmp

# Step 3: ่งฃๆž SARIF ๆŠฅๅ‘Š
python codes/parse_sarif.py output/results.sarif codes/curl -o output/alerts.json

# Step 4: ๆๅ–ไปฃ็ ไธŠไธ‹ๆ–‡
python codes/extract_context.py output/alerts.json codes/curl -o output/alerts_with_context.json

# Step 5: ่ฟ่กŒ Agent ๅฎก่ฎก
python codes/agent.py --input output/alerts_with_context.json \
                      --config config/config.json \
                      --source codes/curl

# Step 6: ็”ŸๆˆๆŠฅๅ‘Š
python codes/report_gen.py output/audit_results.json

ไป…่ฟ่กŒ Agent๏ผˆๅทฒๆœ‰ๆ‰ซๆๆ•ฐๆฎ๏ผ‰

python codes/agent.py --input output/alerts_with_context.json \
                      --config config/config.json \
                      --source codes/curl \
                      --output output/audit_results.json

่ฟ่กŒ็ป“ๆžœ

============================================================
  AGENT AUDIT SUMMARY
============================================================
  Total alerts:       133
  TRUE_POSITIVE:      0
  FALSE_POSITIVE:     133
  UNCERTAIN:          0
  ERROR:              0
  ---
  Tier 1 (pre-filter):  96
  Tier 2 (ReAct):       37
  Tier 3 (verified):    0
  Total tool calls:     87
  Verified findings:    0
============================================================

้กน็›ฎ็ป“ๆž„

CodeQL_agent/
โ”œโ”€โ”€ README.md                     # ๆœฌๆ–‡ไปถ
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ Dockerfile                    # Docker ็Žฏๅขƒ๏ผˆ็ผ–่ฏ‘ + CodeQL ๆ‰ซๆ๏ผ‰
โ”œโ”€โ”€ build_and_scan.sh             # ๆž„ๅปบ่พ…ๅŠฉ่„šๆœฌ
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ config.json               # LLM API ้…็ฝฎ๏ผˆไธๅ…ฅๅบ“๏ผ‰
โ”œโ”€โ”€ codes/
โ”‚   โ”œโ”€โ”€ agent.py                  # โ˜… ๆ ธๅฟƒ๏ผš่‡ชไธปๅฎก่ฎก Agent๏ผˆReAct ๅพช็Žฏ๏ผ‰
โ”‚   โ”œโ”€โ”€ parse_sarif.py            # SARIF ๆŠฅๅ‘Š่งฃๆž
โ”‚   โ”œโ”€โ”€ extract_context.py        # ไปฃ็ ไธŠไธ‹ๆ–‡ๆๅ–
โ”‚   โ”œโ”€โ”€ llm_audit.py              # ็บฟๆ€งๆตๆฐด็บฟๅŸบ็บฟ๏ผˆๅฏนๆฏ”็”จ๏ผ‰
โ”‚   โ”œโ”€โ”€ report_gen.py             # Markdown ๆŠฅๅ‘Š็”Ÿๆˆ
โ”‚   โ””โ”€โ”€ curl/                     # curl 7.88.0 ๆบ็ ๏ผˆไธๅ…ฅๅบ“๏ผŒ้œ€่‡ช่กŒ clone๏ผ‰
โ”œโ”€โ”€ output/
โ”‚   โ”œโ”€โ”€ results.sarif             # CodeQL ๅŽŸๅง‹ๆ‰ซๆ็ป“ๆžœ
โ”‚   โ”œโ”€โ”€ alerts.json               # ่งฃๆžๅŽ็š„็ป“ๆž„ๅŒ–ๅ‘Š่ญฆ
โ”‚   โ”œโ”€โ”€ alerts_with_context.json  # ๅธฆไปฃ็ ไธŠไธ‹ๆ–‡็š„ๅ‘Š่ญฆ
โ”‚   โ”œโ”€โ”€ audit_results.json        # Agent ๅฎก่ฎก็ป“ๆžœ
โ”‚   โ”œโ”€โ”€ report.md                 # ๆœ€็ปˆๅฎก่ฎกๆŠฅๅ‘Š
โ”‚   โ””โ”€โ”€ report_summary.csv        # ๆ‘˜่ฆ่กจๆ ผ
โ””โ”€โ”€ docs/
    โ”œโ”€โ”€ ๅฎž้ชŒๆŠฅๅ‘Š.md                # ๅฎŒๆ•ดๅฎž้ชŒๆŠฅๅ‘Š
    โ”œโ”€โ”€ ๆ“ไฝœๆ‰‹ๅ†Œ.md                # ๅค็Žฐๆญฅ้ชค
    โ”œโ”€โ”€ ไปปๅŠกๅˆ†ๆžไธŽ่ง„ๅˆ’.md          # ไปปๅŠกๆ‹†่งฃ
    โ””โ”€โ”€ ็›ฎๆ ‡้กน็›ฎ้€‰ๅž‹่ฐƒ็ ”.md        # ้€‰ๅž‹ไพๆฎ

Agent vs ็บฟๆ€งๆตๆฐด็บฟ

็ปดๅบฆ ็บฟๆ€งๆตๆฐด็บฟ (llm_audit.py) Agent (agent.py)
ๆžถๆž„ ้€ๆกๅ•ๆฌก LLM ่ฐƒ็”จ ReAct ๅพช็Žฏ + ๅทฅๅ…ท่ฐƒ็”จ
API ่ฐƒ็”จ 133 ๆฌก 37 ๆฌก + ๅทฅๅ…ท่ฝฎๆฌก
ๅทฅๅ…ท่ƒฝๅŠ› ๆ—  5 ไธชๆบ็ ๅˆ†ๆžๅทฅๅ…ท
ไธŠไธ‹ๆ–‡ ๅ›บๅฎš๏ผˆโ‰ค80 ่กŒๅ‡ฝๆ•ฐไฝ“๏ผ‰ ๅŠจๆ€๏ผˆLLM ่‡ชไธปๆ‰ฉๅฑ•๏ผ‰
้ชŒ่ฏๆœบๅˆถ ๆ—  Devil's Advocate ไบŒๆฌกๅฎกๆŸฅ
่ฏฏๅˆค 2 ไธชๅนป่ง‰ๆ€ง TP 0๏ผˆ้€š่ฟ‡ๅทฅๅ…ท้ชŒ่ฏๆถˆ้™ค๏ผ‰

ๆŠ€ๆœฏๆ ˆ

  • ้™ๆ€ๅˆ†ๆž๏ผš CodeQL CLI v2.21.4 + codeql/cpp-queries@1.4.2
  • LLM๏ผš Claude Opus (via OpenAI-compatible API)
  • Agent ๆก†ๆžถ๏ผš ่‡ช็ ” ReAct ๅพช็Žฏ (Python)
  • ๅทฅๅ…ท่ฐƒ็”จ๏ผš OpenAI function-calling API + ๆ–‡ๆœฌ่งฃๆž fallback
  • ๅฎนๅ™จๅŒ–๏ผš Docker (ubuntu:22.04)
  • ๆŠฅๅ‘Šๆ ผๅผ๏ผš SARIF v2.1.0 โ†’ JSON โ†’ Markdown

ๅ‚่€ƒๆ–‡็Œฎ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors