每天
AI编码代理的团队记忆。
 
你的AI代理在会话之间会忘记一切。每一个决定都被重新提起诉讼。每一个惯例都被重新解释。下一个接触相同代码的代理重复的每个过去的错误。
个人记忆工具可以修补症状:存储一些事实,稍后检索。这适用于能够记住存储内容的独立开发人员。当团队使用人工智能时,它就会崩溃——当三个开发人员在同一个代码库上使用代理时,当入职需要转移机构知识时,当错误的记忆在重构中幸存下来,因为没有人审计它时。
记忆不是存储。这是一个团队练习。
Tages将代码库内存视为一种托管工件:结构化类型、质量评分、审计跟踪、将模糊注释重写为命令式代理指令的锐化过程。一个开发人员的架构决策成为每个代理的上下文。坏记忆在误导下一个会话之前会被标记和纠正。
用一个命令在60秒内启动。在工作流程需要时添加团队功能。
claude mcp add tages -- npx -y @tages/server为什么标签?
| 标签 | Zep | Mem0 | |
|---|---|---|---|
| 安装 | 一条线(claude mcp add) | Docker+neneneba API密钥 | API密钥+SDK |
| 仅本地模式 | 是(SQLite,零配置) | 仅自托管 | 否(仅云) |
| 团队共享 | 是(RBAC、联盟) | 是(云) | 否 |
| 仪表板 | 是(Next.js,分析) | 是 | 基本 |
| 质量控制 | 审核、改进、执行 | 否 | 否 |
| 内存类型 | 11种结构化类型 | 知识图(Graphici) | 结构化 |
| MCP工具 | 56 | N/A | N/A |
| 搜索 | 三角图+语义+衰变 | 时态知识图 | 向量 |
| 工作流集成 | Git挂钩、CI/CD、简报 | SDK调用 | SDK调用 |
| 定价 | 免费本地/14美元专业版 | 开源/云 | 19-249美元/月 |
它记得什么
源代码告诉代理 什么 存在。Tages告诉他们 为什么 它已经建成, 怎么 与之合作,以及 什么不该做.
| 类型 | 示例 |
|---|---|
| 公约 | “始终对API路由使用snake_case” |
| 决定 | “选择Postgres而不是MongoDB进行pg_trgm模糊搜索” |
| 建筑 | lib/Auth.ts中的身份验证中间件,httpOnly cookie中的JWT |
| 课程 | “不要缓存Supabase模拟——测试需要新的状态” |
| 反模式 | “切勿在出现onConflict时传递id——导致FK违规” |
| 模式 | 所有API错误返回{error,code,status} |
加:实体、执行、运营、环境、偏好(共11种)。
运作原理
- 安装 —
tages init连接到您的项目,或安装Claude Code插件进行零配置设置 - 记住 --通过git挂钩或导入CLAUDE.md手动存储决策和约定
- 召回 --每个会话在\
和--current-since旗帜上tages drift两者必须同时出现;基线时间必须早于当前时间;两者都使用现有Nd/Nh/ISO语法。renderHuman` 扩展了行为评分、原始JSD、代理计数、窗口边界、阈值指导和每个代理前3名工具细分。
- 测试:18项新测试--12英寸
behavioral-drift.test.ts(窗口、JSD数学、多代理平均、顶级工具报告),5英寸compute.test.ts(权重暴露、权重贡献路径、边缘情况),CLI中有1个drift.test.ts(标志解析)。共有843人通过(主线为826人)。
2026-04-29--CI测试模拟修复
- CI测试模拟修复--
supabase.auth界面已添加到commands-smoke嘲笑:mockSupabase现在包括amockAuth带有短粗的物体setSession,getSession,以及refreshSession(均返回有效的会话形状)。没有这个,任何调用writeAuthConfig并运行没有TAGES_SERVICE_KEY集合将崩溃cannot read 'setSession' of undefined--因为createAuthenticatedClient读取auth.json和电话supabase.auth.setSession(...)在auth路径分支上。直到CI从pnpm --filter @tages/server test到pnpm -r test在c9a27f1中;resetMockSupabase()更新以清除三个新的模拟功能from/rpc.
2026-04-29--PR#55白色第二次审查修复包(W2限制语义、W2-AOT代码正则表达式、Q1 Windows保护)
- W2极限语义--
drift.ts--limit回归已恢复:--limit现在控件仅显示top-K(原始语义,默认值10)。新的MAX_DB_ROWS = 10000应用于两个Supabase查询的常量提供了防御性OOM保护,而不会将“显示前N个键”与“从时间顺序窗口获取N行”混为一谈。 - W2-AOT代码正则表达式--
stripTagesBlockTOML表数组支持:targetHeader和anyHeader正则表达式现在匹配[[mcp_servers.tages]]除了[mcp_servers.tages].使用双括号语法手动编辑的配置现在可以通过以下方式正确清理--force.JSDoc已更新,以记录评论吞咽限制。 - Q1 Windows防护--
pathToFileURL入口点修复(codex、游标、gemini插件):已更换import.meta.url === \文件://${process.argv\[1\]}\`withimport.meta.url===pathToFileURL(process.argv\[1\])。hrefin all three plugins. The original was broken on Windows (import.meta.urlusesfile:///C:/...;进程.argv\[1\]usesC..— never equal), silently no-oppingmain()undernpx。 - 回归测试:
packages/codex-plugin/src/__tests__/index.test.ts添加一个测试覆盖[[mcp_servers.tages]]条带(总共10次测试,为9次)。总计826人通过。 - 延期:W1(在下一个非标签标题之前吞下评论)——记录在JSDoc中;S2(友好的ENOONT
computeOracleSha)--punt,eval线束可接受的原始错误。
2026-04-29--PR#55白色评论修复包
- B1--
drift.ts撞坏了--since:resolveSince()现在被try/catch包裹着;无效输入会打印一条干净的错误消息,并以代码1退出,而不是抛出未捕获的错误。 - B2--
codex-plugin复制TOML块:--force不再附加第二个[mcp_servers.tages]头球新出口stripTagesBlock()在写入新块之前,助手会删除任何现有的标记表。更新使用文本以反映就地替换行为。 - W2--
--limit应用于查询:tages drift --limit现在过去了.limit()对于两个Supabase查询(field_changes和tool_call_log)除了显示截断之外;该值被验证为正整数。 - W3--
agents-md联盟标头:当agents-md-owners.json已配置,但memories.team_id不存在,生成的AGENTS.md将以机器可读的方式打开 `` HTML注释,以便代理和审阅者立即看到限制。 - Q1--动态预言机SHA:
eval/longmemeval/src/dataset.ts现在出口computeOracleSha()在运行时对磁盘上的oracle文件进行哈希运算;run.ts报告实际的SHA,而不是硬编码的常量。 - CI加宽:
.github/workflows/ci.yml和publish.yml扩展自--filter @tages/server到-r(所有包裹)。publish.yml还添加@tages/codex-plugin和@tages/gemini-plugin到npm发布矩阵。 - 新测试(共15项):回归套件
codex-plugin(9项测试,包括往返条带+附加防护),加上入口点测试cursor-plugin(3) 以及gemini-plugin3.插件main()电话受到保护import.meta.url检查以确保包在测试中是可导入的。
2026-04-20
- README卫生:从中剥离不可重复的基准索赔
## Benchmarks节;更正了MCP工具、CLI命令、测试和迁移计数,以匹配当前代码库。 - 赌注A——内存治理基金会新
/governance营销页面(草稿,noindex).迁移0057_provenance_fields.sql添加session_id,source_context,以及tool_name列到memories具有GIN指数和get_memory_provenanceRPC。MemoryTypeScript类型扩展为sessionId,toolName,以及sourceContext正式规格docs/provenance-model.md. - 赌注B--AGENTS.md原生工具新
tages agents-md write和tages agents-md auditCLI子命令。write从项目内存中生成规范的6节AGENTS.md。audit标志模糊、缺失部分、缺失可运行命令以及缺少三层Always/Ask/Never边界模式。 - 赌注D——跨工具分布新
@tages/cursor-plugin包裹。跑步npx @tages/cursor-plugin通过写入在游标中安装标记.cursor/mcp.json.安装指南位于docs/cursor-setup.md. - CI新
.github/workflows/publish.yml触发器打开v*标签推送将包发布到npm(需要NPM_TOKEN回购秘密)。 - 战略文件:
analysis/目录包含竞争分析、趋势扫描、定位简报、深入研究执行文档、蒙特卡洛定价模型和研究笔记。PLAN.md和REMAINING.md添加到repo根目录。
审查修复(白色审查后)
supabase/migrations/0057_provenance_fields.sql:固定search_path = public, extensions并添加了一个is_project_member(auth.uid(), m.project_id)里面的警卫get_memory_provenance安全定义器功能,因此它不会在项目之间泄露来源。(B1,Q1).github/workflows/publish.yml:发布@tages/cursor-plugin一起@tages/shared,@tages/server,@tages/cli上v*标签推送。(W1)packages/cli/src/commands/agents-md.ts:替换了不受支持的\Z锚定于extractSection使用JS正确的字符串末尾前瞻,以便正确触发最后一节审计规则(缺少命令、缺少技术版本)。添加了回归测试。(W2)apps/dashboard/src/components/marketing/governance-page.tsx:已更正session_id来源模型表中的字段类型text到uuid.(S1)- W3(测试计数目标)被拒绝——计数反映了经过验证的测试运行输出,而不是目标。S2(控制流警告)被推迟——没有运行时影响。
2026-04-20-投注A治理基础(Sprint A+B+C)
- 上市前卫生(第0阶段):
HOOK.md和.semgrep-results/添加到.gitignore已关闭迁移0042 git gap——文件已于4月10日应用于prod,但从未提交;supabase migration list --linked确认产品/本地匹配。 - Sprint A——差异化基础(阶段3.1+3.2)新
@tages/codex-plugin包(TOML writer目标~/.codex/config.toml,--dry-run,块检测)。新@tages/gemini-plugin包(JSON合并到~/.gemini/settings.json保留顶级密钥)。新tages agents-md diff和tages agents-md federateCLI子命令扩展了Bet B基础。白色评论修复:gemini env var占位符,codex正则表达式假阳性[mcp_servers.tages.env]单独,区分否定词边界。 - Sprint B-LongMemEval安全带支架(第1.1阶段)新
eval/longmemeval/带有独立TypeScript工具的目录(不在pnpm工作区中)。保留DB模式方法,并附有可比性警告(Supermemory/RetainDB基线位于已弃用的数据集上)。可插拔内存后端:in-memory词汇地板+tages-cli真正的融合。干运行已验证;实际运行待定OPENAI_API_KEY+沙箱TAGES_EVAL_PROJECT. - Sprint C--
tages driftv1(第3.3阶段)新tages driftCLI命令(实验)。语义漂移使用真实的不稳定性度量(1−1/distinct_values over field_changes);10个单元测试涵盖了零/二/三值不稳定性、会话+代理报告、空白规范化、topK。协调漂移受阻(not_implemented)--已封锁memories.team_id列。行为偏差被打破(insufficient_data/not_implemented)--tool_call_log有原始数据,v2校准等待设计合作伙伴。--json,--since,--agent,--limit旗帜。 - 杂务:插件包(游标、codex、gemini)现在使用
--passWithNoTests所以pnpm -r test不会从根本上失败。
2026-04-19
- 修复了GitHub OAuth登录重定向到营销主页而不是
/app/projects回拨后。根本原因:SameSite=Strict浏览器在跨站点顶级导航(即GitHub重定向回/auth/callback?code=...),因此PKCE验证器和刷新的会话Cookie从未到达服务器。恢复到Supabase的默认设置SameSite=Lax,这是SSR身份验证Cookie的正确设置。HttpOnly + Secure + Lax仍然阻止CSRF处理状态更改请求。 - 邀请流程检修(团队计划): 团队邀请现在发送一次性Supabase魔术链接电子邮件,而不是直接插入
team_members待处理的邀请在30天后到期;过期的行将被跳过accept_pending_invites。所有者和管理员可以在接受待定邀请之前撤销该邀请(新的DELETE RLS策略)。邀请角色下拉列表在UI和服务器层都强制执行RBAC——所有者可以邀请管理员或成员,管理员只能邀请成员。仪表板登录现在呼叫accept_pending_invites通过OAuth回调,因此仅限web注册会自动解析挂起的邀请(以前只有MCP服务器在启动时这样做)。需要迁移0055_invite_expiry.sql和0056_invite_delete_policy.sql已应用于您的Supabase项目。
2026-04-17
- 拆分文字条纹风格测试夹具
safety.test.ts和observe.test.ts通过字符串连接,GitHub秘密扫描不再标记它们。这些夹具是有意的测试输入,而不是真正的证书。
许可证
以...命名
每天 --伊特鲁里亚神圣的孩子,从地上的沟壑中出现,在消失之前向文士传授神圣的知识。知识在源头消失很久之后仍然存在。
