1. 项目概述将Markdown文件变成可执行的AI代理如果你和我一样每天在终端和代码编辑器之间来回切换频繁地调用Claude、Gemini、Codex这些AI工具来辅助工作那你一定也经历过这种烦恼每次都要手动敲一长串命令复制粘贴代码片段或者为了给AI提供足够的上下文而手忙脚乱地整理文件。这种重复性的操作不仅打断工作流还容易出错。最近我在GitHub上发现了一个名为mdflow也叫md的工具它彻底改变了我的工作方式——现在我的Markdown文件本身就是可以直接执行的AI代理脚本。简单来说mdflow的核心思想是“可执行的Markdown”。你不再需要记住复杂的CLI命令参数只需要创建一个.md文件在里面用Markdown格式写好提示词Prompt然后像运行普通脚本一样直接执行这个文件。文件名决定了使用哪个AI模型比如review.claude.md会调用Claude文件内容包括YAML格式的Frontmatter配置和Markdown正文则自动转换为对应的命令行参数和提示词。这听起来可能有点抽象让我举个例子假设我写了一个名为review.claude.md的文件内容是关于代码审查的提示词。那么我只需要在终端输入./review.claude.md或者更酷的git diff | review.claude.md就能让Claude自动分析我的代码变更并给出反馈。这个工具特别适合开发者、技术写作者、DevOps工程师以及任何需要频繁与AI交互的科技从业者它能将零散的AI交互流程标准化、脚本化极大提升效率。2. 核心设计哲学与工作原理拆解mdflow的设计深受Unix哲学影响强调“做一件事并做好”、“组合简单工具完成复杂任务”。它不是一个庞大的、黑盒式的AI平台而是一个轻量级的“粘合剂”和“翻译器”将你熟悉的Markdown和命令行与你常用的AI CLI工具如Anthropic的claude、Google的gemini、Cursor的codex等无缝连接起来。2.1 从文件名到命令智能推断的执行引擎mdflow最巧妙的设计之一就是通过文件名自动推断要执行的命令。其规则非常直观任务名.命令名.md。这里的“命令名”需要对应你系统PATH中已安装的AI CLI工具。例如在我的~/agents目录下我有以下几个文件review.claude.md- 会自动执行claude命令commit.gemini.md- 会自动执行gemini命令refactor.codex.md- 会自动执行codex命令explain.copilot.md- 会自动执行copilot命令实操心得在开始构建你的AI代理库之前请务必先在终端测试这些基础命令是否能正常运行。例如运行claude --version或gemini --help。如果命令未找到你需要先按照各自官方文档安装并配置好这些CLI工具。mdflow本身不包含这些AI模型它只是调用它们。如果文件名中没有包含命令名例如你有一个通用的task.md或者你想临时覆盖文件名指定的命令可以使用--_command(或缩写-_c) 标志。比如mdflow task.md --_command claude会强制使用Claude来执行task.md中的提示词。这个功能在你想用不同模型测试同一个提示词时非常有用。2.2 Frontmatter即配置声明式的参数管理每个Markdown文件顶部的YAML Frontmatter被---包裹的部分是mdflow的配置中心。除了少数几个由mdflow自己处理的“系统键”以_或$开头Frontmatter中的所有其他键值对都会被直接转换为命令行参数传递给底层的AI命令。参数转换规则key: value---key valuekey: true---key布尔标志key: false- 该参数被忽略key: [value1, value2]---key value1 --key value2数组转换为多个相同参数举个例子下面这个Frontmatter配置--- model: opus temperature: 0.7 max-tokens: 1000 dangerously-skip-permissions: true mcp-config: ./my-mcp.json add-dir: - ./src - ./tests ---会被mdflow翻译成如下命令行参数然后拼接到claude命令后面claude --model opus --temperature 0.7 --max-tokens 1000 --dangerously-skip-permissions true --mcp-config ./my-mcp.json --add-dir ./src --add-dir ./tests注意事项这里有一个需要特别注意的地方就是参数名中的短横线-。在YAML中dangerously-skip-permissions这样的键是合法的它会被正确转换为--dangerously-skip-permissions。但如果你在Frontmatter中定义了一个单字符的键比如p: true它会被转换为短参数形式-p。这个设计让你能非常灵活地适配不同AI工具CLI的各种参数格式。2.3 正文即提示词动态模板与上下文注入Frontmatter之后的所有Markdown正文都会作为提示词的主体发送给AI。但mdflow的正文不仅仅是静态文本它支持强大的模板功能基于LiquidJS和上下文注入让提示词变得动态和智能。核心模板变量{{ _1 }}, {{ _2 }}...对应命令行中的位置参数。例如执行mdflow translate.claude.md Hello French那么在正文中{{ _1 }}就是Hello{{ _2 }}就是French。{{ _args }}以编号列表形式渲染所有位置参数。{{ _stdin }}如果你使用了管道|管道前命令的输出会注入到这里。这是实现git diff | review.claude.md这种工作流的关键。{{ _varname }}对应通过--_varname命令行标志或Frontmatter中定义的_varname字段传递的自定义变量。一个综合示例假设我有一个code-review.claude.md文件--- model: sonnet _feature: “用户登录” --- 请针对“{{ _feature }}”功能审查以下代码变更 {{ _stdin }} 审查重点 1. 安全性是否有密码明文、SQL注入风险 2. 代码风格是否符合项目规范 ./.eslintrc.js 3. 错误处理是否覆盖了所有异常场景我可以这样使用它git diff origin/main -- src/auth/ | mdflow code-review.claude.md --_feature “新版OAuth集成”。这样git diff的输出和自定义的功能描述都被动态地注入到了提示词中使得每次代码审查都能有高度针对性的上下文。3. 高级功能与实战应用解析掌握了基础概念后我们来看看mdflow那些能真正提升效率的高级特性。这些功能将Markdown文件从简单的脚本升级为功能丰富的“智能代理”。3.1 交互式输入与表单有时你需要在执行代理前动态输入一些信息比如API密钥、环境选择或任务描述。mdflow通过_inputs字段提供了强大的交互式表单功能。在Frontmatter中定义_inputs--- model: haiku _inputs: _api_endpoint: type: text description: “请输入API端点URL” default: “https://api.staging.example.com” _environment: type: select options: [development, staging, production] description: “请选择部署环境” _run_tests: type: confirm description: “是否在部署后运行测试” default: true _secret_token: type: password description: “请输入部署密钥” --- 开始部署到 {{ _environment }} 环境。 API端点{{ _api_endpoint }} {{ _run_tests | default: false | yesno: ‘将执行测试套件’, ‘跳过测试’ }}当你运行这个文件时mdflow会先在终端中依次弹出这些提示等待你输入或选择然后再将填充好的值代入模板发送给AI。type支持text文本、select下拉选择、number数字、confirm是/否确认、password密码输入不显示五种类型足以覆盖大多数交互场景。避坑技巧对于密码等敏感信息强烈建议使用type: password。这样输入时字符不会回显且mdflow不会将其记录在日志中。更好的做法是将此类密钥存储在环境变量或.env文件中通过_env字段注入完全避免交互输入。3.2 强大的内容导入机制让AI理解代码上下文最麻烦的就是手动复制文件内容。mdflow的导入语法完美解决了这个问题。你可以在提示词中直接“引入”本地文件、远程URL甚至命令输出。文件与Glob导入./src/utils.ts引入单个文件。./src/**/*.ts引入src目录下所有.ts文件支持通配符。./src/api.ts:10-25仅引入文件第10至25行。./src/types.ts#UserInterface仅引入文件中名为UserInterface的接口定义支持函数、类、变量等符号提取。实操心得Glob导入**/*非常强大但要小心令牌Token超限。默认情况下mdflow会限制单次导入的总令牌数约10万。如果你需要分析一个大型代码库可以设置环境变量MDFLOW_FORCE_CONTEXT1来临时取消限制但要注意这可能带来高昂的API调用成本和处理时间。命令内联使用反引号语法!command可以执行Shell命令并将其输出直接内联到提示词中。当前Git状态 !git status -s 最近3次提交 !git log --oneline -3 基于以上信息为我生成一份本周工作报告草稿。这个功能使得提示词能实时获取系统状态如文件列表、进程信息、网络状态让AI代理更加“智能”和“知情”。URL导入与缓存mdflow支持引入远程Markdown或JSON文件例如https://raw.githubusercontent.com/org/repo/main/README.md。这些内容会被缓存在本地~/.mdflow/cache/目录中默认1小时TTL以提高后续执行速度。使用--_no-cache标志可以强制刷新缓存。3.3 运行模式交互式与会话式不同的AI任务需要不同的交互模式。mdflow对此做了清晰区分。打印模式默认AI执行一次任务输出结果后立即退出。这是大多数自动化任务如代码审查、生成提交信息、批量重构的首选模式。在文件名中命令直接以.claude.md结尾即表示打印模式。交互模式启动一个持续的对话会话。你需要通过文件名中的.i.标记或Frontmatter中的_interactive: true来显式启用。文件名debug.i.claude.md或chat.i.gemini.mdFrontmatter--- _interactive: true model: opus --- 让我们一步步调试这个Python函数。交互模式适合需要多轮对话、深入探讨复杂问题的情况比如交互式调试、头脑风暴、设计讨论等。注意事项并非所有AI CLI工具都完美支持完全相同的交互模式语义。mdflow为每个它支持的工具claude, gemini, codex, copilot内置了最合适的默认标志来启用交互模式。例如对于copilot它会自动添加--silent --interactive参数。了解这些细节可以避免一些预期外的行为。3.4 环境管理与配置继承为了在不同项目和个人偏好间灵活切换mdflow提供了多层次配置。项目级环境变量mdflow会自动从Markdown文件所在目录开始向上查找并加载.env、.env.local、.env.development等文件。这意味着你可以在项目根目录放一个.env文件定义诸如API_BASE_URL、DATABASE_URL等变量然后在你的代理中通过!echo $DATABASE_URL或直接作为AI提示词的上下文使用。_env字段还可以在Frontmatter中硬编码环境变量优先级更高。全局默认配置在~/.mdflow/config.yaml中你可以为每个命令设置默认参数。commands: claude: model: sonnet # 我大部分任务用sonnet就够了不用每次都指定 temperature: 0.2 # 倾向于更确定性的输出 gemini: model: gemini-2.0-flash-thinking-exp copilot: silent: true # 总是静默模式这个配置会与项目配置、文件Frontmatter中的配置按优先级合并文件Frontmatter 项目配置 全局配置 内置默认让你既能设置个人习惯又能为特定项目或任务进行微调。4. 构建个人AI代理工作流实战理解了所有组件后是时候将它们组合起来构建一个高效、个性化的AI代理工作流了。我将以我自己的日常开发流程为例展示如何从零开始搭建。4.1 第一步初始化与基础设置首先安装mdflow。因为它是一个Node.js工具你可以通过npm或bun安装npm install -g mdflow # 或者如果你像我一样喜欢bun的速度 bun install -g mdflow安装后运行一次设置命令来配置你的Shell使得.md文件可以直接执行mdflow setup这个命令会根据你的Shellbash, zsh, fish自动在配置文件中添加必要的别名和PATH设置。完成后你应该可以直接在终端输入md或mdflow来调用它。接下来我建议创建一个专属目录来存放你的AI代理库。我把它放在~/ai-agents。mkdir -p ~/ai-agents cd ~/ai-agents为了让系统能直接找到这些代理需要把这个目录加入PATH。如果你用的是zsh可以在~/.zshrc中添加export PATH”$HOME/ai-agents:$PATH”然后执行source ~/.zshrc。现在任何放在~/ai-agents目录下的*.claude.md等文件都可以在任意终端位置直接通过文件名执行了。4.2 第二步创建你的核心代理库代理库的质量决定了你的效率提升幅度。不要试图一次性创建几十个代理。从你最重复、最耗时的任务开始。以下是我最常用的几个代理供你参考。1. 智能代码审查代理 (review.claude.md)这是我使用频率最高的代理。它不仅仅运行静态检查而是让Claude像资深同事一样审查代码。--- model: opus max-tokens: 4000 _feature_branch: “” _base_branch: “main” --- # 代码深度审查报告 **变更背景**正在将功能分支 {{ _feature_branch }} 合并到 {{ _base_branch }}。 ## 审查的代码变更 {{ _stdin }} ## 项目上下文与规范 1. **技术栈**TypeScript, React, Node.js, PostgreSQL 2. **代码风格**遵循以下规则 ./.eslintrc.js ./.prettierrc 3. **相关模块**查看可能受影响的相邻文件 ./src/**/*.ts?(x) !find ./src -name “*.test.ts” -o -name “*.spec.ts” | head -5 ## 审查要点按优先级排序 1. **功能性缺陷**逻辑错误、边界条件缺失、竞态条件。 2. **安全风险**数据泄露、注入攻击、不安全的依赖、权限绕过。 3. **性能影响**非必要的重渲染、低效算法、N1查询、内存泄漏。 4. **可维护性**代码清晰度、函数职责单一性、注释质量、重复代码。 5. **测试覆盖**新增代码是否有对应测试现有测试是否因变更而失败 ## 输出格式 请以以下结构输出报告 - **摘要**一两句话总结变更的核心与风险等级低/中/高。 - **关键问题**列出发现的最严重1-3个问题每个问题附上代码片段、原因、修复建议。 - **改进建议**列出可选的代码质量提升建议如重构机会、命名优化。 - **疑问**提出任何你需要我澄清的、关于业务逻辑或代码意图的问题。使用方式# 审查未暂存的更改 git diff | review.claude.md --_feature_branch “feat/user-onboarding” # 审查已暂存、即将提交的更改 git diff --cached | review.claude.md # 审查特定分支的差异 git diff origin/main..my-feature -- src/ | review.claude.md --_feature_branch “my-feature”2. 交互式调试助手 (debug.i.claude.md)当遇到一个棘手的Bug时我会启动这个交互式代理让它充当我的调试伙伴。--- _interactive: true model: sonnet _inputs: _symptom: type: text description: “请描述你遇到的现象或错误信息” _relevant_files: type: text description: “与此问题最相关的文件路径多个用逗号隔开” default: “./” --- # 交互式调试会话{{ _symptom }} 你好我是你的调试助手。我了解你正在处理的问题**{{ _symptom }}**。 为了高效协作我已加载以下相关文件供参考 {{ _relevant_files | split: “,” | foreach: “{{ item }}” }} 此外这是当前的运行时环境信息 - **系统**!uname -a - **Node版本**!node --version - **npm版本**!npm --version - **当前目录**!pwd - **Git状态**!git status -s 2/dev/null || echo “Not a git repo” ## 我们可以如何开始 1. 你可以直接粘贴错误堆栈信息给我分析。 2. 可以描述你已尝试过的排查步骤。 3. 可以问我“你认为可能的原因有哪些”。 4. 也可以说“让我们从阅读 XXX 文件的 YYY 函数开始”。 请随时要求我查看更多文件例如“请查看 ./src/utils/helpers.ts 的第50-80行”或者执行一些诊断命令例如“运行 npm test -- --testNamePattern\auth\ 并告诉我结果”。 我在这里我们一步步来。3. 数据库查询与分析代理 (query.claude.md)这个代理集成了Model Context Protocol (MCP) 服务器允许Claude直接与我的开发数据库交互进行数据查询、模式分析和生成报告。--- model: opus mcp-config: ~/.config/mcp/servers/postgres.json dangerously-skip-permissions: true _inputs: _question: type: text description: “你想了解数据库的什么信息或想执行什么查询” --- # 数据库专家模式 我已连接到配置的PostgreSQL数据库。我可以 1. 查看数据库、表、视图的列表和结构。 2. 执行你提供的SQL查询只读除非你特别要求。 3. 分析数据模式提出优化建议。 4. 根据你的自然语言描述生成相应的SQL语句。 5. 解释复杂查询的执行计划。 你的问题是**{{ _question }}** 在开始深入分析之前让我先了解一下数据库的概貌以便提供更准确的帮助。 !echo “SHOW DATABASES;” | psql -t -A 2/dev/null || echo “无法执行SHOW DATABASES将尝试其他方式获取信息。”注意事项使用MCP服务器和dangerously-skip-permissions标志意味着授予AI对数据库的访问权限。务必仅在开发环境、使用只读权限或快照数据库时使用此功能。切勿在生产数据库或包含敏感真实数据的库上使用。4.3 第三步集成到日常开发流水线创建了代理文件后真正的威力在于将它们嵌入到你现有的工具链中。Git钩子集成在项目的.git/hooks/pre-commit中加入代码审查代理在每次提交前自动运行。#!/bin/bash # .git/hooks/pre-commit echo “Running AI-assisted code review...” git diff --cached | ~/ai-agents/review.claude.md --_feature_branch “$(git branch --show-current)” .git/review-report.md # 你可以选择让报告仅作为参考或者设置检查点例如如果报告指出“高风险”问题则阻止提交 # if grep -q “风险等级高” .git/review-report.md; then # cat .git/review-report.md # echo “\n❌ 审查发现高风险问题提交被阻止。请先修复。” # exit 1 # fi cat .git/review-report.md echo “\n✅ 审查完成报告已保存至 .git/review-report.md”这样每次git commit前你都能得到一份AI生成的代码审查报告帮助你发现潜在问题。Shell别名提速为常用代理组合创建简短的Shell别名。# 添加到 ~/.zshrc 或 ~/.bashrc alias gcr‘git diff --cached | review.claude.md’ alias gcr-all‘git diff origin/main… | review.claude.md’ alias explain‘mdflow ~/ai-agents/explain.claude.md’ alias plan‘mdflow ~/ai-agents/plan.claude.md --_interactive’现在我只需要输入gcr就能审查暂存区的代码输入explain ./src/file.ts就能让AI解释那个文件。IDE/编辑器集成大多数现代编辑器如VS Code都支持配置自定义任务或快捷键来运行Shell命令。你可以配置一个快捷键将当前选中的代码或当前文件路径作为参数发送给你的AI代理。这比切换窗口、复制粘贴流畅得多。4.4 第四步进阶技巧与性能优化当你的代理库越来越庞大使用越来越频繁时以下几点能帮你保持高效。代理的模块化与组合遵循Unix哲学创建小而专的代理然后通过管道组合它们。例如analyze.claude.md只负责分析代码复杂度。suggest-tests.claude.md只负责根据代码生成测试用例。 你可以这样组合cat ./src/new-feature.ts | analyze.claude.md | suggest-tests.claude.md。这比一个庞大的、什么都做的“超级代理”更灵活、更易维护。利用缓存和--_dry-run在编写或修改一个复杂的代理后不要直接运行。先使用mdflow explain agent.md查看解析后的完整命令和提示词预览。使用mdflow agent.md --_dry-run可以模拟执行过程看到将要发送给AI的完整上下文包括所有导入的文件而不产生API调用费用。这对于调试代理和估算令牌消耗至关重要。令牌管理与成本控制AI API调用是按令牌数收费的。mdflow的上下文仪表板可通过--_context标志预览会显示即将发送的上下文大小。养成在运行前看一眼的习惯特别是当你使用Glob导入./src/**/*.ts时。如果发现导入的文件过多可以在Frontmatter中使用add-dir或add-file精确控制上下文而不是导入整个目录。日志与调试所有mdflow的执行日志都保存在~/.mdflow/logs/下按代理名称分目录存放。如果某个代理没有按预期工作首先去查看对应的日志文件。里面记录了完整的解析过程、最终生成的命令以及AI的原始响应在渲染之前。md logs命令可以帮你快速打开日志目录。5. 常见问题与故障排除实录在实际使用mdflow的几个月里我踩过不少坑也总结了一些快速解决问题的办法。5.1 命令找不到或执行错误问题运行my-agent.claude.md时提示Command failed: claude ...或命令未找到。排查步骤检查基础命令首先在终端直接运行claude --help或gemini --version。如果失败说明AI CLI工具本身没有正确安装或配置。你需要根据Anthropic、Google等官方文档重新安装。检查mdflow解析运行mdflow explain my-agent.claude.md。查看“Resolved command”部分确认mdflow是否正确识别了你要调用的命令应该是claude。如果没有检查文件名格式是否为name.command.md。检查PATH如果你是通过bun link或npm link在开发模式下安装的mdflow有时链接会失效。尝试重新安装全局包npm uninstall -g mdflow npm install -g mdflow。检查文件权限确保你的.md代理文件有可执行权限chmod x ~/ai-agents/my-agent.claude.md特别是当你直接通过文件名执行时。5.2 模板变量未替换或替换错误问题提示词中的{{ _feature }}没有被替换或者被替换成了错误的值。排查步骤确认变量名Frontmatter中定义的变量或通过--_varname传递的变量在正文中引用时必须完全一致包括下划线。_feature和feature是两个不同的变量。使用explain预览运行mdflow explain my-agent.md --_feature “test”。查看输出的“Expanded prompt”部分确认变量是否被正确替换。这是最直接的调试方式。检查Liquid语法mdflow使用Liquid模板引擎。确保你的花括号{{ }}是成对且正确的。如果正文中需要输出字面量的{{需要进行转义。位置参数如果你使用{{ _1 }}请确认你执行命令时提供了足够的位置参数。mdflow explain也会显示解析后的位置参数。5.3 文件导入失败或内容缺失问题在提示词中使用了./src/file.ts但AI似乎没有收到文件内容。排查步骤检查文件路径路径是相对于Markdown文件本身的位置解析的。如果你的代理文件在~/agents/而你想导入~/projects/myapp/src/file.ts你需要使用绝对路径或正确的相对路径如../projects/myapp/src/file.ts。检查文件权限确保mdflow进程有权限读取该文件。使用--_context或--_dry-run这两个标志都会展示将要发送的完整上下文树。检查你想要导入的文件是否出现在树中。如果没有说明路径有误或文件被忽略例如在.gitignore中。Glob导入限制Glob导入默认会忽略node_modules、.git等目录。如果你需要包含它们目前需要更精确地指定路径或者使用add-dir参数如果底层AI命令支持。5.4 交互模式不工作或行为异常问题在文件名中使用了.i.claude.md或设置了_interactive: true但AI仍然执行一次后就退出没有进入对话循环。排查步骤确认工具支持不是所有AI CLI工具都实现了完全相同的交互模式。查阅mdflow文档或源码了解对你使用的工具claude, gemini等mdflow具体传递了什么标志来启用交互。有时可能需要额外的配置。查看最终命令使用mdflow explain task.i.claude.md。查看“Final command”部分确认是否包含了启用交互模式的标志如Claude可能不需要额外标志而Copilot需要--silent --interactive。检查终端类型有些交互式会话可能需要全功能的终端。尝试在标准的终端模拟器如iTerm2, Terminal中运行而不是在某些IDE的内置终端或后台任务中运行。5.5 性能问题执行缓慢或令牌超限问题运行一个导入了很多文件的代理时执行非常慢或者AI返回错误提示上下文过长。解决方案精简上下文这是最重要的优化。AI模型有上下文窗口限制。不要一次性导入整个代码库。而是使用符号导入./src/file.ts#functionName只导入特定函数。使用行范围导入./src/file.ts:100-150只导入相关部分。在Frontmatter中使用add-dir或add-file参数如果AI命令支持这通常比在提示词中用导入更高效因为工具层可能会做智能剪裁。利用缓存对于远程URL导入mdflow会缓存内容。但如果缓存过期或你总是想获取最新内容频繁的网络请求会拖慢速度。对于不常变动的远程文档可以考虑下载到本地然后使用文件导入。升级硬件/网络如果是在处理非常大的代码库令牌的编码和解码本身是计算密集型操作。确保你的机器性能足够。同时API调用速度也受网络影响。使用更快的模型对于不需要最高智能水平的任务可以尝试在Frontmatter中指定更轻量、更快的模型如model: haiku或model: gemini-2.0-flash。5.6 安全与隐私考量问题我的API密钥、源代码或提示词是否安全最佳实践永远不要将API密钥硬编码在代理文件中。使用环境变量。在项目目录的.env.local确保该文件在.gitignore中里设置ANTHROPIC_API_KEYyour_key_here然后在代理中通过!echo $ANTHROPIC_API_KEY或让AI CLI工具自动从环境变量读取。谨慎使用MCP等高级集成。像数据库MCP服务器这样的工具权限很高。只将其用于开发/测试环境并使用具有最小必要权限的数据库账户。审查你的代理日志。定期检查~/.mdflow/logs/下的日志确保没有意外泄露敏感信息。你可以配置日志轮转或清理策略。注意提示词中的敏感信息。如果你在提示词中写入了内部系统架构、未公开的API细节等这些信息会被发送到第三方AI服务。对于高度敏感的项目请咨询你公司的合规部门。将Markdown文件转化为可执行AI代理的mdflow其精髓在于将声明式的配置Markdown YAML与强大的动态能力模板、导入、管道结合了起来。它没有尝试创造一个新的AI交互范式而是巧妙地利用了现有的、你已熟悉的工具命令行、Markdown、各类AI CLI并将它们无缝编织在一起。这种“润物细无声”的集成正是其强大之处。它不会强迫你改变习惯而是让你的现有习惯变得强大十倍。从今天开始尝试将你最重复的一项AI任务脚本化成一个.md文件你会立刻感受到那种“一键自动化”的畅快感。