src/index.ts: bootstrap ๋ฐ wiringsrc/chat/: Discord ๋ฉ์์ง ๋ผ์ฐํ , Codex turn ์คํsrc/codex/: Codex app-server์ฉ JSON-RPC transportsrc/commands/:!codex ...๋ช ๋ น ํธ๋ค๋ฌsrc/discord/: Discord ์ ์ก helpersrc/startup/: ์ด๋๋ฏผ startup ์ํ ๋ก๊นsrc/state/: conversation/workspace ๋๋ฉ์ธ ์๋น์คscripts/lib/: setup, MCP ๋ฑ๋ก, systemd helper
์๋ฌธ ๋ฌธ์์ Project Layout ํธ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
- setup ์ ๋ก์ปฌ MCP ์๋ฒ
codexbox-tools๋ฅผ ๋ฑ๋กํฉ๋๋ค - ์ด ์๋ฒ๋
send_discord_image(channel_id, image, caption?)tool์ ์ ๊ณตํฉ๋๋ค - ๋ด์ ๋งค turn๋ง๋ค ํ์ฌ Discord
channel_id๋ฅผ Codex ์ ๋ ฅ์ ์ฃผ์ ํฉ๋๋ค - MCP ์๋ฒ๋ ์ ์ฅ์์
.env๋ฅผ ์ง์ ์ฝ๊ธฐ ๋๋ฌธ์DISCORD_TOKEN์ ๋ณ๋๋กcodex mcp add --env ...๋ก ๋๊ธธ ํ์๊ฐ ์์ต๋๋ค - ์ง์ํ๋ ์ด๋ฏธ์ง ์
๋ ฅ:
- ๋ก์ปฌ ์ด๋ฏธ์ง ๊ฒฝ๋ก
https://...์ด๋ฏธ์ง URLdata:image/...URL
- ๋ก์ปฌ ํ์ผ ์ ๊ทผ ๋ฒ์๋
CODEX_WORKSPACE,$HOME,/tmp,DISCORD_MCP_ALLOWED_ROOTS๋ก ์ ํ๋ฉ๋๋ค
.env,.data/,dist/๋ ์ปค๋ฐํ์ง ๋ง์ธ์- ๋ฐฐํฌ ์
CODEX_WORKSPACE๊ฐ ๋ฏผ๊ฐํ ์ ๋๊ฒฝ๋ก๊ฐ ์๋์ง ํ์ธํ์ธ์ CODEX_APPROVAL_POLICY=never๋ ์๋์ ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ ์งํ๋ ํธ์ด ์์ ํฉ๋๋คCODEX_SANDBOX_MODE๋ ๋ณดํตworkspaceWrite๋๋readOnly๋ฅผ ์ ์งํ์ธ์- Discord Message Content Intent๋ฅผ ์ผฐ๋ค๋ฉด:
DISCORD_MESSAGE_CONTENT_INTENT=true- restart ๊ถํ์ ์๋๋ก ์ ํํฉ๋๋ค:
DISCORD_RESTART_ADMIN_USER_IDS=123456789012345678,234567890123456789- Codex binary ๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํด์ผ ํ๋ฉด:
CODEX_APP_SERVER_BIN=/path/to/codex
CODEX_APP_SERVER_ARGS="app-server --listen stdio://"npm run build
npm test
npm start
codex mcp get codexbox-tools