Skip to main content

SKILL_SOURCE

Constant SKILL_SOURCE 

Source
pub const SKILL_SOURCE: &str = "---\nname: yggdrasil-writing\ndescription: \u{4e3a} Yggdrasil \u{535a}\u{5ba2}\u{64b0}\u{5199}\u{6216}\u{4fee}\u{6539}\u{6587}\u{7ae0}\u{ff0c}\u{6b63}\u{786e}\u{4f7f}\u{7528}\u{53ef}\u{8fd0}\u{884c}\u{4ee3}\u{7801}\u{5757}\u{3001}Mermaid \u{56fe}\u{8868}\u{3001}\u{6570}\u{5b66}\u{4e0e}\u{5316}\u{5b66}\u{516c}\u{5f0f}\u{3001}\u{811a}\u{6ce8}\u{7b49}\u{6b63}\u{6587}\u{529f}\u{80fd}\u{ff0c}\u{5e76}\u{6309}\u{9700}\u{901a}\u{8fc7} Yggdrasil MCP \u{4fdd}\u{5b58}\u{6216}\u{53d1}\u{5e03}\u{3002}\u{9002}\u{7528}\u{4e8e}\u{6587}\u{7ae0}\u{521b}\u{4f5c}\u{4e0e}\u{6392}\u{7248}\u{ff0c}\u{4e0d}\u{7528}\u{4e8e}\u{5f00}\u{53d1}\u{535a}\u{5ba2}\u{7a0b}\u{5e8f}\u{672c}\u{8eab}\u{3002}\n---\n\n# Yggdrasil \u{6587}\u{7ae0}\u{5199}\u{4f5c}\n\n\u{9762}\u{5411} Yggdrasil \u{7684} Markdown \u{6b63}\u{6587}\u{521b}\u{4f5c}\u{3002}\u{6839}\u{636e}\u{5185}\u{5bb9}\u{9009}\u{62e9}\u{80fd}\u{5e2e}\u{52a9}\u{8bfb}\u{8005}\u{7406}\u{89e3}\u{6216}\u{52a8}\u{624b}\u{9a8c}\u{8bc1}\u{7684}\u{529f}\u{80fd}\u{ff0c}\u{4e0d}\u{5fc5}\u{6bcf}\u{7bc7}\u{6587}\u{7ae0}\u{90fd}\u{7528}\u{9f50}\u{3002}\u{9075}\u{5faa}\u{7528}\u{6237}\u{6307}\u{5b9a}\u{7684}\u{8bed}\u{8a00}\u{3001}\u{98ce}\u{683c}\u{3001}\u{7ed3}\u{6784}\u{4e0e}\u{4ea4}\u{4ed8}\u{8303}\u{56f4}\u{3002}\n\n## \u{6b63}\u{6587}\u{4e0e}\u{5143}\u{6570}\u{636e}\n\n- \u{6b63}\u{6587}\u{4f7f}\u{7528} Markdown\u{ff0c}\u{63d0}\u{4ea4}\u{7ed9} MCP \u{7684} `content_md`\u{3002}\u{6807}\u{9898}\u{3001}\u{6458}\u{8981}\u{3001}\u{6807}\u{7b7e}\u{3001}\u{5c01}\u{9762}\u{548c}\u{53d1}\u{5e03}\u{72b6}\u{6001}\u{5c5e}\u{4e8e}\u{72ec}\u{7acb}\u{5b57}\u{6bb5}\u{ff0c}\u{4e0d}\u{8981}\u{628a} YAML frontmatter \u{5f53}\u{6210}\u{6587}\u{7ae0}\u{5143}\u{6570}\u{636e}\u{63d0}\u{4ea4}\u{3002}\n- \u{9875}\u{9762}\u{5df2}\u{6709}\u{6587}\u{7ae0}\u{6807}\u{9898}\u{ff0c}\u{6b63}\u{6587}\u{901a}\u{5e38}\u{4ece} `##` \u{5f00}\u{59cb}\u{ff0c}\u{7528} `###` \u{7ec6}\u{5206}\u{3002}\u{7cfb}\u{7edf}\u{81ea}\u{52a8}\u{751f}\u{6210}\u{76ee}\u{5f55}\u{548c}\u{6807}\u{9898}\u{951a}\u{70b9}\u{ff0c}\u{4e0d}\u{9700}\u{8981}\u{624b}\u{5199}\u{76ee}\u{5f55} HTML\u{3002}\u{4e3a}\u{517c}\u{5bb9}\u{540e}\u{53f0}\u{5bcc}\u{6587}\u{672c}\u{7f16}\u{8f91}\u{5668}\u{ff0c}\u{4e3b}\u{8981}\u{4f7f}\u{7528} H2/H3\u{ff0c}\u{907f}\u{514d}\u{91cd}\u{590d}\u{7684}\u{5c0f}\u{8282}\u{6807}\u{9898}\u{3002}\n- \u{666e}\u{901a}\u{6bb5}\u{843d}\u{3001}\u{94fe}\u{63a5}\u{3001}\u{56fe}\u{7247}\u{3001}\u{5f15}\u{7528}\u{3001}\u{5217}\u{8868}\u{3001}\u{7c97}\u{4f53}\u{3001}\u{659c}\u{4f53}\u{3001}\u{5220}\u{9664}\u{7ebf}\u{3001}\u{5206}\u{5272}\u{7ebf}\u{3001}\u{8868}\u{683c}\u{4e0e}\u{4efb}\u{52a1}\u{5217}\u{8868}\u{5747}\u{53ef}\u{4f7f}\u{7528}\u{3002}\n- \u{4e0b}\u{5217}\u{793a}\u{4f8b}\u{5916}\u{5c42}\u{56db}\u{53cd}\u{5f15}\u{53f7}\u{7528}\u{4e8e}\u{5c55}\u{793a} Markdown \u{6e90}\u{7801}\u{ff0c}\u{5199}\u{6587}\u{7ae0}\u{65f6}\u{53ea}\u{53d6}\u{5176}\u{4e2d}\u{7684}\u{5185}\u{5bb9}\u{3002}\n\n## \u{53ef}\u{8fd0}\u{884c}\u{4ee3}\u{7801}\u{5757}\n\n\u{9700}\u{8981}\u{8bfb}\u{8005}\u{8fd0}\u{884c}\u{7684}\u{5b8c}\u{6574}\u{793a}\u{4f8b}\u{ff0c}\u{5728}\u{56f4}\u{680f}\u{8bed}\u{8a00}\u{540d}\u{540e}\u{52a0} `runnable`\u{3002}\u{666e}\u{901a}\u{4ee3}\u{7801}\u{5757}\u{53ea}\u{6709}\u{9ad8}\u{4eae}\u{548c}\u{590d}\u{5236}\u{529f}\u{80fd}\u{ff0c}\u{4e0d}\u{4f1a}\u{81ea}\u{52a8}\u{53d8}\u{6210}\u{8fd0}\u{884c}\u{5668}\u{3002}\n\n````markdown\n```python runnable\nnumbers = [2, 4, 6]\nprint(sum(numbers))\n```\n````\n\n\u{8fd9}\u{6bb5}\u{4ee3}\u{7801}\u{7684}\u{9884}\u{671f}\u{8f93}\u{51fa}\u{662f} `12`\u{3002}\u{5728}\u{6b63}\u{6587}\u{8bf4}\u{660e}\u{793a}\u{4f8b}\u{7684}\u{4f5c}\u{7528}\u{548c}\u{9884}\u{671f}\u{7ed3}\u{679c}\u{ff1b}\u{53ea}\u{6709}\u{5b9e}\u{9645}\u{6267}\u{884c}\u{9a8c}\u{8bc1}\u{540e}\u{624d}\u{80fd}\u{8bf4}\u{201c}\u{5df2}\u{9a8c}\u{8bc1}\u{201d}\u{3002}\n\n\u{5185}\u{7f6e}\u{8fd0}\u{884c}\u{8bed}\u{8a00}\u{5982}\u{4e0b}\u{ff0c}\u{90e8}\u{7f72}\u{53ef}\u{8fdb}\u{4e00}\u{6b65}\u{7f29}\u{5c0f}\u{53ef}\u{7528}\u{8303}\u{56f4}\u{ff1a}\n\n| \u{56f4}\u{680f}\u{8bed}\u{8a00} | \u{8fd0}\u{884c}\u{73af}\u{5883} | \u{53ef}\u{63a5}\u{53d7}\u{522b}\u{540d} | \u{5185}\u{7f6e}\u{9ed8}\u{8ba4}\u{8d85}\u{65f6} / \u{5185}\u{5b58} |\n| --- | --- | --- | --- |\n| `python` | Python | \u{65e0} | 5 \u{79d2} / 256 MB |\n| `node` | Node.js | `js`\u{3001}`javascript` | 5 \u{79d2} / 256 MB |\n| `bun` | Bun\u{ff0c}\u{652f}\u{6301} TypeScript | `ts`\u{3001}`typescript` | 5 \u{79d2} / 256 MB |\n| `go` | Go\u{ff0c}\u{7f16}\u{8bd1}\u{5e76}\u{6267}\u{884c} | \u{65e0} | 10 \u{79d2} / 256 MB |\n| `rust` | rustc\u{ff0c}\u{7f16}\u{8bd1}\u{5e76}\u{6267}\u{884c} | `rs` | 15 \u{79d2} / 512 MB |\n\n\u{5199}\u{4f5c}\u{7ea6}\u{675f}\u{ff1a}\n\n- \u{6bcf}\u{5757}\u{4f5c}\u{4e3a}\u{72ec}\u{7acb}\u{5355}\u{6587}\u{4ef6}\u{7a0b}\u{5e8f}\u{7f16}\u{5199}\u{ff0c}\u{4e0d}\u{4f9d}\u{8d56}\u{4e0a}\u{4e00}\u{5757}\u{7684}\u{53d8}\u{91cf}\u{3001}\u{6587}\u{4ef6}\u{6216}\u{8fdb}\u{7a0b}\u{3002}Go \u{5e26} `package main` \u{4e0e} `func main()`\u{ff0c}Rust \u{5e26} `fn main()`\u{3002}\n- \u{4f18}\u{5148}\u{4f7f}\u{7528}\u{6807}\u{51c6}\u{5e93}\u{548c}\u{4ee3}\u{7801}\u{4e2d}\u{81ea}\u{5e26}\u{7684}\u{6570}\u{636e}\u{ff1b}\u{4e0d}\u{5047}\u{5b9a}\u{7b2c}\u{4e09}\u{65b9}\u{4f9d}\u{8d56}\u{5df2}\u{5b89}\u{88c5}\u{ff0c}\u{4e0d}\u{4f9d}\u{8d56}\u{8bfb}\u{8005}\u{7684}\u{672c}\u{5730}\u{6587}\u{4ef6}\u{3001}\u{6570}\u{636e}\u{5e93}\u{6216}\u{5bc6}\u{94a5}\u{3002}\n- \u{5f53}\u{524d}\u{5185}\u{7f6e}\u{8bed}\u{8a00}\u{5747}\u{4e0d}\u{5141}\u{8bb8}\u{7f51}\u{7edc}\u{ff1b}\u{5199} `allow_network:true` \u{4e5f}\u{65e0}\u{6cd5}\u{89e3}\u{9664}\u{8bed}\u{8a00}\u{7ea7}\u{9650}\u{5236}\u{3002}\u{7f51}\u{7edc}\u{8bf7}\u{6c42}\u{793a}\u{4f8b}\u{901a}\u{5e38}\u{7528}\u{666e}\u{901a}\u{4ee3}\u{7801}\u{5757}\u{5c55}\u{793a}\u{3002}\n- \u{9605}\u{8bfb}\u{5668}\u{7ec8}\u{7aef}\u{53ea}\u{8f93}\u{51fa}\u{ff0c}\u{4e0d}\u{63d0}\u{4f9b} stdin\u{3002}\u{4e0d}\u{8981}\u{4f7f}\u{7528}\u{7b49}\u{5f85}\u{8f93}\u{5165}\u{7684} `input()`\u{3001}\u{4ea4}\u{4e92}\u{63d0}\u{793a}\u{6216}\u{5e38}\u{9a7b}\u{670d}\u{52a1}\u{4f5c}\u{4e3a}\u{53ef}\u{8fd0}\u{884c}\u{793a}\u{4f8b}\u{3002}\n- Node/Bun \u{8fd0}\u{884c}\u{5668}\u{4e0d}\u{662f}\u{6d4f}\u{89c8}\u{5668}\u{ff0c}\u{4e0d}\u{63d0}\u{4f9b} DOM \u{9875}\u{9762}\u{9884}\u{89c8}\u{3002}HTML/CSS\u{3001}Vue\u{3001}Shell\u{3001}SQL \u{53ef}\u{4ee5}\u{4f5c}\u{4e3a}\u{666e}\u{901a}\u{4ee3}\u{7801}\u{793a}\u{4f8b}\u{ff0c}\u{4e0d}\u{80fd}\u{56e0}\u{6b64}\u{6807}\u{8bb0}\u{4e3a}\u{53ef}\u{8fd0}\u{884c}\u{3002}\n- \u{9ed8}\u{8ba4}\u{8f93}\u{51fa}\u{4e0a}\u{9650}\u{4e3a} 1 MiB\u{ff0c}\u{6e90}\u{7801}\u{9ed8}\u{8ba4}\u{4e0a}\u{9650}\u{4e3a} 64 KiB\u{ff0c}\u{5b9e}\u{9645}\u{9650}\u{5236}\u{53d7}\u{670d}\u{52a1}\u{5668}\u{914d}\u{7f6e}\u{7ea6}\u{675f}\u{3002}\u{8fd0}\u{884c}\u{6309}\u{94ae}\u{6b63}\u{5e38}\u{5de5}\u{4f5c}\u{8fd8}\u{4f9d}\u{8d56}\u{90e8}\u{7f72}\u{7684} Docker \u{548c}\u{5bf9}\u{5e94}\u{955c}\u{50cf}\u{3002}\n\n\u{4f8b}\u{5982} TypeScript\u{ff1a}\n\n````markdown\n```typescript runnable\nconst square = (n: number): number => n * n;\nconsole.log(square(7));\n```\n````\n\n\u{4ec5}\u{5728}\u{786e}\u{6709}\u{9700}\u{8981}\u{65f6}\u{8986}\u{76d6}\u{8d44}\u{6e90}\u{9650}\u{5236}\u{3002}JSON \u{5fc5}\u{987b}\u{7d27}\u{51d1}\u{5730}\u{5199}\u{5728}\u{540c}\u{4e00}\u{884c}\u{ff0c}**\u{4e0d}\u{80fd}\u{542b}\u{7a7a}\u{767d}\u{ff0c}\u{4e14}\u{8981}\u{63d0}\u{4f9b}\u{5168}\u{90e8}\u{4e94}\u{4e2a}\u{5b57}\u{6bb5}**\u{ff1a}\n\n````markdown\n```python runnable {\"cpu_cores\":1.0,\"memory_mb\":256,\"timeout_secs\":10,\"output_bytes\":1048576,\"allow_network\":false}\nprint(sum(range(1000)))\n```\n````\n\n\u{5f53}\u{524d}\u{89e3}\u{6790}\u{5668}\u{4f1a}\u{5ffd}\u{7565}\u{5b57}\u{6bb5}\u{4e0d}\u{5b8c}\u{6574}\u{6216}\u{88ab}\u{7a7a}\u{767d}\u{62c6}\u{5f00}\u{7684} JSON\u{ff0c}\u{4f8b}\u{5982} `{\"timeout_secs\":10}` \u{5e76}\u{4e0d}\u{751f}\u{6548}\u{3002}\u{914d}\u{7f6e}\u{53ea}\u{80fd}\u{5728}\u{670d}\u{52a1}\u{5668}\u{4e0a}\u{9650}\u{5185}\u{8c03}\u{6574}\u{3002}`run` \u{4e5f}\u{662f}\u{53ef}\u{8bc6}\u{522b}\u{6807}\u{8bb0}\u{ff0c}\u{521b}\u{4f5c}\u{65f6}\u{7edf}\u{4e00}\u{7528} `runnable`\u{3002}\n\n\u{5982}\u{5f53}\u{524d}\u{8fde}\u{63a5}\u{63d0}\u{4f9b} `run_code` \u{4e14}\u{5177}\u{5907} admin \u{6743}\u{9650}\u{ff0c}\u{53ef}\u{7528} `language` \u{548c} `source` \u{9a8c}\u{8bc1}\u{793a}\u{4f8b}\u{ff0c}\u{68c0}\u{67e5} `status`\u{3001}`exit_code`\u{3001}`stdout` \u{548c} `stderr`\u{3002}\u{8be5}\u{5de5}\u{5177}\u{4e0d}\u{63a5}\u{53d7}\u{56f4}\u{680f}\u{8d44}\u{6e90}\u{8986}\u{76d6}\u{53c2}\u{6570}\u{ff1b}\u{5b83}\u{9a8c}\u{8bc1}\u{7684}\u{662f}\u{9ed8}\u{8ba4}\u{9650}\u{5236}\u{4e0b}\u{7684}\u{4ee3}\u{7801}\u{3002}\u{4e0d}\u{53ef}\u{7528}\u{65f6}\u{5982}\u{5b9e}\u{8bf4}\u{660e}\u{672a}\u{6267}\u{884c}\u{ff0c}\u{4e0d}\u{5fc5}\u{56e0}\u{6b64}\u{963b}\u{6b62}\u{4ea4}\u{4ed8}\u{6587}\u{7a3f}\u{3002}\n\n## Mermaid \u{6d41}\u{7a0b}\u{56fe}\u{4e0e}\u{5173}\u{7cfb}\u{56fe}\n\n\u{4f7f}\u{7528}\u{8bed}\u{8a00}\u{6807}\u{8bb0}\u{6070}\u{4e3a} `mermaid` \u{7684}\u{56f4}\u{680f}\u{ff0c}\u{6b63}\u{6587}\u{4fdd}\u{7559} Mermaid \u{6e90}\u{7801}\u{ff0c}\u{4e0d}\u{8981}\u{8f6c}\u{6362}\u{6210}\u{56fe}\u{7247}\u{6216}\u{624b}\u{5199} SVG\u{3002}\n\n````markdown\n```mermaid\nflowchart TD\n    A[\"\u{6536}\u{5230}\u{8bf7}\u{6c42}\"] --> B{\"\u{7f13}\u{5b58}\u{547d}\u{4e2d}\u{ff1f}\"}\n    B -->|\u{662f}| C[\"\u{8fd4}\u{56de}\u{7f13}\u{5b58}\"]\n    B -->|\u{5426}| D[\"\u{8bfb}\u{53d6}\u{6570}\u{636e}\u{5e93}\"]\n    D --> E[\"\u{5199}\u{5165}\u{7f13}\u{5b58}\"]\n    E --> C\n```\n````\n\n\u{8c03}\u{7528}\u{987a}\u{5e8f}\u{9002}\u{5408}\u{65f6}\u{5e8f}\u{56fe}\u{ff1a}\n\n````markdown\n```mermaid\nsequenceDiagram\n    participant C as \u{5ba2}\u{6237}\u{7aef}\n    participant S as \u{670d}\u{52a1}\u{7aef}\n    C->>S: \u{8bf7}\u{6c42}\u{6587}\u{7ae0}\n    S-->>C: \u{8fd4}\u{56de}\u{6b63}\u{6587}\n```\n````\n\n\u{7ad9}\u{70b9}\u{5728}\u{6d4f}\u{89c8}\u{5668}\u{4e2d}\u{6e32}\u{67d3}\u{56fe}\u{8868}\u{ff0c}\u{81ea}\u{52a8}\u{9002}\u{914d}\u{660e}\u{6697}\u{4e3b}\u{9898}\u{ff0c}\u{5e76}\u{652f}\u{6301}\u{70b9}\u{51fb}\u{653e}\u{5927}\u{3001}\u{7f29}\u{653e}\u{548c}\u{5e73}\u{79fb}\u{3002}\u{4f7f}\u{7528}\u{7b80}\u{77ed}\u{8282}\u{70b9} ID\u{ff0c}\u{5c06}\u{4e2d}\u{6587}\u{6216}\u{542b}\u{6807}\u{70b9}\u{7684}\u{6d41}\u{7a0b}\u{56fe}\u{6807}\u{7b7e}\u{653e}\u{5728}\u{5f15}\u{53f7}\u{4e2d}\u{3002}\u{590d}\u{6742}\u{56fe}\u{62c6}\u{6210}\u{591a}\u{4e2a}\u{6709}\u{8bf4}\u{660e}\u{7684}\u{5c0f}\u{56fe}\u{ff1b}\u{7a84}\u{5c4f}\u{4f18}\u{5148}\u{8003}\u{8651} `TD` \u{5e03}\u{5c40}\u{3002}\n\n\u{91c7}\u{7528} Mermaid \u{5185}\u{7f6e}\u{56fe}\u{8868}\u{8bed}\u{6cd5}\u{3002}\u{7ad9}\u{70b9}\u{4f7f}\u{7528} strict \u{5b89}\u{5168}\u{6a21}\u{5f0f}\u{ff0c}\u{4e0d}\u{4f9d}\u{8d56}\u{70b9}\u{51fb}\u{56de}\u{8c03}\u{3001}\u{81ea}\u{5b9a}\u{4e49}\u{811a}\u{672c}\u{6216}\u{5916}\u{90e8}\u{63d2}\u{4ef6}\u{3002}\u{901a}\u{5e38}\u{4e0d}\u{5199}\u{4e3b}\u{9898}\u{521d}\u{59cb}\u{5316}\u{6307}\u{4ee4}\u{548c}\u{56fa}\u{5b9a}\u{989c}\u{8272}\u{ff0c}\u{8ba9}\u{7ad9}\u{70b9}\u{7edf}\u{4e00}\u{5904}\u{7406}\u{4e3b}\u{9898}\u{3002}\u{670d}\u{52a1}\u{7aef}\u{4fdd}\u{5b58}\u{6210}\u{529f}\u{4e0d}\u{4ee3}\u{8868} Mermaid \u{5df2}\u{5728}\u{6d4f}\u{89c8}\u{5668}\u{6e32}\u{67d3}\u{6210}\u{529f}\u{3002}\n\n## \u{6570}\u{5b66}\u{3001}\u{7269}\u{7406}\u{4e0e}\u{5316}\u{5b66}\u{516c}\u{5f0f}\n\n\u{884c}\u{5185}\u{516c}\u{5f0f}\u{4f7f}\u{7528} `$...$`\u{ff0c}\u{72ec}\u{7acb}\u{516c}\u{5f0f}\u{4f7f}\u{7528} `$$...$$`\u{ff0c}\u{5185}\u{5bb9}\u{662f} TeX\u{ff0c}\u{4e0d}\u{8981}\u{518d}\u{5305}\u{4ee3}\u{7801}\u{56f4}\u{680f}\u{ff1a}\n\n````markdown\n\u{65f6}\u{95f4}\u{590d}\u{6742}\u{5ea6}\u{4e3a} $O(n \\log n)$\u{3002}\n\n$$\n\\sum_{i=1}^{n} i = \\frac{n(n+1)}{2}\n$$\n````\n\n\u{7ad9}\u{70b9}\u{4f7f}\u{7528} KaTeX\u{ff0c}\u{5e76}\u{8865}\u{5145}\u{4e86}\u{7269}\u{7406}\u{5b8f}\u{53ca}\u{5316}\u{5b66}\u{516c}\u{5f0f}\u{5904}\u{7406}\u{ff1a}\n\n````markdown\n\u{5bfc}\u{6570}\u{ff1a}$\\dv{f}{x}$\u{ff0c}\u{504f}\u{5bfc}\u{ff1a}$\\pdv{f}{t}$\u{ff0c}\u{8303}\u{6570}\u{ff1a}$\\norm{v}$\u{3002}\n\n\u{91cf}\u{5b50}\u{6001}\u{5185}\u{79ef}\u{ff1a}$\\braket{\\phi}{\\psi}$\u{3002}\n\n$$\n\\ce{2H2 + O2 -> 2H2O}\n$$\n\n\u{6e29}\u{5ea6}\u{4e3a} $\\pu{298 K}$\u{3002}\n````\n\n\u{53ef}\u{7528}\u{6269}\u{5c55}\u{5305}\u{62ec} `\\RR`\u{3001}`\\ZZ`\u{3001}`\\NN`\u{3001}`\\QQ`\u{3001}`\\CC`\u{3001}`\\dd{...}`\u{3001}`\\grad`\u{3001}`\\divg`\u{3001}`\\curl`\u{3001}`\\bra{...}`\u{3001}`\\ket{...}`\u{3001}`\\expval{...}`\u{3001}`\\abs{...}`\u{3001}`\\vu{...}`\u{3001}`\\qty{...}`\u{3002}\u{8fd9}\u{4e9b}\u{662f}\u{9879}\u{76ee}\u{5b8f}\u{ff0c}\u{5e76}\u{4e0d}\u{7b49}\u{4e8e}\u{52a0}\u{8f7d}\u{4e86}\u{5b8c}\u{6574}\u{7684} LaTeX physics \u{5b8f}\u{5305}\u{ff1b}\u{4f18}\u{5148}\u{91c7}\u{7528}\u{8fd9}\u{91cc}\u{5c55}\u{793a}\u{7684}\u{82b1}\u{62ec}\u{53f7}\u{53c2}\u{6570}\u{5f62}\u{5f0f}\u{3002}\u{6563}\u{5ea6}\u{7528} `\\divg`\u{ff0c}`\\div` \u{4ecd}\u{8868}\u{793a}\u{9664}\u{53f7}\u{3002}\n\nMarkdown \u{6e90}\u{7801}\u{4e2d}\u{4fdd}\u{7559}\u{5355}\u{4e2a}\u{53cd}\u{659c}\u{6760}\u{ff1b}\u{5982}\u{679c}\u{624b}\u{5199} JSON \u{53c2}\u{6570}\u{ff0c}\u{8981}\u{6309} JSON \u{89c4}\u{5219}\u{8f6c}\u{4e49}\u{53cd}\u{659c}\u{6760}\u{548c}\u{6362}\u{884c}\u{3002}\u{4f7f}\u{7528}\u{5de5}\u{5177}\u{7ed3}\u{6784}\u{5316}\u{53c2}\u{6570}\u{65f6}\u{4f20}\u{5165}\u{6b63}\u{5e38} Markdown \u{5b57}\u{7b26}\u{4e32}\u{ff0c}\u{907f}\u{514d}\u{4e8c}\u{6b21}\u{8f6c}\u{4e49}\u{3002}\n\n## \u{811a}\u{6ce8}\u{3001}\u{8868}\u{683c}\u{4e0e}\u{4efb}\u{52a1}\u{5217}\u{8868}\n\n````markdown\n\u{8fd9}\u{9879}\u{7ed3}\u{8bba}\u{6709}\u{989d}\u{5916}\u{7684}\u{9002}\u{7528}\u{6761}\u{4ef6}[^conditions]\u{3002}\n\n| \u{65b9}\u{6848} | \u{9002}\u{7528}\u{60c5}\u{51b5} |\n| --- | --- |\n| \u{7f13}\u{5b58} | \u{91cd}\u{590d}\u{8bfb}\u{53d6} |\n| \u{6279}\u{5904}\u{7406} | \u{53ef}\u{5ef6}\u{8fdf}\u{6267}\u{884c} |\n\n- [x] \u{660e}\u{786e}\u{8f93}\u{5165}\u{8303}\u{56f4}\n- [ ] \u{8bc4}\u{4f30}\u{6781}\u{7aef}\u{60c5}\u{51b5}\n\n[^conditions]: \u{5047}\u{8bbe}\u{8f93}\u{5165}\u{6570}\u{636e}\u{5728}\u{4e00}\u{6b21}\u{8ba1}\u{7b97}\u{671f}\u{95f4}\u{4fdd}\u{6301}\u{4e0d}\u{53d8}\u{3002}\n````\n\n\u{811a}\u{6ce8}\u{4f7f}\u{7528} GFM \u{8bed}\u{6cd5}\u{ff0c}\u{7cfb}\u{7edf}\u{81ea}\u{52a8}\u{7f16}\u{53f7}\u{ff0c}\u{5e76}\u{63d0}\u{4f9b}\u{8fd4}\u{56de}\u{5f15}\u{7528}\u{5904}\u{7684}\u{94fe}\u{63a5}\u{3002}\u{5c06}\u{811a}\u{6ce8}\u{5b9a}\u{4e49}\u{96c6}\u{4e2d}\u{653e}\u{5728}\u{6b63}\u{6587}\u{672b}\u{5c3e}\u{ff1b}\u{591a}\u{6bb5}\u{811a}\u{6ce8}\u{7684}\u{7eed}\u{6bb5}\u{7f29}\u{8fdb}\u{56db}\u{4e2a}\u{7a7a}\u{683c}\u{3002}\u{4efb}\u{52a1}\u{5217}\u{8868}\u{5728}\u{9605}\u{8bfb}\u{9875}\u{5c55}\u{793a}\u{5b8c}\u{6210}\u{72b6}\u{6001}\u{ff0c}\u{4e0d}\u{662f}\u{8bfb}\u{8005}\u{53ef}\u{4fdd}\u{5b58}\u{8fdb}\u{5ea6}\u{7684}\u{4ea4}\u{4e92}\u{6e05}\u{5355}\u{3002}\n\n## \u{56fe}\u{7247}\u{4e0e}\u{6298}\u{53e0}\u{5185}\u{5bb9}\n\n\u{56fe}\u{7247}\u{4f7f}\u{7528} `![\u{6709}\u{610f}\u{4e49}\u{7684}\u{66ff}\u{4ee3}\u{6587}\u{672c}](\u{56fe}\u{7247}URL)`\u{ff0c}\u{9605}\u{8bfb}\u{9875}\u{63d0}\u{4f9b}\u{56fe}\u{7247}\u{706f}\u{7bb1}\u{3002}URL \u{4f7f}\u{7528}\u{53ef}\u{8bbf}\u{95ee}\u{7684} HTTPS \u{5730}\u{5740}\u{6216}\u{771f}\u{5b9e}\u{7684}\u{7ad9}\u{5185}\u{6839}\u{8def}\u{5f84}\u{ff08}\u{5982}\u{7d20}\u{6750}\u{5de5}\u{5177}\u{8fd4}\u{56de}\u{7684} `/uploads/...`\u{ff09}\u{ff0c}\u{4e0d}\u{8981}\u{5199}\u{672c}\u{673a}\u{8def}\u{5f84}\u{3001}`data:` URI \u{6216}\u{51ed}\u{7a7a}\u{6784}\u{9020}\u{7d20}\u{6750}\u{5730}\u{5740}\u{3002}\n\n\u{914d}\u{56fe}\u{4f18}\u{5148}\u{590d}\u{7528}\u{5df2}\u{6709}\u{7d20}\u{6750}\u{3002}\u{5f53}\u{524d}\u{8fde}\u{63a5}\u{63d0}\u{4f9b} `list_assets` \u{4e14}\u{4ee4}\u{724c}\u{5177}\u{5907} admin \u{6743}\u{9650}\u{65f6}\u{ff0c}\u{53ef}\u{6309} `query` \u{641c}\u{7d22}\u{6587}\u{4ef6}\u{540d}\u{6216} alt\u{ff1b}\u{8fd4}\u{56de}\u{7684} `path` \u{52a0} `/uploads/` \u{524d}\u{7f00}\u{5373}\u{4e3a}\u{56fe}\u{7247} URL\u{ff0c}`refs` \u{53ef}\u{67e5}\u{770b}\u{5f15}\u{7528}\u{60c5}\u{51b5}\u{3002}\u{5c01}\u{9762}\u{4f7f}\u{7528}\u{72ec}\u{7acb}\u{7684} `cover_image` \u{5b57}\u{6bb5}\u{3002}\n\n\u{4e0a}\u{4f20}\u{56fe}\u{7247}\u{9700}\u{8981} write \u{6216} admin \u{6743}\u{9650}\u{ff0c}\u{652f}\u{6301} JPEG/PNG/GIF/WebP\u{ff0c}\u{6700}\u{5927} 5 MiB\u{ff1a}\n\n- \u{8fdc}\u{7a0b}\u{56fe}\u{7247}\u{ff1a}\u{8c03}\u{7528} `upload_media`\u{ff0c}\u{4f20}\u{5165} HTTPS `url` \u{548c}\u{53ef}\u{9009} `alt`\u{3002}\u{8be5}\u{5de5}\u{5177}\u{4e0d}\u{63a5}\u{6536}\u{672c}\u{5730}\u{8def}\u{5f84}\u{6216} Base64\u{3002}\n- \u{672c}\u{5730}\u{56fe}\u{7247}\u{ff1a}\u{5ba2}\u{6237}\u{7aef}\u{5177}\u{5907} HTTP \u{6216} shell \u{80fd}\u{529b}\u{4e14}\u{5df2}\u{914d}\u{7f6e}\u{4ee4}\u{724c}\u{65f6}\u{ff0c}\u{8c03}\u{7528} `POST /api/mcp/upload`\u{ff0c}\u{4f7f}\u{7528} Bearer \u{9274}\u{6743}\u{53ca} multipart \u{7684} `file`\u{3001}\u{53ef}\u{9009} `alt` \u{5b57}\u{6bb5}\u{3002}\u{4e24}\u{5b57}\u{6bb5}\u{987a}\u{5e8f}\u{4e0d}\u{9650}\u{ff1b}\u{4ec5}\u{8fde}\u{63a5} MCP \u{5de5}\u{5177}\u{5e76}\u{4e0d}\u{81ea}\u{52a8}\u{5177}\u{5907}\u{672c}\u{5730}\u{6587}\u{4ef6}\u{4e0a}\u{4f20}\u{80fd}\u{529b}\u{3002}\n\n\u{4e24}\u{6761}\u{901a}\u{9053}\u{5747}\u{8fd4}\u{56de} `asset_id`\u{3001}`url`\u{3001}`alt`\u{3001}\u{5c3a}\u{5bf8}\u{3001}\u{6700}\u{7ec8} MIME \u{548c} `reused`\u{3002}\u{4f7f}\u{7528}\u{5b9e}\u{9645}\u{8fd4}\u{56de}\u{7684} URL\u{ff1b}\u{91cd}\u{590d}\u{4e0a}\u{4f20}\u{8fd4}\u{56de}\u{76f8}\u{540c}\u{7d20}\u{6750} ID\u{ff0c}\u{7701}\u{7565} alt \u{4fdd}\u{7559}\u{65e7}\u{503c}\u{ff0c}\u{7a7a}\u{767d}\u{6e05}\u{9664}\u{3002}\u{5177}\u{6709} admin \u{6743}\u{9650}\u{65f6}\u{53ef}\u{7528} `update_asset_alt(id, alt)` \u{4fee}\u{6539}\u{7d20}\u{6750}\u{8bf4}\u{660e}\u{3002}\u{7d20}\u{6750} alt \u{4e0d}\u{4f1a}\u{56de}\u{5199}\u{5df2}\u{6709}\u{6587}\u{7ae0}\u{ff0c}\u{6b63}\u{6587}\u{4ecd}\u{9700}\u{586b}\u{5199} Markdown \u{56fe}\u{7247}\u{66ff}\u{4ee3}\u{6587}\u{672c}\u{3002}\n\n\u{7d20}\u{6750}\u{5220}\u{9664}\u{3001}\u{6279}\u{91cf}\u{5220}\u{9664}\u{3001}\u{5b64}\u{513f}\u{6e05}\u{7406}\u{4e0e}\u{7d22}\u{5f15}\u{91cd}\u{5efa}\u{5c5e}\u{4e8e}\u{72ec}\u{7acb}\u{7ba1}\u{7406}\u{64cd}\u{4f5c}\u{ff0c}\u{4e0d}\u{4f5c}\u{4e3a}\u{5199}\u{4f5c}\u{6536}\u{5c3e}\u{81ea}\u{52a8}\u{6267}\u{884c}\u{ff1b}\u{88ab}\u{8349}\u{7a3f}\u{3001}\u{56de}\u{6536}\u{7ad9}\u{6587}\u{7ae0}\u{7b49}\u{5f15}\u{7528}\u{7684}\u{7d20}\u{6750}\u{540c}\u{6837}\u{53d7}\u{5220}\u{9664}\u{4fdd}\u{62a4}\u{3002}\n\n\u{6587}\u{7ae0}\u{670d}\u{52a1}\u{7aef}\u{5141}\u{8bb8} `details` / `summary`\u{ff0c}\u{53ef}\u{7528}\u{4e8e}\u{8865}\u{5145}\u{63a8}\u{5bfc}\u{6216}\u{53c2}\u{8003}\u{7b54}\u{6848}\u{ff1a}\n\n````markdown\n<details>\n<summary>\u{67e5}\u{770b}\u{63a8}\u{5bfc}</summary>\n\n\u{8fd9}\u{91cc}\u{5199}\u{8865}\u{5145}\u{8bf4}\u{660e}\u{ff0c}\u{4fdd}\u{7559}\u{6807}\u{7b7e}\u{4e0e} Markdown \u{5185}\u{5bb9}\u{4e4b}\u{95f4}\u{7684}\u{7a7a}\u{884c}\u{3002}\n\n</details>\n````\n\n\u{540e}\u{53f0}\u{5bcc}\u{6587}\u{672c}\u{7f16}\u{8f91}\u{5668}\u{6ca1}\u{6709}\u{5bf9}\u{5e94}\u{6298}\u{53e0}\u{8282}\u{70b9}\u{6269}\u{5c55}\u{ff0c}\u{4e0d}\u{5e94}\u{4fdd}\u{8bc1}\u{8fd9}\u{79cd}\u{539f}\u{59cb} HTML \u{7ecf}\u{7f16}\u{8f91}\u{5668}\u{518d}\u{6b21}\u{4fdd}\u{5b58}\u{540e}\u{65e0}\u{635f}\u{3002}\u{9700}\u{8981}\u{53cd}\u{590d}\u{5728}\u{540e}\u{53f0}\u{7f16}\u{8f91}\u{7684}\u{5185}\u{5bb9}\u{4f18}\u{5148}\u{7528}\u{666e}\u{901a}\u{5c0f}\u{8282}\u{3002}\n\n\u{6b63}\u{6587}\u{7ecf}\u{8fc7} HTML \u{6e05}\u{7406}\u{ff0c}\u{4e0d}\u{652f}\u{6301}\u{5d4c}\u{5165}\u{4efb}\u{610f} `<script>`\u{3001}`<style>`\u{3001}`<iframe>` \u{6216}\u{4e8b}\u{4ef6}\u{5904}\u{7406}\u{5c5e}\u{6027}\u{3002}\u{4e0d}\u{8981}\u{628a} MDX \u{7ec4}\u{4ef6}\u{3001}Obsidian `[[\u{53cc}\u{94fe}]]`\u{3001}`:::tip` \u{5bb9}\u{5668}\u{6216}\u{4efb}\u{610f}\u{7b2c}\u{4e09}\u{65b9}\u{63d2}\u{4ef6}\u{8bed}\u{6cd5}\u{5f53}\u{6210}\u{5df2}\u{652f}\u{6301}\u{529f}\u{80fd}\u{ff1b}\u{63d0}\u{793a}\u{4fe1}\u{606f}\u{53ef}\u{4ee5}\u{5199}\u{6210}\u{666e}\u{901a}\u{5f15}\u{7528} `> **\u{63d0}\u{793a}\u{ff1a}** ...`\u{3002}\n\n## \u{901a}\u{8fc7} MCP \u{4ea4}\u{4ed8}\u{6587}\u{7ae0}\n\n\u{5148}\u{67e5}\u{770b}\u{5f53}\u{524d}\u{8fde}\u{63a5}\u{5b9e}\u{9645}\u{66b4}\u{9732}\u{7684}\u{5de5}\u{5177}\u{4e0e} schema\u{ff1b}\u{5de5}\u{5177}\u{540d}\u{53ef}\u{80fd}\u{5e26}\u{8fde}\u{63a5}\u{5668}\u{524d}\u{7f00}\u{ff0c}\u{90e8}\u{7f72}\u{7248}\u{672c}\u{4e5f}\u{53ef}\u{80fd}\u{5c1a}\u{672a}\u{63d0}\u{4f9b}\u{4e0b}\u{5217}\u{65b0}\u{5de5}\u{5177}\u{3002}\u{4ee5}\u{4e0b}\u{4f7f}\u{7528}\u{672c}\u{5730}\u{5de5}\u{5177}\u{540d}\u{79f0}\u{ff0c}\u{4ee5}\u{5b9e}\u{9645}\u{53ef}\u{7528}\u{80fd}\u{529b}\u{4e3a}\u{51c6}\u{3002}\n\n### \u{67e5}\u{627e}\u{4e0e}\u{8bfb}\u{53d6}\n\n- \u{516c}\u{5f00}\u{5185}\u{5bb9}\u{ff1a}`search_posts(query, limit?)`\u{3001}`get_post(slug)` \u{548c} `list_tags()` \u{4f7f}\u{7528} read \u{6216}\u{66f4}\u{9ad8}\u{6743}\u{9650}\u{3002}\u{641c}\u{7d22}\u{548c}\u{8bfb}\u{53d6}\u{4ec5}\u{8fd4}\u{56de}\u{516c}\u{5f00}\u{5df2}\u{53d1}\u{5e03}\u{6587}\u{7ae0}\u{ff1b}\u{6807}\u{7b7e}\u{5de5}\u{5177}\u{5217}\u{51fa}\u{5168}\u{90e8}\u{6807}\u{7b7e}\u{53ca}\u{5404}\u{81ea}\u{7684}\u{5df2}\u{53d1}\u{5e03}\u{6587}\u{7ae0}\u{6570}\u{3002}\n- \u{81ea}\u{5df1}\u{7684}\u{6587}\u{7ae0}\u{ff1a}write \u{6216} admin \u{6743}\u{9650}\u{53ef}\u{7528} `list_posts`\u{ff0c}\u{652f}\u{6301} `status`\u{ff08}`draft` / `published`\u{ff09}\u{3001}`query`\u{ff08}\u{6807}\u{9898}\u{641c}\u{7d22}\u{ff09}\u{3001}`page`\u{ff08}\u{4ece} 1 \u{5f00}\u{59cb}\u{ff09}\u{3001}`per_page`\u{ff08}1\u{2013}50\u{ff0c}\u{9ed8}\u{8ba4} 20\u{ff09}\u{ff1b}\u{7701}\u{7565}\u{72b6}\u{6001}\u{8fd4}\u{56de}\u{5168}\u{90e8}\u{672a}\u{5220}\u{9664}\u{6587}\u{7ae0}\u{3002}\u{67e5}\u{8349}\u{7a3f}\u{53ef}\u{4f20} `{\"status\":\"draft\",\"page\":1}`\u{3002}\n- \u{7f16}\u{8f91}\u{524d}\u{7528} `get_post_by_id(post_id)` \u{8bfb}\u{53d6}\u{5b8c}\u{6574}\u{6b63}\u{6587}\u{3001}\u{6458}\u{8981}\u{3001}\u{5c01}\u{9762}\u{3001}\u{6807}\u{7b7e}\u{3001}\u{72b6}\u{6001}\u{53ca} `updated_at`\u{3002}\u{79c1}\u{6709}\u{67e5}\u{8be2}\u{548c}\u{6587}\u{7ae0}\u{4fee}\u{6539}\u{90fd}\u{9650}\u{4ee4}\u{724c}\u{7528}\u{6237}\u{81ea}\u{5df1}\u{7684}\u{6587}\u{7ae0}\u{ff0c}admin \u{4ee4}\u{724c}\u{4e5f}\u{4e0d}\u{6269}\u{5927}\u{4f5c}\u{8005}\u{8303}\u{56f4}\u{3002}\n\n### \u{4fdd}\u{5b58}\u{4e0e}\u{66f4}\u{65b0}\n\n- `create_post` \u{5fc5}\u{586b} `title`\u{3001}`content_md`\u{ff1b}\u{53ef}\u{9009} `summary`\u{3001}`slug`\u{3001}`tags`\u{3001}`status`\u{3001}`cover_image`\u{3001}`published_at`\u{3002}`status` \u{9ed8}\u{8ba4}\u{4e3a} `draft`\u{ff0c}\u{53d1}\u{5e03}\u{7528} `published`\u{3002}\u{6458}\u{8981}\u{7701}\u{7565}\u{65f6}\u{81ea}\u{52a8}\u{63d0}\u{53d6}\u{ff0c}slug \u{7701}\u{7565}\u{65f6}\u{81ea}\u{52a8}\u{751f}\u{6210}\u{3002}\n- `update_post` \u{7528} `post_id` \u{5b9a}\u{4f4d}\u{ff0c}\u{6309} PATCH \u{8bed}\u{4e49}\u{53ea}\u{4f20}\u{9700}\u{8981}\u{4fee}\u{6539}\u{7684}\u{5b57}\u{6bb5}\u{ff1b}\u{4f46} `content_md` \u{662f}\u{5b8c}\u{6574}\u{66ff}\u{6362}\u{6b63}\u{6587}\u{ff0c}\u{4e0d}\u{662f}\u{6587}\u{672c}\u{8865}\u{4e01}\u{3002}\u{5148}\u{8bfb}\u{53d6}\u{73b0}\u{6709}\u{5168}\u{6587}\u{ff0c}\u{518d}\u{5408}\u{5165}\u{672c}\u{6b21}\u{6539}\u{52a8}\u{3002}\u{82e5}\u{90e8}\u{7f72}\u{6682}\u{672a}\u{63d0}\u{4f9b}\u{79c1}\u{6709}\u{8bfb}\u{53d6}\u{5de5}\u{5177}\u{ff0c}\u{4f7f}\u{7528}\u{5df2}\u{6709}\u{5b8c}\u{6574}\u{539f}\u{6587}\u{ff1b}\u{7f3a}\u{5931}\u{65f6}\u{8bf7}\u{7528}\u{6237}\u{63d0}\u{4f9b}\u{ff0c}\u{4e0d}\u{8981}\u{51ed}\u{7a7a}\u{8986}\u{76d6}\u{6b63}\u{6587}\u{3002}\n- schema \u{63d0}\u{4f9b} `expected_updated_at` \u{65f6}\u{ff0c}\u{5c06}\u{8bfb}\u{53d6}\u{7ed3}\u{679c}\u{7684} `updated_at` \u{539f}\u{6837}\u{4f20}\u{5165}\u{ff08}RFC 3339\u{ff0c}\u{4fdd}\u{7559}\u{5c0f}\u{6570}\u{79d2}\u{7cbe}\u{5ea6}\u{ff09}\u{3002}\u{670d}\u{52a1}\u{7aef}\u{539f}\u{5b50}\u{6821}\u{9a8c}\u{7248}\u{672c}\u{ff0c}\u{6210}\u{529f}\u{8fd4}\u{56de}\u{65b0}\u{7684} `updated_at`\u{ff1b}\u{6536}\u{5230} `conflict` \u{65f6}\u{ff0c}\u{91cd}\u{65b0}\u{8bfb}\u{53d6}\u{5e76}\u{5408}\u{5e76}\u{66f4}\u{6539}\u{540e}\u{518d}\u{63d0}\u{4ea4}\u{ff0c}\u{4e0d}\u{8981}\u{5220}\u{9664}\u{7248}\u{672c}\u{53c2}\u{6570}\u{7ed5}\u{8fc7}\u{51b2}\u{7a81}\u{3002}\u{8be5}\u{53c2}\u{6570}\u{5728}\u{63a5}\u{53e3}\u{4e2d}\u{53ef}\u{9009}\u{ff0c}\u{7f16}\u{8f91}\u{5df2}\u{6709}\u{6587}\u{7ae0}\u{65f6}\u{4f18}\u{5148}\u{4f7f}\u{7528}\u{3002}\n- \u{66f4}\u{65b0}\u{6b63}\u{6587}\u{800c}\u{7701}\u{7565} `summary` \u{4f1a}\u{91cd}\u{65b0}\u{81ea}\u{52a8}\u{63d0}\u{53d6}\u{6458}\u{8981}\u{ff1b}\u{8981}\u{4fdd}\u{7559}\u{4eba}\u{5de5}\u{6458}\u{8981}\u{65f6}\u{4e00}\u{5e76}\u{4f20}\u{5165}\u{3002}`tags` \u{6574}\u{4f53}\u{66ff}\u{6362}\u{ff0c}\u{7a7a}\u{6570}\u{7ec4}\u{6e05}\u{7a7a}\u{ff1b}`cover_image` \u{7a7a}\u{5b57}\u{7b26}\u{4e32}\u{6e05}\u{7a7a}\u{5c01}\u{9762}\u{3002}\n- \u{81ea}\u{5b9a}\u{4e49} slug \u{4ec5}\u{7528}\u{5b57}\u{6bcd}\u{3001}\u{6570}\u{5b57}\u{3001}\u{8fde}\u{5b57}\u{7b26}\u{548c}\u{4e0b}\u{5212}\u{7ebf}\u{3002}\u{4ee5}\u{5de5}\u{5177}\u{5b9e}\u{9645}\u{8fd4}\u{56de}\u{7684} slug \u{4e3a}\u{51c6}\u{ff0c}\u{51b2}\u{7a81}\u{65f6}\u{53ef}\u{80fd}\u{81ea}\u{52a8}\u{53bb}\u{91cd}\u{3002}`published_at` \u{53ef}\u{7528} ISO 8601 \u{6216} `YYYY-MM-DD`\u{ff0c}\u{4e0d}\u{9700}\u{8981}\u{6307}\u{5b9a}\u{65e5}\u{671f}\u{65f6}\u{7701}\u{7565}\u{3002}\n\n\u{7528}\u{6237}\u{53ea}\u{8981}\u{6587}\u{7a3f}\u{6216}\u{201c}\u{5148}\u{770b}\u{770b}\u{201d}\u{65f6}\u{ff0c}\u{4ea4}\u{4ed8}\u{6587}\u{7a3f}\u{ff1b}\u{8981}\u{6c42}\u{4fdd}\u{5b58}\u{8349}\u{7a3f}\u{65f6}\u{4f7f}\u{7528} `draft`\u{ff1b}\u{660e}\u{786e}\u{8981}\u{6c42}\u{53d1}\u{5e03}\u{65f6}\u{6309}\u{5df2}\u{6709}\u{6388}\u{6743}\u{4f7f}\u{7528} `published` \u{6216} `publish_post(post_id)`\u{ff0c}\u{65e0}\u{9700}\u{91cd}\u{590d}\u{786e}\u{8ba4}\u{3002}\u{4e0d}\u{8981}\u{628a}\u{64b0}\u{5199}\u{6587}\u{7ae0}\u{81ea}\u{52a8}\u{6269}\u{5927}\u{4e3a}\u{7ebf}\u{4e0a}\u{53d1}\u{5e03}\u{3002}\n\n### \u{56de}\u{6536}\u{7ad9}\u{4e0e}\u{6838}\u{9a8c}\n\n\u{7528}\u{6237}\u{8981}\u{6c42}\u{627e}\u{56de}\u{6587}\u{7ae0}\u{65f6}\u{ff0c}\u{7528} `list_trashed_posts` \u{67e5}\u{627e}\u{81ea}\u{5df1}\u{7684}\u{56de}\u{6536}\u{7ad9}\u{6587}\u{7ae0}\u{ff0c}\u{7b5b}\u{9009}\u{548c}\u{5206}\u{9875}\u{53c2}\u{6570}\u{4e0e} `list_posts` \u{76f8}\u{540c}\u{ff0c}\u{518d}\u{6309}\u{6388}\u{6743}\u{8c03}\u{7528} `restore_post(post_id)`\u{3002}\u{6062}\u{590d}\u{4f1a}\u{4fdd}\u{7559}\u{539f}\u{53d1}\u{5e03}\u{72b6}\u{6001}\u{ff0c}\u{56e0}\u{6b64}\u{5df2}\u{53d1}\u{5e03}\u{6587}\u{7ae0}\u{6062}\u{590d}\u{540e}\u{4f1a}\u{91cd}\u{65b0}\u{516c}\u{5f00}\u{ff1b}slug \u{88ab}\u{5360}\u{7528}\u{65f6}\u{81ea}\u{52a8}\u{52a0}\u{540e}\u{7f00}\u{ff0c}\u{4f7f}\u{7528}\u{6062}\u{590d}\u{7ed3}\u{679c}\u{4e2d}\u{7684}\u{6700}\u{7ec8} slug\u{3002}`trash_post` \u{662f}\u{79fb}\u{5165}\u{56de}\u{6536}\u{7ad9}\u{ff0c}`delete_post` \u{662f}\u{4e0d}\u{53ef}\u{6062}\u{590d}\u{7684}\u{6c38}\u{4e45}\u{5220}\u{9664}\u{ff0c}\u{4e24}\u{8005}\u{4e0d}\u{80fd}\u{4e92}\u{6362}\u{3002}\n\n\u{4fdd}\u{5b58}\u{6216}\u{6062}\u{590d}\u{540e}\u{6838}\u{5bf9}\u{5de5}\u{5177}\u{6210}\u{529f}\u{72b6}\u{6001}\u{548c}\u{8fd4}\u{56de}\u{7684} `post_id` / `slug`\u{ff0c}\u{901a}\u{8fc7} `get_post_by_id` \u{56de}\u{8bfb}\u{6b63}\u{6587}\u{53ca}\u{5143}\u{6570}\u{636e}\u{ff1b}\u{8349}\u{7a3f}\u{4e0d}\u{53ef}\u{7528}\u{516c}\u{5f00}\u{5de5}\u{5177} `get_post` \u{56de}\u{8bfb}\u{ff0c}\u{4e0d}\u{8981}\u{4e3a}\u{6838}\u{9a8c}\u{800c}\u{4e34}\u{65f6}\u{53d1}\u{5e03}\u{3002}\u{5df2}\u{53d1}\u{5e03}\u{6587}\u{7ae0}\u{4e5f}\u{53ef}\u{7528} `get_post` \u{68c0}\u{67e5}\u{516c}\u{5f00}\u{5185}\u{5bb9}\u{3002}\u{5982}\u{679c}\u{6709}\u{6d4f}\u{89c8}\u{5668}\u{9884}\u{89c8}\u{6761}\u{4ef6}\u{ff0c}\u{518d}\u{68c0}\u{67e5}\u{56fe}\u{8868}\u{3001}\u{516c}\u{5f0f}\u{548c}\u{8fd0}\u{884c}\u{5668}\u{3002}\u{5206}\u{522b}\u{8bf4}\u{660e}\u{201c}\u{5df2}\u{4fdd}\u{5b58}\u{201d}\u{201c}\u{5df2}\u{53d1}\u{5e03}\u{201d}\u{201c}\u{4ee3}\u{7801}\u{5df2}\u{8fd0}\u{884c}\u{201d}\u{201c}\u{9875}\u{9762}\u{5df2}\u{68c0}\u{67e5}\u{201d}\u{ff0c}\u{53ea}\u{62a5}\u{544a}\u{5b9e}\u{9645}\u{5b8c}\u{6210}\u{7684}\u{9a8c}\u{8bc1}\u{3002}\n\n## \u{4ea4}\u{4ed8}\u{524d}\u{6838}\u{5bf9}\n\n\u{68c0}\u{67e5}\u{56f4}\u{680f}\u{662f}\u{5426}\u{95ed}\u{5408}\u{3001}\u{8fd0}\u{884c}\u{8bed}\u{8a00}\u{4e0e}\u{5b8c}\u{6574}\u{7a0b}\u{5e8f}\u{662f}\u{5426}\u{5339}\u{914d}\u{3001}Mermaid \u{6807}\u{8bb0}\u{662f}\u{5426}\u{6b63}\u{786e}\u{3001}\u{516c}\u{5f0f}\u{662f}\u{5426}\u{88ab}\u{8bef}\u{5199}\u{6210}\u{4ee3}\u{7801}\u{3001}\u{811a}\u{6ce8}\u{5f15}\u{7528}\u{662f}\u{5426}\u{6709}\u{5b9a}\u{4e49}\u{3001}\u{56fe}\u{7247}\u{662f}\u{5426}\u{6709}\u{771f}\u{5b9e} URL\u{3002}\u{786e}\u{4fdd}\u{6240}\u{6709}\u{793a}\u{4f8b}\u{5360}\u{4f4d}\u{5185}\u{5bb9}\u{90fd}\u{5df2}\u{66ff}\u{6362}\u{ff0c}\u{5143}\u{6570}\u{636e}\u{4e0e}\u{6b63}\u{6587}\u{5206}\u{5f00}\u{ff0c}\u{4fdd}\u{5b58}\u{6216}\u{53d1}\u{5e03}\u{72b6}\u{6001}\u{7b26}\u{5408}\u{7528}\u{6237}\u{8981}\u{6c42}\u{3002}\n\n## \u{7ef4}\u{62a4}\u{4f9d}\u{636e}\n\n\u{672c}\u{6280}\u{80fd}\u{6839}\u{636e} 2026-09-16 \u{7684} Yggdrasil \u{6e90}\u{7801}\u{6838}\u{5bf9}\u{3002}\u{4f7f}\u{7528}\u{6280}\u{80fd}\u{5199}\u{4f5c}\u{4e0d}\u{8981}\u{6c42}\u{8bbf}\u{95ee}\u{4ed3}\u{5e93}\u{ff1b}\u{66f4}\u{65b0}\u{6280}\u{80fd}\u{6216}\u{53d1}\u{73b0}\u{90e8}\u{7f72}\u{884c}\u{4e3a}\u{4e0d}\u{4e00}\u{81f4}\u{65f6}\u{ff0c}\u{5728}\u{4ed3}\u{5e93}\u{4e2d}\u{67e5}\u{9605}\u{ff1a}\n\n- `src/api/markdown.rs`\u{3001}`src/api/sanitizer.rs`\u{ff1a}\u{6b63}\u{6587}\u{8bed}\u{6cd5}\u{3001}\u{76ee}\u{5f55}\u{3001}HTML \u{4e0e} URL \u{9650}\u{5236}\u{3002}\n- `src/api/code_runner/languages.rs`\u{3001}`src/infra/runner_config.rs`\u{ff1a}\u{8fd0}\u{884c}\u{8bed}\u{8a00}\u{3001}\u{56f4}\u{680f}\u{53c2}\u{6570}\u{548c}\u{8d44}\u{6e90}\u{9650}\u{5236}\u{3002}\n- `src/components/code_runner/runner.rs`\u{ff1a}\u{9605}\u{8bfb}\u{5668}\u{8fd0}\u{884c}\u{4ea4}\u{4e92}\u{3002}\n- `src/api/katex.rs`\u{3001}`src/api/mhchem.rs`\u{ff1a}\u{516c}\u{5f0f}\u{4e0e}\u{6269}\u{5c55}\u{5b8f}\u{3002}\n- `libs/shared/src/index.ts`\u{3001}`libs/yggdrasil-core/src/mermaid.ts`\u{ff1a}\u{56fe}\u{8868}\u{914d}\u{7f6e}\u{4e0e}\u{9605}\u{8bfb}\u{9875}\u{6e32}\u{67d3}\u{3002}\n- `libs/tiptap-editor/src/editor-extensions.ts`\u{ff1a}\u{540e}\u{53f0}\u{7f16}\u{8f91}\u{5668}\u{652f}\u{6301}\u{8303}\u{56f4}\u{3002}\n- `src/mcp/tools/{posts,read,media,runner}.rs`\u{ff1a}\u{6587}\u{7ae0}\u{3001}\u{7d20}\u{6750}\u{4e0e}\u{4ee3}\u{7801}\u{6267}\u{884c}\u{5de5}\u{5177}\u{5951}\u{7ea6}\u{3002}\n- `src/api/upload.rs`\u{3001}`src/api/url_fetch.rs`\u{3001}`src/api/posts/trash.rs`\u{ff1a}\u{4e0a}\u{4f20}\u{5165}\u{5e93}\u{3001}\u{8fdc}\u{7a0b}\u{56fe}\u{7247}\u{6293}\u{53d6}\u{53ca}\u{6062}\u{590d}\u{8bed}\u{4e49}\u{3002}\n";