{"slug":"knowledge-base-management","title":"\u77e5\u8bc6\u5e93\u7ba1\u7406","description":"\u7ba1\u7406\u672c\u5730 Markdown / Obsidian \u77e5\u8bc6\u5e93\uff1a\u7d20\u6750\u5165\u5e93\u3001\u5065\u5eb7\u68c0\u67e5\u3001\u589e\u91cf\u7d22\u5f15\u4e0e\u68c0\u7d22\u3002","category":"\u7d20\u6750\u4e0e\u6548\u7387","tags":["\u77e5\u8bc6\u5e93","Obsidian","\u7d20\u6750"],"author":"Chubby","source_url":"https://github.com/chubbyguan/chubbyskills/blob/main/knowledge-base-management/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u6765\u6e90 chubbyguan/chubbyskills\uff08knowledge-base-management/SKILL.md\uff09\uff0c\u672c\u5730\u6253\u5305\u4e0a\u4f20\uff1b\u672a\u6267\u884c\u5305\u5185\u811a\u672c\u3002","revision":"91b4384f15264b298d5723bfc39b9bb8","created_at":"2026-10-28T08:54:31+00:00","updated_at":"2026-10-28T08:54:50+00:00","source_repo":"","source_path":"","source_commit":"","source_updated_at":"","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"workflow","category_name":"\u7d20\u6750\u4e0e\u6548\u7387","usage_guide":{},"read_url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management","skill_url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/download","install_url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/install","files":[{"path":"SKILL.md","bytes":20796,"url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/SKILL.md"},{"path":"requirements-mcp.txt","bytes":77,"url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/requirements-mcp.txt"},{"path":"requirements.txt","bytes":421,"url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/requirements.txt"},{"path":"scripts/mcp_server.py","bytes":8576,"url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/scripts/mcp_server.py"},{"path":"scripts/vault_health_check.py","bytes":7065,"url":"https://shiliuai.cn/api/v2/skills/knowledge-base-management/files/scripts/vault_health_check.py"}],"content":"---\nname: knowledge-base-management\ndescription: \"\u7ba1\u7406\u672c\u5730 Markdown/Obsidian \u77e5\u8bc6\u5e93\uff1a\u7d20\u6750\u5165\u5e93\u3001\u5065\u5eb7\u68c0\u67e5\u3001\u589e\u91cf\u7d22\u5f15\u3001\u5173\u952e\u8bcd\u4e0e semantic-lite \u68c0\u7d22\u3001\u9010\u5b57\u539f\u6587\u8d44\u6599\u5305\u3001\u5f52\u6863\u548c MCP \u8fde\u63a5\u3002\u7528\u4e8e\u641c\u7d22\u77e5\u8bc6\u5e93\u3001\u6574\u7406\u8d44\u6599\u53ca\u4e3a Agent \u51c6\u5907\u53ef\u5b9a\u4f4d\u7684\u5f15\u7528\u3002\"\nmetadata:\n  triggers: \"[\\\"\u77e5\u8bc6\u5e93\u7ba1\u7406\\\", \\\"\u7d20\u6750\u5165\u5e93\\\", \\\"\u5065\u5eb7\u68c0\u67e5\\\", \\\"\u76d8\u70b9\u77e5\u8bc6\u5e93\\\", \\\"\u6e05\u7406\u77e5\u8bc6\u5e93\\\", \\\"\u641c\u7d22\u77e5\u8bc6\u5e93\\\", \\\"GBrain\\\", \\\"GraphRAG\\\", \\\"\u77e5\u8bc6\u56fe\u8c31\\\", \\\"\u6574\u7406\u77e5\u8bc6\u5e93\\\", \\\"\u77e5\u8bc6\u5e93\u67b6\u6784\\\"]\"\n  version: \"0.13.0\"\n  created: \"2026-06-02\"\n  tags: \"[\\\"knowledge-base\\\", \\\"obsidian\\\", \\\"wiki\\\", \\\"note-taking\\\", \\\"gbrain\\\", \\\"graphrag\\\"]\"\n---\n\n# Knowledge Base Management \u2014 \u77e5\u8bc6\u5e93\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406\n\n## \u6838\u5fc3\u67b6\u6784\n\n### \u4e09\u5c42\u67b6\u6784\n\n```\n\u7d20\u6750\u5e93/  \u2192 Layer 1: \u4e0d\u53ef\u53d8\u539f\u59cb\u7d20\u6750\uff08AI \u53ea\u8bfb\uff09\nwiki/    \u2192 Layer 2: AI \u7f16\u8bd1\u7684\u7ed3\u6784\u5316\u77e5\u8bc6\uff08AI \u7ef4\u62a4\uff09\n\u4ea7\u51fa/    \u2192 Layer 3: \u6309\u9700\u751f\u6210\u7684\u89c6\u56fe\uff08\u4e0d\u6301\u4e45\u5316\uff09\n```\n\n**\u6838\u5fc3\u539f\u5219**\uff1a\u7d20\u6750\u5e93\u662f\u4e8b\u5b9e\u6e90\uff08\u4e0d\u53ef\u53d8\uff09\uff0cWiki \u662f AI \u7f16\u8bd1\u7684\u6295\u5f71\uff08\u5fc5\u987b\u6eaf\u6e90\uff09\uff0c\u4ea7\u51fa\u662f\u6309\u9700\u751f\u6210\u7684\u89c6\u56fe\uff08\u4e0d\u6301\u4e45\u5316\uff09\u3002\n\n### Vault \u914d\u7f6e\n\nvault \u8def\u5f84\u901a\u8fc7\u73af\u5883\u53d8\u91cf\u914d\u7f6e\uff0c\u4e0d\u5199\u6b7b\u5728\u811a\u672c\u91cc\uff1a\n\n```bash\nexport VAULT_DIR=\"$HOME/Documents/your-vault\"   # \u4f60\u7684 Obsidian vault \u6839\u76ee\u5f55\n```\n\n\u5b8c\u6574\u4ed3\u5e93\u53ef\u4ee5\u7edf\u4e00\u914d\u7f6e\u91c7\u96c6\u3001\u641c\u7d22\u548c\u8d44\u6599\u5305\uff1a\n\n```bash\npython3 tools/chubby.py init --vault \"$VAULT_DIR\"\n```\n\n\u8fd9\u91cc\u7684\u8def\u5f84\u662f\u77e5\u8bc6\u5e93\u6839\u76ee\u5f55\u3002\u91c7\u96c6\u8fdb\u5165\u6839\u76ee\u5f55\u7684 `00_Inbox`\uff0c\u9ed8\u8ba4\u7d22\u5f15\u4e3a `.chubby/index.sqlite`\u3002\u72ec\u7acb\u5b89\u88c5\u672c skill \u540e\uff0c`tools/vault_index.py` \u548c `tools/evidence_brief.py` \u76f4\u63a5\u4f7f\u7528 `VAULT_DIR` \u6216 `--vault`\uff0c\u4e0d\u8bfb\u53d6\u4ed3\u5e93\u4e2d\u7684 `chubby.yaml`\u3002\n\n\u5065\u5eb7\u68c0\u67e5\u53ef\u81ea\u884c\u52a0\u5165\u8c03\u5ea6\u5668\uff1b\u5b89\u88c5\u672c skill \u4e0d\u4f1a\u521b\u5efa cron\u3002\n\n---\n\n## 1. \u7d20\u6750\u5165\u5e93 (Ingest)\n\n### \u65b0\u7d20\u6750\u5904\u7406\u6d41\u6c34\u7ebf\n\n```\n\u7528\u6237\u4e22\u7d20\u6750 \u2192\n  \u2460 \u5224\u65ad\u7c7b\u578b \u2192 \u5b58\u5165\u7d20\u6750\u5e93/\u5bf9\u5e94\u5b50\u76ee\u5f55\n  \u2461 \u63d0\u53d6\u5173\u952e\u4fe1\u606f \u2192 \u51b3\u5b9a\u662f\u5426\u5efa wiki \u9875\u9762\n  \u2462 \u5982\u679c\u503c\u5f97\uff1a\u5efa\u9009\u9898\uff08\u6253 SHARP \u5206\uff09\u6216\u66f4\u65b0\u9879\u76ee\u9875\n  \u2463 \u66f4\u65b0 wiki/index.md \u7d22\u5f15\n```\n\n### \u7d20\u6750\u5206\u7ea7 (ABC Grading)\n\n| \u7b49\u7ea7 | \u6807\u51c6 | \u5904\u7406 |\n|------|------|------|\n| **A** | \u6838\u5fc3\u65b9\u6cd5\u8bba/\u6846\u67b6/\u7cfb\u7edf | \u4f18\u5148\u7f16\u8bd1\u4e3a\u9009\u9898 |\n| **B** | \u6709\u6d1e\u5bdf\u4f46\u4e0d\u591f\u7cfb\u7edf | \u5907\u9009\uff0c\u4f5c\u4e3a A \u7684\u8865\u5145 |\n| **C** | \u6c34\u8d27/\u91cd\u590d/\u4e0e\u5b9a\u4f4d\u65e0\u5173 | \u5f52\u6863\uff0c\u4e0d\u4e3b\u52a8\u7f16\u8bd1 |\n\n### \u516c\u4f17\u53f7\u6587\u7ae0\u5904\u7406\n\n**\u6765\u6e90\u4e00\uff1a\u53ef\u9009\u7684 wechat-article-exporter \u5916\u90e8\u540c\u6b65**\n\u5982\u679c\u5df2\u81ea\u884c\u90e8\u7f72\u8be5\u5de5\u5177\u548c\u8c03\u5ea6\u5668\uff0c\u53ef\u628a\u516c\u4f17\u53f7\u6587\u7ae0\u540c\u6b65\u5230 `\u7d20\u6750\u5e93/\u516c\u4f17\u53f7\u6587\u7ae0/<\u516c\u4f17\u53f7\u540d>/`\u3002\u672c skill \u4e0d\u5185\u7f6e\u8be5\u670d\u52a1\u6216\u5b9a\u65f6\u4efb\u52a1\u3002\n\n**\u6765\u6e90\u4e8c\uff1a\u624b\u673a\u4fdd\u5b58\u7684\u6587\u7ae0\u5bfc\u5165**\n\u901a\u8fc7\u624b\u673a\u4fdd\u5b58\u7684\u6587\u7ae0\u5148\u843d\u5230\u4e00\u4e2a\u5f85\u5904\u7406\u76ee\u5f55\uff08\u6309\u65e5\u671f\uff09\uff0c\u518d\u7531\u4e00\u4e2a\u5f52\u7c7b\u811a\u672c\u642c\u5165\u7d20\u6750\u5e93\u5e76\u6309\u9886\u57df\u7b5b\u9009\u4f18\u8d28\u6587\u7ae0\u505a A+B \u6df1\u5ea6\u5904\u7406\u3002\n\n> \u5f52\u7c7b\u811a\u672c\uff08\u5982 `sync_notes_to_kb.py`\uff09\u4e0e\u5404\u4eba\u7684\u76ee\u5f55\u7ed3\u6784\u5f3a\u76f8\u5173\uff0c\u672c\u4ed3\u5e93\u4e0d\u5185\u7f6e\uff0c\u6309\u4e0b\u9762\u7684\u300c\u5de5\u4f5c\u6d41\u300d\u81ea\u5efa\u5373\u53ef\u3002\n\n**\u5de5\u4f5c\u6d41**\uff1a\n```\n\u65b0\u6587\u7ae0\u5165\u5e93 \u2192\n  \u2460 \u811a\u672c\u81ea\u52a8\u5f52\u7c7b\u5230 \u7d20\u6750\u5e93/\u516c\u4f17\u53f7\u6587\u7ae0/<\u516c\u4f17\u53f7\u540d>/\n  \u2461 URL \u53bb\u91cd\uff08\u8df3\u8fc7\u5df2\u5b58\u5728\u7684\u6587\u7ae0\uff09\n  \u2462 \u9886\u57df\u5173\u952e\u8bcd\u7b5b\u9009\uff08AI/\u534a\u5bfc\u4f53/\u6d88\u8d39/\u7535\u5546/\u54c1\u724c/\u6295\u8d44/Agent/Skill\uff09\n     \u8df3\u8fc7\u7eaf\u8425\u9500\u3001\u4e0e\u7528\u6237\u9886\u57df\u65e0\u5173\u7684\u6587\u7ae0\n  \u2463 \u547d\u4e2d\u5173\u952e\u8bcd\u7684\u7cbe\u9009\u6587\u7ae0 \u2192 A+B \u53cc\u8f68\u5904\u7406\uff08\u6bcf\u65e5\u4e0a\u9650 5 \u7bc7\uff09\n     A\u5c42\uff1a\u89c2\u70b9\u63d0\u53d6+\u5206\u7c7b+3\u6761Takeaway \u2192 wiki/\ud83d\udce1 \u5916\u90e8\u8f93\u5165/\u516c\u4f17\u53f7/<\u516c\u4f17\u53f7\u540d>/<\u4e3b\u9898>/\n     B\u5c42\uff1a\u95ee\u9898\u94fe+\u4f34\u8bfb\u5f15\u5bfc \u2192 \u540c\u4e0a\n  \u2464 \u66f4\u65b0 wiki/index.md\uff08\u5916\u90e8\u8f93\u5165 \u2014 \u6700\u65b0 A+B \u5904\u7406 \u8868\u683c\uff09\n```\n\n**\u5173\u952e\u539f\u5219**\uff1a\n- \u805a\u7126\u9ad8\u4ef7\u503c\u4e3b\u9898\uff08\u5339\u914d\u7528\u6237\u5174\u8da3\uff09\uff0c\u4e0d\u8ffd\u6c42\u5168\u91cf\u8986\u76d6\n- \u6bcf\u4e2a wiki \u9875\u9762\u5fc5\u987b\u7528 `source` frontmatter \u5217\u51fa\u5f15\u7528\u7d20\u6750\u8def\u5f84\n- \u6df1\u5ea6\u5904\u7406\u4e0a\u9650 5 \u7bc7/\u5929\uff0c\u5206\u6279\u6d88\u5316\n- \u6587\u7ae0\u8def\u5f84\u683c\u5f0f\uff1a`[[../../../../\u7d20\u6750\u5e93/\u516c\u4f17\u53f7\u6587\u7ae0/<\u516c\u4f17\u53f7>/<\u6587\u4ef6\u540d>]]`\n\n---\n\n## 2. \u5065\u5eb7\u68c0\u67e5 (Audit)\n\n### \u81ea\u52a8\u68c0\u67e5\u9879\n\n\u624b\u52a8\u8fd0\u884c\u811a\u672c\u6216\u914d\u7f6e\u81ea\u5df1\u7684\u8c03\u5ea6\u5668\u540e\uff0c\u68c0\u67e5\uff1a\n- \u65ad\u94fe\uff08broken wikilinks\uff09\n- \u7f3a source \u5b57\u6bb5\n- frontmatter \u7f3a\u5931\n- \u5f85\u6c89\u6dc0\u6982\u5ff5\n- \u4f4e\u94fe\u63a5\u5bc6\u5ea6\n\n**\u811a\u672c**\uff1a`scripts/vault_health_check.py`\uff08\u672c\u4ed3\u5e93\u63d0\u4f9b\uff0c\u96f6\u4f9d\u8d56\uff0c\u7eaf\u6807\u51c6\u5e93\uff09\n\n```bash\n# \u6307\u5b9a vault \u8def\u5f84\npython3 scripts/vault_health_check.py \"$HOME/Documents/your-vault\"\n\n# \u6216\u8bfb VAULT_DIR \u73af\u5883\u53d8\u91cf\nexport VAULT_DIR=\"$HOME/Documents/your-vault\"\npython3 scripts/vault_health_check.py --json\n\n# \u628a\u7f3a source \u5b57\u6bb5\u4e5f\u89c6\u4e3a\u95ee\u9898\uff08\u5f3a\u6eaf\u6e90\u573a\u666f\uff09\npython3 scripts/vault_health_check.py --require-source\n```\n\n\u68c0\u67e5\u9879\uff1a\u65ad\u94fe\u3001\u7f3a frontmatter/source/summary\u3001\u5b64\u7acb\u7b14\u8bb0\u3001\u7a7a\u76ee\u5f55\u3001\u5185\u5bb9\u91cd\u590d\u3001\u6587\u4ef6\u540d\u542b\u7a7a\u683c\u3002\n\u5b58\u5728\u65ad\u94fe\u65f6\u9000\u51fa\u7801\u4e3a 1\uff0c\u65b9\u4fbf\u63a5\u5165 cron / CI \u544a\u8b66\u3002\n\n### \u6e05\u7406\u6807\u51c6\n\n| \u64cd\u4f5c | \u89c4\u5219 |\n|------|------|\n| \u53bb\u91cd | SHA256 \u6216 diff \u786e\u8ba4\u76f8\u540c\u540e\u5220\u9664\u526f\u672c |\n| \u5f52\u4f4d | \u6563\u843d\u6587\u4ef6\u6309\u7c7b\u578b\u79fb\u5230\u7d20\u6750\u5e93/\u5bf9\u5e94\u5b50\u76ee\u5f55 |\n| \u5f52\u6863 | \u5386\u53f2\u7248\u672c\u79fb\u5230 `wiki/\ud83d\uddc4\ufe0f \u5f52\u6863/`\uff0c\u4e0d\u5220\u9664 |\n| \u7a7a\u76ee\u5f55 | \u76f4\u63a5\u5220\u9664\u3002\u542b redirect README \u7684 legacy \u76ee\u5f55\u4e5f\u7b97\u7a7a\u76ee\u5f55 |\n| \u5168\u5e93\u5ba1\u8ba1 | \u6267\u884c\u7b2c 6 \u8282\u300c\u5168\u5e93\u5ba1\u8ba1\u4e0e\u6279\u91cf\u5f52\u6863\u300d |\n| \u76ee\u5f55\u5ba1\u67e5 | \u6267\u884c\u7b2c 5 \u8282\u300c\u76ee\u5f55\u5ba1\u67e5\u4e0e\u589e\u91cf\u6e05\u7406\u300d |\n\n### \u6587\u4ef6\u547d\u540d\u89c4\u8303\n\n```\n\u2705 \u9009\u9898-AI-Agent-\u672a\u6765\u65b9\u5411.md    # \u8fde\u5b57\u7b26\u8fde\u63a5\uff0c\u65e0\u7a7a\u683c\n\u274c \u9009\u9898-DemisHassabis Agent.md  # \u542b\u7a7a\u683c\uff0cwikilink \u65ad\u88c2\n```\n\n### \u8fc1\u79fb\u63d0\u793a\u9875\u683c\u5f0f\n\n\u5f53\u6587\u6863\u5185\u5bb9\u8fc1\u79fb\u5230\u65b0\u4f4d\u7f6e\u65f6\uff0c\u65e7\u6587\u4ef6\u4e0d\u5220\u9664\uff0c\u6539\u4e3a\u8fc1\u79fb\u63d0\u793a\uff1a\n\n```yaml\n---\ntitle: \u26a0\ufe0f \u5df2\u8fc1\u79fb - \u539f\u6587\u4ef6\u540d\uff08\u65e7\u7248 vX.0\uff09\ntype: note\ntags: [\u5df2\u5e9f\u5f03, \u65e7\u7248, \u5df2\u8fc1\u79fb]\ncreated: YYYY-MM-DD\nsummary: \u5df2\u88ab [[\u65b0\u4f4d\u7f6e/\u65b0\u6587\u4ef6\u540d|\u65b0\u7248\u672c]] \u53d6\u4ee3\u3002\n---\n```\n\n**\u5173\u952e\u89c4\u5219**\uff1a\n- frontmatter: `\u26a0\ufe0f \u5df2\u8fc1\u79fb` \u6807\u9898 + `\u5df2\u5e9f\u5f03` \u6807\u7b7e\n- \u8bf4\u660e\u4e3a\u4ec0\u4e48\u65e7\u7248\u4e0d\u518d\u9002\u7528\uff081-3\u6761\uff09\n- \u660e\u786e\u7684\u65b0\u94fe\u63a5\n- **\u4e0d\u8981\u4fdd\u7559\u65e7\u7684\u6b63\u6587\u5185\u5bb9**\n\n---\n\n## 3. \u5de5\u5177\u96c6\u6210 (Tools)\n\n### \ud83e\udde0 \u589e\u91cf\u7d22\u5f15\u4e0e\u7edf\u4e00\u641c\u7d22\n\n\u5b8c\u6574\u4ed3\u5e93\u7684\u7edf\u4e00\u5165\u53e3\uff1a\n\n```bash\npython3 tools/chubby.py init --vault \"$VAULT_DIR\"\npython3 tools/chubby.py ingest \"\u66ff\u6362\u4e3a\u771f\u5b9e\u7d20\u6750\u94fe\u63a5\" --no-enrich\npython3 tools/chubby.py search \"AI Agent\"\npython3 tools/chubby.py search \"\u5185\u5bb9\u7b56\u7565\" --mode lite\n```\n\n\u6210\u529f\u91c7\u96c6\u540e\uff0c\u4ee5\u53ca\u7edf\u4e00\u641c\u7d22\u524d\uff0c\u81ea\u52a8\u540c\u6b65\u7d22\u5f15\u3002`init --vault` \u6307\u5411\u6839\u76ee\u5f55\uff1b\u65e7\u7684 `ingest --vault` \u53c2\u6570\u4ecd\u8868\u793a\u5177\u4f53\u5165\u5e93\u76ee\u5f55\u3002\n\n\u72ec\u7acb\u5b89\u88c5\u672c skill \u540e\uff0c\u5728 skill \u76ee\u5f55\u5185\u4f7f\u7528\u81ea\u5e26\u5de5\u5177\uff1a\n\n```bash\nexport VAULT_DIR=\"$HOME/Documents/your-vault\"\npython3 tools/vault_index.py index \"$VAULT_DIR\"\npython3 tools/vault_index.py search \"AI Agent\"\npython3 tools/vault_index.py semantic \"\u5185\u5bb9\u7b56\u7565\"\npython3 tools/vault_index.py search \"\u54c1\u724c\" --platform wechat\npython3 tools/vault_index.py recent --limit 10\npython3 tools/vault_index.py read \"10_Sources/x/example.md\" --vault \"$VAULT_DIR\"\npython3 tools/vault_index.py stats\n```\n\n\u72ec\u7acb `vault_index.py` \u641c\u7d22\u8bfb\u53d6\u5df2\u6709\u7d22\u5f15\uff0c\u7b14\u8bb0\u53d8\u5316\u540e\u5148\u518d\u8fd0\u884c `index`\u3002\u540e\u7eed\u547d\u4ee4\u9700\u8981\u4fdd\u6301 `VAULT_DIR`\uff0c\u6216\u663e\u5f0f\u4f20\u5165\u540c\u4e00\u4e2a\u6570\u636e\u5e93\uff1a\n\n```bash\npython3 tools/vault_index.py --db /path/to/index.sqlite index \"$VAULT_DIR\"\npython3 tools/vault_index.py --db /path/to/index.sqlite search \"\u5185\u5bb9\u7b56\u7565\"\n```\n\nSQLite FTS5 \u53ef\u7528\u65f6\u81ea\u52a8\u542f\u7528\uff1b\u4e0d\u53ef\u7528\u65f6\u4f7f\u7528 LIKE \u641c\u7d22\u3002\u9ed8\u8ba4 `semantic-lite` \u53ea\u505a\u672c\u5730\u8bcd\u8bed\u548c\u5b57\u7b26\u7ec4\u5408\u6392\u5e8f\uff0c\u4e0d\u8c03\u7528\u6a21\u578b API\u3002\n\n\u7d22\u5f15\u89c4\u5219\uff1a\n\n- \u9ed8\u8ba4\u4f4d\u7f6e\u4e3a `$VAULT_DIR/.chubby/index.sqlite`\uff1b`VAULT_INDEX_DB` \u6216\u663e\u5f0f `--db` \u53ef\u4ee5\u8986\u76d6\u3002\n- `index` \u9ed8\u8ba4\u589e\u91cf\u540c\u6b65\u3002\u672a\u53d8\u7b14\u8bb0\u7684\u5411\u91cf\u4fdd\u7559\uff0c\u5b9e\u9645 embedding \u8f93\u5165\u53d8\u5316\u65f6\u4f7f\u65e7\u5411\u91cf\u5931\u6548\uff0c\u5220\u9664\u7b14\u8bb0\u65f6\u79fb\u9664\u5bf9\u5e94\u7d22\u5f15\u548c\u5411\u91cf\u3002\n- \u65b0\u9ed8\u8ba4\u7d22\u5f15\u4e0d\u5b58\u5728\u65f6\uff0c\u65e7 `$VAULT_DIR/.chubby/vault_index.sqlite` \u4f1a\u590d\u5236\u8fc1\u79fb\uff0c\u539f\u6587\u4ef6\u4fdd\u7559\u3002\u5176\u4ed6\u4f4d\u7f6e\u7684\u65e7\u6570\u636e\u5e93\u9700\u663e\u5f0f\u6307\u5b9a\u5e76\u9a8c\u8bc1\u6240\u5c5e\u77e5\u8bc6\u5e93\u3002\n- \u6570\u636e\u5e93\u7ed1\u5b9a\u77e5\u8bc6\u5e93\uff0c\u626b\u63cf\u6216\u8bfb\u53d6\u5931\u8d25\u4f1a\u56de\u6eda\u540c\u6b65\uff0c\u8d8a\u51fa\u77e5\u8bc6\u5e93\u8303\u56f4\u7684\u7b26\u53f7\u94fe\u63a5\u4f1a\u88ab\u62d2\u7edd\u3002\n- \u5168\u91cf\u91cd\u5efa\u9700\u663e\u5f0f\u6267\u884c `python3 tools/vault_index.py index \"$VAULT_DIR\" --rebuild`\uff0c\u4f1a\u4e22\u5f03\u5df2\u6709 embedding\u3002\n\n### \ud83d\udce5 \u5bfc\u5165\u672c\u5730\u6750\u6599\n\n\u5b8c\u6574\u4ed3\u5e93\u4e2d\uff0c`python3 tools/chubby.py import \"/path/to/document.md\"` \u5c06 Markdown\u3001\u6587\u672c\u6216\u6587\u5b57\u5c42 PDF \u63a5\u5165\u73b0\u6709\u91c7\u96c6\u3001\u590d\u7528\u548c\u7d22\u5f15\u6d41\u7a0b\u3002\u53ef\u7528 `--source-url` \u6307\u5b9a\u539f\u59cb\u7f51\u9875\uff1b\u672c\u5730\u9644\u4ef6\u4f1a\u590d\u5236\u5e76\u6539\u5199\u5f15\u7528\uff0c\u539f\u6587\u4ef6\u4fdd\u7559\u3002PDF \u9700\u8981\u53ef\u9009 `pymupdf`\uff0c\u626b\u63cf\u4ef6\u4e0d\u4f1a\u88ab\u5f53\u4f5c\u6210\u529f\u5bfc\u5165\u3002\n\n\u72ec\u7acb\u5b89\u88c5\u672c skill \u540e\uff0c\u4e5f\u53ef\u5728 skill \u76ee\u5f55\u4f7f\u7528\uff1a\n\n```bash\npython3 tools/import_document.py \"/path/to/document.md\" --output \"$VAULT_DIR/00_Inbox\"\npython3 tools/vault_index.py index \"$VAULT_DIR\"\n```\n\n\u72ec\u7acb\u5bfc\u5165\u5de5\u5177\u4e0d\u5199\u7edf\u4e00 CLI \u7684\u8fd0\u884c\u8bb0\u5f55\uff1bMCP \u67e5\u8be2\u6216 `brief` \u751f\u6210\u524d\u4ecd\u4f1a\u81ea\u52a8\u540c\u6b65\u77e5\u8bc6\u5e93\u3002\u5b89\u88c5\u5305\u5305\u542b\u8be5\u5de5\u5177\u53ca\u6240\u9700\u516c\u5171\u6a21\u5757\u3002\n\n### \ud83d\udcce \u9010\u5b57\u539f\u6587\u8d44\u6599\u5305\n\n\u5b8c\u6574\u4ed3\u5e93\u4f7f\u7528\u7edf\u4e00\u5165\u53e3\uff1a\n\n```bash\npython3 tools/chubby.py brief --topic \"\u5185\u5bb9\u7b56\u7565\" --output reports/content-brief.md\n```\n\n\u72ec\u7acb\u5b89\u88c5\u540e\uff0c\u5728 skill \u76ee\u5f55\u8fd0\u884c\uff1a\n\n```bash\npython3 tools/evidence_brief.py --vault \"$VAULT_DIR\" --topic \"\u5185\u5bb9\u7b56\u7565\" \\\n  --output \"$VAULT_DIR/30_Output/content-brief.md\"\n```\n\n\u8d44\u6599\u5305\u5de5\u5177\u5148\u81ea\u52a8\u540c\u6b65\u7d22\u5f15\uff0c\u5173\u952e\u8bcd\u68c0\u7d22\u6ca1\u6709\u547d\u4e2d\u65f6\u56de\u9000\u5230\u672c\u5730 semantic-lite\uff1b\u751f\u6210\u7684 `research_brief` \u6587\u6863\u4ece\u5019\u9009\u4e2d\u6392\u9664\u3002\u8f93\u51fa Markdown \u4e0e\u540c\u540d JSON\uff0c\u5305\u542b\u9010\u5b57\u6458\u5f55\u3001\u539f\u59cb `source`\u3001\u7b14\u8bb0\u76f8\u5bf9\u8def\u5f84\u3001\u771f\u5b9e\u6587\u4ef6\u884c\u53f7\u548c SHA-256\u3002\n\n\u884c\u53f7\u4ece\u6e90\u6587\u4ef6\u7b2c\u4e00\u884c\u8ba1\u7b97\uff0c\u5305\u542b frontmatter\u3002\u5bfc\u51fa\u524d\u518d\u6b21\u68c0\u67e5\u6587\u4ef6\u548c\u6458\u5f55\uff0c\u6765\u6e90\u53d8\u52a8\u65f6\u9700\u8981\u91cd\u65b0\u751f\u6210\u3002\u5df2\u6709\u8f93\u51fa\u9ed8\u8ba4\u62d2\u7edd\u8986\u76d6\uff0c\u663e\u5f0f `--force` \u624d\u66ff\u6362\u3002\u6ca1\u6709\u5339\u914d\u5185\u5bb9\u65f6\u5199\u660e\u8bc1\u636e\u4e0d\u8db3\u3002\n\n\u5de5\u5177\u53ea\u6574\u7406\u539f\u6587\u8bc1\u636e\u5305\u548c Agent \u4efb\u52a1\u8bf4\u660e\uff0c\u9009\u9898\u7531 Agent \u53e6\u884c\u751f\u6210\uff1b\u6587\u4ef6\u548c\u6458\u5f55\u6838\u9a8c\u4e0d\u4ee3\u8868\u539f\u6587\u4e8b\u5b9e\u5df2\u8bc1\u5b9e\u3002\u8981\u6c42 Agent \u533a\u5206\u539f\u4f5c\u8005\u89c2\u70b9\u4e0e\u63a8\u65ad\uff0c\u5e76\u5728\u5f15\u7528\u4e2d\u4fdd\u7559\u8bc1\u636e\u7f16\u53f7\u3001\u8def\u5f84\u548c\u884c\u53f7\u3002\n\n### \ud83d\uddc2\ufe0f \u81ea\u52a8\u5f52\u6863\u4e0e\u77e5\u8bc6\u5361\u7247\n\n`tools/vault_curator.py` \u9ed8\u8ba4\u9884\u89c8\uff0c\u786e\u8ba4\u540e\u7528 `--apply` \u6267\u884c\uff1a\n\n```bash\npython3 tools/vault_curator.py archive \"$VAULT_DIR\"\npython3 tools/vault_curator.py archive \"$VAULT_DIR\" --apply\npython3 tools/vault_curator.py card \"$VAULT_DIR\" \"10_Sources/x/example.md\" --apply\n```\n\n- `archive` \u53ea\u5904\u7406 `00_Inbox/**/*.md`\uff0c\u6309\u5e73\u53f0\u3001\u6458\u8981\u548c processed \u6807\u7b7e\u5f52\u5165 `10_Sources/<platform>/` \u6216 `20_Processed/`\u3002\n- `card` \u751f\u6210 `20_Processed/Cards/*.md`\uff0c\u4fdd\u7559\u6765\u6e90\u3001\u6458\u8981\u3001\u8981\u70b9\u548c tags\u3002\n\n### \ud83d\udd0c MCP Server\n\n`scripts/mcp_server.py` \u4e3a\u652f\u6301 MCP \u7684 Agent \u63d0\u4f9b\u641c\u7d22\u3001\u8bfb\u53d6\u548c\u7d22\u5f15\u5de5\u5177\u3002\u4f7f\u7528 Python 3.10 \u6216\u66f4\u65b0\u7248\u672c\uff0c\u5728\u5b8c\u6574\u4ed3\u5e93\u6839\u76ee\u5f55\u6267\u884c\uff1a\n\n```bash\npython3 -m pip install -r knowledge-base-management/requirements-mcp.txt\npython3 tools/mcp_smoke.py --json\nVAULT_DIR=/path/to/your-vault python3 knowledge-base-management/scripts/mcp_server.py\n```\n\n\u5f53\u524d\u9a8c\u8bc1 SDK \u4e3a `mcp==1.30.0`\u3002`mcp_smoke.py` \u7528\u4e34\u65f6 vault \u542f\u52a8\u771f\u5b9e stdio \u670d\u52a1\uff0c\u9a8c\u8bc1\u63e1\u624b\u30016 \u4e2a\u5de5\u5177\u53d1\u73b0\u3001\u641c\u7d22\u548c\u8bfb\u53d6\uff0c\u4e0d\u8bbf\u95ee\u4f60\u7684\u77e5\u8bc6\u5e93\u3002`--help` \u4e0d\u9700\u8981\u5b89\u88c5 SDK\u3002\n\n\u5b8c\u6574\u4ed3\u5e93\u7684\u5b89\u88c5\u5668\u4f1a\u4e00\u8d77\u590d\u5236 `vault_index.py`\u3001`vault_curator.py`\u3001`evidence_brief.py`\u3001`import_document.py` \u53ca\u6240\u9700\u516c\u5171\u6a21\u5757\uff1a\n\n```bash\npython3 tools/install_skill.py knowledge-base-management --dest ~/.codex/skills\npython3 -m pip install -r ~/.codex/skills/knowledge-base-management/requirements-mcp.txt\nVAULT_DIR=/path/to/your-vault python3 ~/.codex/skills/knowledge-base-management/scripts/mcp_server.py\n```\n\n\u76ee\u6807\u6280\u80fd\u76ee\u5f55\u5fc5\u987b\u4e0d\u5b58\u5728\uff1b\u5df2\u6709\u5b89\u88c5\u5148\u5907\u4efd\uff0c\u6216\u4f7f\u7528\u65b0\u7684\u5b89\u88c5\u76ee\u5f55\u3002MCP \u4f18\u5148\u52a0\u8f7d skill \u5185\u7684\u5de5\u5177\uff0c\u5b89\u88c5\u540e\u4e0d\u4f9d\u8d56\u539f\u4ed3\u5e93\u4f4d\u7f6e\u3002\n\n\u5ba2\u6237\u7aef\u914d\u7f6e\u4f7f\u7528\u771f\u5b9e\u7684 Python \u548c server \u7edd\u5bf9\u8def\u5f84\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"chubby-kb\": {\n      \"command\": \"/absolute/path/to/venv/bin/python\",\n      \"args\": [\"/absolute/path/to/knowledge-base-management/scripts/mcp_server.py\"],\n      \"env\": { \"VAULT_DIR\": \"/path/to/your-vault\" }\n    }\n  }\n}\n```\n\n\u5de5\u5177\u540d\u4fdd\u6301 6 \u4e2a\uff1a`search_vault`\u3001`semantic_search_vault`\u3001`read_kb_note`\u3001`list_recent_notes`\u3001`reindex_vault`\u3001`vault_index_stats`\u3002\u641c\u7d22\u3001\u8bed\u4e49\u68c0\u7d22\u3001\u6700\u8fd1\u7b14\u8bb0\u548c\u7edf\u8ba1\u524d\u81ea\u52a8\u540c\u6b65\u7d22\u5f15\uff1b`read_kb_note` \u76f4\u63a5\u8bfb\u53d6\u539f\u6587\uff1b`reindex_vault()` \u540d\u79f0\u4e0d\u53d8\uff0c\u6267\u884c\u589e\u91cf\u540c\u6b65\u3002\n\n\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0e CLI \u4e00\u81f4\uff0c\u4e3a\u6839\u76ee\u5f55\u4e0b `.chubby/index.sqlite`\uff1b\u81ea\u5b9a\u4e49\u65f6\u5728\u5ba2\u6237\u7aef\u73af\u5883\u4e2d\u8bbe\u7f6e `VAULT_INDEX_DB`\u3002\u8bfb\u53d6\u8def\u5f84\u5fc5\u987b\u4f4d\u4e8e `VAULT_DIR` \u8303\u56f4\u5185\u3002\n\n---\n\n> \u4ee5\u4e0b\u5747\u4e3a**\u53ef\u9009\u7684\u7b2c\u4e09\u65b9/\u5916\u90e8\u5de5\u5177**\uff0c\u4e0d\u968f\u672c\u4ed3\u5e93\u63d0\u4f9b\u3002\u8def\u5f84\uff08\u5982 `~/graphrag-poc/`\u3001\n> `~/.hermes/...`\uff09\u662f\u4f5c\u8005\u672c\u673a\u7684\u793a\u4f8b\u4f4d\u7f6e\uff0c\u8bf7\u66ff\u6362\u4e3a\u4f60\u81ea\u5df1\u7684\u5b89\u88c5\u8def\u5f84\u3002\u6ca1\u6709\u5b83\u4eec\u4e5f\u4e0d\u5f71\u54cd\n> \u7b2c 1\u30012 \u8282\u7684\u6838\u5fc3\u6d41\u7a0b\u4e0e `scripts/vault_health_check.py`\u3002\n\n### \u77e5\u8bc6\u5e93\u4e09\u4ef6\u5957\n\n| \u5de5\u5177 | \u5b9a\u4f4d | \u9002\u7528\u573a\u666f |\n|:----|:----|:---------|\n| **GBrain** | \u641c\u7d22 | \u77e5\u9053\u8981\u627e\u4ec0\u4e48\u5173\u952e\u8bcd |\n| **GraphRAG** | \u53d1\u73b0 | \u4e0d\u77e5\u9053\u5173\u952e\u8bcd\uff0c\u60f3\u53d1\u73b0\u9690\u85cf\u5173\u8054 |\n| **LLM Wiki** | \u5199\u4f5c | \u7528 Karpathy \u6a21\u5f0f\u5efa LLM \u53ef\u8bfb\u7684 Wiki |\n| **Understand-Anything** | \u53ef\u89c6\u5316 | \u770b\u61c2\u5168\u5e93\u7ed3\u6784\uff0c\u53d1\u73b0\u9690\u6027\u5173\u8054 |\n\n### GBrain \u641c\u7d22\u96c6\u6210\n\n**\u65e5\u5e38\u4f7f\u7528**\uff1a\n```bash\nalias gs='GBRAIN_SKIP_RECIPES=1 gbrain search'\ngs \"\u5b9a\u4ef7 \u54c1\u724c\"\ngs \"\u5965\u5fb7\u8d5b\u65f6\u671f\"\n\n# \u6df7\u5408\u641c\u7d22\ngbrain query \"\u6d88\u8d39\u8005\u5fc3\u7406\u5269\u4f59\"\n\n# \u8bfb\u5168\u6587\uff08\u6ce8\u610f slug \u542b emoji \u76ee\u5f55\u540d\uff09\ngbrain get \"wiki/\ud83d\udce1 \u5916\u90e8\u8f93\u5165/\u64ad\u5ba2/XXX/\u89c2\u70b9\u63d0\u53d6\"\n\n# \u67e5\u770b\u7edf\u8ba1\ngbrain stats\n```\n\n**\u914d\u7f6e**\uff1aDeepSeek downstream LLM\uff08`deepseek_api_key` + `deepseek_model: deepseek-chat` + `search.mode: balanced`\uff09\n**\u5b8c\u6574\u624b\u518c**\uff1a`wiki/\ud83e\udde0 AI\u7cfb\u7edf/GBrain-\u5b8c\u6574\u64cd\u4f5c\u624b\u518c.md`\n\n### GraphRAG \u53d1\u73b0\n\n> **\u26a0\ufe0f \u5df2\u79fb\u81f3\u72ec\u7acb\u9879\u76ee**\uff1a\u6309\u4f60\u7684\u5b9e\u9645\u5b89\u88c5\u8def\u5f84\u914d\u7f6e\n> **Flask API**\uff1alocalhost:8999\uff08\u9ed8\u8ba4\uff09\n> **\u5185\u5bb9**\uff1a\u81ea\u5b9a\u4e49\u77e5\u8bc6\u5e93 + DeepSeek + BGE \u5d4c\u5165\n\n\u7528\u4e8e\u53d1\u73b0\u77e5\u8bc6\u5e93\u4e2d\u7684\u9690\u6027\u5173\u8054\u548c\u8de8\u9886\u57df\u8fde\u63a5\u3002\n\n### LLM Wiki\uff08Karpathy \u6a21\u5f0f\uff09\n\nKarpathy \u7684 LLM Wiki \u6a21\u5f0f\uff1a\u6784\u5efa interlinked markdown \u77e5\u8bc6\u5e93\uff0c\u8ba9 LLM \u5728\u63a8\u7406\u65f6\u76f4\u63a5\u67e5\u3002\n\u5df2\u96c6\u6210\u5230 Obsidian vault\u3002\n\n### Understand-Anything \u2014 \u77e5\u8bc6\u56fe\u8c31\u53ef\u89c6\u5316\n\n\u5df2\u5b89\u88c5\u4e3a\u72ec\u7acb skill\u3002\n\n**\u4f7f\u7528**\uff1a\n```bash\n# \u5fc5\u987b\u6307\u5411 wiki \u6839\u76ee\u5f55\uff0c\u5fc5\u987b\u7528 python3.11+\npython3 parse-knowledge-base.py /path/to/your-vault/wiki\n```\n\n**\u26a0\ufe0f \u5173\u952e pitfalls**\uff1a\n- Python 3.11+ \u5fc5\u9700\n- \u5fc5\u987b\u6307\u5411 wiki \u6839\u76ee\u5f55\uff08\u5b50\u76ee\u5f55\u6ca1\u6709 index.md \u4f1a\u62a5\u9519\uff09\n- Dashboard \u9700\u5148 build core \u5305\n- \u9700\u8981 GRAPH_DIR \u548c ACCESS_TOKEN \u73af\u5883\u53d8\u91cf\n\n---\n\n## 4. \u76ee\u5f55\u6574\u7406 (Organization)\n\n### \u76ee\u5f55\u5ba1\u67e5\u4e0e\u589e\u91cf\u6e05\u7406\n\n\u5f53\u7528\u6237\u8bf4\"\u770b\u4e00\u4e0b\u76ee\u5f55\u662f\u5426\u5408\u7406\"\u65f6\u6267\u884c\uff1a\n\n```\nStep 1: \u5168\u91cf\u76ee\u5f55\u626b\u63cf\n  \u2192 find . -maxdepth 3 -type d | sort\n  \u2192 \u5bf9\u6bcf\u4e2a wiki \u5b50\u76ee\u5f55\u7edf\u8ba1 .md \u6587\u4ef6\u6570\n\nStep 2: \u9010\u9879\u68c0\u67e5\n  | \u68c0\u67e5\u9879 | \u7279\u5f81 | \u4e25\u91cd\u6027 |\n  |--------|------|--------|\n  | \u65e7\u7248\u6b8b\u7559\u76ee\u5f55 | diff -rq \u786e\u8ba4\u65b0\u65e7\u7248\u672c\u5185\u5bb9\u4e0d\u540c | \ud83d\udd34 |\n  | Legacy redirect \u53ea\u5269 README | \u76ee\u5f55\u53ea\u6709\u4e00\u4e2a redirect \u6587\u4ef6 | \ud83d\udfe1 |\n  | \u6982\u5ff5\u5361\u7247\u6563\u843d\u6839\u76ee\u5f55 | wiki/\ud83e\uddec \u77e5\u8bc6\u56fe\u8c31/XXX.md \u5e94\u5728\u6982\u5ff5/\u4e0b | \ud83d\udfe1 |\n  | cron \u811a\u672c\u5199\u5165\u65e7\u8def\u5f84 | grep -rn \"\u65e7\u76ee\u5f55\" ~/.hermes/scripts/ | \ud83d\udd34 |\n\nStep 3: \u5206\u7c7b\u6267\u884c \u2192 \u5f52\u6863/\u5220\u9664/\u79fb\u52a8/\u66f4\u65b0\u5f15\u7528\n\nStep 4: \u9a8c\u8bc1 \u2192 \u96f6\u6b8b\u7559\n```\n\n### \u5168\u5e93\u5ba1\u8ba1\u4e0e\u6279\u91cf\u5f52\u6863\n\n```\nStep 1: \u5168\u91cf\u626b\u63cf\u76ee\u5f55\u7ed3\u6784\u548c\u6587\u4ef6\u6570\nStep 2: \u9010\u76ee\u5f55\u4e0e\u6700\u65b0\u7ba1\u7406\u529e\u6cd5\u5bf9\u7167\nStep 3: \u5206\u7ea7\u6807\u8bb0\uff08\ud83d\udd34\u660e\u786e\u65e0\u7528 \u2192 \ud83d\udfe1\u91cd\u590d \u2192 \ud83d\udfe0\u8349\u7a3f \u2192 \ud83d\udd35\u8fc7\u65f6\uff09\nStep 4: \u6279\u91cf mv \u5230 wiki/\ud83d\uddc4\ufe0f \u5f52\u6863/\nStep 5: \u4fee\u590d\u6b8b\u7559\u5f15\u7528\uff08README/wiki/index/\u9879\u76ee\u7d22\u5f15\uff09\n```\n\n**\u5f52\u6863\u76ee\u5f55\u7ed3\u6784**\uff1a\n```\nwiki/\ud83d\uddc4\ufe0f \u5f52\u6863/\n\u251c\u2500\u2500 \u5f52\u6863\u6e05\u5355-YYYY-MM-DD.md\n\u251c\u2500\u2500 \u65e7\u7248\u7ba1\u7406\u529e\u6cd5/\n\u251c\u2500\u2500 \u65e7\u7248\u6d41\u7a0b/\n\u251c\u2500\u2500 \u65e7\u7248\u8349\u7a3f/\n\u251c\u2500\u2500 \u65e7\u9009\u9898/\n\u2514\u2500\u2500 ...\n```\n\n**\u53cd\u6a21\u5f0f**\uff1a\n- \u274c \u4e0d\u8981\u5220\u9664\u5f52\u6863\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\n- \u274c \u5f52\u6863\u540e\u5fc5\u987b\u540c\u6b65\u66f4\u65b0\u6240\u6709 index/README \u5f15\u7528\n- \u274c \u7d20\u6750\u5e93/ \u4e0b\u7684\u6587\u4ef6\u4e0d\u5f52\u6863\n- \u274c \u5f52\u6863\u65f6\u4e0d\u8981\u6539\u6587\u4ef6\u540d\n- \u2705 \u6bcf\u6b21\u5927\u6e05\u7406\u5fc5\u987b\u521b\u5efa `\u5f52\u6863\u6e05\u5355-YYYY-MM-DD.md`\n\n---\n\n## 5. Wiki \u5b9e\u4f53\u7ba1\u7406\n\n### Wiki \u5b9e\u4f53\u683c\u5f0f\n\n\u6bcf\u4e2a\u56e2\u961f/\u9879\u76ee\u5728 `wiki/teams/` \u4e0b\u6709\u5bf9\u5e94 `.md` \u5b9e\u4f53\uff1a\n\n```yaml\n---\ntitle: \u56e2\u961f\u540d\ncreated: YYYY-MM-DD\nupdated: YYYY-MM-DD\ntype: entity\ntags: [team, ...]\nsources: [50.\u56e2\u961f/\u5b9e\u9645\u76ee\u5f55\u540d]   # \u91cd\u8981\uff1a\u8def\u5f84\u5fc5\u987b\u662f\u5b9e\u9645\u5b58\u5728\u7684\u76ee\u5f55\u540d\n---\n\n# \u56e2\u961f\u540d\n\n## Overview\n## \u6587\u4ef6\u7ed3\u6784\uff08\u8868\u683c\uff0c\u5217\u51fa\u5b50\u76ee\u5f55\u548c\u6570\u91cf\uff09\n## Related\n```\n\n**sources \u8def\u5f84\u5fc5\u987b\u4e0e\u5b9e\u9645\u76ee\u5f55\u540d\u5b8c\u5168\u5339\u914d**\uff1a\n- \u274c `sources: [50.\u56e2\u961f/02.\u4e8b\u4e1a\u7ebf]` \uff08\u65e7/\u9519\uff09\n- \u2705 `sources: [50.\u56e2\u961f/\u4e8b\u4e1a\u7ebf]` \uff08\u65b0/\u5bf9\uff09\n\n### \u5f02\u5e38\u6587\u4ef6\u5904\u7406\n\n\u67d0\u4e9b `.md` \u6587\u4ef6\u53ef\u80fd\u88ab\u8bef\u8ba4\u4e3a\u76ee\u5f55\u540d\uff08\u5982 `\u5343\u91d1-\u65e5\u62a5\u7d22\u5f15.md`\u3001`OKR\u770b\u677f.md`\uff09\u3002\u68c0\u67e5\u65b9\u5f0f\uff1a\n\n```python\n# \u68c0\u67e5\u662f\u5426\u662f\u6587\u4ef6\u88ab\u5f53\u4f5c\u76ee\u5f55\nfor d in team_dir.iterdir():\n    if d.is_file() and not d.name.startswith(\".\"):\n        print(f\"\u26a0\ufe0f {d.name} \u662f\u6587\u4ef6\u5374\u50cf\u76ee\u5f55\")\n```\n\n\u4fee\u590d\uff1a\u7528 `mv` \u628a\u5b83\u4eec\u79fb\u5230\u5bf9\u5e94\u76ee\u5f55\u4e0b\u3002\n\n---\n\n## 6. \u6279\u91cf\u4fee\u590d\u6a21\u5f0f\n\n### broken wikilink \u4fee\u590d\uff08\u64ad\u5ba2 EP \u6587\u4ef6\uff09\n\n**\u95ee\u9898**\uff1a\u64ad\u5ba2 wiki \u6587\u4ef6\u4e2d\u7684 wikilink \u5f15\u7528\u7d20\u6750\u5e93 EP \u6587\u4ef6\uff0c\u56e0\u6587\u4ef6\u540d\u542b\u7279\u6b8a\u5b57\u7b26\uff08\u5f15\u53f7\u3001emoji\u3001\u53cd\u659c\u6760\uff09\u5bfc\u81f4\u76f8\u5bf9\u8def\u5f84\u89e3\u6790\u5931\u8d25\u3002\n\n**\u4fee\u590d\u65b9\u5f0f**\uff1a\n```python\n# 1. \u5efa\u7d22\u5f15: EP\u7f16\u53f7 \u2192 \u5b9e\u9645\u6587\u4ef6\u8def\u5f84\nep_index = {}\nfor f in \u7d20\u6750\u5e93_dir.iterdir():\n    ep_match = re.match(r'(EP\\d+)', f.name)\n    if ep_match:\n        ep_index[ep_match.group(1)] = f\n\n# 2. \u626b\u63cf wiki \u6587\u4ef6\uff0c\u7528 EP \u7f16\u53f7\u5339\u914d\u5b9e\u9645\u6587\u4ef6\uff0c\u91cd\u5efa\u76f8\u5bf9\u8def\u5f84\nfor link in wikilinks:\n    ep_match = re.search(r'(EP\\d+)', target)\n    if ep_match and ep_match.group(1) in ep_index:\n        rel = os.path.relpath(ep_index[ep_id], md.parent)\n        # \u66ff\u6362 wikilink\n```\n\n### \u6279\u91cf\u8865 frontmatter\uff08summary + source\uff09\n\n**\u95ee\u9898**\uff1a\u5927\u91cf A+B \u4ea7\u7269\uff08\u89c2\u70b9\u63d0\u53d6/\u95ee\u9898\u94fe\uff09\u7f3a\u5c11 summary \u548c source \u5b57\u6bb5\u3002\n\n**\u4fee\u590d\u65b9\u5f0f**\uff1a\n```python\n# summary: \u4ece\u6b63\u6587\u7b2c\u4e00\u4e2a # \u6807\u9898\u63d0\u53d6\ntitle_match = re.search(r'^#\\s+(.+)', body, re.MULTILINE)\nsummary = title_match.group(1).strip()[:100] if title_match else md.stem\n\n# source: \u4ece\u6587\u4ef6\u8def\u5f84\u63a8\u65ad\nif '\u89c2\u70b9\u63d0\u53d6' in md.name or '\u95ee\u9898\u94fe' in md.name:\n    source = '\u7d20\u6750\u5e93/\u64ad\u5ba2/\u7ed9\u5973\u5b69\u7684\u5546\u4e1a\u7b2c\u4e00\u8bfe'\n```\n\n**\u26a0\ufe0f PITFALL**\uff1aGraphRAG \u81ea\u52a8\u751f\u6210\u7684\u5b9e\u4f53\u6587\u4ef6\uff08`\ud83e\uddec \u77e5\u8bc6\u56fe\u8c31/GraphRAG*/\u5b9e\u4f53/`\uff09\u7ea6 260+ \u4e2a\u6ca1\u6709 summary\uff0c\u8fd9\u662f\u6b63\u5e38\u7684\uff0c\u4e0d\u9700\u8981\u4fee\u590d\u3002\n\n### \u6587\u4ef6\u540d\u542b\u7a7a\u683c\u4fee\u590d\n\n```bash\n# \u626b\u63cf\nfind wiki/ -name \"* *\" -type f\n\n# \u91cd\u547d\u540d\nmv \"MarkItDown \u64cd\u4f5c\u624b\u518c.md\" \"MarkItDown-\u64cd\u4f5c\u624b\u518c.md\"\n```\n\n### \u76ee\u5f55\u8fc1\u79fb\u63d0\u793a\u9875\u683c\u5f0f\n\n\u5f53\u76ee\u5f55\u6574\u4f53\u8fc1\u79fb\u65f6\uff0c\u65e7\u4f4d\u7f6e\u4fdd\u7559 README.md \u63d0\u793a\u9875\uff1a\n```yaml\n---\ntitle: \"\u26a0\ufe0f \u5df2\u8fc1\u79fb - \u76ee\u5f55\u540d\"\ntype: note\ntags: [\u5df2\u5e9f\u5f03, \u5df2\u8fc1\u79fb]\ncreated: YYYY-MM-DD\nsummary: \u5df2\u8fc1\u79fb\u5230 ../../\u65b0\u4f4d\u7f6e\u3002\nsource: \"\u539f\u7cfb\u7edf\u540d\"\n---\n```\n\n---\n\n## 7. \u4e8b\u4e1a\u7ebf\u6587\u4ef6\u547d\u540d\u89c4\u8303\n\n\u4e8b\u4e1a\u7ebf\uff08`50.\u56e2\u961f/\u4e8b\u4e1a\u7ebf/`\uff09\u7684\u6587\u4ef6\u547d\u540d\u4e0e Agent \u7684\u5bf9\u5e94\u5173\u7cfb\uff1a\n\n| \u6587\u4ef6\u540d\u524d\u7f00 | Agent | \u5e94\u653e\u5165\u5b50\u76ee\u5f55 |\n|-----------|-------|-------------|\n| `O1-\u730e\u624b` / `\u730e\u624b-\u5185\u5bb9\u60c5\u62a5` / `\u730e\u624b-\u6e20\u9053\u60c5\u62a5` / `\u730e\u624b-\u6280\u672f\u8c03\u7814` / **`\u5185\u5bb9\u60c5\u62a5-\u7ed9\u5973\u5b69\u7684\u5546\u4e1a\u7b2c\u4e00\u8bfe`** | \u730e\u624b | `\u730e\u624b/` |\n| `O2-\u7b14\u795e` | \u7b14\u795e | `\u7b14\u795e/` |\n| `O2-\u5929\u773c` | \u5929\u773c | `\u5929\u773c/` |\n| `O3-\u7ba1\u5bb6` | \u7ba1\u5bb6 | `\u7ba1\u5bb6/` |\n| `O4-\u6781\u5ba2` | \u6781\u5ba2 | `\u6781\u5ba2/` |\n| `O4-\u753b\u795e` | \u753b\u795e | `\u753b\u795e/` |\n| `\u5343\u91d1-` | \u5343\u91d1 | `\u5343\u91d1/` |\n\n**\u7279\u522b\u6ce8\u610f**\uff1a`\u5185\u5bb9\u60c5\u62a5-\u7ed9\u5973\u5b69\u7684\u5546\u4e1a\u7b2c\u4e00\u8bfe-*.md` \u8fd9\u4e9b\u6587\u4ef6\u540d\uff0887\u4e2a\uff09\u4e0d\u662f\u7cfb\u5217\u540d\uff0c\u662f\u730e\u624b\u7684\u4ea7\u51fa\uff0c\u9700\u5f52\u5165 `\u730e\u624b/` \u76ee\u5f55\u3002\n\n**O3-CFO \u6587\u4ef6**\uff1a\u5c5e\u4e8e `\u5bb6\u5ead\u7ebf/CFO/`\uff0c\u4e0d\u662f\u4e8b\u4e1a\u7ebf\u3002\n\n---\n\n## 8. \u5343\u91d1\u65e5\u62a5\u6587\u4ef6\u547d\u540d\u89c4\u8303\n\n| \u6587\u4ef6\u540d\u5305\u542b | \u5b50\u76ee\u5f55 |\n|-----------|-------|\n| `\u603b\u88c1\u65e5\u62a5` | `\u603b\u88c1\u65e5\u62a5/` |\n| `O1\u7ebf`/`O2\u7ebf`/`O3\u7ebf`/`O4\u7ebf` | `O\u7ebf\u65e5\u62a5/` |\n| `\u6668\u95f4\u7b80\u62a5` | `\u6668\u95f4\u7b80\u62a5/` |\n| `\u6d6a\u6f2b-` | `\u6d6a\u6f2b/` |\n| `\u7cfb\u7edf-` | `\u7cfb\u7edf/` |\n| \u5176\u4ed6 | `\u5176\u4ed6/` |\n\n---\n\n## \u53cd\u6a21\u5f0f\n\n- \u274c \u4e0d\u8981\u5220\u9664\u7d20\u6750\u5e93/ \u4e0b\u7684\u4efb\u4f55\u6587\u4ef6\n- \u274c Wiki \u9875\u9762\u5fc5\u987b\u6709 source \u5b57\u6bb5\u6307\u5411\u539f\u59cb\u7d20\u6750\n- \u274c \u4e0d\u8981\u521b\u5efa\u6ca1\u6709\u5165\u94fe\u7684\u5b64\u7acb wiki \u9875\u9762\uff08\u9664\u7d22\u5f15\u9875\uff09\n- \u274c \u6e05\u7406\u524d\u5148 dry-run\n- \u274c \u5f52\u6863\u65f6\u4e0d\u8981\u6539\u6587\u4ef6\u540d\n- \u2705 \u6bcf\u6b21\u5927\u6e05\u7406\u5fc5\u987b\u521b\u5efa `\u5f52\u6863\u6e05\u5355-YYYY-MM-DD.md`\n\n---\n\n## \u76f8\u5173 Skill\n\n- `kb-ingest` \u2014 \u7d20\u6750\u5165\u5e93\uff08\u8be6\u7ec6\u6d41\u7a0b\uff09\n- `kb-audit` \u2014 \u5065\u5eb7\u68c0\u67e5\u4e0e\u6e05\u7406\uff08\u8be6\u7ec6\u6d41\u7a0b\uff09\n- `kb-tools` \u2014 GBrain/GraphRAG/LLM Wiki \u96c6\u6210\uff08\u8be6\u7ec6\u914d\u7f6e\uff09\n- `chubby-knowledge-base-organization` \u2014 \u56e2\u961f\u6587\u4ef6\u7ec4\u7ec7\u89c4\u8303\n- `content-ab-processing` \u2014 A+B \u53cc\u8f68\u5904\u7406\n- `memory-obsidian-sync` \u2014 Memory \u540c\u6b65\u5230 Obsidian\n- `understand` / `understand-knowledge` \u2014 \u77e5\u8bc6\u56fe\u8c31\u53ef\u89c6\u5316\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
