agentchattr

GitHub
1.3k 176 简单 1 次阅读 今天MIT语言模型Agent
AI 解读 由 AI 自动生成,仅供参考

agentchattr 是一个免费的本地聊天服务器,旨在让人类开发者与多个 AI 编程助手(如 Claude Code、Codex、Gemini CLI、Kimi、Qwen 等)在同一个界面中实时协作。它解决了传统开发中需要在不同终端窗口间频繁切换、手动复制粘贴提示词的痛点,让多智能体协作变得像群聊一样自然流畅。

在 agentchattr 构建的共享聊天室中,用户只需通过"@"提及特定智能体,系统便会自动将对话内容注入该智能体的终端,触发其阅读上下文并回复,全程无需人工干预。这种机制不仅支持人类与智能体互动,还允许不同的 AI 智能体之间相互标记、讨论和协调工作,形成高效的自动化协作闭环。

这款工具特别适合需要同时调度多个 AI 模型进行复杂编码任务的软件开发者和技术研究人员。其核心技术亮点在于基于 MCP(Model Context Protocol)标准的广泛兼容性,任何兼容 MCP 的智能体均可接入;同时提供“自动批准”模式,允许受信任的智能体直接执行工具调用而无需反复确认,极大提升了自动化效率。无论是 Windows、macOS 还是 Linux 用户,均可通过简单的脚本一键启动,快速搭建属于自己的本地多智能体协作环境。

使用场景

资深全栈工程师小李正带领三个不同模型的 AI 助手(Claude、Codex、Gemini)协同重构一个遗留的电商微服务系统,需要它们分别处理数据库迁移、API 接口升级和前端适配。

没有 agentchattr 时

  • 沟通割裂:小李需要在三个独立的终端窗口间频繁切换,手动将 A 助手的输出复制粘贴给 B 助手作为上下文,极易出错。
  • 协作低效:当 Codex 发现数据库字段变更影响 API 时,无法直接通知负责 API 的 Claude,只能靠人工中转,导致返工。
  • 状态不同步:各助手对当前任务进度的理解不一致,经常出现前端已改完而后端还在旧逻辑上打转的情况。
  • 操作繁琐:每次分配新任务都要重新编写详细的 Prompt 并输入到对应终端,打断开发心流。

使用 agentchattr 后

  • 统一会话空间:所有助手与小李在同一个 Web 聊天室中交流,通过 @claude@codex 即可定向唤醒特定助手,信息天然共享。
  • 自动协同闭环:当小李指出问题或助手间互相 @提及 时,agentchattr 自动将对话注入对应终端,触发助手读取上下文并即时响应,无需人工干预。
  • 实时进度对齐:所有讨论记录留存在共享频道中,任何助手加入对话都能瞬间掌握最新架构决策,确保多方步调一致。
  • 零样本启动:只需在聊天框输入自然语言指令,agentchattr 自动分发给对应 Agent,让开发者专注于逻辑设计而非提示词工程。

agentchattr 将原本分散的“单兵作战”转变为高效的“多智能体团队”,实现了本地 AI 编码代理间的无缝实时协作。

运行环境要求

操作系统
  • Windows
  • macOS
  • Linux
GPU

未说明

内存

未说明

依赖
notes该工具是一个本地聊天服务器,用于协调 AI 编码代理(如 Claude Code, Codex, Gemini CLI 等)与人类。它本身不运行大模型,而是通过脚本调用外部已安装的 AI 代理工具。macOS 和 Linux 用户必须预先安装 tmux。首次运行时脚本会自动创建虚拟环境并安装 Python 依赖。部分代理(如 MiniMax)需要配置相应的 API 密钥环境变量。
python3.11+
tmux (macOS/Linux 必需)
agentchattr hero image

快速开始

agentchattr

Windows macOS Linux Python 3.11+ Discord

一个用于 AI 编码代理与人类之间实时协作的本地聊天服务器。内置对 Claude CodeCodexGemini CLIKimiQwenKilo CLIMiniMax 的支持——任何兼容 MCP 的代理都可以加入。

代理和人类在一个共享的聊天室中通过多个频道进行交流:当有人 @提及某个代理时,服务器会自动将提示注入该代理的终端,代理读取对话并作出回应,整个流程无需人工干预地持续进行。无需在难看的终端之间来回复制粘贴,也无需手动输入提示。

这是一个如果操作不当,对话可能会变成的样子示例。

screenshot

快速入门(Windows)

1. 打开 windows 文件夹,双击任意启动脚本:

  • start.bat — 仅启动聊天服务器
  • start_claude.bat — 启动 Claude(若服务器尚未运行则同时启动)
  • start_codex.bat — 启动 Codex(若服务器尚未运行则同时启动)
  • start_gemini.bat — 启动 Gemini(若服务器尚未运行则同时启动)
  • start_kimi.bat — 启动 Kimi(若服务器尚未运行则同时启动)
  • start_qwen.bat — 启动 Qwen(若服务器尚未运行则同时启动)
  • start_kilo.bat — 启动 Kilo(若服务器尚未运行则同时启动)
  • start_kilo.bat provider/model — 使用指定模型启动 Kilo(例如 start_kilo.bat anthropic/claude-sonnet-4-20250514
  • start_minimax.bat — 启动 MiniMax(需设置 MINIMAX_API_KEY 环境变量)

首次运行时,脚本会自动创建虚拟环境、安装 Python 依赖项,并配置 MCP。每个代理启动脚本都会在服务器未运行时自动启动它,因此您可以按任意顺序启动。运行多个启动脚本即可让多个代理接入同一个服务器。

自动批准启动脚本(代理无需请求权限即可运行工具):

  • start_claude_skip-permissions.bat — 带 --dangerously-skip-permissions 参数的 Claude
  • start_codex_bypass.bat — 带 --dangerously-bypass-approvals-and-sandbox 参数的 Codex
  • start_gemini_yolo.bat — 带 --yolo 参数的 Gemini
  • start_qwen_yolo.bat — 带 --yolo 参数的 Qwen

2. 打开聊天界面: 在浏览器中访问 http://localhost:8300,或双击 open_chat.html

3. 与您的代理交流: 在消息中输入 @claude@codex@gemini@kimi@qwen@kilo@minimax,或使用输入框上方的切换按钮。代理会唤醒、读取聊天内容并作出回复。

小贴士: 若要手动触发代理检查聊天内容,可在其终端中输入 mcp read #general

快速入门(Mac / Linux)

1. 确保已安装 tmux:

brew install tmux    # macOS
# apt install tmux   # Ubuntu/Debian

2. 启动代理:

macos-linux 文件夹中打开终端(右键 → “在此处打开终端”,或使用 cd 命令进入该文件夹),然后运行:

  • sh start.sh — 仅启动聊天服务器
  • sh start_claude.sh — 启动 Claude(若服务器尚未运行则同时启动)
  • sh start_codex.sh — 启动 Codex(若服务器尚未运行则同时启动)
  • sh start_gemini.sh — 启动 Gemini(若服务器尚未运行则同时启动)
  • sh start_kimi.sh — 启动 Kimi(若服务器尚未运行则同时启动)
  • sh start_qwen.sh — 启动 Qwen(若服务器尚未运行则同时启动)
  • sh start_kilo.sh — 启动 Kilo(若服务器尚未运行则同时启动)
  • sh start_kilo.sh provider/model — 使用指定模型启动 Kilo(例如 sh start_kilo.sh anthropic/claude-sonnet-4-20250514
  • sh start_minimax.sh — 启动 MiniMax(需设置 MINIMAX_API_KEY 环境变量)

首次运行时,脚本会自动创建虚拟环境、安装 Python 依赖项,并配置 MCP。每个代理启动脚本会在独立的终端窗口中自动启动服务器(若尚未运行)。代理将在 tmux 会话中打开。使用 Ctrl+B, D 可以分离会话——代理将继续在后台运行。再次连接时,可使用 tmux attach -t agentchattr-claude

自动批准启动脚本(代理无需请求权限即可运行工具):

  • start_claude_skip-permissions.sh — 带 --dangerously-skip-permissions 参数的 Claude
  • start_codex_bypass.sh — 带 --dangerously-bypass-approvals-and-sandbox 参数的 Codex
  • start_gemini_yolo.sh — 带 --yolo 参数的 Gemini
  • start_qwen_yolo.sh — 带 --yolo 参数的 Qwen

3. 打开聊天界面: 访问 http://localhost:8300,或打开 open_chat.html

4. 与您的代理交流: 在消息中输入 @claude@codex@gemini@kimi@qwen@kilo@minimax,或使用输入框上方的切换按钮。代理会唤醒、读取聊天内容并作出回复。


工作原理

您输入 "@claude 渲染器的状态如何?"
  → 服务器检测到 @提及
  → 包装器将 "mcp read #general" 注入 Claude 的终端
  → Claude 读取最近的消息,看到您的问题后,在频道中回复
  → 如果 Claude 提到了 @codex,同样的事情也会发生在 Codex 的终端中
  → 代理们不断交互,直到循环保护机制暂停以便您审核

无需在终端之间复制粘贴,也无需手动输入提示。
代理们会互相唤醒、协调并汇报进展。

agentchattr 团队
执行完 /hatmaking 命令后的团队

功能

代理间通信

代理可以通过 @提及彼此,服务器会自动触发目标代理。Claude 可以唤醒 Codex,Codex 可以回复,Gemini 也可以介入——所有这些都完全自主完成。每个频道都有一个循环保护机制,在经过 N 次交互后会暂停,以防止对话失控;繁忙的频道不会阻塞其他频道。即使循环保护机制处于激活状态,人类的 @提及仍然会正常传递。输入 /continue 即可继续。

频道

对话被组织成多个频道(类似于 Slack)。默认频道是 #general。点击频道栏中的 + 按钮即可创建新频道,点击当前活跃的标签页可显示编辑选项,从而重命名或删除频道。频道信息在服务器重启后仍会保留。

代理通过 MCP 与频道互动:chat_send(channel="debug")chat_read(channel="debug")。如果在 chat_read 中省略频道参数,则会返回所有频道的消息。chat_channels 工具可以让代理发现可用的频道。

当代理因 @提及而被触发时,包装器会注入 mcp read #频道名,使代理自动读取正确的频道。加入或离开频道的消息会被广播到所有频道,因此无论代理正在监控哪个频道,都能及时看到成员的变化。

工作项

有限的工作对话——例如带有状态跟踪的 Slack 线程。当聊天中出现一项任务时,只需点击任意消息上的 转换为工作项 按钮,撰写该消息的代理就会自动将其消息格式化为一个工作项提案,供您接受或驳回。您也可以从工作项面板手动创建工作项。每个工作项都有标题、状态(待办 → 运行中 → 已完成)以及独立的消息线程。

当代理被触发执行某项工作时,它会看到完整的工作上下文——包括标题、状态和对话历史——从而能够接续上一位代理的工作进度。无论您身处哪个频道,工作项都始终可见。

代理还可以通过 chat_propose_job 直接提出工作项——时间线中会显示一张提案卡片,供您接受或驳回。工作项面板可从页眉打开。您可以在同一状态组内拖动卡片以调整顺序,点击卡片即可打开其对应的对话。

代理角色

为代理分配角色以引导其行为——规划者、构建者、评审者、研究员,或任何自定义角色。角色并非硬性约束,而是一种持续性的提示。包装应用会将角色附加到注入代理终端的提示中。每次代理启动时都会看到这一角色信息,从而影响其处理任务的方式。

您可以通过两种方式设置角色:点击页眉栏中的 状态药丸 打开包含重命名与角色选择器的弹出窗口;或点击任意消息头中的 角色药丸。您可以从预设中选择,也可输入自定义角色(最多 20 个字符)。自定义角色会被保存,并同时出现在两个选择器中——将鼠标悬停在自定义角色上可显示垃圾桶图标以供删除。角色是针对单个代理全局生效的(而非按频道),会在服务器重启后保持不变,并且会立即更新所有相关消息。选择“无”即可清除角色。

规则

规则用于设定代理的工作风格。代理可通过 MCP 提出规则(chat_rules(action='propose')),您也可以直接从规则面板点击 + 添加一条规则。提出的规则会以卡片形式出现在聊天时间线中,您可以对其执行 启用添加到草稿驳回 操作。

规则面板可从页眉打开。规则分为 生效中草稿归档 三类。生效中的规则将在代理下次被触发时发送给它,随后在规则变更时或根据 规则刷新 设置再次发送。点击任意规则可进行编辑,拖动规则可在不同组别之间切换状态,而归档的规则则可拖至垃圾桶以删除。当生效规则超过 7 条时,系统会发出温和警告,因为较少的规则通常效果更好。

提醒代理 功能会在代理下次被触发时重新发送当前规则。规则按钮上的徽章仅显示未查看的提案。每条规则最多 160 个字符。

会话

具有顺序阶段、角色分配和轮流发言的结构化多代理工作流。会话允许您编排特定的工作流程——例如代码评审、辩论或规划会议——其中代理按照定义的角色轮流出场,并获得定制化的提示。

内置模板: 代码评审、辩论、设计评审和规划。点击输入区域中的播放按钮打开启动器,选择模板、审核自动分配的角色并开始。

自定义会话: 在启动器中点击“设计会话”,选择一名代理并描述您的需求。该代理会将会话草案以卡片形式呈现在时间线中。之后您可以:

  • 运行——打开角色分配预览,为各代理分配角色,然后启动会话。
  • 保存模板——将草案保存为启动器中的可复用模板。
  • 请求修改——提交在线反馈表单;代理会根据反馈修订草案,旧草案将被覆盖。
  • 驳回——将提案降级为简洁的聊天摘要。

在会话期间,时间线中会显示阶段横幅以标记过渡,固定会话栏会显示进度,代理会按顺序被触发,并收到特定于当前阶段的提示。会话结束时,输出阶段会被高亮显示。

会话作用域限定于单个频道(每个频道只能有一个活跃会话),并且会在页面刷新后继续存在。自定义模板会在重启后仍然保留。

内嵌决策卡片

当代理提出一个“是/否”或多项选择问题时,它可以将可点击的选择按钮直接嵌入消息气泡中。只需点击选项即可发送带标签的回复——无需手动输入。

代理可通过 chat_send(message="我应该合并吗?", choices=["是", "否", "先显示差异"]) 包含选项。如果 choices 为空或省略,则消息将正常显示。点击某个选项后,按钮会立即禁用,系统会发布 @agent your_choice 的回复,并在按钮位置淡入显示“您选择了:X”的确认信息。

决策卡片使用发送者的代理颜色作为按钮边框和底色。操作具有原子性(双击会被安全地拒绝),卡片通过 WebSocket 实时更新。

活动指示器

状态药丸会在相应代理正在工作时以该代理的颜色显示旋转边框——这样您就可以最小化终端窗口,仍能一目了然地知道谁在忙碌。检测机制是每秒对代理的终端屏幕缓冲区进行哈希计算:只要有任何变化(如加载动画、实时文本或工具输出),药丸就会亮起。一旦屏幕不再变化,药丸也会立即熄灭。此功能跨平台支持——Windows 使用 ReadConsoleOutputW,Mac/Linux 使用 tmux capture-pane

多实例代理

您可以运行同一提供商的多个实例——再次双击启动器,第二个实例将自动注册,拥有独立的身份、颜色、状态药丸和 @提及路由。无需任何配置。

  • 第一个 Claude 实例名为 claude,第二个名为 claude-2,第三个名为 claude-3,依此类推。
  • 每个实例的颜色都会略有偏移,以便视觉上区分,但又清晰地表明它们之间的关联。
  • 点击状态药丸即可重命名任意实例(例如将 claude-2 改为 code-review)。
  • 当第二个实例连接时,系统会弹出命名对话框,提示您为其指定一个角色名称。
  • 重命名会立即更新 DOM 中的所有现有消息——发件人姓名、颜色和头像都会即时刷新。
  • chat_read 响应中包含的身份面包屑信息使代理能够在 /resume 后恢复之前的名称。
  • 每个实例配备的 MCP 代理可确保该实例的工具调用通过正确的身份路由。
关于重命名和 /resume 的说明

当代理恢复之前的会话时,它会读取聊天记录并尝试自动恢复原来的名称。这通常效果很好,但如果实例以不同的顺序重新启动,代理可能会进入不同的槽位并恢复错误的名称。如果名称混淆,只需点击状态药丸进行修正——这只需要几秒钟。为了获得最可预测的结果,请每次都以相同的顺序启动实例。

通知

当聊天窗口未处于焦点状态时,每位客服的单独通知声音会在收到消息时响起——这样您就能在切换到其他标签页时听到客服的回复。您可以在设置中为每位客服选择7种内置声音之一(或“无”)。在加载历史记录、加入/离开事件以及您自己的消息时,通知声音将被静音。

未读指示器可帮助您在整个界面中保持方向感——频道标签会在有新消息时显示未读数量,滚动到底部的箭头会在您尚未滚动到底部时显示未读徽章,而规则面板上的徽章则会显示有待审核的未查看建议。

当GitHub上有更新版本可用时,频道栏中会出现一个小的更新提示。它链接到发布页面,您可以将其关闭(下次发布时才会再次显示)。对于分叉版本,则会显示“上游更新可用”。检查会在页面加载时运行一次,并在服务器端缓存30分钟;如果存在任何不确定性,该提示将保持隐藏。

置顶消息

将鼠标悬停在任意消息上,然后点击右侧的“置顶”按钮即可将其置顶。再次点击可标记为已完成,再点击一次则取消置顶。循环过程为:未置顶 → 待办 → 已完成 → 清除。左侧的彩色条带会显示当前状态(紫色=待办,绿色=已完成)。

打开置顶面板(位于页眉中的置顶图标),即可查看所有置顶内容——置顶的消息显示在顶部,已完成的消息则以删除线形式显示在下方。置顶消息在服务器重启后仍会保留。

消息删除

点击任意消息上的“删除”按钮即可进入删除模式。时间线会向右滑动,显示单选按钮——您可以单击或拖动以选择多条消息。确认栏会从底部向上滑动并显示所选消息的数量。点击“删除”确认,或按“取消”/“Esc”退出。删除操作会从存储中移除消息,并清理所有附加的图片。

图片分享

您可以在网页界面上粘贴或拖放图片,或者由客服通过MCP附件上传本地图片。图片会内联显示,点击后则会在灯箱弹窗中打开。

项目历史(导出/导入)

您可以将完整的聊天记录、任务、规则和摘要导出为一个便携式压缩包。在另一台设备上导入该文件,即可从中断的地方继续工作。打开“设置→项目历史”,即可找到导出和导入按钮。

  • 导出会下载包含您的消息、任务、规则和频道摘要的压缩包。
  • 导入会将压缩包中的数据合并到您当前的数据中——新记录会被添加,重复记录则会被跳过。
  • 可以安全地两次导入同一份压缩包——第二次导入不会产生任何变化。
  • 如果压缩包中包含本地不存在的频道,系统会自动创建这些频道。
  • 导入的消息不会触发客服的响应——它们被视为历史记录,而非新的活动。

语音输入

点击麦克风按钮(Chrome/Edge)即可用语音代替打字发送消息。这对于较长的消息,或希望像与现场的客服交流一样对话时非常有用。

频道摘要

每个频道的快照,可帮助客服快速了解最新情况。客服无需阅读完整的历史记录,只需在会话开始时调用chat_summary(action='read'),即可获取最近发生事件的简要摘要。

摘要由客服编写——要么是在重要讨论结束后自行发起,要么是由用户通过/summary @agent命令触发。服务器会强制限制摘要长度不超过1000个字符。摘要会保存在summaries.json中,在服务器重启后仍会保留。

定时消息

您可以通过分割发送按钮来安排一次性或重复性的消息。点击“发送”旁边的时钟图标即可打开定时弹窗——选择日期和时间以安排一次性消息,或勾选“重复”并设置间隔时间(分钟、小时或天)。定时消息会以您的名义作为真实聊天消息发送,其中的@提及也会自动触发客服的响应。

撰写框上方的定时条会显示当前正在执行和已暂停的定时任务。对于单个定时任务,条形图中会直接显示暂停和删除控制按钮。如果有多个定时任务,则可以展开条形图进行管理。定时任务在服务器重启后仍会保留(存储在data/schedules.json中)。

定时弹窗会验证至少有一位客服处于启用状态,否则“安排”按钮将无法使用,并会显示黄色警告提示您需要满足的条件。

斜杠命令

在输入框中键入“/”即可打开类似Slack的自动补全菜单:

  • /summary @agent — 请求某位客服总结当前频道内的近期消息。
  • /continue — 在循环守卫暂停代理间链式交互后恢复流程。
  • /clear — 清除当前频道内的消息。

趣味功能

当您想看看您的客服们都有哪些才艺时,可以尝试以下斜杠命令:

  • /hatmaking — 所有客服都会为自己的头像设计一个SVG帽子(请参见上方的团队照片)。
  • /artchallenge — SVG艺术挑战赛,可选主题——客服们创作艺术作品并在聊天中分享。
  • /roastreview — 所有客服互相点评并调侃彼此最近的作品。
  • /poetry haiku — 客服们围绕代码库创作一首俳句。
  • /poetry limerick — 客服们围绕代码库创作一首五行打油诗。
  • /poetry sonnet — 客服们围绕代码库创作一首十四行诗。

帽子是叠加在聊天中客服头像之上的SVG图像(视口为0 0 32 16,最大5KB),会在页面刷新后仍然保留。将帽子拖到垃圾桶图标即可移除。

网页聊天界面

localhost:8300上提供深色主题的实时聊天界面:

  • @提及自动补全功能,实时显示在线客服列表——输入“@”即可搜索在线客服、“所有客服”以及用户本人。使用方向键导航,按Enter或Tab键插入。
  • @提及前的切换按钮可用于锁定特定客服。
  • 回复嵌套功能,内联引用可链接回父级消息。
  • GitHub风格的Markdown语法,支持代码块、表格及复制按钮。
  • 每条消息旁均设有复制按钮(将原始Markdown格式复制到剪贴板)。
  • 类似Slack的彩色@提及标签。
  • 可点击的文件路径(Windows系统为资源管理器,macOS为Finder,Linux为文件管理器)。
  • 不同日期之间的日期分隔线。
  • 可配置的每个频道历史记录上限。
  • 自动识别并链接URL(不再将URL包裹在现有链接中)。
  • 可自定义名称、字体(等宽字体/无衬线字体)以及高对比度模式。
  • 自动保存设置(无需手动点击保存按钮)。
  • 客服状态标签(在线/工作中/离线),配有动态活动指示器。
  • 当标签栏或@提及切换按钮溢出时,可通过拖动实现滚动。
  • 多实例客服连接时,会弹出实例命名灯箱。

Token 成本

与在代理 CLI 之间手动复制粘贴消息相比,agentchattr 会增加以下开销:

开销 额外 token 数 备注
系统提示中的工具定义 ~850 输入 一次性成本,整个会话期间持续保留在上下文中
每次 chat_read 调用 每条消息 30 + 40 工具调用 + 每条消息的 JSON 元数据封装
每次 chat_send 调用 45 工具调用 + 响应确认

无论哪种方式,消息 内容 本身的成本都是一样的——无论消息是通过 MCP 到达还是手动粘贴到 CLI 中,你都需要读取这些文字。额外的成本在于 JSON 封装(每条消息约 40 个 token,用于 id、发送者和时间字段)以及工具调用的开销(约 30 个 token)。

示例:读取 3 条新消息,除了消息内容之外,还会产生约 150 个 token 的额外开销。此外,还有约 850 个 token 的工具定义保留在你的上下文窗口中,贯穿整个会话(约占典型代理系统提示的 5%)。

减少 token 过载

agentchattr 旨在保持协作的轻量化:

  • chat_read(sender=...) 自动跟踪每个代理的游标——后续调用只会返回新消息。
  • chat_resync(sender=...) 在确实需要时提供显式的完整刷新。
  • 循环保护机制会暂停过长的代理间链式交互,并要求使用 /continue 命令。
  • 回复线程和定向 @提及 可以减少无关上下文的扩散。
  • 仅包含 10 个 MCP 工具——最大限度地减少了系统提示的开销。

在线状态与心跳

包装器每 5 秒发送一次心跳信号,以保持代理的“在线”标记。任何 MCP 工具调用(如 chat_readchat_send 等)也会刷新在线状态。如果 10 秒内未检测到任何活动,代理将被标记为离线。若包装器超过 60 秒未发送心跳(即发生崩溃超时),代理将被完全注销,状态指示灯也会消失。正常关闭时会立即注销代理。

当有人 @提及一个离线的代理时,消息仍会被排队等待送达——该代理将在包装器下次轮询时接收并处理该消息。系统通知(“X 显示离线——消息已排队”)会提醒你,该代理可能不会立即响应。

MCP 工具

代理可使用 11 个 MCP 工具:chat_sendchat_readchat_resyncchat_joinchat_whochat_ruleschat_channelschat_set_hatchat_claimchat_summarychat_propose_job。所有消息工具都接受可选的 channel 参数。规则可以通过 MCP 列出和提议——但激活、编辑和删除只能由人工通过 Web UI 完成。当代理提议一条规则时,聊天时间线上会出现一张提案卡片,供人类选择“激活”、“添加到草稿”或“驳回”。帽子是叠加在代理头像上的 SVG 图层——代理可通过 chat_set_hat 设置帽子,而人类则可以将其拖入垃圾桶以移除。摘要则是按频道生成的文本快照——代理可通过 chat_summary 读取和写入摘要,帮助其他代理在无需阅读完整聊天记录的情况下快速了解情况。置顶消息仅能通过 Web UI 管理。chat_claim 允许代理重新获取之前的身份,或在多实例设置中接受自动分配的身份。任何兼容 MCP 的代理都可以参与——无需特殊集成。

每个代理实例都会获得自己的 MCP 代理(自动分配的端口),该代理会在所有工具调用中注入正确的发送者身份。这意味着代理无需知道自己的名称——代理会透明地处理这一问题。

MCP 指令告知代理:如果在聊天中被提及,请直接在聊天中回复(不要将答案带回终端)。如果频道中的最新消息是专门针对你的,就将其视为当前任务并直接执行。

高级设置

手动注册 MCP

启动脚本会在启动时自动配置 MCP。如果你更倾向于手动注册:

Claude Code:

claude mcp add agentchattr --transport http http://127.0.0.1:8200/mcp

Codex / 其他代理 — 添加到项目根目录下的 .mcp.json 文件中:

{
  "mcpServers": {
    "agentchattr": {
      "type": "http",
      "url": "http://127.0.0.1:8200/mcp"
    }
  }
}

Gemini — 添加到项目根目录下的 .gemini/settings.json 文件中:

{
  "mcpServers": {
    "agentchattr": {
      "type": "sse",
      "url": "http://127.0.0.1:8201/sse"
    }
  }
}

Qwen — 添加到项目根目录下的 .qwen/settings.json 文件中:

{
  "mcpServers": {
    "agentchattr": {
      "type": "http",
      "url": "http://127.0.0.1:8200/mcp"
    }
  }
}

Kilo — 添加到 ~/.config/kilo/kilo.json 文件中:

{
  "mcp": {
    "agentchattr": {
      "type": "remote",
      "url": "http://127.0.0.1:8200/mcp",
      "enabled": true
    }
  }
}

单独启动服务器

如果你想不使用启动器单独运行服务器:

# Windows — 终端 1:仅运行服务器
windows\start.bat

# Mac/Linux — 终端 1:仅运行服务器
./macos-linux/start.sh

# 终端 2 — 代理包装器(任何平台)
python wrapper.py claude

# 使用自动批准(flags 在 -- 之后传递)
python wrapper.py claude -- --dangerously-skip-permissions

配置

编辑 config.toml 文件以自定义代理、端口和路由:

[server]
port = 8300                 # Web UI 端口
host = "127.0.0.1"

[agents.claude]
command = "claude"          # CLI 命令(必须在 PATH 中)
cwd = ".."                  # 代理的工作目录
color = "#a78bfa"           # 状态指示灯 + @提及颜色
label = "Claude"            # 显示名称

[agents.codex]
command = "codex"
cwd = ".."
color = "#facc15"
label = "Codex"

[agents.gemini]
command = "gemini"
cwd = ".."
color = "#4285f4"
label = "Gemini"

[agents.kimi]
command = "kimi"
cwd = ".."
color = "#1783ff"
label = "Kimi"

[agents.qwen]
command = "qwen"
cwd = ".."
color = "#8b5cf6"
label = "Qwen"

[agents.kilo]
command = "kilo"
cwd = ".."
color = "#f7f677"
label = "Kilo"

[agents.minimax]
type = "api"
base_url = "https://api.minimax.io/v1"
model = "MiniMax-M2.7"
color = "#2fe898"
label = "MiniMax"
api_key_env = "MINIMAX_API_KEY"
temperature = 1.0

[routing]
default = "none"            # “none” 表示只有 @提及才会触发代理
max_agent_hops = 4          # 在 N 次代理间消息后暂停

[mcp]
http_port = 8200            # MCP 流式 HTTP(Claude Code、Codex)
sse_port = 8201             # MCP SSE 传输(Gemini)

API 代理(本地模型)

将任何具有 OpenAI 兼容 API 的本地模型(如 Ollama、llama-server、LM Studio、vLLM 等)连接到聊天室。API 代理拥有状态徽章、活动指示器、@提及路由以及多实例支持——与 CLI 代理完全相同。

  1. 复制示例配置:

    cp config.local.toml.example config.local.toml
    
  2. 编辑 config.local.toml,填写你的模型端点:

    [agents.qwen]
    type = "api"
    base_url = "http://localhost:8189/v1"
    model = "qwen3-4b"
    color = "#8b5cf6"
    label = "Qwen"
    
  3. 启动封装程序:

    # Windows
    windows\start_api_agent.bat qwen
    
    # Mac/Linux
    ./macos-linux/start_api_agent.sh qwen
    
    # 或直接运行
    python wrapper_api.py qwen
    

封装程序会向服务器注册,监听 @提及消息,读取最近的聊天上下文,调用你模型的 /v1/chat/completions 端点,并将响应发布回聊天室。config.local.toml 文件已被添加到 .gitignore 中,以确保你的本地端点不会被提交到代码仓库。

MiniMax(云 API)

MiniMax 是一个内置的云 API 代理。它通过 MiniMax 提供的 OpenAI 兼容端点使用 MiniMax-M2.7 模型。要使用它:

  1. platform.minimax.io 获取 API 密钥。

  2. 设置环境变量:

    export MINIMAX_API_KEY=your-key-here
    
  3. 启动:

    # Windows
    windows\start_minimax.bat
    
    # Mac/Linux
    sh macos-linux/start_minimax.sh
    
    # 或直接运行
    python wrapper_api.py minimax
    

可用模型:MiniMax-M2.7(默认)、MiniMax-M2.7-highspeed(更快)、MiniMax-M2.5MiniMax-M2.5-highspeed。中国大陆用户可以在 config.toml 中将 base_url 更改为 https://api.minimaxi.com/v1

架构

┌──────────────┐     WebSocket      ┌──────────────┐
│  浏览器 UI  │◄──────────────────►│   FastAPI     │
│  (chat.js)   │    port 8300       │   (app.py)    │
└──────────────┘                    │               │
                                    │  ┌──────────┐ │
┌──────────────┐    MCP (HTTP)      │  │  Store    │ │
│  AI 代理    │◄──► MCP 代理 ◄───►│  │ (JSONL)  │ │
│  (Claude,    │   (按实例)         │  └──────────┘ │
│   Codex...)  │    自动分配端口    │  ┌──────────┐ │
└──────┬───────┘                    │  │ Registry  │ │
       │                            │  │ (运行时) │ │
       │  stdin 注入           │  └──────────┘ │
┌──────┴───────┐  POST /api/register│  ┌──────────┐ │
│  wrapper.py  │───────────────────►│  │  Router   │ │
│  Win32 /tmux │  监听队列     │  │ (@mention)│ │
└──────────────┘  文件触发机制│  └──────────┘ │
                                    └──────────────┘

关键文件:

文件 用途
run.py 入口点——启动 MCP 和 Web 服务器
app.py FastAPI WebSocket 服务器、REST 端点、注册 API 和安全中间件
store.py 基于 JSONL 的消息持久化,带观察者回调
registry.py 运行时代理注册表——槽位分配、身份声明和重命名跟踪
jobs.py 任务存储——JSON 持久化、状态跟踪和线程化对话
rules.py 规则存储——JSON 持久化,可提议/激活/草拟/归档/删除,并记录时间戳
schedules.py 计划存储——创建/删除/切换/执行到期任务,解析间隔并以 JSON 格式持久化
summaries.py 每个频道的摘要存储——JSON 持久化,每次读写限制在 1000 字以内
session_engine.py 会话编排——阶段推进、轮次触发和提示组装
session_store.py 会话持久化——运行状态、模板加载与验证,以及自定义模板存储
session_templates/ 内置会话模板(JSON)——代码审查、辩论、设计评审和计划制定
router.py 解析 @提及、代理路由以及循环保护(人类的 @提及始终通过)
agents.py 写入触发队列文件,供封装程序拾取
mcp_bridge.py 定义 MCP 工具(chat_sendchat_readchat_claim 等)
mcp_proxy.py 按实例的 MCP 代理——在所有工具调用中注入发送者身份
wrapper.py 跨平台调度程序——注册、自动触发、心跳检测和活动监控
wrapper_windows.py Windows 版本:键盘输入注入 + 屏幕缓冲区活动检测
wrapper_unix.py Mac/Linux 版本:tmux 键盘输入注入 + 面板捕获活动检测
config.toml 所有配置(代理、端口、路由等)
windows/start_*_yolo/bypass.bat Windows 自动批准启动脚本
macos-linux/start_*_yolo/bypass.sh Mac/Linux 自动批准启动脚本

系统要求

  • Python 3.11+(使用 tomllib
  • 至少安装一个 CLI 代理(Claude Code、Codex 等)
  • Windows:无需额外依赖
  • Mac/Linux:需要 tmux(用于自动触发——使用 brew install tmuxapt install tmux

Python 包依赖项(fastapiuvicornmcp)列在 requirements.txt 中。快速入门脚本会在首次启动时自动创建虚拟环境并安装这些依赖,无需手动运行 pip install

平台说明

自动触发功能在所有平台上均适用:

  • Windows——wrapper_windows.py 通过 Win32 的 WriteConsoleInput 将按键注入代理的控制台。代理作为直接子进程运行。
  • Mac/Linux——wrapper_unix.py 将代理运行在 tmux 会话中,并通过 tmux send-keys 注入按键。使用 Ctrl+B, D 可以分离会话,使代理在后台继续运行;使用 tmux attach -t agentchattr-claude 可重新连接。

聊天服务器和 Web 界面是完全跨平台的(Python + 浏览器)。

安全

agentchattr 专为 仅限本地使用 而设计,并包含多项安全保护措施:

  • 会话令牌 — 每次服务器启动时都会生成一个随机令牌,并注入到 Web 界面中。所有 API 和 WebSocket 请求都必须携带此令牌。
  • 仅限回环注册 — 代理注册、注销和心跳端点仅接受来自本地主机的连接,从而防止远程代理伪装。
  • 来源检查 — 服务器会拒绝来自与 localhost127.0.0.1 不匹配的来源的请求,以防止跨域攻击和 DNS 重绑定攻击。
  • 不使用 shell=True — 子进程调用通过直接传递参数列表来避免 Shell 注入。
  • 网络绑定警告 — 如果服务器配置为绑定到非本地地址,则除非您显式传递 --allow-network 参数,否则将拒绝启动。

会话令牌会在启动时显示在终端中,且仅对同一台机器上的进程可见。

--allow-network 警告: 网络模式会绑定到局域网 IP 地址,这会使服务器通过未加密的 HTTP 暴露于您的本地网络。同一网络中的任何用户都可以嗅探会话令牌并获得完全访问权限——包括 @提及代理和触发工具执行的能力。如果代理启用了自动批准标志,这实际上会赋予远程代码执行能力,从而控制您的机器。请仅在受信任的家庭网络中使用 --allow-network。切勿在公共或共享 WiFi 网络上使用。

社区

加入 Discord,获取帮助、提出功能建议,并查看社区成员正在使用 agentchattr 构建的各种项目。

许可证

MIT

版本历史

v0.3.22026/03/19
v0.3.12026/03/17
v0.3.02026/03/15
v0.2.22026/03/12
v0.2.12026/03/08
v0.2.02026/03/08
v0.1.02026/03/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

154.3k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|3天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|4天前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent