先说清楚,这帖带推广性质,但确实是我们团队自己在用、也真开源了的东西,欢迎拍砖。
是什么
OpenTag
一句话:在 GitHub issue 、PR comment 、Slack thread 里 @某个 agent ,它就在你本地仓库里把活干了,然后把结果(评论 / PR / 进度)写回原来的那个 thread 。基本就是 Claude Tag 的开源实现,区别是不绑 Claude 、不绑 Slack 。
为什么做
Claude Tag 这个交互我们觉得是对的——你不该为了用 AI 把上下文 copy 进另一个聊天框,而是直接在工作发生的地方把它 at 进来。但官方版是 Claude-only 、Slack-first 、还得企业版。我们想要一个开放的:任意来源(GitHub/Slack/…)、任意执行器(Claude Code / Codex / 自己的本地 runner)。
它不是又一个 AI workspace
我们没想再造一个"AI 版 Slack"让你搬家。真正难搞的不是模型会不会答,是 agent 进了团队之后那一堆脏活:谁能触发它、给它什么权限、它看到了哪些上下文、干完往哪回、谁来验收。所以 OpenTag 更像一个协议层——把一次 @ 变成结构化事件(actor / target / command / context pointer / permission / callback / 审计),交给本地或托管的 runner 执行,结果回写原地。
和 OpenClaw / Hermes 有啥区别
简单说:不是一类东西,OpenTag 在它们上面一层。
OpenClaw 、Hermes(还有 Claude Code 、Codex)都是"干活的 agent / 执行器"——真正读代码、写代码、调工具的是它们。OpenTag 不替代它们,而是决定:这次 @ 由谁触发、从哪个 thread 来、给它什么上下文和权限、交给哪个执行器跑、干完结果往哪回写、谁来验收。
换句话说,OpenTag 把这些 agent 都当成可替换的 executor 。你今天用 Codex,明天换 Claude Code,后天上 Hermes / OpenClaw / 自己的本地 runner——上层工作流(在 issue / PR / Slack 里 @ 一下,结果回原地)完全不用动。模型和执行器换得飞快,但你接入工作流的方式应该是稳定的。
所以如果你已经在用 OpenClaw 或 Hermes,OpenTag 不是要你二选一,反而是给它们补上"从哪触发、权限、回写、审计"这层壳。
现在能跑的
- GitHub + Slack adapter,统一成一个 OpenTagEvent
- 本地优先执行:opentagd 只认你显式绑定的仓库,在你本地 checkout 里跑
- 内置 executor:echo(冒烟)、claude-code(claude --print)、codex(codex exec)
- 协议化的 suggested-changes / approval / apply / audit
技术栈: TypeScript
还很早期(v0),很多地方糙。主要想听听大家两个问题的看法:
1)大家日常,是怎么让自己的 agent 和其他人,其他人的 agent 协作的?
2)如果每个人标配一个 agent ,优先是 local 的,还是 remote 的?
Repo: https://github.com/amplifthq/opentag
觉得有点意思的话,给个 star, 也欢迎大佬们 fork 一起共建,谢谢各位 🙏