Skip to content

About

Read HWP and safely create, edit, validate, and preview HWPX documents with Codex.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Gpt_Codex_HWP ํ”ฝ์…€์•„ํŠธ ๋ฐฐ๋„ˆ

Gpt_Codex_HWP

Codex์™€ Claude Code์—์„œ ํ•œ๊ธ€ HWP๋ฅผ ์ฝ๊ณ , ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ HWPX๋ฅผ ๋งŒ๋“œ๋Š” ๋กœ์ปฌ ๋ฌธ์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ

CI Security Version v0.3.5 Node.js 22 ์ด์ƒ Apache-2.0 ๋ผ์ด์„ ์Šค

ํ•œ๊ตญ์–ด ยท English ยท ๊ฒฐ๊ณผ ๋ณด๊ธฐ ยท ๋น ๋ฅธ ์„ค์น˜ ยท Claude Code ยท ์ง€์› ๋ฒ”์œ„ ยท ๋ณด์•ˆ

๊ฐœ์š”

Gpt_Codex_HWP๋Š” Codex์™€ Claude Code์—์„œ ํ•œ๊ตญ์–ด HWP/HWPX ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ , ๋งŒ๋“ค๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ๊ฒ€์ฆํ•˜๊ณ , ๋ฏธ๋ฆฌ ๋ณด๋Š” ๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. HWPX๋ฅผ ์ •์‹ ์“ฐ๊ธฐ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ์กด HWPX์˜ ์›์‹œ ZIP/XML ๊ตฌ์กฐ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ HWP๋Š” ํ˜•์‹ ๊ฐ์ง€ยท์ฝ๊ธฐยท๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ „์šฉ์ด๋ฉฐ, ์ฝ์€ ๋‚ด์šฉ์€ ์ƒˆ HWPX๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

v0.3.5 ์›๋ณธ ์‹คํŒจ ๋ณด์กดยท๋ฆด๋ฆฌ์Šค ๊ฒ€์ฆ

ํ”Œ๋Ÿฌ๊ทธ์ธ identity๋Š” 0.3.5+codex.20261021184753, Claude Code ์บ์‹œ๋Š” 0.3.5-codex.20261021184753์ž…๋‹ˆ๋‹ค. identity ์ž์ฒด๋Š” ๊ฒŒ์‹œ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์น˜ ์ „์— v0.3.5 ๋ฆด๋ฆฌ์ฆˆ์˜ ์ •ํ™•ํ•œ ๋ถˆ๋ณ€ ํƒœ๊ทธ SHA, ์ž์ฒด ์ „์ฒด ํƒœ๊ทธ ๊ฒŒ์ดํŠธยท๋™์ผ ์‹คํ–‰ attestation ์„ฑ๊ณต๊ณผ ์›๋ณธ ZIPยทSPDXยทprovenanceยทSHA256SUMS 4๊ฐœ ๊ณต๊ฐœ ์ž์‚ฐ์„ ์‹ค์ œ๋กœ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

v0.3.4 ์›๋ณธ ์ „์ฒด ํƒœ๊ทธ ๊ฒŒ์ดํŠธ๋Š” ์ดˆ๊ธฐ 10 MiB smoke๋ฅผ ํ†ต๊ณผํ•œ ๋’ค node-tests์˜ replacement-ref ์ˆจ๊ฒจ์ง„ ๋น„๊ณต๊ฐœ ํŠธ๋ฆฌ ๋ณด์•ˆ ์‚ฌ๋ก€์—์„œ WINDOWS_REPOSITORY_TEST_CASE case=pc17 status=failed๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ์‚ฐ์ถœ๋ฌผยทattestationยทRelease๋Š” ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ›„์† ๊ณ„์ธก ์ „์ฒด ํŒŒ์ผ Windows ์ง„๋‹จ์€ ๋ชจ๋“  replacement ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•˜๊ณ  historyFailures๊ฐ€ ์—†์—ˆ์ง€๋งŒ, ์›๋ณธ ๊ฒŒ์ดํŠธ ๋ณต๊ตฌ๋‚˜ ์›์ธ ์ฆ๋ช…์€ ์•„๋‹™๋‹ˆ๋‹ค. ์›๋ณธ์˜ ์ •ํ™•ํ•œ ์›์ธ์€ ์—ฌ์ „ํžˆ ๋ฏธํ™•์ •์ด๋ฉฐ ๊ณผ๊ฑฐ ํƒœ๊ทธ์™€ ์‹คํ–‰์€ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค.

v0.3.5๋Š” ์„ค์ • ์ฝ”๋“œ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ๋’ค์ชฝ ์˜ค๋ฅ˜ ๋Œ€์‹  ์‹ค์ œ TAP ์ˆœ์„œ์˜ ์ฒซ allowlisted ์˜ค๋ฅ˜๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ž์‹ ํšŒ๊ท€ ๊ฒ€์‚ฌ๋Š” ์ˆ˜์ • ์ „ ์‹คํŒจยท์ˆ˜์ • ํ›„ ํ†ต๊ณผํ–ˆ๊ณ , ์‹คํŒจํ•œ ์ž์‹ยทํŒŒ์ผ ์ƒํƒœ๋Š” ๊ณ„์† ์‹คํŒจ์ž…๋‹ˆ๋‹ค. history scanner์˜ ๊ธฐ์กด ์—„๊ฒฉํ•œ ํ”„๋กœ์„ธ์Šค ์‹คํŒจ observer๋ฅผ bounded batch๋กœ ์ „๋‹ฌํ•˜๋ฉฐ, pc17์˜ ๋ณด์•ˆ ๋ฐœ๊ฒฌ ๋‘ assertion๊ณผ ์›๋ณธ ์˜ˆ์™ธ cause๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ์ œํ•œ๋œ pc17-replace-scan ๋‹จ๊ณ„ ๋˜๋Š” ๊ธฐ์กด ์•ˆ์ „ํ•œ ํ”„๋กœ์„ธ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ Git cat-file ๋ช…๋ น ์‹คํŒจ smoke๋Š” ์ „ํ›„ ๋ชจ๋‘ exit 1์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ฑฐ์นœ pc17 ๋Œ€์‹  pc17-replace-scan์„ ๋ณด์กดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฆ๊ฑฐ ์œ ์‹ค ์ˆ˜์ •์ด์ง€ ์›๋ณธ native/pc17 ์›์ธ ์ˆ˜์ •์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์ˆ˜์ง‘๊ธฐยท๊ถŒํ•œยทidentity/RSSยท์ž‘์—…๋Ÿ‰ยท์‹คํ–‰/์บก์ฒ˜/์ •๋ฆฌ ์ œํ•œ๊ณผ ์‹คํŒจ ์ƒํƒœ๋Š” ๊ทธ๋Œ€๋กœ์ด๋ฉฐ native/RSS/์ •๋ฆฌ ์ฆ๊ฑฐ๋ฅผ ํ•ฉ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

v0.3.3์˜ Linux reparenting ์ˆ˜์ •๋„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ ๋ถ€๋ชจ ๋ณ€๊ฒฝ์€ identity ๋ณ€๊ฒฝ์ด ์•„๋‹ˆ๋ฉฐ ๊ฐ™์€ PIDยทํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃนยท์‹œ์ž‘ ์‹œ๊ฐ์˜ ์‹ค์ œ RSS๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃนยท์‹œ์ž‘ identity ๋ณ€๊ฒฝ๊ณผ RSS ๋ˆ„๋ฝ์€ ๊ณ„์† ๊ฑฐ๋ถ€ํ•˜๊ณ  ์ธก์ • ํšŸ์ˆ˜ยท๊ฐ„๊ฒฉยทํƒ€์ž„์•„์›ƒยท๋…๋ฆฝ์ ์ธ ๊ทธ๋ฃน ์ •๋ฆฌ ์ฆ๋ช…์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ Linux reparenting์˜ ์ˆ˜์ • ์ „ ๊ฑฐ๋ถ€ยท์ˆ˜์ • ํ›„ ์‹ค์ œ RSS ์ผ์น˜๋Š” ๊ณผ๊ฑฐ ๊ฐœ๋ณ„ CI ์‹คํŒจ์˜ ์›์ธ์„ ์ฆ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต MCP ๋„๊ตฌ ์ด๋ฆ„ literal๊ณผ ๋‹จ์ˆœ not-throw wrapper ๋Œ€์‹  ์‹ค์ œ ์ดˆ๊ธฐํ™” ์„œ๋ฒ„์˜ canonical ์ „์ฒด schema catalogยท๋ฒ„์ „ยทstderr ๊ฒ€์‚ฌ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค ์ƒ์„ฑ๊ธฐยท๊ฒ€์ฆ๊ธฐยทํ”Œ๋žซํผ ์˜์ˆ˜์ฆ์€ ํŒŒ์ผ๋ณ„ Git subprocess ๋Œ€์‹  ๊ธฐ์กด bounded blob batch ๊ทœ์•ฝ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ํ…Œ์ŠคํŠธ ์ œํ•œ ์ดˆ๊ณผ ๋•Œ ์ด๋ฏธ ์ˆ˜์ง‘ํ•œ TAP ์ง„ํ–‰๊ณผ exit/close ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€๋งŒ, TAP ํ†ต๊ณผ๋‚˜ ์ •๋ฆฌ ๋„๊ตฌ์˜ ๋ฐ˜ํ™˜๊ฐ’๋งŒ์œผ๋กœ ์ œํ•œ ์ดˆ๊ณผยท์ •๋ฆฌ ์‹คํŒจ๋ฅผ ์„ฑ๊ณต ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œํ•œ๊ณผ ๋น„๊ณต๊ฐœ ๋‚ด์šฉ ๋น„๋…ธ์ถœ ์กฐ๊ฑด์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

v0.3.1 ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ

v0.3.1์€ ์†Œ์Šค์™€ ์ƒ์„ฑ ๋Ÿฐํƒ€์ž„์˜ markdown-it์„ 14.3.1์—์„œ 14.3.3์œผ๋กœ ๊ฐฑ์‹ ํ•ด GHSA-gfr2-rv44-r23c, GHSA-r7fv-28h4-cvq7, GHSA-vfgh-jcmw-g37q์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด 14.x API์™€ ํŒŒ์„œ ์˜ต์…˜์„ ์œ ์ง€ํ•˜๋ฉฐ ์ƒˆ ๊ธฐ๋Šฅ, PDF ์ง€์›์ด๋‚˜ MCP ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ identity๋Š” 0.3.1+codex.20261021043114, Claude Code ์บ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” 0.3.1-codex.20261021043114์ž…๋‹ˆ๋‹ค. ๊ฒŒ์‹œ์—๋Š” ๋ถˆ๋ณ€ ํƒœ๊ทธ์˜ ์ „์ฒด ๋ฆด๋ฆฌ์ฆˆ ๊ฒŒ์ดํŠธ์™€ attestation ์„ฑ๊ณต์ด ํ•„์š”ํ•˜๋ฉฐ, ์‹ค์ œ ๊ฒ€์ฆยท๊ฒŒ์‹œ ์ƒํƒœ๋Š” GitHub ๋ฆด๋ฆฌ์ฆˆ์™€ ์—ฐ๊ฒฐ๋œ ์›Œํฌํ”Œ๋กœ์—์„œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

v0.3.0 ๋ฆด๋ฆฌ์ฆˆ

v0.3.0์€ ๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ Codex์™€ Claude Code์—์„œ ํ•จ๊ป˜ ์“ฐ๋„๋ก ์ง€์›์„ ๋„“ํ˜”์Šต๋‹ˆ๋‹ค. CI ๊ฒ€์ฆ ๋ฌธ์„œ ํฌ๊ธฐ๋ฅผ 10 MiB๋กœ ๋‚ฎ์ถ”๊ณ , ๊ณต๋ฌธ์„œ ์ดˆ์•ˆ์„ ์ ๊ฒ€ํ•˜๋Š” ์„ ํƒ ํ”Œ๋Ÿฌ๊ทธ์ธ korean-official-doc์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ, ๋‹จ์–ด ์•ˆ ๋ฐ‘์ค„์ด ์‚ฌ๋ผ์ง€๋˜ HWPX ์ƒ์„ฑ ๋ฌธ์ œ์™€ ๊ฒฝ๋กœยท์“ฐ๊ธฐ ์‹คํŒจ ์ฒ˜๋ฆฌ๋ฅผ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค. UNC ๊ฒฝ๋กœ ๊ฑฐ๋ถ€, Python 3.10 ์š”๊ตฌ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์˜ค๋ฅ˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ 0.2.x์—์„œ ๋ฐ”๋€ ๋™์ž‘์€ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ์— ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. HWP ์ฝ๊ธฐ ์ „์šฉยทHWPX ์“ฐ๊ธฐ ์ •์ฑ…, ๋ช…์‹œ์  ๋Ÿฐํƒ€์ž„ ์„ค์น˜์™€ one-shot ๋„๊ตฌ 9๊ฐœ๋Š” ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ๊ณผ ์‹ค์ œ ๋ฌธ์„œ ๊ฒ€์ฆ์€ Windows x64์—์„œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŒ… CI(Windows x64ยทmacOS arm64ยทLinux lifecycle)๋Š” v0.3.0 ๋ฆด๋ฆฌ์Šค PR ์ปค๋ฐ‹ ๊ธฐ์ค€ ๊ธฐ๋ก์ด๋ฉฐ, ๊ทธ ์ดํ›„ HEAD์˜ macOS ๊ฒฐ๊ณผ๋Š” ํ•ด๋‹น ์ปค๋ฐ‹์˜ ์˜์ˆ˜์ฆ์œผ๋กœ ๋”ฐ๋กœ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ Mac ๊ธฐ๊ธฐ์˜ Codex DesktopยทClaude Codeยทํ•œ์ปด์˜คํ”ผ์Šค ํ•œ๊ธ€์€ ์•„์ง ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋ฆด๋ฆฌ์ฆˆ

v0.3.5 ์ด์ „ ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค๋Š” ์ตœ์‹  ์ˆœ์œผ๋กœ v0.3.1, v0.3.0, v0.2.7, v0.2.5์ž…๋‹ˆ๋‹ค. v0.2.7์€ ์˜์กด์„ฑ ๊ฐ์‚ฌ ์ด์Šˆ #18์˜ ํŒจํ‚ค์ง€๋ฅผ ๊ฐฑ์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. v0.3.4, v0.3.3, v0.3.2, v0.2.3, v0.2.4, v0.2.6์€ ๋ถˆ๋ณ€ ๋ฏธ๊ฒŒ์‹œ ํƒœ๊ทธ์ด๋ฉฐ GitHub Release์™€ ๊ณต๊ฐœ Release ์ž์‚ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. v0.3.3 ์›๋ณธ main native ์‹คํ–‰์€ windows-helper-sampling, ํƒœ๊ทธ full node ์‹คํ–‰์€ mcp-smoke์—์„œ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์›์ธ์€ ์•Œ ์ˆ˜ ์—†๊ณ  ํ›„์† nativeยท๋ณ€๊ฒฝ ์—†๋Š” MCP ์„ฑ๊ณต์€ ์›๋ณธ ์‹คํŒจ๋ฅผ ๋ณต๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํŒจ ํƒœ๊ทธ์™€ ์›๋ณธ ์‹คํ–‰์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. v0.2.2๋Š” HWP ์ฝ๊ธฐ ์ „์šฉยทHWPX ์“ฐ๊ธฐ, ๊ธฐ๋ณธ one-shot ์‹คํ–‰๊ณผ 100 MiB CI ๊ฒ€์ฆ ๋ฒ”์œ„๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ด๋ ฅ์€ CHANGELOG์™€ ํ•œ๊ตญ์–ด ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

  • Markdown์—์„œ ๋ณด๊ณ ์„œ, ๊ณ„ํš์„œ, ๊ณต๋ฌธ์„œ, ํšŒ์˜๋ก ๋“ฑ์˜ HWPX ์ƒ์„ฑ
  • ๊ธฐ์กด HWPX์˜ ๊ตฌ์กฐ ๋ณด์กด ํ…์ŠคํŠธ ํŒจ์น˜์™€ ๋ผ๋ฒจ ๊ธฐ๋ฐ˜ ์–‘์‹ ์ฑ„์šฐ๊ธฐ
  • ์•ˆ์ „ํ•œ SVG/PNG ์ž์‚ฐ ์ƒ์„ฑ๊ณผ HWPX ์ด๋ฏธ์ง€ ์‚ฝ์ž…
  • HWP/HWPX ํ˜•์‹ ๊ฐ์ง€, Markdown ์ฝ๊ธฐ, ๊ตฌ์กฐ/๊ธ€๊ผด ์ฐธ์กฐ ๊ฒ€์ฆ, SVG ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ๋ณดํ˜ธ ๋ฌธ์„œ ๊ฑฐ๋ถ€, ์ถœ๋ ฅ ๋ฎ์–ด์“ฐ๊ธฐ ๋ฐฉ์ง€, ๊ฒฝ๋กœ/ZIP ์ˆœํšŒ ๋ฐฉ์–ด
  • ๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์„œ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ํŒŒ์‹ฑํ•ด UTF-8 Markdown์œผ๋กœ ์ €์žฅํ•œ ๋’ค ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„ํ•  ์ฝ๊ธฐ

์‹ค์ œ HWPX ๊ฒฐ๊ณผ

์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” README ๊ณต๊ฐœ์šฉ ํ•ฉ์„ฑ Markdown์„ hwp_generate_hwpx์˜ report ํ”„๋ฆฌ์…‹์œผ๋กœ HWPX์— ์ž‘์„ฑํ•˜๊ณ , ๊ตฌ์กฐ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ๋ฌธ์„œ๋ฅผ SVG๋กœ ๋ฏธ๋ฆฌ ๋ณธ ๋’ค PNG๋กœ ๋ Œ๋”๋งํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ •๋ณด, ์‚ฌ์šฉ์ž ๋ฌธ์„œ, ์™ธ๋ถ€ ๋ฌธ์„œ ๋‚ด์šฉ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Gpt Codex HWP๊ฐ€ ์ƒ์„ฑํ•œ ํ•œ๊ธ€ HWPX ๊ธฐ๋Šฅ ์†Œ๊ฐœ ๋ณด๊ณ ์„œ ์˜ˆ์‹œ

์‹ค์ œ ์ƒ์„ฑ ๊ฒฐ๊ณผ ยท 1์ชฝ ยท ํ‘œ 1๊ฐœ ยท ๊ฒ€์ฆ ๋ฌธ์ œ 0๊ฐœ ยท ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฒฝ๊ณ  0๊ฐœ

ํ˜•์‹ ์ง€์›

ํ˜•์‹ ์ง€์› ๋ฒ”์œ„
HWPX ์ฝ๊ธฐ, ์ƒ์„ฑ, ๊ตฌ์กฐ ๋ณด์กด ํŒจ์น˜, ์–‘์‹ ์ฑ„์šฐ๊ธฐ, ์ด๋ฏธ์ง€ ์‚ฝ์ž…, ๊ฒ€์ฆ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ
HWP 5.x ํ˜•์‹ ๊ฐ์ง€, ์ฝ๊ธฐ, ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋งŒ ์ง€์›. ์ฝ์€ ๋‚ด์šฉ์€ ์ƒˆ HWPX๋กœ ์ €์žฅ
HWP 3.x ์‹ค์ œ fixture ๊ฒ€์ฆ์ด ์—†์–ด ์ง€์›์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
PDF, DOCX, XLSX ๋“ฑ ์ง€์›ํ•˜์ง€ ์•Š์Œ. hwp_read๋Š” Kordoc ํŒŒ์‹ฑ ์ „์— ๊ฑฐ๋ถ€

HWPX๋Š” ์ด ํ”„๋กœ์ ํŠธ์˜ ์ •์‹ ์ž‘์„ฑ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ HWP๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋จผ์ € hwp_read๋กœ ์ฝ๊ณ , ํ•„์š”ํ•œ ๋‚ด์šฉ์„ Markdown์œผ๋กœ ์ •๋ฆฌํ•œ ๋‹ค์Œ hwp_generate_hwpx๋กœ ์ƒˆ๋กœ์šด HWPX ๊ฒฝ๋กœ์— ์ €์žฅํ•˜์‹ญ์‹œ์˜ค.

์š”๊ตฌ ์‚ฌํ•ญ

  • Node.js 22 ์ด์ƒ
  • Windows x64 ๋˜๋Š” macOS Apple Silicon
  • after-paragraph ์ด๋ฏธ์ง€ ์‚ฝ์ž…์—๋Š” ํ‘œ์ค€ ์œ„์น˜์— ์„ค์น˜๋œ Python 3.10 ์ด์ƒ. PATH๋Š” ํƒ์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Windows๋Š” %SystemRoot%\py.exe ๋˜๋Š” ์‚ฌ์šฉ์ž ์„ค์น˜ %LOCALAPPDATA%\Programs\Python\Launcher\py.exe, macOS๋Š” /opt/homebrew/bin/python3, /usr/local/bin/python3, Command Line Tools์˜ python3 ์ˆœ, Linux๋Š” /usr/bin/python3, /usr/local/bin/python3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • macOS์—์„œ๋Š” ๋ฌธ์„œ ์ฒ˜๋ฆฌ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ๋…์—๋„ Python์„ ์”๋‹ˆ๋‹ค. ๊ทธ๋ฆผ ์‚ฝ์ž…(๋‘ ๋ชจ๋“œ ๋ชจ๋‘)๊ณผ 64 MiB๋ฅผ ๋„˜๋Š” ๋ฌธ์„œ์—๋Š” python3๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์šฉ๋„์—๋Š” Xcode Command Line Tools(xcode-select --install)์˜ python3๋กœ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, after-paragraph ์‚ฝ์ž…์—๋Š” 3.10 ์ด์ƒ(์˜ˆ: Homebrew python3)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ helper๋Š” ์‹ ๋ขฐ ๊ฒฝ๋กœ ์ค‘ 3.10 ์ด์ƒ์ธ ์ฒซ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์“ฐ๋ฉฐ doctor๋„ ๊ฐ™์€ ๊ธฐ์ค€์œผ๋กœ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด /usr/bin/python3๊ฐ€ ์„ค์น˜ ์•ˆ๋‚ด ์ฐฝ์„ ๋„์šฐ๊ณ  ํ•ด๋‹น ์ž‘์—…์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Codex ๋˜๋Š” Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ

Python์ด ์—†์œผ๋ฉด Python ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์‚ฝ์ž… ๋ชจ๋“œ๋งŒ PYTHON_NOT_FOUND๋กœ ์‹คํŒจํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋„๊ตฌ๋Š” ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

v0.1.4 ๋ฐฐํฌ ์ „ ์ฃผ์š” ๋ณด์™„ ์‚ฌํ•ญ

Gpt_Codex_HWP๋Š” Kordoc, rhwp, hwpx-editing-skill๊ณผ ์—ฌ๋Ÿฌ ๊ณต๊ฐœ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ†ตํ•ฉยท์ ์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ™•์ธํ•œ ๋ฌธ์„œ ์ฒ˜๋ฆฌ ๊ฒฝ๊ณ„ ๋ฌธ์ œ๋ฅผ ์ฒซ ๋ฐฐํฌ ์ „์— ๋ณด์™„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด๋‹น ์›๋ณธ ํ”„๋กœ์ ํŠธ๋“ค์— ๋™์ผํ•œ ๋ฒ„๊ทธ๋‚˜ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜ ์ž‘์—…์„ ๊ณต๊ฐœํ•œ ๋ชจ๋“  ์œ ์ง€๊ด€๋ฆฌ์ž์™€ ๊ธฐ์—ฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • HWPX๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๊ธฐ ์ „์— ZIP ์ค‘์•™ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์‹ค์ œ ํ•ญ๋ชฉ ์ˆ˜์™€ ํฌ๊ธฐ ์˜ˆ์‚ฐ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€์†Œ๋ฌธ์ž๋งŒ ๋‹ค๋ฅธ ๋ณดํ˜ธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ค‘๋ณต์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  UTF-8ยทUTF-16 ๋ณดํ˜ธ ์„ค์ •์„ ์ผ๊ด€๋˜๊ฒŒ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์„œยท์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์™€ ์‹ค์ œ ์ตœ์ข… MCP ์‘๋‹ต์— ํฌ๊ธฐ ์ œํ•œ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜์ • ๊ฒฐ๊ณผ๋ฅผ ์˜๋ฏธ ๋‹จ์œ„๋กœ ์žฌ๊ฒ€์ฆํ•˜๊ณ  Python ์•ต์ปค ํƒ์ƒ‰์€ ์ „์ฒด ์ผ์น˜ ๋ชฉ๋ก์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์ˆœ์ฐจ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฐœ ๋ฐฐํฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ๊ฐœ์ธ ์‹๋ณ„ ํ”์ ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Kordoc 3.18.1 ๊ณต์‹ ์•„์นด์ด๋ธŒ๋ฅผ ๊ณ ์ • SHA-512๋กœ ์ธ์ฆํ•˜๊ณ  ํ•„์š”ํ•œ Core๋งŒ ํฌํ•จํ•ด ์†Œ์Šค๋งต๊ณผ ์„ ํƒ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณต๊ฐœ ๋ฐฐํฌ๋ฌผ์„ ํŒจํ‚นํ•˜๊ธฐ ์ „์— ๊ฐœ์ธ์ •๋ณด ๊ฒฝ๋กœ, ๊ฐœ์ธํ‚ค, ์‹ค์ œ ์ž๊ฒฉ์ฆ๋ช…, .env, ํ…Œ์ŠคํŠธยท์‚ฌ์šฉ์ž ๋ฌธ์„œ๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์ฐธ๊ณ  ๋ฒ”์œ„, ๊ณ ์ • ๋ฒ„์ „, ์ €์ž‘๊ถŒ๊ณผ ๋ผ์ด์„ ์Šค๋Š” THIRD_PARTY_NOTICES.md๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ฐœ๋ฐœ ๋ฐ ํ”Œ๋žซํผ ๊ฒ€์ฆ ์ƒํƒœ

์ด ํ”„๋กœ์ ํŠธ๋Š” ์ฃผ๋กœ Windows x64์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ค์ œ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. v0.3.1์˜ ๊ฒ€ํ†  commit 4180a8d35e01aa95205a39c60ae9686486f6f9cb์—์„œ Windows x64ยทmacOS arm64ยทLinux CI๊ฐ€ ํ†ต๊ณผํ•œ ๊ธฐ๋ก์€ ๊ทธ SHA์— ํ•œ์ •๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ํŒจ์น˜๋Š” ๊ฐ๊ฐ์˜ ์‹ค์ œ CIยทํƒœ๊ทธยท๋ฆด๋ฆฌ์ฆˆ ์ฆ๊ฑฐ๋กœ ํŒ๋‹จํ•˜์‹ญ์‹œ์˜ค. ํ˜ธ์ŠคํŒ… macOS๋Š” ์‹ค์ œ Mac์˜ Codex DesktopยทClaude Codeยทํ•œ์ปด์˜คํ”ผ์Šค ํ•œ๊ธ€ ์‚ฌ์šฉ ๊ฒ€์ฆ์ด ์•„๋‹ˆ๋ฉฐ, macOS ์™„์ „ ์ง€์›์„ ์ฃผ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค๋ณ„ ํ…Œ์ŠคํŠธยท๊ฐ์‚ฌ ๊ฒฐ๊ณผ๋Š” ๊ฐ GitHub ๋ฆด๋ฆฌ์ฆˆ์˜ ๋…ธํŠธ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

v0.3.5 GitHub ์„ค์น˜

์•„๋ž˜ ๋ช…๋ น์€ ๊ฒŒ์‹œ ํ™•์ธ ํ›„ ์‚ฌ์šฉํ•  v0.3.5 ๊ณ ์ • ๋ช…๋ น์ด๋ฉฐ ๊ฒŒ์‹œ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋จผ์ € ํ•ด๋‹น GitHub ๋ฆด๋ฆฌ์ฆˆ์˜ ์ •ํ™•ํ•œ ๋ถˆ๋ณ€ ํƒœ๊ทธ SHA, ์ž์ฒด ์ „์ฒด ํƒœ๊ทธ ๊ฒŒ์ดํŠธยท๋™์ผ ์‹คํ–‰ attestation ์„ฑ๊ณต๊ณผ ์›๋ณธ ZIPยทSPDXยทprovenanceยทSHA256SUMS 4๊ฐœ ๊ณต๊ฐœ ์ž์‚ฐ์„ ์‹ค์ œ๋กœ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์†Œ์Šค ๋ณ€๊ฒฝยทidentity ๋ฌธ์ž์—ด์ด๋‚˜ ์ด์ „ ๋ฒ„์ „์˜ CI ํ†ต๊ณผ๋งŒ์œผ๋กœ ๊ฒŒ์‹œ๋ฅผ ์ถ”์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๋ฅผ ํ™•์ธํ•œ ๋’ค ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธยท์บ์‹œ identity๋กœ ์žฌ์„ค์น˜ํ•˜๊ณ , ์บ์‹œ ๊ฒ€์ฆยท๋Ÿฐํƒ€์ž„ ๋ช…์‹œ์  ์„ค์น˜ยทdoctorยทํ˜ธ์ŠคํŠธ ์žฌ์‹œ์ž‘ยท๋ฌธ์„œ ์ž‘์—…์„ ๊ฒ€์ฆํ•˜์‹ญ์‹œ์˜ค. ์„ฑ๊ณตํ•˜๊ธฐ ์ „์—๋Š” ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ธฐ์กด ์„ค์น˜์˜ ํƒœ๊ทธ ๋ณ€๊ฒฝ

์‹คํ–‰ ์ค‘์ธ Codex ํ˜ธ์ŠคํŠธ๋ฅผ ๋จผ์ € ๋‹ซ์œผ์‹ญ์‹œ์˜ค. ๊ธฐ์กด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ v0.3.1์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ref์— ๊ณ ์ •๋ผ ์žˆ์œผ๋ฉด marketplace add --ref v0.3.5๋งŒ์œผ๋กœ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  already added from a different source ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. marketplace upgrade๋„ ๋“ฑ๋ก๋œ ref๋ฅผ ์ƒˆ๋กœ ์ฝ์„ ๋ฟ ํƒœ๊ทธ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋“ฑ๋ก์„ ์ œ๊ฑฐํ•œ ๋’ค ์ƒˆ ํƒœ๊ทธ๋กœ ๋‹ค์‹œ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

codex plugin marketplace remove gpt-codex-hwp-local --json
codex plugin marketplace add Burntgogi/Gpt_Codex_HWP --ref v0.3.5 --json
$installed = codex plugin add gpt-codex-hwp@gpt-codex-hwp-local --json | ConvertFrom-Json

marketplace remove๋Š” ์†Œ์Šค ๋“ฑ๋ก ์ œ๊ฑฐ์ด๋ฉฐ plugin remove๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Codex CLI 0.162.1์˜ ๊ฒฉ๋ฆฌ Linux ํ”„๋กœํ•„์—์„œ ์†Œ์Šค ์ œ๊ฑฐยท์žฌ๋“ฑ๋ก ํ›„์—๋Š” ์ด์ „ ์บ์‹œ๊ฐ€ ๋‚จ์•˜์ง€๋งŒ, ์ƒˆ plugin add๋Š” ์ด์ „ ํ”Œ๋Ÿฌ๊ทธ์ธ ์บ์‹œ๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์˜ lockยท์„ค์น˜ ์˜์ˆ˜์ฆ์€ ๋ฐ”๋€Œ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด์ „ ์บ์‹œ๊ฐ€ ํ•ญ์ƒ ๋‚จ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ฐ˜ํ™˜๋œ ์ƒˆ JSON์„ ์•„๋ž˜ 4โ€“6๋‹จ๊ณ„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ฆํ•˜๊ณ , ์„ฑ๊ณต ์ „์—๋Š” ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ƒˆ ๋ฒ„์ „ ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด ํ˜ธ์ŠคํŠธ๋ฅผ ๋‹ซ๊ณ  ์œ„ ์„ธ ๋ช…๋ น์˜ ํƒœ๊ทธ๋ฅผ ์ง์ „ ๊ณต๊ฐœ v0.3.1๋กœ ๋ฐ”๊ฟ” ์บ์‹œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ JSON version์€ 0.3.1+codex.20261021043114์—ฌ์•ผ ํ•˜๋ฉฐ, ํ•ด๋‹น identity์˜ installedPath๋ฅผ ๊ฒ€์ฆํ•œ ๋’ค doctor์™€ ๋ฌธ์„œ ์ž‘์—…์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด์ „์˜ ๊ฒฉ๋ฆฌ v0.3.0 โ†’ v0.3.1 ๊ฒ€์ฆ์—์„œ๋Š” ๊ฐ™์€ ์†Œ์Šค ์žฌ๋“ฑ๋ก ๊ฒฝ๋กœ๋กœ ์ด์ „ ์บ์‹œ์™€ DOCTOR_OK๋ฅผ ๋Ÿฐํƒ€์ž„ ์žฌ์„ค์น˜ ์—†์ด ๋ณต๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. v0.3.1์€ markdown-it ๋ณด์•ˆ ํŒจ์น˜๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ v0.3.3์˜ Linux reparenting ์ˆ˜์ •์€ ์—†์œผ๋ฏ€๋กœ ์ž„์‹œ ๋ณต๊ตฌ์šฉ์œผ๋กœ๋งŒ ํŒ๋‹จํ•˜์‹ญ์‹œ์˜ค.

์‚ฌ์šฉ์ž๋Š” Codex ์—์ด์ „ํŠธ์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Burntgogi/Gpt_Codex_HWP์˜ v0.3.5 ์ž์ฒด ์ „์ฒด ๊ฒŒ์ดํŠธยท๋™์ผ ์‹คํ–‰ attestationยท์›๋ณธ 4๊ฐœ ๊ณต๊ฐœ ์ž์‚ฐ๊ณผ ๊ฒŒ์‹œ๊ฐ€ ํ™•์ธ๋˜๋ฉด ํƒœ๊ทธ๋ฅผ ๊ณ ์ •ํ•ด ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”. ์ด ์ ˆ์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด๊ณ  installedPath๋ฅผ ๊ฒ€์ฆํ•œ ๋’ค ๋ช…์‹œ์  ๋Ÿฐํƒ€์ž„ ์„ค์น˜๊ธฐ์™€ doctor๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  Codex CLI์™€ Desktop ํ˜ธ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ด๊ณ  /mcp์— ๊ธฐ๋ณธ gpt-codex-hwp๊ฐ€ ๋“ฑ๋ก๋˜์ง€ ์•Š๋Š”์ง€์™€ ๋ฌธ์„œ ์ž‘์—… ํ›„ one-shot ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”. ๊ฒ€์ฆ์ด ์„ฑ๊ณตํ•  ๋•Œ๊นŒ์ง€ ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์œ ์ง€ํ•˜์„ธ์š”.

  1. Git, Codex CLI, Node.js 22 ์ด์ƒ๊ณผ npm์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. after-paragraph ์ด๋ฏธ์ง€ ์‚ฝ์ž…์—๋งŒ Python 3.10 ์ด์ƒ์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. ์›€์ง์ด๋Š” main ๋Œ€์‹  ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ๋ฅผ ๊ณ ์ •ํ•ด ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
codex plugin marketplace add Burntgogi/Gpt_Codex_HWP --ref v0.3.5 --json

๋ฐ˜ํ™˜๋œ JSON์˜ marketplaceName์ด gpt-codex-hwp-local์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ์„ค์น˜ ๊ฒฐ๊ณผ๋ฅผ JSON์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
$installed = codex plugin add gpt-codex-hwp@gpt-codex-hwp-local --json | ConvertFrom-Json
$installedPath = [System.IO.Path]::GetFullPath([string]$installed.installedPath)
  1. ์„ค์น˜ JSON์˜ pluginId๊ฐ€ gpt-codex-hwp@gpt-codex-hwp-local์ด๊ณ  version์ด 0.3.5+codex.20261021184753์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. installedPath๊ฐ€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ด๊ณ  ์‹ค์ œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋ฉฐ, ๊ฒฝ๋กœ ๋์ด plugins/cache/gpt-codex-hwp-local/gpt-codex-hwp/<version> ๊ตฌ์กฐ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์—๋Š” .codex-plugin/plugin.json, runtime-manifest.json, package.json, package-lock.json, dist/install-runtime.js, dist/runtime-bootstrap.js, dist/doctor.js, dist/oneshot.js, dist/mcp.js, examples/oneshot-tool-schemas.json, examples/mcp-manual.json์ด ๋ชจ๋‘ ์žˆ์–ด์•ผ ํ•˜๊ณ , .codex-plugin/plugin.json์˜ skills๋Š” ./skills/์ด๋ฉฐ mcpServers ์†์„ฑ์€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JSON ๋ฌธ์ž์—ด์„ ๋ช…๋ น์œผ๋กœ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ƒ ๋ฐ–์˜ ๊ฒฝ๋กœ์—์„œ npm์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๊ฒ€์ฆํ•œ ์ •ํ™•ํ•œ ๊ฒฝ๋กœ์—์„œ ํ”Œ๋žซํผ ๋Ÿฐํƒ€์ž„์„ ์„ค์น˜ํ•˜๊ณ  ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค. Windows x64์—์„œ ์„ค์น˜๋œ ์šด์˜ ์˜์กด์„ฑ์€ 64 MiB ์ดํ•˜์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Push-Location -LiteralPath $installedPath
try {
  $runtime = node dist/install-runtime.js --json | ConvertFrom-Json
  if ($LASTEXITCODE -ne 0 -or $runtime.code -ne "RUNTIME_INSTALL_OK") { throw "runtime installation failed" }
  node dist/doctor.js --json
  if ($LASTEXITCODE -ne 0) { throw "doctor found a required failure" }
} finally {
  Pop-Location
}
  1. doctor๋Š” ์ง„๋‹จ ์ „์šฉ์ด๋ฉฐ ์„ค์น˜๋‚˜ ๋ณต๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  MCP ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. JSON์—๋Š” ์•ˆ์ „ํ•œ ์ƒํƒœ ์ฝ”๋“œ, ๋ถˆ๋ฆฌ์–ธ, ๋ฒ„์ „๊ณผ ๊ฐœ์ˆ˜๋งŒ ํฌํ•จ๋˜๋ฉฐ Pythonยทrhwpยท๊ณ ์ • ํ…Œ์ŠคํŠธ fixture ๊ฐ™์€ ์„ ํƒ ๊ธฐ๋Šฅ์˜ ๋ถ€์žฌ๋Š” ํ•„์ˆ˜ ์‹คํŒจ์™€ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  2. ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  Codex CLI์™€ Desktop ํ˜ธ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค. ์ƒˆ ์ž‘์—…๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์Šคํ‚ฌ์ด ๋ณด์ด๊ณ  /mcp์— gpt-codex-hwp๊ฐ€ ๊ธฐ๋ณธ ๋“ฑ๋ก๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. RUNTIME_NOT_INSTALLED๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฌธ์„œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋ง๊ณ  ๊ฒ€์ฆํ•œ ๊ฒฝ๋กœ์—์„œ ์„ค์น˜๊ธฐ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. HWP/HWPX ์ž‘์—… ํ•˜๋‚˜๊ฐ€ ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•œ ๋’ค one-shot ํ”„๋กœ์„ธ์Šค์™€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. worker-onlyยทchild-onlyยทmixed ์ข…๋ฃŒ ์˜์ˆ˜์ฆ๊ณผ ๊ฐ๋…๋œ ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์Šค ํŠธ๋ฆฌ 0๊ฐœ๊ฐ€ ๊ฒ€์ฆ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŒ…๊ณผ ์‹ค์ œ ๊ธฐ๊ธฐ์˜ ๊ฒ€์ฆ ๋ฒ”์œ„๋Š” ์œ„ ํ”Œ๋žซํผ ๊ฒ€์ฆ ์ƒํƒœ ์ ˆ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์‹คํŒจํ•˜๋ฉด ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ๋ง๊ณ  ์˜ค๋ฅ˜์™€ installedPath๋งŒ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ์‚ฌ์šฉ์ž ๋ฌธ์„œ ๋‚ด์šฉ์€ ๋ณด๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

v0.3.5 ์ž์ฒด ์ „์ฒด ๊ฒŒ์ดํŠธยท๋™์ผ ์‹คํ–‰ attestationยท์›๋ณธ 4๊ฐœ ๊ณต๊ฐœ ์ž์‚ฐ๊ณผ ๊ฒŒ์‹œ๋ฅผ ํ™•์ธํ•œ ๋’ค ๋‹ค์Œ ์—…๊ทธ๋ ˆ์ด๋“œ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค์‹ญ์‹œ์˜ค. ์ƒˆ identity๋Š” ์ด์ „ ๋Ÿฐํƒ€์ž„์„ ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด์ „ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์˜์กด์„ฑ๋งŒ ๊ฐฑ์‹ ํ•˜๋Š” ๊ฒƒ์€ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์กด ์„ค์น˜๋Š” ๋จผ์ € ์œ„ ์†Œ์Šค ์ œ๊ฑฐยท์žฌ๋“ฑ๋ก ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

  1. ํƒœ๊ทธ๋ฅผ ๊ณ ์ •ํ•œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
codex plugin marketplace add Burntgogi/Gpt_Codex_HWP --ref v0.3.5
  1. ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
codex plugin add gpt-codex-hwp@gpt-codex-hwp-local

์ด ๋ช…๋ น๋งŒ์œผ๋กœ ์šด์˜ ์˜์กด์„ฑ์ด ์ค€๋น„๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. version์ด 0.3.5+codex.20261021184753์ธ์ง€ ํ™•์ธํ•˜๊ณ  ๊ฒ€์ฆ๋œ installedPath์—์„œ node dist/install-runtime.js --json์„ ์‹คํ–‰ํ•ด RUNTIME_INSTALL_OK๋ฅผ ํ™•์ธํ•œ ๋’ค node dist/doctor.js --json์„ ์‹คํ–‰ํ•ด DOCTOR_OK๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

  1. ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  Codex CLI์™€ Desktop ํ˜ธ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค. ์ƒˆ ์ž‘์—…๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. gpt-codex-hwp@gpt-codex-hwp-local ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์Šคํ‚ฌ์€ ๋ณด์—ฌ์•ผ ํ•˜์ง€๋งŒ /mcp์— gpt-codex-hwp๊ฐ€ ๊ธฐ๋ณธ ๋“ฑ๋ก๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ๋กœ ๋ฌธ์„œ ์ž‘์—… ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•ด 1ํšŒ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. ์ƒˆ ์„ค์น˜ ๊ฒ€์ฆ์— ์„ฑ๊ณตํ•œ ๋’ค์—๋งŒ ๊ธฐ์กด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

codex plugin remove hwp-korean-docs@hwp-local
  1. ์ƒˆ ์„ค์น˜ ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์œ ์ง€ํ•˜๊ณ  ์œ„ ํƒœ๊ทธ ๋ณ€๊ฒฝ ์ ˆ์˜ ๋ณต๊ตฌ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ์˜ค๋ฅ˜์™€ ๊ฒ€์ฆํ•œ installedPath๋ฅผ ๋ณด๊ณ ํ•˜๊ณ , ์บ์‹œ๋ฅผ ๊ฐ•์ œ๋กœ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋ฒ„์ „ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋‚˜ ์ด์ „ ๋Ÿฐํƒ€์ž„ ์˜์กด์„ฑ์„ ์ˆ˜์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

Claude Code ์„ค์น˜

๊ฐ™์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋”๋ฅผ Claude Code์—์„œ๋„ ์”๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ๋ฃจํŠธ์˜ .claude-plugin/marketplace.json์ด plugins/gpt-codex-hwp๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ด๋ฆ„์€ Codex์™€ ๊ฐ™์€ gpt-codex-hwp-local์ž…๋‹ˆ๋‹ค. Claude Code ์ง€์›์€ v0.3.0๋ถ€ํ„ฐ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. v0.3.5 ์ž์ฒด ์ „์ฒด ๊ฒŒ์ดํŠธยท๋™์ผ ์‹คํ–‰ attestationยท์›๋ณธ 4๊ฐœ ๊ณต๊ฐœ ์ž์‚ฐ๊ณผ ๊ฒŒ์‹œ๋ฅผ ํ™•์ธํ•œ ๋’ค ์›€์ง์ด๋Š” main ๋Œ€์‹  #v0.3.5 ํƒœ๊ทธ๋ฅผ ๊ณ ์ •ํ•˜์‹ญ์‹œ์˜ค. ์ƒˆ ์บ์‹œยท๋ช…์‹œ์  ๋Ÿฐํƒ€์ž„ ์„ค์น˜ยทdoctor์™€ ๋ฌธ์„œ ์ž‘์—… ํ•˜๋‚˜๊ฐ€ ์„ฑ๊ณตํ•  ๋•Œ๊นŒ์ง€ ์ด์ „ ์ง€์† ๋Ÿฐํƒ€์ž„์„ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฒˆ ๋ฒ„์ „์˜ ์‹ค์ œ Claude Code GUI ์„ค์น˜ยท์‚ฌ์šฉ์€ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Claude Code ์„ธ์…˜ ์•ˆ์—์„œ:

/plugin marketplace add Burntgogi/Gpt_Codex_HWP#v0.3.5
/plugin install gpt-codex-hwp@gpt-codex-hwp-local

ํ„ฐ๋ฏธ๋„์—์„œ๋Š” claude plugin marketplace add Burntgogi/Gpt_Codex_HWP#v0.3.5์™€ claude plugin install gpt-codex-hwp@gpt-codex-hwp-local์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฒฝ๋กœ๋Š” ~/.claude/plugins/cache/gpt-codex-hwp-local/gpt-codex-hwp/<๋ฒ„์ „>์ž…๋‹ˆ๋‹ค. CLAUDE_CONFIG_DIR์„ ์“ฐ๋ฉด ~/.claude ๋Œ€์‹  ๊ทธ ๊ฒฝ๋กœ๊ฐ€ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „์ด 0.3.5+codex.20261021184753์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. Claude Code๋Š” ๋ฒ„์ „์˜ +๋ฅผ -๋กœ ๋ฐ”๊ฟ” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฏ€๋กœ ์ด๋ฒˆ ๋ฒ„์ „์˜ ์ด๋ฆ„์€ 0.3.5-codex.20261021184753์ด๋ฉฐ, ๋Ÿฐํƒ€์ž„์€ ์ด ๋ฐฐ์น˜๋ฅผ Claude Code ์„ค์น˜๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ทธ ๊ฒฝ๋กœ์—์„œ Codex์™€ ๊ฐ™์€ ๋ช…์‹œ์  ๋Ÿฐํƒ€์ž„ ์„ค์น˜๊ธฐ์™€ doctor๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
cd "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/plugins/cache/gpt-codex-hwp-local/gpt-codex-hwp/0.3.5-codex.20261021184753"
node dist/install-runtime.js --json   # code๊ฐ€ RUNTIME_INSTALL_OK์ธ์ง€ ํ™•์ธ
node dist/doctor.js --json            # code๊ฐ€ DOCTOR_OK์ธ์ง€ ํ™•์ธ

PowerShell์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. CLAUDE_CONFIG_DIR์„ ์“ฐ๋ฉด $env:USERPROFILE\.claude ๋Œ€์‹  ๊ทธ ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

Push-Location -LiteralPath "$env:USERPROFILE\.claude\plugins\cache\gpt-codex-hwp-local\gpt-codex-hwp\0.3.5-codex.20261021184753"
try {
  $runtime = node dist/install-runtime.js --json | ConvertFrom-Json
  if ($LASTEXITCODE -ne 0 -or $runtime.code -ne "RUNTIME_INSTALL_OK") { throw "runtime installation failed" }
  node dist/doctor.js --json
} finally { Pop-Location }
  1. ์šด์˜ ์˜์กด์„ฑ์€ ~/.claude/plugin-runtime-data/gpt-codex-hwp/<์ „์ฒด-ํ”Œ๋Ÿฌ๊ทธ์ธ-๋ฒ„์ „>/<platform>-<arch>-node<์ฃผ๋ฒ„์ „>์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Codex ๋Ÿฐํƒ€์ž„๊ณผ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. Claude Code ์„ธ์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋’ค /gpt-codex-hwp:gpt-codex-hwp ์Šคํ‚ฌ์ด ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ MCP ์„œ๋ฒ„๋Š” ๋“ฑ๋กํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์Šคํ‚ฌ์ด ์ž‘์—…๋งˆ๋‹ค dist/oneshot.js๋ฅผ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ณผ๊ฑฐ Claude Code ๊ฒฝ๋กœ๋Š” Windows x64์˜ ๊ฒฉ๋ฆฌ๋œ CLAUDE_CONFIG_DIR์—์„œ ๋Ÿฐํƒ€์ž„ ์„ค์น˜, doctor, HWPX ์ƒ์„ฑยท๊ฒ€์ฆยท์ฝ๊ธฐยท๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” v0.3.5์˜ ์„ค์น˜ยท๊ฒŒ์‹œยท๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ยท์‹ค์ œ Claude Code GUI ๊ฒ€์ฆ์„ ๋œปํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. macOS์˜ Claude Code ์‚ฌ์šฉ์€ ์•„์ง ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ์“ฐ๋ฉด ์ข‹์€ ์Šคํ‚ฌ (์„ ํƒ)

๋‹ค์Œ ์Šคํ‚ฌ์€ ํ•„์ˆ˜ ์˜์กด์„ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ Gpt_Codex_HWP์˜ ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋ฅผ ๋งก์€ ์—์ด์ „ํŠธ๋Š” ๋Ÿฐํƒ€์ž„ ์„ค์น˜๊ฐ€ ๋๋‚œ ๋’ค ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•œ ๋ฒˆ๋งŒ ๊ถŒํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ ์ €์žฅ์†Œ์˜ ์„ค์น˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ฑฐ์ ˆํ•˜๋ฉด ๋‹ค์‹œ ๋ฌป์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์Šคํ‚ฌ ์“ฐ์ž„์ƒˆ Codex Claude Code
AI Slop ํƒˆ๊ณก๊ธฐ HWPX๋กœ ๋งŒ๋“ค๊ธฐ ์ „ ํ•œ๊ตญ์–ด ์ดˆ์•ˆ์˜ AI ๋งํˆฌ์™€ ๊ณผ์ž‰ ์„ค๋ช…์„ ๋‹ค๋“ฌ์Šต๋‹ˆ๋‹ค. codex plugin marketplace add Burntgogi/ai-slop-thresher ํ›„ codex plugin add ai-slop-thresher@ai-slop-thresher /plugin marketplace add Burntgogi/ai-slop-thresher ํ›„ /plugin install ai-slop-thresher@ai-slop-thresher
kar-plain ์ฃผ์ œ๋ฅผ ๊ธ€, ๋‹ค์ด์–ด๊ทธ๋žจ, ์›น ํŽ˜์ด์ง€, ์˜์ƒ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์˜ ์„ค๋ช… ๋‹จ๋ฝ๊ณผ ๋„์‹ ์ดˆ์•ˆ์— ์”๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์˜ ์ˆ˜๋™ ์„ค์น˜(~/.agents/skills) ์•ˆ๋‚ด /plugin marketplace add Burntgogi/kar-plain ํ›„ /plugin install kar-plain@kar-plain
๊ณต๋ฌธ์„œ ์ž‘์„ฑ ๊ทœ์น™ (korean-official-doc) ๊ณต๋ฌธ์„œ Markdown ์ดˆ์•ˆ์˜ ๋‚ ์งœยท์‹œ๊ฐยท๊ธˆ์•ก ํ‘œ๊ธฐ, ํ•ญ๋ชฉ ๊ธฐํ˜ธ ์ˆœ์„œ, ๋ถ™์ž„, ใ€Œ๋ใ€ ํ‘œ์‹œ๋ฅผ ๋ฒ•๋ น ๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ณต๊ธฐ๊ด€ ๋ฌธ์„œ๋ฅผ ์“ฐ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ codex plugin add korean-official-doc@gpt-codex-hwp-local (v0.3.0 ์ด์ƒ ํƒœ๊ทธ) ๊ฐ™์€ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ /plugin install korean-official-doc@gpt-codex-hwp-local

๊ฐ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ์™€ ์„ค์น˜ ์•ˆ๋‚ด๋ฅผ ๋จผ์ € ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์œ„ ๋ช…๋ น์€ 2026-10-08 ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

์ง€์† ๋Ÿฐํƒ€์ž„ ์ €์žฅ๊ณผ ์ œ๊ฑฐ

v0.3.5๋Š” v0.3.0์˜ ์บ์‹œ ๋ฐ– ์ €์žฅ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ์˜์กด์„ฑ์€ ํ˜ธ์ŠคํŠธ ๊ด€๋ฆฌ ์บ์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ Codex์—์„œ๋Š” $CODEX_HOME/plugin-runtime-data/gpt-codex-hwp/<์ „์ฒด-ํ”Œ๋Ÿฌ๊ทธ์ธ-๋ฒ„์ „>/<platform>-<arch>-node<Node-์ฃผ๋ฒ„์ „>, Claude Code์—์„œ๋Š” <CLAUDE_CONFIG_DIR ๋˜๋Š” ~/.claude>/plugin-runtime-data/gpt-codex-hwp/...์˜ ๊ฐ™์€ ๊ตฌ์กฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‘ ์ง€์† ๋Ÿฐํƒ€์ž„ ๊ฒฝ๋กœ์˜ ์ „์ฒด ๋ฒ„์ „์€ 0.3.5+codex.20261021184753์ด๋ฉฐ, Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ ์บ์‹œ์—์„œ๋งŒ +๋ฅผ -๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Windows x64์˜ Node.js 22 ๋Ÿฐํƒ€์ž„ ํ‚ค๋Š” win32-x64-node22์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ Codex ํ”„๋กœํ•„์—์„œ๋„ Node ์ฃผ๋ฒ„์ „๋ณ„ ๋Ÿฐํƒ€์ž„์€ ์„œ๋กœ ๊ต์ฒดํ•˜์ง€ ์•Š๊ณ  ๊ณต์กดํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ํฌ๊ธฐ๋Š” ํ”Œ๋žซํผ๊ณผ npm์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋กœ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ ๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ œ๊ฑฐ๊ฐ€ ์ด ์บ์‹œ ๋ฐ–์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ง€์šด๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ •๋ฆฌํ•  ๋•Œ๋Š” ๋ชจ๋“  Codex CLI์™€ Desktop ํ˜ธ์ŠคํŠธ, ๋˜๋Š” Claude Code ์„ธ์…˜์„ ์™„์ „ํžˆ ์ข…๋ฃŒํ•˜๊ณ , ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ •ํ™•ํ•œ <์ „์ฒด-ํ”Œ๋Ÿฌ๊ทธ์ธ-๋ฒ„์ „> ๋””๋ ‰ํ„ฐ๋ฆฌ๋งŒ ํ™•์ธํ•ด ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋“  Gpt_Codex_HWP ๋ฒ„์ „์„ ์ œ๊ฑฐํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ƒ์œ„ gpt-codex-hwp ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ๊ฒ€์ฆ๋œ installedPath์—์„œ node dist/install-runtime.js --json์„ ์‹คํ–‰ํ•ด ๋Ÿฐํƒ€์ž„์„ ์žฌ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ 1ํšŒ ์‹คํ–‰๊ณผ ์ˆ˜๋™ MCP ํ˜ธํ™˜

๊ธฐ๋ณธ ์„ค์น˜๋Š” ์Šคํ‚ฌ์ด ๊ฐ ์ž‘์—…๋งˆ๋‹ค dist/oneshot.js๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” Gpt_Codex_HWP ์ƒ์ฃผ Node ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๊ณ , ํ˜ธ์ถœ์€ ๊ธฐ์กด 9๊ฐœ ๋„๊ตฌ ๊ณ„์•ฝ ์ค‘ ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•œ ๋’ค ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญยท์‘๋‹ต JSON์€ ๋ฌธ์„œ ๋‚ด์šฉ์„ ๋ช…๋ น์ค„์— ์‹ฃ์ง€ ์•Š์œผ๋ฉฐ ์ƒˆ ์‘๋‹ต ํŒŒ์ผ๋งŒ ๋ฐฐํƒ€์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

dist/mcp.js์™€ npm start๋Š” ๊ธฐ์กด stdio MCP ํ˜ธํ™˜์„ ์œ„ํ•ด ๋‚จ์•„ ์žˆ์ง€๋งŒ ์ž๋™ ๋“ฑ๋ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ MCP๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž๋งŒ examples/mcp-manual.json์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณต์‚ฌยท๋“ฑ๋กํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ชจ๋“œ๋Š” Codex ์ž‘์—…์ด๋‚˜ ํ˜ธ์ŠคํŠธ๋งˆ๋‹ค ๋ณ„๋„์˜ Node ์„œ๋ฒ„๊ฐ€ ์ƒ์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ

๋„๊ตฌ ์šฉ๋„
hwp_detect_format ํŒŒ์ผ์˜ ์‹ค์ œ ๋ฌธ์„œ ํ˜•์‹๊ณผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
hwp_read HWP/HWPX๋ฅผ Markdown๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.
hwp_generate_hwpx Markdown์—์„œ ์ƒˆ HWPX๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
hwp_validate HWPX ๊ตฌ์กฐ์™€ ๊ธ€๊ผด ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
hwp_render_preview HWP/HWPX๋ฅผ SVG ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
hwp_patch_document ๊ธฐ์กด HWPX ๊ตฌ์กฐ๋ฅผ ๋ณด์กดํ•˜๋ฉฐ ํ…์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ HWP๋Š” HWP_READ_ONLY์ž…๋‹ˆ๋‹ค.
hwp_fill_form ๋ผ๋ฒจ ๊ธฐ๋ฐ˜ ์–‘์‹ ๊ฐ’์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฑ„์›๋‹ˆ๋‹ค.
hwp_create_svg_asset ์•ˆ์ „ํ•œ SVG์™€ PNG ์‹œ๊ฐ ์ž์‚ฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
hwp_insert_image ์•ต์ปค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ HWPX์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ

์ƒˆ ๋ฌธ์„œ๋Š” hwp_generate_hwpx๋กœ ๋งŒ๋“  ๋’ค hwp_detect_format, hwp_validate, hwp_read, hwp_render_preview ์ˆœ์„œ๋กœ ํ˜•์‹, ๊ตฌ์กฐ, ๋‚ด์šฉ, ๋ฐฐ์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด HWPX๋Š” ๋จผ์ € hwp_read๋กœ ์ฝ๊ณ  ๋ธ”๋ก ์ˆœ์„œ์™€ ํ‘œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•œ Markdown์œผ๋กœ hwp_patch_document๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ HWP๋Š” hwp_read๋กœ ์ฝ์€ ๋’ค hwp_generate_hwpx๋ฅผ ์‚ฌ์šฉํ•ด ์ƒˆ HWPX๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์–‘์‹์€ hwp_fill_form, ๊ทธ๋ฆผ์€ hwp_create_svg_asset๊ณผ hwp_insert_image๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ทธ๋ฆผ์€ after-paragraph, ์„œ๋ช…ยท๋„์žฅ์€ seal-anchor ๋ชจ๋“œ๊ฐ€ ์ ํ•ฉํ•˜๋ฉฐ ์•ต์ปค๊ฐ€ ์—†๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ์ž„์˜๋กœ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์„œ ์ฝ๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ํ•œ๊ธ€ ๋ฌธ์„œ๋Š” 1 MiB ์•ˆํŒŽ์ด๊ณ  10 MiB๋ฅผ ๋„˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 10 MiB ์ดํ•˜๋ฅผ ๊ธฐ๋ณธ ์ง€์› ๋ฒ”์œ„๋กœ ์ •ํ•˜๊ณ  PR CI, ์ฃผ๊ฐ„ Compatibility, ๋ฆด๋ฆฌ์Šค ๊ฒŒ์ดํŠธ์—์„œ ์ด ํฌ๊ธฐ๋งŒ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. 10 MiB ์ดˆ๊ณผ 512 MiB ์ดํ•˜๋Š” ์ด๋ก ์ƒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ์“ฐ์ง€๋งŒ ํฌ๊ธฐ๋ณ„๋กœ ์ผ์ผ์ด ๊ฒ€์ฆํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(best-effort). 512 MiB ์ดˆ๊ณผ ํŒŒ์ผ์€ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋น„์ •์ƒยท์†์ƒ ์•„์นด์ด๋ธŒ, ์••์ถ• ํ•ด์ œ ๋ฐ ์ž์› ์ •์ฑ…, ์„ ํƒ์  ํ—ˆ์šฉ ๋ฃจํŠธ ์ •์ฑ…์— ๋”ฐ๋ผ ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kordoc 3.18.1์€ ํ˜„์žฌ HWP/HWPX ์ „์ฒด ์••์ถ• ํ•ด์ œ๋Ÿ‰์„ 100 MiB, HWPX ํ•ญ๋ชฉ ์ˆ˜๋ฅผ 500๊ฐœ๋กœ ์ œํ•œํ•˜๋ฏ€๋กœ ๋” ์—„๊ฒฉํ•œ ์—”์ง„ ํ•œ๋„๊ฐ€ ๋จผ์ € ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ hwp_read๋Š” JavaScript ๋ฌธ์ž์—ด ๊ธธ์ด ๊ธฐ์ค€ Markdown 64,000์ž๊นŒ์ง€ ์ธ๋ผ์ธ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋” ํฐ ๊ฒฐ๊ณผ์—๋Š” ๊ธฐ์กด ํŒŒ์ผ์ด ์•„๋‹Œ ์ƒˆ .md ๊ฒฝ๋กœ๋ฅผ markdown_output_path๋กœ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์›๋ณธ์„ ํ•œ ๋ฒˆ๋งŒ ํŒŒ์‹ฑํ•˜๊ณ  ์ „์ฒด UTF-8 Markdown์„ ์ตœ๋Œ€ 256 MiB๊นŒ์ง€ ์ €์žฅํ•˜๋ฉฐ, ์‘๋‹ต์—๋Š” ์ฒ˜์Œ 64,000์ž์™€ ์ „์ฒด ํฌ๊ธฐยท์›๋ณธ ์ง€๋ฌธยท๊ถŒ์žฅ ๋ถ„ํ•  ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Codex๋Š” ํŒŒ์ƒ Markdown์„ ์•ฝ 64,000์ž ๋‹จ์œ„๋กœ ์ฝ์œผ๋ฏ€๋กœ ์›๋ณธ ๋ฌธ์„œ๋ฅผ ๋ฐ˜๋ณต ํŒŒ์‹ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ์ง๋ ฌํ™” MCP ๊ฒฐ๊ณผ์˜ ํ•˜๋“œ ์ƒํ•œ 8 MiB๋Š” ๋ณ„๋„๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์›๋ณธ ํŒŒ์ผ์ด 8 MiB๋ฅผ ๋„˜์œผ๋ฉด ์ฒซ ์ฝ๊ธฐ๋ถ€ํ„ฐ markdown_output_path๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋” ์ž‘์€ ์›๋ณธ๋„ RESPONSE_TOO_LARGE๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์ƒˆ .md ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด ๋‹ค์‹œ ์ฝ์œผ์‹ญ์‹œ์˜ค.

์•ˆ์ „

์ทจ์•ฝ์ ์€ ๊ณต๊ฐœ ์ด์Šˆ์— ๋น„๋ฐ€ยท๊ฐœ์ธ ๋ฌธ์„œยท๊ฐœ์ธ์ •๋ณด๋ฅผ ์ฒจ๋ถ€ํ•˜์ง€ ๋ง๊ณ  SECURITY.md์˜ GitHub ๋น„๊ณต๊ฐœ ์‹ ๊ณ  ์ ˆ์ฐจ๋ฅผ ์ด์šฉํ•˜์‹ญ์‹œ์˜ค. ๋ฌธ์„œ ๋‚ด์šฉ๊ณผ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ํฌํ•จํ•œ ์ •ํ™•ํ•œ ์‹ ๋ขฐ ๋ชจ๋ธ์€ ๋ณด์•ˆ ๊ฒฝ๊ณ„์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ์  ๋ฌธ์„œ ๋ฃจํŠธ ์ œํ•œ

GPT_CODEX_HWP_ALLOWED_ROOTS๋ฅผ ์„ค์ •ํ•˜๋ฉด 9๊ฐœ MCP ๋„๊ตฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ž…๋ ฅยท์ถœ๋ ฅ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์œผ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด์ „ ๋ฒ„์ „๊ณผ ๊ฐ™์ด ํ˜„์žฌ OS ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ปฌ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹จ Windows ๋„คํŠธ์›Œํฌ(UNC) ๊ฒฝ๋กœ๋Š” ์ด ๊ธฐ๋ณธ๊ฐ’์—์„œ๋„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ๋น„์–ด ์žˆ์ง€ ์•Š์€ JSON ๋ฐฐ์—ด์ด์–ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ํ•ญ๋ชฉ์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ณ ์œ ํ•œ ์ ˆ๋Œ€ ๋””๋ ‰ํ„ฐ๋ฆฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋‚˜ Windows junction/reparse ๋ณ„์นญ ์ž์ฒด๋Š” ๋ฃจํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ฐ’์€ ์ •ํ™•ํ•œ JSON ๋ฌธ์ž์—ด ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

$env:GPT_CODEX_HWP_ALLOWED_ROOTS = '["C:\\Documents\\HWP","D:\\TeamDocs"]'
export GPT_CODEX_HWP_ALLOWED_ROOTS='["/Volumes/TeamDocs"]'

๋นˆ ๋ฐฐ์—ด, ์ž˜๋ชป๋œ JSON, ์ƒ๋Œ€ ๊ฒฝ๋กœ, ์ค‘๋ณต ๋ฃจํŠธ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฃจํŠธ, ํŒŒ์ผ ๋˜๋Š” ๋งํฌ ๋ฃจํŠธ๊ฐ€ ์žˆ์œผ๋ฉด one-shot ํ˜ธ์ถœ์€ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์—, ์ˆ˜๋™ MCP ์„œ๋ฒ„๋Š” ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ ๋‹ซํžŒ ์ƒํƒœ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ UTF-8 ๊ธฐ์ค€ 16,384๋ฐ”์ดํŠธ, ๋ฃจํŠธ 32๊ฐœ, ํ•ญ๋ชฉ๋‹น 4,096์ž๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์„ค์ •๋œ ๊ฒฝ์šฐ ์›๋ณธ HWP/HWPX, Markdownยท์ด๋ฏธ์ง€ ์ž…๋ ฅ, ์ƒ์„ฑยทํŒจ์น˜ยท์–‘์‹ยท์ด๋ฏธ์ง€ ์‚ฝ์ž… HWPX, MarkdownยทSVGยทPNGยท๋ฏธ๋ฆฌ๋ณด๊ธฐยท์ถ”์ถœ ์ด๋ฏธ์ง€์™€ ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชจ๋‘ ์‹ค๊ฒฝ๋กœ ํ™•์ธ ๋’ค ๊ฐ™์€ ์ •์ฑ…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๋ถ€ ๊ฒฐ๊ณผ๋Š” PATH_OUTSIDE_ALLOWED_ROOTS๋งŒ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์„ค์ •๊ฐ’์ด๋‚˜ ๊ฑฐ๋ถ€๋œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ์šฉ ๋‚ด๋ถ€ ์Šคํ’€์€ ์‚ฌ์šฉ์ž ๋ฃจํŠธ ์„ค์ •์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ณ„๋„์˜ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ OS ์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์†Œ์œ ์ž ์ „์šฉ ๊ถŒํ•œ์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ž์‹ ํ”„๋กœ์„ธ์Šค์—๋Š” ์ƒ์†๋œ ํ•ธ๋“ค๋งŒ ์ „๋‹ฌํ•˜๋ฉฐ finally์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํ’€์€ ์‚ฌ์šฉ์ž ํ—ˆ์šฉ ๋ฃจํŠธ์˜ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋…๋ฆฝ๋œ ๋‚ด๋ถ€ ์‹ ๋ขฐ ์˜์—ญ์ž…๋‹ˆ๋‹ค. allowed_roots๋Š” ์—์ด์ „ํŠธ์˜ ์‹ค์ˆ˜๋‚˜ ๊ฒฝ๋กœ ์ดํƒˆ์„ ์ค„์ด๋Š” ๋ฐฉ์–ด์„ ์ด๋ฉฐ, ๊ฐ™์€ OS ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์•…์„ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„์ „ํžˆ ๊ฒฉ๋ฆฌํ•˜์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค. Node.js๋Š” ๋ชจ๋“  ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ Linux openat2๋‚˜ Windows ํ•ธ๋“ค ์ƒ๋Œ€ ๊ฒฝ๋กœ์™€ ๊ฐ™์€ ์›์ž์  ๋ณด์žฅ์„ ์ด์‹์„ฑ ์žˆ๊ฒŒ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋†’์€ ์œ„ํ—˜์˜ ๋ฌธ์„œ๋Š” ๋ณ„๋„ ์ €๊ถŒํ•œ ๊ณ„์ •ยทVMยท์ปจํ…Œ์ด๋„ˆ ๊ฐ™์€ OS ๊ฒฉ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค.

  • ์ž…๋ ฅ ๊ฒฝ๋กœ์™€ ์ถœ๋ ฅ ๊ฒฝ๋กœ๋Š” ๋‹ฌ๋ผ์•ผ ํ•˜๋ฉฐ ๊ธฐ์กด ์ถœ๋ ฅ ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ช…, ์•”ํ˜ธํ™”, DRM, ๋ฐฐํฌ์šฉ ๋ณดํ˜ธ๊ฐ€ ๊ฐ์ง€๋œ ๋ฌธ์„œ๋Š” ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•˜์ง€ ์•Š๊ณ  ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ๋กœ ๋ณ„์นญ, ํ•˜๋“œ๋งํฌ, ์‹ฌ๋ณผ๋ฆญ ๋งํฌ, Windows junction, ZIP ๊ฒฝ๋กœ ์ˆœํšŒ๋ฅผ ๋ฐฉ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • Windows ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ(UNC, \\์„œ๋ฒ„\๊ณต์œ )๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ณต์œ ๋ฅผ ์จ์•ผ ํ•˜๋ฉด GPT_CODEX_HWP_ALLOWED_ROOTS์— ๊ทธ UNC ๋ฃจํŠธ๋ฅผ ๋ช…์‹œํ•˜์‹ญ์‹œ์˜ค. ๊ทธ ์•„๋ž˜ ๊ฒฝ๋กœ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. GPT_CODEX_HWP_ALLOWED_ROOTS๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋งคํ•‘๋œ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ธŒ(์˜ˆ: Z:\)์— ์žˆ๋Š” ๋ฌธ์„œ๋Š” ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ UNC ๋ฃจํŠธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ ๊ณต์œ ๋กœ ๊ฒฐ๊ณผ๋ฌผ์„ ์“ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • HWPX ๊ฒ€์ฆ์— ์‹คํŒจํ•˜๋ฉด ์ƒ์„ฑ ๋˜๋Š” ํŽธ์ง‘ ๊ฒฐ๊ณผ๋ฌผ์„ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • hwp_patch_document์˜ ์˜๋ฏธ ๊ฒ€์ฆ์€ ํ•„์ˆ˜์ด๋ฉฐ ๊ฒ€์ฆ์„ ๋„๊ฑฐ๋‚˜ ๊ฒ€์ฆ ํ†ต๊ณ„ ์—†์ด ๊ฒฐ๊ณผ๋ฌผ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ณดํ˜ธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” UTF-8/UTF-16 ์ธ์ฝ”๋”ฉ์„ ๊ตฌ๋ถ„ํ•ด ๊ฒ€์‚ฌํ•˜๊ณ , ZIP ์—”ํŠธ๋ฆฌ ์ˆ˜๋Š” JSZip ๋กœ๋“œ ์ „์— ์ตœ๋Œ€ 10,000๊ฐœ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • ์–‘์‹ ๊ฐ’์€ ๊ธฐ๋ณธ์ ์œผ๋กœ MCP ๊ฒฐ๊ณผ์—์„œ ๋งˆ์Šคํ‚นํ•˜๋ฉฐ ๋ช…์‹œ์  ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งŒ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ”์ด๋„ˆ๋ฆฌ HWP ์ง์ ‘ ํŒจ์น˜๋Š” HWP_READ_ONLY๋กœ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€๊ผด ๋ฌด๊ฒฐ์„ฑ

HWPX๋Š” HANGUL, LATIN, HANJA, JAPANESE, OTHER, SYMBOL, USER ์–ธ์–ด๊ถŒ๋งˆ๋‹ค ๋ณ„๋„์˜ ๊ธ€๊ผดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ ๊ณผ์ •์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฐธ์กฐ๋งŒ ์œ ํšจํ•œ ID๋กœ ์ •๊ทœํ™”ํ•˜๋ฉฐ Kordoc์˜ ์žฅํ‰, ์ž๊ฐ„, ์ƒ๋Œ€ ํฌ๊ธฐ, ๊ธ€์ž ์œ„์น˜์™€ ๊ธ€๊ผด ์ด๋ฆ„์€ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. hwp_validate๋Š” ๊ธ€๊ผดํ‘œ์˜ ์ค‘๋ณต/๋ˆ„๋ฝ, ์นด์šดํŠธ, ID, ๋นˆ ์ด๋ฆ„๊ณผ ์ž˜๋ชป๋œ fontRef๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ธ€๊ผด ํŒŒ์ผ์„ ๋ฒˆ๋“คํ•˜๊ฑฐ๋‚˜ HWPX์— ๋‚ด์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‹œ์Šคํ…œ ๊ธ€๊ผด์„ ์ž๋™ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธ€๊ผด ํ‘œ์‹œ์™€ ์ค„๋ฐ”๊ฟˆ์€ ๋ฌธ์„œ๋ฅผ ์—ฌ๋Š” ํ”Œ๋žซํผ์— ์„ค์น˜๋œ ๊ธ€๊ผด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ ค์ง„ ์ œํ•œ

  • ๋ฐ”์ด๋„ˆ๋ฆฌ HWP๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋ฉฐ ์ƒ์„ฑยท์ˆ˜์ •ยท๋ณ€ํ™˜ ์ถœ๋ ฅ์€ ๋ชจ๋‘ HWPX๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ํšจํ•œ ์›๋ณธ ๋ฌธ์„œ๋Š” 10 MiB ์ดํ•˜๊ฐ€ CI ๊ฒ€์ฆ ๊ธฐ๋ณธ ๋ฒ”์œ„์ด๋ฉฐ, 10 MiB ์ดˆ๊ณผ 512 MiB ์ดํ•˜๋Š” ์ด๋ก ์ƒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฒ€์ฆํ•˜์ง€ ์•Š๋Š” best-effort, 512 MiB ์ดˆ๊ณผ๋Š” ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๋น„์ •์ƒ ์•„์นด์ด๋ธŒ, ์••์ถ• ํ•ด์ œยท์ž์›ยทํ—ˆ์šฉ ๋ฃจํŠธ ์ •์ฑ…๊ณผ Kordoc 3.18.1์˜ 100 MiB ์••์ถ• ํ•ด์ œ๋Ÿ‰ ๋ฐ HWPX 500๊ฐœ ํ•ญ๋ชฉ ์ œํ•œ์€ ๋ณ„๋„๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ธ๋ผ์ธ Markdown์€ 64,000์ž, ํŒŒ์ƒ Markdown ํŒŒ์ผ์€ 256 MiB, ์ตœ์ข… ์ง๋ ฌํ™” MCP ๊ฒฐ๊ณผ๋Š” 8 MiB๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • Kordoc ๋˜๋Š” rhwp ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ํ•œ์ปด GUI์™€ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋™์ผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • rhwp ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํด๋ฐฑ์€ ์ฒซ ํŽ˜์ด์ง€๋งŒ ๋ Œ๋”๋งํ•˜๊ณ  Node ํ™˜๊ฒฝ์˜ ๊ทผ์‚ฌ ๊ธ€๊ผด ํญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณดํ˜ธ ๋ฌธ์„œ์˜ ์•”ํ˜ธ๋‚˜ DRM์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ ์šฐํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • HWP 3.x๋Š” ์‹ค์ œ fixture๊ฐ€ ์—†์–ด ๊ฒ€์ฆ๋œ ์ง€์›์œผ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฏธ๋ฆฌ๋ณด๊ธฐ SVG๋Š” 128 MiB๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ•˜์ด๋ผ์ดํŠธ๋Š” ์ตœ๋Œ€ 256๊ฐœ ๋ฐ ํ•ฉ๊ณ„ 16,384์ž, ํ•œ ๋ฒˆ์˜ ์–‘์‹ ์ฑ„์šฐ๊ธฐ ๊ฐ’์€ ํ•ฉ๊ณ„ 10,000๊ฐœ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„ ์„ค์น˜

ํ”Œ๋žซํผ๋ณ„ ๋„ค์ดํ‹ฐ๋ธŒ ์˜์กด์„ฑ์€ ๊ฒ€์ฆํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ installedPath์—์„œ ๋ช…์‹œ์  ์„ค์น˜๊ธฐ๋กœ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. Windows์—์„œ ์„ค์น˜ํ•œ ๋Ÿฐํƒ€์ž„์„ macOS๋กœ ๋ณต์‚ฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

node dist/install-runtime.js --json
node dist/doctor.js --json

์ฒซ ๋ช…๋ น์˜ JSON code๋Š” RUNTIME_INSTALL_OK์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ธฐ๋Š” ์ž ๊ธˆ ํŒŒ์ผ๊ณผ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  lifecycle script๋ฅผ ๋ˆ ์ฑ„ Sharp๋ฅผ ํฌํ•จํ•œ ์šด์˜ ์˜์กด์„ฑ์„ ํ˜„์žฌ OS์™€ CPU์— ๋งž๊ฒŒ Codex ๊ด€๋ฆฌ ์บ์‹œ ๋ฐ–์— ์›์ž์ ์œผ๋กœ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์€ ์„ค์น˜๋‚˜ ๋ณต๊ตฌ ์—†์ด ํ™˜๊ฒฝ์„ ์ง„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ž‘์—… ์ค‘์—๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ, RUNTIME_NOT_INSTALLED๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์ด ์ ˆ์˜ ์„ค์น˜๊ธฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๊ธ€๊ผด ํŒŒ์ผ์€ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kordoc Core๋Š” HWP/HWPX ์ž‘์—…์— ํ•„์š”ํ•œ ๊ณ ์ • ๋Ÿฐํƒ€์ž„๋งŒ ์ œ๊ณตํ•˜๋ฉฐ PDF, OCR, ONNX, ์ˆ˜์‹ ์—”์ง„ ์„ ํƒ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒ€์ฆ๋œ Windows x64 ๋Ÿฐํƒ€์ž„ ์˜์กด์„ฑ ์˜ˆ์‚ฐ์€ 64 MiB ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ๊ฐ์‚ฌ

์ด ํ”„๋กœ์ ํŠธ์˜ hwpx-editing-skill ์‚ฌ์šฉ์€ ์ผ๋ฐ˜ ๋Ÿฐํƒ€์ž„ ์˜์กด์„ฑ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์›์‹œ ํ•ญ๋ชฉ๊ณผ ์••์ถ• ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๋Š” HWPX ์žฌํŒจํ‚ค์ง• ํ๋ฆ„, ์ผ๋ถ€ ์•ˆ์ „ ์›์น™๊ณผ ๊ฒ€์ฆ ํ๋ฆ„์„ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๊ณ ์ • ์ปค๋ฐ‹์—์„œ ์ˆ˜์ •ยท์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€๊ด€๋ฆฌ์ž์™€ ๊ธฐ์—ฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Kordoc์—์„œ๋Š” ๋ฌธ์„œ ๊ฐ์ง€, ์ฝ๊ธฐ, HWPX ์ƒ์„ฑ/๊ฒ€์ฆ/๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ–ˆ๊ณ , rhwp์—์„œ๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ฌธ์„œ ํ๋ฆ„์„ ์œ„ํ•œ ์„ ํƒ์  HWP/HWPX ํŒŒ์‹ฑ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํด๋ฐฑ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Model Context Protocol TypeScript SDK๋Š” MCP ์„œ๋ฒ„์™€ stdio ์ „์†ก์„, xmldom์€ XML DOM ์ฒ˜๋ฆฌ๋ฅผ, SheetJS CFB๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ HWP์˜ OLE ๋ณตํ•ฉ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋ฅผ, JSZip์€ HWPX ZIP ์ฒ˜๋ฆฌ๋ฅผ, Sharp๋Š” ์•ˆ์ „ํ•œ ์ด๋ฏธ์ง€ ๋ณ€ํ™˜์„, Zod๋Š” ๋„๊ตฌ ์ž…๋ ฅ ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€๊ด€๋ฆฌ์ž์™€ ๊ธฐ์—ฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Pixelify Sans๋Š” ์ตœ์ข… ๋ฐฐ๋„ˆ์˜ ๋ž˜์Šคํ„ฐํ™”๋œ ์ œ๋ชฉ์„ ์ œ์ž‘ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ๊ธ€๊ผด ํŒŒ์ผ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Pixelify Sans Project Authors์™€ Google Fonts ์œ ์ง€๊ด€๋ฆฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ๋ฒ„์ „, ์ €์ž‘๊ถŒ, ๋ผ์ด์„ ์Šค, ์‚ฌ์šฉ ๋ฒ”์œ„๋Š” THIRD_PARTY_NOTICES.md๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ผ์ด์„ ์Šค

Gpt_Codex_HWP ํ”„๋กœ์ ํŠธ๋Š” Apache-2.0์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ œ3์ž ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ œ์ž‘ ์ž…๋ ฅ๋ฌผ์€ THIRD_PARTY_NOTICES.md์— ๊ธฐ์žฌ๋œ ๊ฐ๊ฐ์˜ ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๊ธฐ์—ฌ ๋ฐ ์ €์žฅ์†Œ ์šด์˜

๊ณต๊ฐœ ์ด์Šˆ์™€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์—์„œ์˜ ๋…ผ์˜๋Š” ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ ๋ธŒ๋žœ์น˜, ํƒœ๊ทธ, ๋ฆด๋ฆฌ์Šค, ๋ฒค๋” ๋Ÿฐํƒ€์ž„, ์ƒ์„ฑ ๋Ÿฐํƒ€์ž„์˜ ๋ณ€๊ฒฝ์€ ์ €์žฅ์†Œ ์†Œ์œ ์ž๊ฐ€ ๊ฒ€ํ† ํ•˜๊ณ  ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉฐ, ์˜์กด์„ฑ ์ž๋™ํ™”๋Š” ์ด์Šˆ๋ฅผ ํ†ตํ•œ ๊ถŒ๊ณ ๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ์—ฌ ์ง€์นจ์„ ์ฝ๊ณ  ์•„ํ‚คํ…์ฒ˜์˜ ์›๋ณธ๊ณผ ์ƒ์„ฑ ๋Ÿฐํƒ€์ž„ ๊ฒฝ๊ณ„ ๋ฐ ๋ณ€๊ฒฝ ๊ธฐ๋ก์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ž๊ฒฉ์ฆ๋ช…, ๊ฐœ์ธ ๋ฌธ์„œ, ํ™˜๊ฒฝ ํŒŒ์ผ, ๊ฐœ์ธ ๊ฒฝ๋กœ, ๋ฏธ๊ณต๊ฐœ ๊ฐ์‚ฌ ์ž๋ฃŒ๋Š” ๊ณต๊ฐœ ๋ณด๊ณ ์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ ๋ฌธ์ œ๋Š” SECURITY.md์˜ ๋น„๊ณต๊ฐœ ์ ˆ์ฐจ๋กœ ์‹ ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

About

Read HWP and safely create, edit, validate, and preview HWPX documents with Codex.

Topics

Resources

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages