Skip to content

Latest commit

ย 

History

History
490 lines (412 loc) ยท 24.4 KB

File metadata and controls

490 lines (412 loc) ยท 24.4 KB

logo

Claude MD Editor

AI ้ฉฑๅŠจ็š„ PyCharm ้ฃŽๆ ผ Markdown ็ผ–่พ‘ๅ™จ

version license platform tech


ไบงๅ“ๅฎšไฝ

ๅŸบไบŽ Claude Code ๆบ็ ไบŒๆฌกๅผ€ๅ‘๏ผŒๆž„ๅปบไธ€ไธช PyCharm ้ฃŽๆ ผ็š„ AI Markdown ็ผ–่พ‘ๅ™จใ€‚

ๆ ธๅฟƒ็†ๅฟต๏ผš็”จๆˆทไธ‹่ฝฝๅฎ‰่ฃ…ๅŽ๏ผŒๅช้œ€้…็ฝฎ Anthropic API Key๏ผŒๅฐฑ่ƒฝๅœจไธ€ไธชๆกŒ้ขๅบ”็”จไธญๅฎŒๆˆ Markdown ๅ†™ไฝœใ€ๅฎžๆ—ถ้ข„่งˆใ€AI ่พ…ๅŠฉ็ผ–่พ‘็š„ๅ…จ้ƒจๅทฅไฝœๆต๏ผŒๆ— ้œ€ๆ‰“ๅผ€็ปˆ็ซฏใ€ๆ— ้œ€้ขๅค–ๅทฅๅ…ทใ€‚

็”จๆˆทๆ—…็จ‹๏ผš

ไธ‹่ฝฝๅฎ‰่ฃ…ๅŒ… โ†’ ๅฎ‰่ฃ… โ†’ ้ฆ–ๆฌกๅฏๅŠจ
                        โ”‚
                        โ”œโ”€โ†’ ๆฃ€ๆต‹ Bun ่ฟ่กŒๆ—ถ โ†’ ๆœชๅฎ‰่ฃ…ๅˆ™ๅผ•ๅฏผไธ€้”ฎๅฎ‰่ฃ…
                        โ”‚
                        โ”œโ”€โ†’ ่พ“ๅ…ฅ Anthropic API Key โ†’ ๅŠ ๅฏ†ๅญ˜ๅ‚จๅˆฐๆœฌๅœฐ
                        โ”‚
                        โ””โ”€โ†’ ่ฟ›ๅ…ฅ็ผ–่พ‘ๅ™จ โ† ๆญคๅŽๆฏๆฌกๆ‰“ๅผ€็›ดๆŽฅๅฏ็”จ
                              โ”‚
                              โ”œโ”€ ๅทฆไพงๆ–‡ไปถๆ ‘ๆต่งˆ/็ฎก็† Markdown ๆ–‡ไปถ
                              โ”œโ”€ ไธญๅคฎ็ผ–่พ‘ + ๅฎžๆ—ถ้ข„่งˆ
                              โ””โ”€ ๅบ•้ƒจ Claude Code ๅฏน่ฏ็ปˆ็ซฏ๏ผˆAI ๅทฒๅฐฑ็ปช๏ผ‰

ๆ ธๅฟƒๅธƒๅฑ€

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ่œๅ•ๆ : ๆ–‡ไปถ | ็ผ–่พ‘ | ่ง†ๅ›พ | ๅทฅๅ…ท | ไธป้ข˜ | ๅธฎๅŠฉ          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚        โ”‚                                โ”‚                โ”‚
โ”‚ ๆ–‡ไปถๆ ‘  โ”‚   Markdown ็ผ–่พ‘ๅŒบ               โ”‚   ๅฎžๆ—ถ้ข„่งˆ      โ”‚
โ”‚        โ”‚   (CodeMirror 6)               โ”‚   (markdown-it) โ”‚
โ”‚  ๐Ÿ“ docsโ”‚                                โ”‚                โ”‚
โ”‚   โ”œโ”€ a.md   โ”‚   # ๆ ‡้ข˜                    โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚   โ”œโ”€ b.md   โ”‚   **ๅŠ ็ฒ—**                  โ”‚   โ”‚ ๆธฒๆŸ“็ป“ๆžœ โ”‚    โ”‚
โ”‚  ๐Ÿ“ src    โ”‚   - ๅˆ—่กจ                    โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ”‚        โ”‚                                โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  AI ๅฏน่ฏ็ปˆ็ซฏ (xterm.js + Claude Code)                     โ”‚
โ”‚  > ๅธฎๆˆ‘ไผ˜ๅŒ–่ฟ™ๆฎต Markdown...                                โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ Claude: ๅฅฝ็š„๏ผŒๆˆ‘ๆฅๅธฎไฝ ...                              โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ็Šถๆ€ๆ : README.md | ่กŒ 42:ๅˆ— 10 | ๅญ—ๆ•ฐ 2300 | Markdown   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • ๅทฆไพง้ขๆฟ๏ผšๆ–‡ไปถ็›ฎๅฝ•ๆ ‘ + ๅคง็บฒ๏ผˆTOC๏ผ‰
  • ไธญๅคฎ๏ผšMarkdown ็ผ–่พ‘ๅŒบ + ๅณไพงๅฎžๆ—ถ้ข„่งˆๅŒบ๏ผˆๅŒๆ ๅฏๅˆ‡ๆข๏ผ‰
  • ๅบ•้ƒจ้ขๆฟ๏ผšClaude Code AI ๅฏน่ฏ็ปˆ็ซฏ๏ผˆๅฏๆŠ˜ๅ /ๆ‹–ๆ‹ฝ่ฐƒๆ•ด้ซ˜ๅบฆ๏ผ‰

ๅŠŸ่ƒฝ็‰นๆ€ง

Markdown ็ผ–่พ‘

  • CodeMirror 6 ็ผ–่พ‘ๅ™จ โ€” ่ฏญๆณ•้ซ˜ไบฎใ€่กŒๅทๆ˜พ็คบใ€ไปฃ็ ๆŠ˜ๅ ใ€ๆ‹ฌๅทๅŒน้…ใ€่‡ชๅŠจ่กฅๅ…จ
  • ๅฎžๆ—ถ้ข„่งˆ โ€” ็ผ–่พ‘ๅ™จไธŽ้ข„่งˆ้ขๆฟๅŒๆญฅๆปšๅŠจ
  • ๅคšๆ ‡็ญพ้กต โ€” ๅŒๆ—ถ็ผ–่พ‘ๅคšไธชๆ–‡ไปถ๏ผŒๆ”ฏๆŒๆ ‡็ญพๅˆ‡ๆขไธŽๅ…ณ้—ญ
  • ่‡ชๅŠจไฟๅญ˜ โ€” ไฟฎๆ”นๅ†…ๅฎน่‡ชๅŠจไฟๅญ˜๏ผŒ้˜ฒๆญขๆ•ฐๆฎไธขๅคฑ
  • ๅทฅๅ…ทๆ  โ€” ไธ€้”ฎๆ’ๅ…ฅๆ ‡้ข˜ใ€ๅŠ ็ฒ—ใ€ๆ–œไฝ“ใ€้“พๆŽฅใ€ๅ›พ็‰‡ใ€ๅˆ—่กจใ€ไปฃ็ ๅ—ใ€่กจๆ ผใ€ๅ…ฌๅผใ€ๅ›พ่กจ

ๆ•ฐๅญฆๅ…ฌๅผ & ๅ›พ่กจ

  • LaTeX ๆ•ฐๅญฆๅ…ฌๅผ โ€” ๅŸบไบŽ KaTeX ๆธฒๆŸ“๏ผŒๆ”ฏๆŒ่กŒๅ†…ๅ…ฌๅผ $...$ ๅ’Œๅ—็บงๅ…ฌๅผ $$...$$
  • ็Ÿฉ้˜ตใ€ๅˆ†ๅผใ€็งฏๅˆ† โ€” ๅฎŒๆ•ดๆ”ฏๆŒๅคๆ‚ๆ•ฐๅญฆๆŽ’็‰ˆ
  • Mermaid ๅ›พ่กจ โ€” ๆต็จ‹ๅ›พใ€ๆ—ถๅบๅ›พใ€็”˜็‰นๅ›พใ€็ฑปๅ›พใ€็Šถๆ€ๅ›พ็ญ‰
  • ไปฃ็ ้ซ˜ไบฎ โ€” ๅŸบไบŽ highlight.js๏ผŒๆ”ฏๆŒ 190+ ็ผ–็จ‹่ฏญ่จ€

ๆ–‡ไปถ็ฎก็†

  • ๆ–‡ไปถๆ ‘ๆต่งˆ โ€” ไพง่พนๆ ๅฑ•็คบๅทฅไฝœ็›ฎๅฝ•็ป“ๆž„๏ผŒๆ”ฏๆŒๅฑ•ๅผ€/ๆŠ˜ๅ ใ€ๅณ้”ฎ่œๅ•๏ผˆๆ–ฐๅปบ/ๅˆ ้™ค/้‡ๅ‘ฝๅ๏ผ‰
  • ๆ‰“ๅผ€/ไฟๅญ˜ โ€” ๆ”ฏๆŒ Markdown ๆ–‡ไปถ (.md) ็š„ๆ‰“ๅผ€ไธŽไฟๅญ˜
  • ๆ–‡ไปถๅคนๅทฅไฝœๅŒบ โ€” ๆ‰“ๅผ€ๆ–‡ไปถๅคนไฝœไธบๅทฅไฝœๅŒบๆ น็›ฎๅฝ•
  • ๆ–‡ไปถ็›‘ๅฌ โ€” ๅค–้ƒจๆ–‡ไปถๅ˜ๆ›ดๅฎžๆ—ถๅŒๆญฅๅˆฐๆ–‡ไปถๆ ‘

AI ๆ™บ่ƒฝๅŠฉๆ‰‹

  • Claude Code ็ปˆ็ซฏ โ€” ๅ†…็ฝฎ xterm.js + node-pty๏ผŒ่ฟ่กŒๅฎŒๆ•ด Claude Code AI ๅฏน่ฏ
  • ๅณ้”ฎ่œๅ• โ€” ้€‰ไธญๆ–‡ๆœฌๅŽๅณ้”ฎ โ†’ "AI ๅธฎๅฟ™ๅ†™่ฟ™ๆฎต"
  • AI ไผ˜ๅŒ–ๆŽ’็‰ˆ โ€” ๅทฅๅ…ทๆ ไธ€้”ฎๅฐ†ๅ…จๆ–‡ๅ‘้€็ป™ AI ่ฟ›่กŒๆŽ’็‰ˆไผ˜ๅŒ–
  • ๆ–œๆ ๅ‘ฝไปค โ€” ๆ”ฏๆŒ /fix๏ผˆ่ฏญๆณ•ไฟฎๆญฃ๏ผ‰ใ€/summarize๏ผˆ็”Ÿๆˆๆ‘˜่ฆ๏ผ‰็ญ‰

ๅฏผๅ‡บๅŠŸ่ƒฝ

  • HTML โ€” ่‡ชๅŒ…ๅซ็ฝ‘้กต๏ผˆๅ†…่”ๆ ทๅผ๏ผ‰
  • PDF โ€” ๆ‰“ๅฐๅฐฑ็ปช็š„ PDF ๆ–‡ๆกฃ
  • DOCX โ€” Microsoft Word ๅ…ผๅฎนๆ ผๅผ
  • ๅ›พ็‰‡ โ€” ๅฐ†้ข„่งˆๅŒบๆธฒๆŸ“ไธบ PNG/JPEG
  • ่‡ชๅฎšไน‰ CSS โ€” ๅฏผๅ‡บๆ—ถๅฏๆณจๅ…ฅ่‡ชๅฎšไน‰ๆ ทๅผ

็•Œ้ข & ไฝ“้ชŒ

  • ๆ˜Žๆš—ไธป้ข˜ โ€” ่ทŸ้š็ณป็ปŸๆˆ–ๆ‰‹ๅŠจๅˆ‡ๆข๏ผŒCSS ๅ˜้‡้ฉฑๅŠจ
  • ไธ“ๆณจๆจกๅผ โ€” ้š่—ๆ‰€ๆœ‰้ขๆฟ๏ผŒ็ผ–่พ‘ๅ™จๅฑ…ไธญ๏ผŒๅฝ“ๅ‰ๆฎต่ฝ้ซ˜ไบฎ
  • ๅˆ†ๅฑๆจกๅผ โ€” ็ผ–่พ‘+้ข„่งˆ / ไป…็ผ–่พ‘ / ไป…้ข„่งˆ
  • ๅฏๆ‹–ๆ‹ฝ้ขๆฟ โ€” ไพง่พนๆ ใ€็ผ–่พ‘ๅ™จใ€้ข„่งˆใ€็ปˆ็ซฏๅ‡ๅฏ่‡ช็”ฑ่ฐƒๆ•ดๅคงๅฐ
  • ๅ…จๅฑ€ๆœ็ดข โ€” Ctrl+Shift+F ่ทจๆ–‡ไปถๆœ็ดขไธŽๆ›ฟๆข
  • ๅ›พ็‰‡็ฒ˜่ดด โ€” ๆ”ฏๆŒๅ‰ช่ดดๆฟๅ›พ็‰‡็›ดๆŽฅ็ฒ˜่ดด๏ผŒ่‡ชๅŠจไฟๅญ˜ๅˆฐ assets ็›ฎๅฝ•
  • ้ฆ–ๆฌกๅฏๅŠจๅ‘ๅฏผ โ€” ๅผ•ๅฏผๆฃ€ๆต‹ Bun ่ฟ่กŒๆ—ถใ€้…็ฝฎ API ๅฏ†้’ฅ็ญ‰

ๆ•ดไฝ“ๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Electron ไธป่ฟ›็จ‹ (Main Process)              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ ็ช—ๅฃ็ฎก็†ๅ™จ    โ”‚  โ”‚ ๆ–‡ไปถ็ณป็ปŸๆœๅŠก  โ”‚  โ”‚ PTY ่ฟ›็จ‹็ฎก็†ๅ™จ    โ”‚   โ”‚
โ”‚  โ”‚ (BrowserWin) โ”‚  โ”‚ (fs/path)    โ”‚  โ”‚ (node-pty)       โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                                               โ”‚              โ”‚
โ”‚                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚                              โ”‚  Claude Code ๅŽ็ซฏ่ฟ›็จ‹       โ”‚   โ”‚
โ”‚                              โ”‚  (Bun ่ฟ่กŒๆ—ถ)               โ”‚   โ”‚
โ”‚                              โ”‚  - query.ts / QueryEngine  โ”‚   โ”‚
โ”‚                              โ”‚  - REPL ้€ป่พ‘               โ”‚   โ”‚
โ”‚                              โ”‚  - ๅทฅๅ…ท็ณป็ปŸ (Bash/Read/    โ”‚   โ”‚
โ”‚                              โ”‚    Edit/Grep/Agent...)     โ”‚   โ”‚
โ”‚                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                                                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚              IPC Bridge (contextBridge + ipcMain)      โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ”‚ IPC ้€š้“
                              โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Electron ๆธฒๆŸ“่ฟ›็จ‹ (Renderer Process)            โ”‚
โ”‚                                                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  ๅทฆไพง้ขๆฟ โ”‚       ไธญๅคฎ็ผ–่พ‘ๅŒบ          โ”‚   ๅณไพง้ข„่งˆๅŒบ     โ”‚   โ”‚
โ”‚  โ”‚          โ”‚                          โ”‚                 โ”‚   โ”‚
โ”‚  โ”‚ ๆ–‡ไปถๆ ‘   โ”‚   CodeMirror 6           โ”‚  markdown-it    โ”‚   โ”‚
โ”‚  โ”‚ (Tree)   โ”‚   - ่ฏญๆณ•้ซ˜ไบฎ              โ”‚  ๆธฒๆŸ“็ป“ๆžœ        โ”‚   โ”‚
โ”‚  โ”‚          โ”‚   - ่‡ชๅŠจ่กฅๅ…จ              โ”‚  - ๆ ‡้ข˜/ๅˆ—่กจ     โ”‚   โ”‚
โ”‚  โ”‚ ๅคง็บฒ     โ”‚   - ๅฟซๆท้”ฎ็ป‘ๅฎš            โ”‚  - ไปฃ็ ๅ—้ซ˜ไบฎ    โ”‚   โ”‚
โ”‚  โ”‚ (TOC)    โ”‚   - ๆปšๅŠจๅŒๆญฅ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚  - ่กจๆ ผ          โ”‚   โ”‚
โ”‚  โ”‚          โ”‚                          โ”‚  - ๆ•ฐๅญฆๅ…ฌๅผ      โ”‚   โ”‚
โ”‚  โ”‚          โ”‚                          โ”‚  - Mermaid ๅ›พ่กจ  โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚                                                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚                   ๅบ•้ƒจ้ขๆฟ (ๅฏๆŠ˜ๅ /ๆ‹–ๆ‹ฝ่ฐƒๆ•ด้ซ˜ๅบฆ)           โ”‚ โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚ โ”‚
โ”‚  โ”‚  โ”‚  AI ็ปˆ็ซฏ (xterm.js)                              โ”‚    โ”‚ โ”‚
โ”‚  โ”‚  โ”‚  - Claude Code REPL ่พ“ๅ‡บ                         โ”‚    โ”‚ โ”‚
โ”‚  โ”‚  โ”‚  - ็”จๆˆท่พ“ๅ…ฅๅŒบ                                     โ”‚    โ”‚ โ”‚
โ”‚  โ”‚  โ”‚  - ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœๅฑ•็คบ                               โ”‚    โ”‚ โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚ โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚ โ”‚
โ”‚  โ”‚  โ”‚  ็Šถๆ€ๆ : ๆ–‡ไปถๅ | ่กŒ:ๅˆ— | ๅญ—ๆ•ฐ | ๆ–‡ไปถ็ฑปๅž‹ | ไธป้ข˜  โ”‚    โ”‚ โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่ฟ›็จ‹้€šไฟก

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         IPC          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Electron ไธป่ฟ›็จ‹   โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚  Electron ๆธฒๆŸ“่ฟ›็จ‹     โ”‚
โ”‚                   โ”‚                      โ”‚                       โ”‚
โ”‚  โ€ข ๆ–‡ไปถ็ณป็ปŸๆ“ไฝœ    โ”‚  file:*              โ”‚  โ€ข React UI           โ”‚
โ”‚  โ€ข PTY ็ฎก็†       โ”‚  terminal:*          โ”‚  โ€ข CodeMirror 6       โ”‚
โ”‚  โ€ข ็ช—ๅฃ็ฎก็†       โ”‚  export:*            โ”‚  โ€ข markdown-it ๆธฒๆŸ“   โ”‚
โ”‚  โ€ข ๅŽŸ็”Ÿ่œๅ•       โ”‚  image:*             โ”‚  โ€ข xterm.js ็ปˆ็ซฏ      โ”‚
โ”‚  โ€ข ๅฏผๅ‡บๅŠŸ่ƒฝ       โ”‚  app:*               โ”‚  โ€ข Zustand ็Šถๆ€็ฎก็†    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ node-pty
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Claude Code      โ”‚
โ”‚  (Bun ๅญ่ฟ›็จ‹)     โ”‚
โ”‚  โ€ข ๆ ‡ๅ‡†่พ“ๅ…ฅ/่พ“ๅ‡บ   โ”‚
โ”‚  โ€ข AI ๅฏน่ฏๅค„็†    โ”‚
โ”‚  โ€ข ๅทฅๅ…ท่ฐƒ็”จ       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆŠ€ๆœฏๆ ˆ

็ฑปๅˆซ ๆŠ€ๆœฏ ้€‰ๅž‹็†็”ฑ
ๆกŒ้ขๆก†ๆžถ Electron 28+ ่ทจๅนณๅฐๆกŒ้ขๅบ”็”จ๏ผŒ้›†ๆˆ Node.js ่ƒฝๅŠ›๏ผŒๆ”ฏๆŒๆ–‡ไปถๅ…ณ่”ๅ’ŒๅŽŸ็”Ÿ่œๅ•
ๅ‰็ซฏๆก†ๆžถ React 18 + TypeScript ไธŽ Claude Code ๆŠ€ๆœฏๆ ˆไธ€่‡ด๏ผŒๅค็”จ็ป„ไปถไฝ“็ณป
็ผ–่พ‘ๅ™จๅ†…ๆ ธ CodeMirror 6 ๆจกๅ—ๅŒ–ๆžถๆž„๏ผŒMarkdown ่ฏญๆณ•้ซ˜ไบฎๆˆ็†Ÿ๏ผŒๆ‰ฉๅฑ•ๆ€งๅผบ
Markdown ๆธฒๆŸ“ markdown-it + ๆ’ไปถ็”Ÿๆ€ ๆ”ฏๆŒ GFMใ€่กจๆ ผใ€่„šๆณจใ€Emojiใ€ๆ•ฐๅญฆๅ…ฌๅผใ€Mermaid
ๆ•ฐๅญฆๅ…ฌๅผ KaTeX 0.16 ๅฟซ้€ŸๆธฒๆŸ“ LaTeX ๅ…ฌๅผไธบ SVG
ไปฃ็ ้ซ˜ไบฎ highlight.js 11 190+ ่ฏญ่จ€ๆ”ฏๆŒ
ๅ›พ่กจๆธฒๆŸ“ Mermaid 10 ๆต็จ‹ๅ›พใ€ๆ—ถๅบๅ›พใ€็”˜็‰นๅ›พ็ญ‰ๅคš็งๅ›พ่กจ
็ปˆ็ซฏ xterm.js 5 + node-pty ๅœจๆธฒๆŸ“่ฟ›็จ‹ไธญๅตŒๅ…ฅๅฎŒๆ•ด็ปˆ็ซฏ๏ผŒPTY ็ฎก็†ๅญ่ฟ›็จ‹
AI ๅผ•ๆ“Ž Claude Code๏ผˆๅŽŸ้กน็›ฎๆ ธๅฟƒ๏ผ‰ ไฟ็•™ๅฎŒๆ•ด query.ts / QueryEngine.ts / REPL ้€ป่พ‘
AI ่ฟ่กŒๆ—ถ Bun๏ผˆๅค–้ƒจไพ่ต–๏ผ‰ Claude Code ไฝฟ็”จ Bun ไธ“ๆœ‰ API๏ผŒๅฟ…้กป้€š่ฟ‡ Bun ๆ‰ง่กŒ
็Šถๆ€็ฎก็† Zustand 4 ่ฝป้‡ใ€ไธŽ React ๆทฑๅบฆ้›†ๆˆ
CSS ๆ–นๆกˆ Tailwind CSS 3 + CSS ๅ˜้‡ ๅฟซ้€Ÿๆž„ๅปบ UI๏ผŒ CSS ๅ˜้‡้ฉฑๅŠจไธป้ข˜ๅˆ‡ๆข
ๆž„ๅปบๅทฅๅ…ท Vite 5 + vite-plugin-electron HMR ็ƒญๆ›ดๆ–ฐ๏ผŒๅผ€ๅ‘ไฝ“้ชŒๅฅฝ
ๆ‰“ๅŒ…ๅ‘ๅธƒ electron-builder 24 ไธ‰ๅนณๅฐๆ‰“ๅŒ…

ไธบไป€ไนˆไธ็›ดๆŽฅๅค็”จ Claude Code ็š„ Ink ็ปˆ็ซฏ UI๏ผŸ

Claude Code ็š„ UI ๅŸบไบŽ Ink๏ผˆReact โ†’ Terminal ๆธฒๆŸ“ๅ™จ๏ผ‰๏ผŒๆœฌ่ดจๆ˜ฏ TUI๏ผˆๆ–‡ๆœฌ็”จๆˆท็•Œ้ข๏ผ‰๏ผŒๆ— ๆณ•ๆธฒๆŸ“ๅ›พๅฝขๅŒ–็š„ Markdown ้ข„่งˆใ€ไปฃ็ ้ซ˜ไบฎใ€ๆ–‡ไปถๆ ‘็ญ‰็ป„ไปถใ€‚ๅ› ๆญค้‡‡็”จ Electron GUI ๆ–นๆกˆ๏ผŒๅฐ† Claude Code ็š„ไบคไบ’่ƒฝๅŠ›ๅตŒๅ…ฅ xterm.js ็ปˆ็ซฏ็ป„ไปถ๏ผŒๅŒๆ—ถๅœจๆธฒๆŸ“่ฟ›็จ‹ไธญไฝฟ็”จ็œŸๆญฃ็š„ๆต่งˆๅ™จ DOM ๆธฒๆŸ“็ผ–่พ‘ๅ™จ UIใ€‚


ๅฎ‰่ฃ…ไธŽ่ฟ่กŒ

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

  • Node.js โ‰ฅ 18
  • npm โ‰ฅ 9
  • Bun๏ผˆๅฏ้€‰๏ผŒ็”จไบŽ AI ็ปˆ็ซฏๅŠŸ่ƒฝ๏ผ›้ฆ–ๆฌกๅฏๅŠจไผš่‡ชๅŠจๆฃ€ๆต‹ๅนถๅผ•ๅฏผๅฎ‰่ฃ…๏ผ‰
  • Windows / macOS / Linux

ๅ…‹้š†้กน็›ฎ

git clone https://github.com/your-org/claude-md-editor.git
cd claude-md-editor

ๅฎ‰่ฃ…ไพ่ต–

npm install

ๅผ€ๅ‘ๆจกๅผ

ๅฏๅŠจ Vite ๅผ€ๅ‘ๆœๅŠกๅ™จ + Electron ็ช—ๅฃ๏ผˆๆ”ฏๆŒ็ƒญๆ›ดๆ–ฐ๏ผ‰๏ผš

npm run electron:dev

ไป…ๅฏๅŠจๅ‰็ซฏ

npm run dev

ๆž„ๅปบ & ๆ‰“ๅŒ…

ๆž„ๅปบๅ‰็ซฏๅ’Œ Electron ไธป่ฟ›็จ‹๏ผš

npm run build

ๆž„ๅปบๅนถๆ‰“ๅŒ…ไธบๆกŒ้ขๅฎ‰่ฃ…็จ‹ๅบ๏ผš

npm run electron:build

ๆ‰“ๅŒ…ไบง็‰ฉไฝไบŽ release/ ็›ฎๅฝ•๏ผš

  • Windows๏ผš.exe NSIS ๅฎ‰่ฃ…็จ‹ๅบ
  • macOS๏ผš.dmg ้•œๅƒ
  • Linux๏ผš.AppImage / .deb

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

claude-md-editor/
โ”œโ”€โ”€ electron/                 # Electron ไธป่ฟ›็จ‹
โ”‚   โ”œโ”€โ”€ main.ts               # ๅบ”็”จๅ…ฅๅฃ๏ผŒ็ช—ๅฃๅˆ›ๅปบ
โ”‚   โ”œโ”€โ”€ preload.ts            # ้ข„ๅŠ ่ฝฝ่„šๆœฌ (contextBridge)
โ”‚   โ”œโ”€โ”€ ipc/                  # IPC ้€šไฟกๆจกๅ—
โ”‚   โ”‚   โ”œโ”€โ”€ fileSystem.ts     # ๆ–‡ไปถ็ณป็ปŸๆ“ไฝœ
โ”‚   โ”‚   โ”œโ”€โ”€ terminal.ts       # PTY ็ปˆ็ซฏ็ฎก็†
โ”‚   โ”‚   โ”œโ”€โ”€ export.ts         # ๅฏผๅ‡บๅŠŸ่ƒฝ (HTML/PDF/DOCX)
โ”‚   โ”‚   โ””โ”€โ”€ imageUpload.ts    # ๅ›พ็‰‡ไธŠไผ /็ฒ˜่ดด
โ”‚   โ”œโ”€โ”€ pty/
โ”‚   โ”‚   โ””โ”€โ”€ claudeTerminal.ts # node-pty ๅฐ่ฃ…๏ผŒๅฏๅŠจ Claude Code ่ฟ›็จ‹
โ”‚   โ”œโ”€โ”€ menu/
โ”‚   โ”‚   โ””โ”€โ”€ appMenu.ts        # ๅบ”็”จ่œๅ•ๆ 
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ””โ”€โ”€ paths.ts          # ่ต„ๆบ่ทฏๅพ„ใ€็”จๆˆทๆ•ฐๆฎ่ทฏๅพ„ๅทฅๅ…ท
โ”œโ”€โ”€ src/                      # React ๆธฒๆŸ“่ฟ›็จ‹
โ”‚   โ”œโ”€โ”€ main.tsx              # React ๅ…ฅๅฃ
โ”‚   โ”œโ”€โ”€ App.tsx               # ๆ น็ป„ไปถ๏ผŒๅธƒๅฑ€ๅฎนๅ™จ
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ layout/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AppShell.tsx      # ไธปๅธƒๅฑ€ๅฎนๅ™จ๏ผˆๅฏๆ‹–ๆ‹ฝๅˆ†ๆ ๏ผ‰
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SplitPane.tsx     # ๅฏๆ‹–ๆ‹ฝๅˆ†ๅ‰ฒ้ขๆฟ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Sidebar.tsx       # ไพง่พนๆ 
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ BottomPanel.tsx   # ๅบ•้ƒจ้ขๆฟ๏ผˆๅฏๆŠ˜ๅ ๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ editor/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EditorPane.tsx    # CodeMirror ็ผ–่พ‘ๅ™จ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EditorTabs.tsx    # ๆ ‡็ญพ้กตๆ 
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ extensions/       # CodeMirror 6 ๆ‰ฉๅฑ•
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ markdownSyntax.ts  # Markdown ่ฏญๆณ•้ซ˜ไบฎ
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ autocomplete.ts    # ่‡ชๅŠจ่กฅๅ…จ
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ keybindings.ts     # ๅฟซๆท้”ฎๅฎšไน‰
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ scrollSync.ts      # ๆปšๅŠจๅŒๆญฅๆ‰ฉๅฑ•
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ toolbar/
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ EditorToolbar.tsx   # ๅทฅๅ…ทๆ 
โ”‚   โ”‚   โ”œโ”€โ”€ preview/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PreviewPane.tsx        # ้ข„่งˆ้ขๆฟ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ MarkdownRenderer.tsx   # markdown-it ๆธฒๆŸ“ๅ™จๅฐ่ฃ…
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ preview-plugins/       # ้ข„่งˆๆ’ไปถ
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ codeHighlight.ts   # ไปฃ็ ่ฏญๆณ•้ซ˜ไบฎ
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ mathRenderer.ts    # KaTeX ๆ•ฐๅญฆๆธฒๆŸ“
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ mermaidRenderer.ts # Mermaid ๅ›พ่กจๆธฒๆŸ“
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ tocGenerator.ts    # ็›ฎๅฝ•็”Ÿๆˆ
โ”‚   โ”‚   โ”œโ”€โ”€ terminal/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ TerminalPanel.tsx      # ็ปˆ็ซฏ้ขๆฟ (xterm)
โ”‚   โ”‚   โ”œโ”€โ”€ file-tree/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FileTree.tsx           # ๆ–‡ไปถๆ ‘
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FileTreeNode.tsx       # ๅ•ไธชๆ ‘่Š‚็‚น
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ FileTreeContextMenu.tsx # ๅณ้”ฎ่œๅ•
โ”‚   โ”‚   โ”œโ”€โ”€ dialogs/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GlobalSearchDialog.tsx  # ๅ…จๅฑ€ๆœ็ดข
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ExportDialog.tsx        # ๅฏผๅ‡บๅฏน่ฏๆก†
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SettingsDialog.tsx      # ่ฎพ็ฝฎ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ TableInsertDialog.tsx   # ่กจๆ ผๆ’ๅ…ฅ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ FirstLaunchWizard.tsx   # ้ฆ–ๆฌกๅฏๅŠจๅ‘ๅฏผ
โ”‚   โ”‚   โ””โ”€โ”€ statusbar/
โ”‚   โ”‚       โ””โ”€โ”€ StatusBar.tsx           # ็Šถๆ€ๆ 
โ”‚   โ”œโ”€โ”€ stores/                # Zustand ็Šถๆ€็ฎก็†
โ”‚   โ”‚   โ”œโ”€โ”€ useEditorStore.ts      # ็ผ–่พ‘ๅ™จ็Šถๆ€๏ผˆๆ ‡็ญพ้กตใ€ๅ†…ๅฎน๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ useFileStore.ts        # ๆ–‡ไปถๆ ‘็Šถๆ€
โ”‚   โ”‚   โ”œโ”€โ”€ usePreviewStore.ts     # ้ข„่งˆ็Šถๆ€๏ผˆ่ง†ๅ›พๆจกๅผใ€ๆปšๅŠจ๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ useTerminalStore.ts    # ็ปˆ็ซฏ็Šถๆ€
โ”‚   โ”‚   โ””โ”€โ”€ useThemeStore.ts       # ไธป้ข˜ & UI ็Šถๆ€
โ”‚   โ”œโ”€โ”€ hooks/                 # ่‡ชๅฎšไน‰ Hooks
โ”‚   โ”‚   โ”œโ”€โ”€ useIpc.ts              # IPC ้€šไฟก๏ผˆ็ฑปๅž‹ๅฎ‰ๅ…จๅฐ่ฃ…๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ useMarkdownParser.ts   # Markdown ่งฃๆž + ๅฎžๆ—ถๆธฒๆŸ“
โ”‚   โ”‚   โ”œโ”€โ”€ useScrollSync.ts       # ็ผ–่พ‘-้ข„่งˆๆปšๅŠจๅŒๆญฅ
โ”‚   โ”‚   โ”œโ”€โ”€ useAutoSave.ts         # ่‡ชๅŠจไฟๅญ˜
โ”‚   โ”‚   โ”œโ”€โ”€ useImagePaste.ts       # ๅ›พ็‰‡็ฒ˜่ดดๅค„็†
โ”‚   โ”‚   โ””โ”€โ”€ useExport.ts           # ๅฏผๅ‡บ้€ป่พ‘
โ”‚   โ”œโ”€โ”€ services/              # ไธšๅŠก้€ป่พ‘ๆœๅŠก
โ”‚   โ”‚   โ”œโ”€โ”€ markdownEngine.ts      # markdown-it ้…็ฝฎ + ๆ’ไปถๅŠ ่ฝฝ
โ”‚   โ”‚   โ”œโ”€โ”€ fileService.ts         # ๆ–‡ไปถ CRUD๏ผˆIPC ่ฐƒ็”จไธป่ฟ›็จ‹๏ผ‰
โ”‚   โ”‚   โ”œโ”€โ”€ exportService.ts       # ๅฏผๅ‡บไธบ HTML/PDF/DOCX
โ”‚   โ”‚   โ””โ”€โ”€ imageService.ts        # ๅ›พ็‰‡ไธŠไผ /ๆœฌๅœฐๅญ˜ๅ‚จ
โ”‚   โ”œโ”€โ”€ styles/
โ”‚   โ”‚   โ”œโ”€โ”€ globals.css            # ๅ…จๅฑ€ๆ ทๅผ & ไธป้ข˜ๅ˜้‡
โ”‚   โ”‚   โ”œโ”€โ”€ themes/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ light.css          # ไบฎ่‰ฒไธป้ข˜ๅ˜้‡
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ dark.css           # ๆš—่‰ฒไธป้ข˜ๅ˜้‡
โ”‚   โ”‚   โ””โ”€โ”€ preview.css            # Markdown ้ข„่งˆๅŒบๆ ทๅผ
โ”‚   โ””โ”€โ”€ types/
โ”‚       โ”œโ”€โ”€ editor.ts              # ็ผ–่พ‘ๅ™จ็ฑปๅž‹
โ”‚       โ”œโ”€โ”€ file.ts                # ๆ–‡ไปถ็ณป็ปŸ็ฑปๅž‹
โ”‚       โ”œโ”€โ”€ ipc.ts                 # IPC ๆŽฅๅฃ็ฑปๅž‹ๅฎšไน‰
โ”‚       โ””โ”€โ”€ theme.ts               # ไธป้ข˜็ฑปๅž‹
โ”œโ”€โ”€ claude-code/               # Claude Code ๆบ็ ๏ผˆไฟๆŒๅŽŸ็›ฎๅฝ•็ป“ๆž„๏ผ‰
โ”‚   โ””โ”€โ”€ src/                   # query.ts / QueryEngine.ts / tools / commands ็ญ‰
โ”œโ”€โ”€ resources/
โ”‚   โ”œโ”€โ”€ icons/                 # ๅบ”็”จๅ›พๆ ‡
โ”‚   โ””โ”€โ”€ templates/             # ๅฏผๅ‡บๆจกๆฟ
โ”œโ”€โ”€ electron-builder.yml       # electron-builder ๆ‰“ๅŒ…้…็ฝฎ
โ”œโ”€โ”€ vite.config.ts             # Vite ๆž„ๅปบ้…็ฝฎ
โ”œโ”€โ”€ tailwind.config.ts         # Tailwind CSS ้…็ฝฎ
โ””โ”€โ”€ package.json

Markdown ๆธฒๆŸ“็ฎก็บฟ

็ผ–่พ‘ๅ™จๅ†…ๅฎน็ป่ฟ‡ไปฅไธ‹ๆตๆฐด็บฟๅค„็†ไธบ้ข„่งˆ HTML๏ผš

Markdown ๆบ็ 
  โ†’ โ‘  ๆๅ–ไฟๆŠคไปฃ็ ๅ— (```...```)
  โ†’ โ‘ก ๆๅ–ไฟๆŠคๆ•ฐๅญฆๅ…ฌๅผ ($...$ ๅ’Œ $$...$$)
  โ†’ โ‘ข markdown-it ๆธฒๆŸ“ (breaks, linkify, emoji, GFM, ่„šๆณจ, ไธŠไธ‹ๆ ‡)
  โ†’ โ‘ฃ ๆขๅคไปฃ็ ๅ—ๅนถ HTML ่ฝฌไน‰
  โ†’ โ‘ค highlight.js ไปฃ็ ่ฏญๆณ•้ซ˜ไบฎ
  โ†’ โ‘ฅ KaTeX ๆธฒๆŸ“ๆ•ฐๅญฆๅ…ฌๅผ โ†’ SVG
  โ†’ โ‘ฆ Mermaid ๅ›พ่กจๆธฒๆŸ“ โ†’ SVG
  โ†’ โ‘ง sanitize-html XSS ้˜ฒๆŠค
  โ†’ ๆœ€็ปˆ HTML

้ฆ–ๆฌกๅฏๅŠจๆต็จ‹

ๅบ”็”จ้ฆ–ๆฌกๅฏๅŠจ
    โ”‚
    โ–ผ
ๆฃ€ๆต‹ Bun ่ฟ่กŒๆ—ถ (which bun / where bun)
    โ”‚
    โ”œโ”€โ†’ ๆ‰พๅˆฐ โ†’ ่ฎฐๅฝ•่ทฏๅพ„ โ†’ ไธ‹ไธ€ๆญฅ
    โ”‚
    โ””โ”€โ†’ ๆœชๆ‰พๅˆฐ โ†’ ๅผนๅ‡บๅผ•ๅฏผๅฏน่ฏๆก†
                  โ”œโ”€ [ไธ€้”ฎๅฎ‰่ฃ…] ๆ‰“ๅผ€็ปˆ็ซฏๆ‰ง่กŒๅฎ‰่ฃ…ๅ‘ฝไปค
                  โ”œโ”€ [ๆ‰‹ๅŠจๅฎ‰่ฃ…] ๆ‰“ๅผ€ bun.sh ๅฎ˜็ฝ‘
                  โ””โ”€ [่ทณ่ฟ‡] ็ผ–่พ‘ๅ™จๅฏๆญฃๅธธไฝฟ็”จ๏ผŒAI ็ปˆ็ซฏๆš‚ไธๅฏ็”จ
    โ”‚
    โ–ผ
API Key ้…็ฝฎ
    โ”œโ”€ ่พ“ๅ…ฅ Anthropic API Key
    โ”œโ”€ ๅฏ้€‰๏ผš่‡ชๅฎšไน‰ API Base URL
    โ””โ”€ ไฟๅญ˜ โ†’ ๅŠ ๅฏ†ๅ†™ๅ…ฅๆœฌๅœฐ็”จๆˆทๆ•ฐๆฎ็›ฎๅฝ•
              (Windows: %APPDATA% | macOS: ~/Library/Application Support
               | Linux: ~/.config) /claude-md-editor/config.json

ๅŽ็ปญ่ฟ่กŒ๏ผšๅฏๅŠจ Claude Code ๅญ่ฟ›็จ‹ๆ—ถไปŽ้…็ฝฎๆ–‡ไปถ่ฏปๅ– API Key๏ผŒ
้€š่ฟ‡็Žฏๅขƒๅ˜้‡ไผ ้€’็ป™ Bun ๅญ่ฟ›็จ‹

MVP ่ทฏ็บฟๅ›พ

Phase 1๏ผšๅŸบ็ก€ๆก†ๆžถๆญๅปบ

  • Electron ้กน็›ฎๅˆๅง‹ๅŒ–๏ผŒ้…็ฝฎ Vite + React + TypeScript
  • ๅฎž็Žฐไธ‰ๆฎตๅผๅธƒๅฑ€๏ผˆAppShell + SplitPane๏ผ‰
  • ้›†ๆˆ CodeMirror 6๏ผŒๅฎž็ŽฐๅŸบ็ก€ Markdown ็ผ–่พ‘
  • ้›†ๆˆ markdown-it๏ผŒๅฎž็Žฐๅฎžๆ—ถ้ข„่งˆ
  • ๅฎž็Žฐๆš—่‰ฒ/ไบฎ่‰ฒไธป้ข˜ๅˆ‡ๆข
  • ้›†ๆˆ xterm.js๏ผŒ่ฟžๆŽฅ Claude Code PTY ็ปˆ็ซฏ

Phase 2๏ผšๆ ธๅฟƒ็ผ–่พ‘ๅŠŸ่ƒฝ

  • ๆ–‡ไปถ็›ฎๅฝ•ๆ ‘๏ผˆๆ–ฐๅปบ/ๆ‰“ๅผ€/ไฟๅญ˜/ๅฆๅญ˜ไธบ๏ผ‰
  • ๅคšๆ ‡็ญพ้กต็ฎก็†
  • ๅทฅๅ…ทๆ ๆŒ‰้’ฎ๏ผˆๅŠ ็ฒ—ใ€ๆ–œไฝ“ใ€้“พๆŽฅใ€ๅ›พ็‰‡ใ€ๅˆ—่กจใ€ๆ ‡้ข˜๏ผ‰
  • ๅธธ็”จๅฟซๆท้”ฎ๏ผˆCtrl+B/I/K/S/Z/Y/1~6๏ผ‰
  • ๅŒๆ /ๅ•ๆ ๅˆ‡ๆข
  • ่ฏญๆณ•้ซ˜ไบฎไธŽ่‡ชๅŠจ่กฅๅ…จ

Phase 3๏ผšๅขžๅผบๅŠŸ่ƒฝ

  • ๅ›พ็‰‡ๆ‹–ๆ‹ฝ/็ฒ˜่ดดไธŠไผ 
  • ่กจๆ ผๅฏ่ง†ๅŒ–ๆ’ๅ…ฅไธŽ Tab ๅฏผ่ˆช
  • ๆปšๅŠจๅŒๆญฅ
  • ๅฏผๅ‡บ HTML / PDF / DOCX
  • Mermaid ๅ›พ่กจๆธฒๆŸ“
  • KaTeX ๆ•ฐๅญฆๅ…ฌๅผๆธฒๆŸ“
  • ็›ฎๅฝ•่‡ชๅŠจ็”Ÿๆˆ๏ผˆTOC๏ผ‰

Phase 4๏ผšไฝ“้ชŒๆ‰“็ฃจ

  • ไธ“ๆณจๆจกๅผ
  • ๅ…จๅฑ€ๆœ็ดขๆ›ฟๆข
  • ่‡ชๅŠจไฟๅญ˜่‰็จฟ
  • ๅŽŸ็”Ÿ่œๅ•ๆ ้›†ๆˆ

Phase 5๏ผšๅ‘ๅธƒไธŽๆ‰“ๅŒ…

  • electron-builder ๆ‰“ๅŒ…้…็ฝฎ
  • Windows / macOS / Linux ไธ‰ๅนณๅฐๆž„ๅปบ
  • ่‡ชๅŠจๆ›ดๆ–ฐ้…็ฝฎ

่ฎธๅฏ่ฏ

MIT


่‡ด่ฐข

  • CodeMirror โ€” ็ผ–่พ‘ๅ™จๅ†…ๆ ธ
  • KaTeX โ€” ๆ•ฐๅญฆๅ…ฌๅผๆธฒๆŸ“
  • Mermaid โ€” ๅ›พ่กจๆธฒๆŸ“
  • markdown-it โ€” Markdown ่งฃๆž
  • Electron โ€” ๆกŒ้ขๅบ”็”จๆก†ๆžถ
  • Vite โ€” ๆž„ๅปบๅทฅๅ…ท
  • xterm.js โ€” ็ปˆ็ซฏๆจกๆ‹Ÿๅ™จ
  • Claude Code โ€” AI ๅผ•ๆ“Žๅ†…ๆ ธ