当前位置: 首页 > article >正文

【AI Agent通识九课】03 · AI 的菜单 vs 暗号 — 工具怎么设计

AI Agent 通识课 · 第 3 篇 / 共 9 篇一句话记住把工具做成菜单不靠暗号。去年我用某个 Agent 产品时遇到一件糟心事我让它给张总发个邮件改下周会时间。它给张总的同事发了邮件。怎么出的错Agent 内部把张总识别成了错误的联系人又因为工具协议太松散这个错误没有在任何一环被拦住——直接发了出去。这就是今天要讲的主题AI 怎么用工具决定了它会不会闯祸。业界有个专有名词叫工具幻觉Tool Hallucination——AI 调错工具、传错参数、甚至伪造不存在的工具。搞不清这件事你做的 Agent 永远不靠谱。01 · 一个生活化的对比路边摊靠吼点餐像松散的工具协议你喊“来个鸡腿饭多放辣”老板听成“鸡翅饭微辣。”自然语言歧义、信息丢失、错了也没人拦。肯德基点餐机像结构化工具协议屏幕上清清楚楚原味鸡 / 辣翅 / 薯条每个按钮点下去弹出参数份数1/2/3、辣度不辣/中辣/变态辣封闭菜单、参数固定想点孜然羊肉根本没这个按钮。航空公司值机系统像强类型协议你选座位 “88A”——系统报错“座位号不存在”你选商务舱但票是经济舱——系统报错“票型不符”连错都不让你提。AI 调用工具也一样。越结构化越可靠。02 · 如果让你来做你会怎么设计假设你在做一个个人助理 Agent有 4 个工具查日程看日历上有什么会发消息发邮件 / 短信下单买东西搜信息查资料你怎么让 AI 知道这 4 个工具的存在朴素方案 A在 Prompt 里用自然语言描述你有以下工具 1. 查日程查看日历 2. 发消息发邮件或短信 3. 下单网购 4. 搜信息搜索然后指望 AI 输出[调用查日程(下周)]你再解析。问题一堆AI 可能输出[调用查询日程]名字变了可能输出[调用查日程 下周]括号没了甚至输出[调用删除日程(下周)]根本不存在的工具这就是路边摊靠吼。朴素方案 B让 AI 直接写代码让 AI 输出 Python 代码 code send_email(zhangcompany.com, 改时间) 然后 exec(code)更糟AI 可能写open(日程.txt).read()绕过你的工具直接访问系统可能写os.system(rm -rf /)灾难可能写发消息()忘了传参正确方向像点餐机那样关键思路别让 AI 自由发挥给它封闭菜单。屏幕只有 4 个按钮查日程 / 发消息 / 下单 / 搜信息每个按钮的参数都是下拉选不能乱填想点孜然羊肉按钮都没有03 · 四种主流工具协议方案 A字符串式最松散做法工具就是一个字符串名字 自然语言描述。tools[{name:查日程,description:查日历},{name:发消息,description:发邮件或短信},{name:下单,description:购物下单},{name:搜信息,description:搜索},]AI 看描述决定调哪个输出字符串查日程(下周)你再解析。生活类比路边摊靠吼——听得懂算运气好谁在用LangChain 早期版本、大量 Demo、研究项目优点灵活、快速搭建缺点AI 可能拼错工具名、参数靠 AI 猜、工具幻觉率高适合原型、Demo、学习方案 BJSON Schema最主流做法用 JSON Schema 严格定义工具的名字、参数、类型。{name:send_message,description:给指定联系人发消息,parameters:{type:object,properties:{to:{type:string,description:收件人邮箱或手机号},channel:{type:string,enum:[email,sms]},content:{type:string,description:消息内容}},required:[to,channel,content]}}生活类比肯德基点餐机——菜单固定、参数下拉选、不合法的组合不让你提谁在用ChatGPT 插件 / GPTsFunction Calling 是原生路径绝大多数商用 Agent跨模型兼容MCP 协议Anthropic 推的开放协议底层也是 JSON Schema优点✅ 参数有 JSON Schema 强校验发消息必须有收件人✅ OpenAI / Anthropic 原生优化幻觉率低✅ 业界标准跨模型通用缺点❌ JSON 字符串易写错❌ 没有编译期检查运行时才发现问题适合绝大多数商用 Agent2026 年事实标准方案 C装饰器式开发体验最好做法用语言特性Python 装饰器自动生成 Schema。tooldefsend_message(to:str,channel:Literal[email,sms],content:str)-None:给指定联系人发消息 Args: to: 收件人邮箱或手机号 channel: 渠道email 或 sms content: 消息内容 # 具体发送逻辑生活类比自助点餐 Pad——菜单自动同步后厨改菜品不用手动更新两边谁在用LangChaintoolPython 生态最主流Hermes Agent开源框架首选LlamaIndex / Pydantic AI同类做法优点✅ 代码即文档工具和 Schema 永远同步✅ 开发体验极好✅ 类型注解复用 Python 原生能力缺点❌ Python 的类型注解是软约束运行时才检查❌ 装饰器魔法对新手不友好❌ 不跨语言适合Python 生态的 Agent 项目方案 D强类型枚举式最硬核做法用静态类型语言Rust / Kotlin / Swift的枚举 强类型结构体。enumAgentAction{CheckCalendar(CheckCalendarParams),SendMessage(SendMessageParams),PlaceOrder(PlaceOrderParams),Search(SearchParams),}structSendMessageParams{to:String,channel:Channel,// enum Channel { Email, Sms }content:String,}生活类比航空公司值机系统——座位选错、票型不符连错都不让你提谁在用WarpRust 枚举部分企业级 AgentGo / Kotlin / Swift 强类型实现高可靠性场景金融、医疗、生产级 DevOps优点✅编译期就能堵死所有错误✅ 枚举是封闭集合AI 只能从有限变体里选✅ 穷举性检查加新工具所有漏处理的地方编译期报错✅ 极高可靠性缺点❌ 语言学习曲线陡❌ 加工具要改枚举不如装饰器灵活适合生产级、对可靠性要求极高的 Agent速查表方案生活类比代表类型检查可靠性开发效率字符串式路边摊靠吼LangChain 早期无 中 高JSON Schema肯德基点餐机OpenAI / Claude / MCP运行时 高 高装饰器式自助点餐 PadLangChaintool/ Hermes运行时 高 极高强类型枚举航空值机系统Warp编译期 极高 中04 · 加个新工具试试假设要加一个新工具删除邮件四种方案各要改哪里字符串式tools.append({name:删除邮件,description:删除指定邮件})完事。但 AI 下次可能调 “删邮件” / “delete_email” / “移除邮件”——运行时才崩。JSON Schema{name:delete_email,parameters:{properties:{email_id:{type:string}},required:[email_id]}}运行时验证参数。但如果 schema 本身写错了少个逗号部署前发现不了。装饰器式tooldefdelete_email(email_id:str)-None:删除指定邮件...自动生成 Schema类型检查运行时——AI 传了个int进来真跑才报错。强类型枚举enumAgentAction{// ... 原有变体DeleteEmail(DeleteEmailParams),// 新增}编译期全部检查。加了新变体所有处理AgentAction的地方执行器、日志、确认弹窗都会报没处理 DeleteEmail 分支——编译器替你做 code review。一张表看差异检查点字符串式JSON Schema装饰器式强类型枚举工具名拼错运行时运行时运行时编译期参数类型错不查运行时运行时编译期少处理新工具不查不查不查编译期Schema 本身错无 schema部署时编译期编译期工具幻觉高低低极低05 · 手把手一次工具调用的全链路场景你对助理说把下周三和张总的会改到周四下午 3 点。阶段 1用户输入 ┌──────────────────────────────────┐ │ 把下周三和张总的会改到周四下午3点 │ └─────────────┬────────────────────┘ │ ▼ 阶段 2LLM 理解意图生成工具调用 ┌──────────────────────────────────┐ │ LLM 输出: │ │ { │ │ tool: update_calendar, │ │ arguments: { │ │ event_id: meeting_20260508,│ │ new_time: 2026-05-09 15:00│ │ } │ │ } │ └─────────────┬────────────────────┘ │ ▼ 阶段 3Agent 框架反序列化 类型校验 ┌──────────────────────────────────┐ │ ✅ 工具存在 update_calendar ✓ │ │ ✅ 参数合法 event_id ✓ │ │ ✅ 时间格式 ISO 8601 ✓ │ │ ❌ 任何一项失败就拒绝 │ └─────────────┬────────────────────┘ │ ▼ 阶段 4风险检查下篇主题 ┌──────────────────────────────────┐ │ 查日程 → 安全直接跑 │ │ 改日程 → 要不要先问主人 │ │ 删日程 → 必须问主人 │ └─────────────┬────────────────────┘ │ ▼ 阶段 5Executor 执行 ┌──────────────────────────────────┐ │ 调日历 APImove event to 周四 │ │ → 返回成功 │ └─────────────┬────────────────────┘ │ ▼ 阶段 6结果回给 LLMObservation ┌──────────────────────────────────┐ │ LLM 看到结果 → 准备回复改好了 │ └──────────────────────────────────┘不同协议的区别主要在阶段 3字符串式几乎没校验“可能成功可能崩”JSON Schema校验合法性“参数不对拒绝”装饰器式类型注解校验“类型不对拒绝”强类型枚举编译期已经保证了“根本不会走到这一步出错”06 · 怎么选一个决策树你要做 Agent 吗 ├─ 快速 Demo / 学习 │ └─ 字符串式LangChain 起步 ├─ 正式商用最常见路径 │ ├─ 要跨多个 LLM │ │ └─ JSON SchemaFunction Calling / MCP │ │ │ └─ 只用 OpenAI / Python 栈 │ ├─ 想要最好开发体验 │ │ └─ 装饰器式LangChain tool / Pydantic AI │ │ │ └─ 要 OpenAI 原生优化 │ └─ Function CallingJSON Schema └─ 生产级 / 对可靠性要求极高 ├─ 团队有静态类型语言能力 │ └─ 强类型枚举Rust / Kotlin │ └─ 只有 Python 栈 └─ 装饰器式 严格 Pydantic 校验90% 的团队选 JSON Schema 或装饰器式。只有Agent 要干重要的事、出错损失惨重的场景如替企业管家、金融交易、生产级 DevOps才值得上强类型枚举。07 · 我踩过的坑做过几个 Agent 项目工具协议这块栽过的跟头总结 3 条坑 1自然语言描述写太模糊早期我给工具写 description 时图省事“发消息给指定的人发消息。”AI 经常调错——分不清邮件还是短信、不知道哪个字段是收件人。改进description 要写精确的参数含义 使用场景举例。“向指定联系人发送消息。channel 参数控制渠道email 或 sms紧急事务用 sms正式通知用 email。”效果立刻好一倍。坑 2工具太多AI 记不住我曾经给一个 Agent 塞了 40 多个工具想着给全了才能干所有事。结果 AI 开始乱调——相似功能的工具选错、参数混淆。后来缩减到 20 个核心工具AI 幻觉率降到 1/5。教训工具数量和 AI 可靠性是反比关系。宁少勿多。坑 3没给失败工具的处理路径工具调用失败时很多 Agent 框架直接把 stack trace 扔给 LLM。LLM 看到 Python 异常信息经常会懵。改进失败结果要封装成人话再喂回 LLM。# 差returnfError:{traceback.format_exc()}# 好return发送失败收件人邮箱不存在。请确认邮箱地址或使用手机号重试。AI 就知道怎么自我纠正了。08 · 你能带走什么读完这篇你应该能回答的 3 个问题✅工具协议的本质把工具做成封闭菜单点餐机而不是路边摊靠吼✅四种主流方案及适用场景字符串式Demo路边摊JSON Schema商用主流肯德基点餐机装饰器式Python 生态首选自助 Pad强类型枚举生产级高可靠航空值机✅工具幻觉的根源协议越松散AI 越容易发明不存在的工具下次评估 Agent 产品时问 4 个问题它的工具是封闭集合还是开放字符串参数校验发生在编译期、运行时还是没有工具会不会被 AI幻觉调用加新工具的成本有多高产品经理设计 AI 功能时不要只用自然语言描述工具给 AI 结构化的 Schema工具数量宁少勿多20-30 个够用多了 AI 也记不住工具要一把钥匙一把锁不要搞万能工具让 AI 随便填参数重要工具必须有参数校验发消息至少要校验收件人存在开发者自己搭 Agent 时起步用LangChaintool装饰器5 分钟能跑进阶切OpenAI Function Calling原生优化最好生产级考虑MCP 协议跨 LLM 兼容极高可靠性场景才上 Rust 枚举09 · 下一篇预告04 · AI 的双车道 — 安全怎么保AI 能调工具了下一个问题来了——让 AI 查日程很安全但让 AI “发消息给老板”、“转账”、删邮件呢机场安检模型普通行李直接过危险品单独开箱。对比 AutoGPT 全自动 / Cursor 每次 Accept / Claude Code allowlist / Warp 两级风险标签——告诉你不同场景该把点头门槛放多高。一句话记忆锚点把工具做成菜单不靠暗号。像肯德基点餐机不像路边摊靠吼——菜单越封闭AI 越可靠。路易乔布斯 © 2026 | AI Agent 通识课 · 第 3 篇 / 共 9 篇

相关文章:

【AI Agent通识九课】03 · AI 的菜单 vs 暗号 — 工具怎么设计

AI Agent 通识课 第 3 篇 / 共 9 篇 一句话记住:把工具做成菜单,不靠暗号。去年我用某个 Agent 产品时遇到一件糟心事: 我让它"给张总发个邮件改下周会时间"。 它给"张总的同事"发了邮件。怎么出的错? Agent…...

英飞凌TC275芯片CAN FD实战:从ADS例程到电机控制数据收发(附完整代码解析)

英飞凌TC275芯片CAN FD实战:从ADS例程到电机控制数据收发(附完整代码解析) 在汽车电子和工业控制领域,实时、可靠的数据传输是系统稳定运行的关键。传统CAN总线受限于8字节数据长度和1Mbps的速率,难以满足现代电机控制…...

避坑指南:MTK芯片备份分区时,驱动、BROM模式和DA文件这些坑你踩过吗?

MTK芯片分区备份实战:驱动、BROM模式与DA文件的深度避坑指南 当你深夜三点盯着电脑屏幕,SP_Flash_Tool窗口那个红色的进度条第7次卡在5%不动时,是否怀疑过人生?MTK芯片的分区备份从来不是点几下鼠标就能完成的标准化操作——驱动版…...

ROS Noetic下RealSense D435i保姆级安装与避坑指南(含cv_bridge缺失等常见错误解决)

ROS Noetic下RealSense D435i深度相机全流程配置与疑难排解实战 当你第一次将Intel RealSense D435i深度相机接入ROS Noetic环境时,可能会被各种依赖冲突、编译错误和配置问题困扰。作为一款集成了RGB摄像头、深度传感器和IMU的多功能设备,D435i在机器人…...

终极Gofile下载指南:如何快速免费下载Gofile.io文件

终极Gofile下载指南:如何快速免费下载Gofile.io文件 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 在当今数字时代,Gofile.io作为一个流行的文件共…...

m4s-converter终极指南:3分钟解锁B站缓存视频,跨设备自由播放

m4s-converter终极指南:3分钟解锁B站缓存视频,跨设备自由播放 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾遇…...

3个场景深度解析:如何用NoSleep彻底解决Windows休眠困扰

3个场景深度解析:如何用NoSleep彻底解决Windows休眠困扰 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 想象一下这样的场景:深夜,你正在渲…...

G-Helper终极指南:华硕笔记本性能优化与硬件控制的完整解决方案

G-Helper终极指南:华硕笔记本性能优化与硬件控制的完整解决方案 【免费下载链接】g-helper Fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenbook, ProArt…...

PyTorch Grad-CAM:深度神经网络可解释性工程实践

PyTorch Grad-CAM:深度神经网络可解释性工程实践 【免费下载链接】pytorch-grad-cam Advanced AI Explainability for computer vision. Support for CNNs, Vision Transformers, Classification, Object detection, Segmentation, Image similarity and more. 项…...

基于Dify.AI构建跨平台聊天机器人:Slack与Discord集成实战

1. 项目概述与核心价值 最近在折腾一个挺有意思的项目,叫 crazywoola/dify-bot 。简单来说,这是一个基于 Dify.AI 平台构建的、能够同时接入 Slack 和 Discord 等主流协作平台的聊天机器人。如果你和我一样,经常需要在团队内部快速部署一个…...

量化交易新手必看:3步搭建QuantConnect本地学习环境,开启你的算法交易之旅![特殊字符]

量化交易新手必看:3步搭建QuantConnect本地学习环境,开启你的算法交易之旅!🚀 【免费下载链接】Tutorials Jupyter notebook tutorials from QuantConnect website for Python, Finance and LEAN. 项目地址: https://gitcode.co…...

10分钟打造专属AI声线:Retrieval-based-Voice-Conversion-WebUI终极指南 [特殊字符]

10分钟打造专属AI声线&#xff1a;Retrieval-based-Voice-Conversion-WebUI终极指南 &#x1f3a4; 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/r…...

Pipeworx:基于MCP协议为AI智能体构建实时数据网关

1. 项目概述&#xff1a;Pipeworx&#xff0c;一个为AI智能体注入实时数据能力的MCP网关如果你正在使用Claude Desktop、Cursor或者Windsurf这类集成了MCP&#xff08;Model Context Protocol&#xff09;协议的AI开发工具&#xff0c;并且厌倦了让AI助手凭空猜测或者依赖可能过…...

终极RPG资源解压指南:如何快速提取加密游戏素材

终极RPG资源解压指南&#xff1a;如何快速提取加密游戏素材 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMake…...

Windows Defender 终极移除方案:深度技术解析与实战指南

Windows Defender 终极移除方案&#xff1a;深度技术解析与实战指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/w…...

3分钟永久备份你的QQ空间:GetQzonehistory数据归档终极指南

3分钟永久备份你的QQ空间&#xff1a;GetQzonehistory数据归档终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年发过的QQ空间说说吗&#xff1f;从青涩的学生时代到…...

终极Windows文件元数据管理神器:FileMeta完全指南,免费解锁文件管理新维度

终极Windows文件元数据管理神器&#xff1a;FileMeta完全指南&#xff0c;免费解锁文件管理新维度 【免费下载链接】FileMeta Enable Explorer in Vista, Windows 7 and later to see, edit and search on tags and other metadata for any file type 项目地址: https://gitc…...

3分钟掌握B站CC字幕下载:免费开源工具终极指南

3分钟掌握B站CC字幕下载&#xff1a;免费开源工具终极指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为无法保存B站视频中的精彩字幕而烦恼吗&#xff1…...

FanControl完全指南:如何在Windows上实现精准风扇控制

FanControl完全指南&#xff1a;如何在Windows上实现精准风扇控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

【农业AI最后一公里攻坚】:Dify本地化部署必须攻克的6类政务内网限制与3套等保2.0合规方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Dify农业知识库本地化部署案例全景图 Dify 作为开源大模型应用开发平台&#xff0c;正被广泛应用于垂直领域知识库构建。在农业数字化实践中&#xff0c;某省级农科院选择基于 Dify 搭建本地化农业知识…...

微信语音转MP3终极指南:3分钟解锁silk-v3-decoder音频转换神器

微信语音转MP3终极指南&#xff1a;3分钟解锁silk-v3-decoder音频转换神器 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion suppo…...

Playwright文件下载保姆级教程:从环境配置到`save_as`保存路径的完整避坑指南

Playwright文件下载实战指南&#xff1a;从环境搭建到高级资源管理 在自动化测试和爬虫开发领域&#xff0c;文件下载功能一直是个令人头疼的问题。传统工具如Selenium需要额外处理系统级弹窗&#xff0c;而Playwright以其现代化的架构提供了更优雅的解决方案。本文将带你从零开…...

医学影像多模态学习:MedCLIPSeg技术解析与应用

1. 项目概述&#xff1a;当医学影像遇上多模态学习 去年在协助某三甲医院搭建胸片分析系统时&#xff0c;主治医师指着屏幕上的CT影像问我&#xff1a;"能不能让AI像人类医生一样&#xff0c;看到片子后不仅能识别病灶&#xff0c;还能用自然语言描述病变特征&#xff1f;…...

【Dify v0.9.5+调试权威指南】:基于OpenTelemetry的全链路追踪落地实录(含6个可复用debug插件)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Dify工作流调试的核心挑战与观测范式演进 在 Dify 平台中构建复杂 LLM 工作流时&#xff0c;传统日志追踪与单点断点调试已难以应对多节点异步执行、上下文跨节点漂移、以及非确定性模型输出带来的可观…...

AI Agent框架探秘:拆解 OpenHands()--- AgentController

一、什么是 Q 饱和运算&#xff1f; 1. 核心痛点&#xff1a;普通运算的 “数值回绕” 普通算术运算&#xff08;如 ADD/SUB&#xff09;溢出时&#xff0c;数值会按补码规则 “回绕”&#xff0c;导致结果完全错误&#xff1a; 示例&#xff1a;int8_t 类型最大值 127 1 → 结…...

想买车犯难?欧拉5和比亚迪元PLUS对比,谁更值得入手?

行业现状分析在当前的新能源汽车市场中&#xff0c;小型纯电SUV领域竞争异常激烈。数据表明&#xff0c;该细分市场的年销量增长率持续保持在较高水平&#xff0c;众多品牌纷纷布局&#xff0c;推出各自的产品以争夺市场份额。欧拉5作为长城汽车旗下欧拉品牌的一款重要车型&…...

RLAnything框架:动态系统中的强化学习联合优化实践

1. 项目背景与核心价值 在智能决策系统开发中&#xff0c;我们常常遇到这样的困境&#xff1a;环境模型过于理想化、策略更新滞后于环境变化、奖励函数设计不合理导致模型收敛困难。RLAnything正是为解决这类动态系统中的联合优化问题而生。 这个框架最吸引我的地方在于它打破…...

当AI学会用语言“看见“世界:GroundingDINO如何改变我们与图像的对话方式

当AI学会用语言"看见"世界&#xff1a;GroundingDINO如何改变我们与图像的对话方式 【免费下载链接】GroundingDINO [ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detect…...

【C++ 进阶】继承(上):解锁代码复用的核心密码,体会代码复用的魅力!

、继承的概念及定义1.1继承的概念继承是面向对象编程&#xff08;OOP&#xff09;中的核心机制之一&#xff0c;允许一个类&#xff08;子类/派生类&#xff09;基于另一个类&#xff08;父类/基类&#xff09;来构建。子类自动获得父类的属性和方法&#xff0c;并可扩展或修改…...

终极指南:5分钟搭建你的Obsidian Zettelkasten知识管理系统

终极指南&#xff1a;5分钟搭建你的Obsidian Zettelkasten知识管理系统 【免费下载链接】Obsidian-Templates A repository containing templates and scripts for #Obsidian to support the #Zettelkasten method for note-taking. 项目地址: https://gitcode.com/gh_mirror…...