返回市场
聊天.md

聊天.md

作者:rusiaaman66 星标更新:2025-09-08

项目介绍

chat.md:黑客的AI聊天界面 [实验性]

终于有了一个支持MCP的完全可编辑聊天界面,适用于任何LLM。

chat.md 是一个 Visual Studio Code 扩展程序,通过纯文本文件重新定义了与AI的交互方式。与短暂的网页界面或专有的聊天窗口不同,chat.md 采用文件优先的方法,你的AI对话只是带有 .chat.md 扩展名的 Markdown 文件。你可以编辑它们,进行版本控制,分享它们——它们就是你的文件。AI会直接在文件中写入其响应。

任何 *.chat.md 文件现在都可以被你作为AI代理进行修改。尽情享受非线性的AI对话吧。

图像

使用视频

这是我用来发布此VSCode扩展程序的聊天记录,使用了gemini-2.5-pro和wcgw mcp

注意 ⚠️:chat.md 完全由AI编写,并应被视为功能丰富的概念验证。

为什么选择 chat.md?

其他AI工具chat.md
❌ 线性对话或有限编辑✅ 非线性编辑 - 重写历史,分支对话
❌ 工具执行绑定到专有实现✅ 任何LLM模型都可以调用工具
❌ 无法手动编辑AI响应✅ 将话放在LLM口中 - 编辑并让其继续
❌ 许多LLM不支持MCP✅ 任何LLM模型都可以使用MCP服务器
❌ 助手响应的最大令牌限制不能恢复✅ 在任何点恢复不完整的AI响应
❌ 对话存在于云端或不可访问的地方✅ 文件存储在本地,与代码一起以人类可读的格式
❌ 从工作区分离上下文✅ 直接从项目中附加文件

特性

🗣️ 基于文件的对话

与Copilot的内联建议、ChatGPT的网页界面或Cursor的侧边栏不同,chat.md 将对话视为工作区中的第一类文件

# %% 用户
如何优化这个函数?

[#file](src/utils.js)

# %% 助手
查看你的utils.js文件,我看到有几个优化机会:

1. 第24行的循环可以用更高效的map/reduce模式替换
2. 重复的字符串连接可以使用模板字面量改进
...

🔌 普遍模型支持

  • Anthropic Claude:所有模型(Opus, Sonnet, Haiku)
  • OpenAI:GPT-4, GPT-3.5,以及未来的模型
  • 自定义API:任何兼容OpenAI的端点(Azure, Google Gemini等)
  • 快速切换:在对话之间切换不同的模型。

🛠️ 使用MCP的通用工具生态系统

Chat.md 是一个**模型上下文协议(MCP)**客户端——这是一个开放标准,用于与任何LLM的工具执行。

Chat.md 不像许多聊天应用程序那样限制任何LLM的工具调用。

  • 真正普遍:任何AI模型(Claude, GPT, 开源模型)都可以使用任何MCP工具
  • 模型无关:无论哪个AI驱动你的对话,工具的工作方式都相同
  • 无供应商锁定:切换模型而不丢失工具功能
<tool_name>filesystem.searchFiles</tool_name>
<param name="pattern">*.js</param>
<param name="directory">src</param>

📎 上下文文件附件

  • 直接在对话中附加文本文件和图片(粘贴任何复制的图片)
  • 使用熟悉的Markdown语法链接文件:[file](path/to/file)
  • 文件相对于聊天文档解析——非常适合项目上下文(或使用绝对路径)

💾 可编辑对话

由于 chat.md 文件只是文本,你对AI交互拥有完全控制权:

  • 非线性编辑:通过编辑对话的早期部分来重写历史
  • 对话黑客:通过编辑AI的响应来插入话
  • 延续控制:让AI从任何编辑点继续
  • 恢复截断输出:如果AI响应被截断,只需添加一个新的助手块并继续
  • Git友好:跟踪对话更改,协作提示,分支对话
  • 对话模板:创建可复用的常见任务对话开始器

快速开始

快速入门

  1. 从VS Code市场安装 'chat.md'
  2. 配置你的API密钥:
    • 命令面板 → "添加或编辑API配置"
  3. 创建新的聊天:
    • Opt+Cmd+' (Mac) / Ctrl+k Ctrl+c (Windows/Linux) 创建一个新的'.chat.md'文件,其中包含工作区信息填充在用户块中。
    • 或者在任何地方创建一个带有.chat.md扩展名的文件,并在VSCode中打开它。
  4. 在一个'# %% 用户'块中写下你的查询并按'Shift + Enter'(或者创建一个新的'# %% 助手'块并按回车键)
  5. 观看助手流式传输其响应并执行任何工具调用。

可选地,你可以并排启动Markdown预览以获得更友好的实时Markdown预览。

使用信息

  • 你可以插入一个 # %% 系统 块来追加任何新的系统提示指令。
  • 你可以在VSCode设置中手动添加API配置和MCP配置。参见示例设置
  • 单击底部的状态栏图标“Chat.md 流式传输”或运行“chat.md: 取消流式传输”命令来中断
  • 你也可以使用相同的快捷键“Opt+Cmd+'”来取消流式传输,就像创建新聊天一样。
  • 你可以运行“刷新MCP工具”命令来重新加载所有MCP服务器。然后运行“MCP诊断”来查看可用的MCP服务器。
  • 你可以使用“选择API配置”命令在API提供商之间切换

配置

chat.md 支持三级配置系统,优先级从高到低如下:

  1. 文件特定配置 - 设置在每个 .chat.md 文件的顶部
  2. 提供商特定配置 - 在VS Code设置中为每个API提供商设置
  3. 全局配置 - 默认的VS Code设置

文件特定配置

在任何 .chat.md 文件的开头配置参数:

selectedConfig="my-provider"
reasoningEffort="high"
maxTokens=4000
maxThinkingTokens=20000

# %% 系统
你的系统提示在这里

VS Code 设置

通过VS Code的设置UI或settings.json访问这些设置:

  • chatmd.apiConfigs:命名的API配置(提供商、API密钥、模型、基础URL,加上可选的推理/令牌设置)
  • chatmd.selectedConfig:活动的API配置
  • chatmd.mcpServers:配置MCP工具服务器
  • chatmd.reasoningEffort:全局推理深度(最小、低、中、高)
  • chatmd.maxTokens:全局最大响应令牌数
  • chatmd.maxThinkingTokens:全局最大思考令牌数

工具执行

当AI响应包括工具调用时,扩展程序将自动:

  1. 在助手响应后添加一个工具执行块
  2. 使用指定的参数执行工具
  3. 将工具的结果插入文档
  4. 添加一个新的助手块供AI继续

你也可以手动触发工具执行:

  • 当光标位于包含工具调用的助手响应末尾时按下Shift+Enter
  • 这将插入一个工具执行块并执行工具

键盘快捷键

  • Shift+Enter:插入下一个块(交替用户/助手)或在助手块末尾插入一个工具执行块
  • Opt+Cmd+' (Mac) / Ctrl+k Ctrl+c' (Windows/Linux):创建新的上下文聊天或取消现有流式传输

MCP工具集成

连接任何模型上下文协议服务器以扩展AI能力:

本地MCP服务器(stdio)

对于与VS Code在同一环境中运行的本地MCP服务器:

"chatmd.mcpServers": {
  "wcgw": {
    "command": "uvx",
    "args": [
      "--python",
      "3.12",
      "wcgw@latest",
      "wcgw_mcp"
    ]
  }
}

远程MCP服务器(SSE)

对于可通过HTTP/服务器发送事件访问的远程MCP服务器:

"chatmd.mcpServers": {
  "remote-mcp": {
    "url": "http://localhost:3000/sse"
  }
}

如有需要,还可以添加环境变量:

"chatmd.mcpServers": {
  "remote-m_ cp": {
    "url": "http://localhost:3000/sse",
    "env": {
      "API_KEY": "your-api-key-here"
    }
  }
}

AI将自动发现来自本地和远程服务器的可用工具并知道如何使用它们!工具列表每5秒自动刷新一次,以保持最新状态。

哲学

chat.md 脱离了人为的“聊天”范式,承认AI交互本质上是关于文本处理。通过将对话视为文件:

  1. 持久性变得简单 - 无需特殊的云同步或专有格式
  2. 协作已经内置 - 分享、差异和合并就像其他代码一样
  3. 版本控制是自然的 - 跟踪随时间的变化
  4. 定制是无限的 - 按照你想要的方式编辑文件

局限性

  1. MCP -- 目前仅支持工具,未来将支持提示和资源。
  2. caching尚未在anthropic api中支持。
  3. Gemini, ollama, llm studio和其他模型必须使用openai-api访问。

示例VSCode设置

vscode json设置

  "chatmd.apiConfigs": {
    "gemini-2.5pro": {
      "type": "openai",
      "apiKey": "",
      "base_url": "https://generativelanguage.googleapis.com/v1beta/openai/",
      "model_name": "gemini-2.5-pro-exp-03-25"
    },
    "anthropic-sonnet-3-7": {
      "type": "anthropic",
      "apiKey": "sk-ant-",
      "base_url": "",
      "model_name": "claude-3-7-sonnet-latest",
      "reasoningEffort": "high",
      "maxTokens": 6000,
      "maxThinkingTokens": 18000
    },
    "openrouter-qasar": {
      "type": "openai",
      "apiKey": "sk-or-",
      "base_url": "https://openrouter.ai/api/v1",
      "model_name": "openrouter/quasar-alpha"
    },
    "groq-llam4": {
      "type": "openai",
      "apiKey": "",
      "base_url": "https://api.groq.com/openai/v1",
      "model_name": "meta-llama/llama-4-scout-17b-16e-instruct"
    },
    "together-llama4": {
      "type": "openai",
      "base_url": "https://api.together.xyz/v1",
      "apiKey": "",
      "model_name": "meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8"
    }
  },
  "chatmd.mcpServers": {
    
    "wcgw": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "tool",
        "run",
        "--python",
        "3.12",
        "wcgw@latest",
        "wcgw_mcp"
      ]
    },
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": ""
      }
    },
    "fetch": {
      "command": "/opt/homebrew/bin/uvx",
      "args": ["mcp-server-fetch"]
    }
  },
  "chatmd.selectedConfig": "gemini-2.5pro",
  "chatmd.maxTokens": 8000,
  "chatmd.maxThinkingTokens": 16000,
  "chatmd.reasoningEffort": "medium"

配置说明:

  • maxTokens(默认值:8000)控制模型响应的最大令牌数
  • 对于OpenAI推理模型(o1, o3系列),maxTokens用作总max_completion_tokens预算(包括思考和响应令牌)
  • 对于Anthropic模型,maxThinkingTokens单独控制思考令牌预算,或可以从reasoningEffort自动计算
  • 提供商特定配置覆盖全局设置,文件特定配置覆盖两者(详见CONFIGURATION.md中的详细优先规则)

许可证

MIT 许可证 - 详情见LICENSE文件。

反馈与贡献

  • 在GitHub仓库上提交问题
  • 欢迎通过拉取请求进行贡献

致谢

  • 使用wcgw mcp的Claude
  • 使用chat.md的Gemini 2.5 pro