ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

团队里几个 AI Agent 各干各的、经验全不共享?本地部署一套团队记忆系统,再用 cpolar 开个只读记忆看板给异地同事翻

团队里几个 AI Agent 各干各的、经验全不共享?本地部署一套团队记忆系统,再用 cpolar 开个只读记忆看板给异地同事翻 团队里几个 AI Agent 各干各的、经验全不共享本地部署一套团队记忆系统再用 cpolar 开个只读记忆看板给异地同事翻我们团队现在跑着好几个 Agent一个负责写内容一个跑数据分析还有一个专门盯关键词和选题。问题很快就来了——它们各干各的。同一个坑写内容那个 Agent 上周已经踩过一次轮到分析那个 Agent它照样从零开始一份文档的方法论A Agent 从聊天里总结出来了B Agent 压根不知道有这回事。每次新开一个 Agent 会话就像招了个完全没入职的实习生。这事的根子在于每个 Agent 的「经验」都锁在自己那份上下文和本地文件里团队没有一份共享记忆。这篇就聊聊我怎么在一个周末把这个问题按住本地用 Docker 起一套团队记忆系统把几个 Agent 的对话摘要、文档、代码片段统一沉淀成一份可检索的团队记忆做完之后再解决第二个头疼的问题——异地同事的 Agent 拿不到这份记忆于是我用 cpolar 开了一条只读记忆看板让远程同事和他们的 Agent 能翻、能查但碰不到写入入口。整套东西不需要公网 IP也不需要把写权限裸露到外网。下面按步骤来。1 什么是团队记忆系统它负责什么先把概念说清楚不然容易和其它工具串味。团队记忆系统Agent Memory做的事很简单把多个 Agent 在协作中产生的对话、文档、代码片段整理成一份结构化的、可被反复检索复用的记忆库。它和普通的「笔记软件」不一样的地方在于——记忆是给 Agent 读的不是给人读的所以它更看重检索接口和写入规范。放到我们这篇的场景里它负责三件事统一收纳把几个 Agent 的会话摘要、文档、代码片段收进同一个库统一检索任何一个 Agent 都能按关键词把别人的经验捞出来统一出口整理出一份人能看的「团队记忆看板」给异地同事翻这里要划个重点写入和检索走内网对外只放只读看板。这是我整篇文章的设计主线也是后面 cpolar 那一段的伏笔。2 环境准备Docker 与目录规划我们选 Docker 部署理由很实在记忆系统要配数据库、要挂持久化卷裸装迟早被版本问题整崩溃容器化一把梭最省心。2.1 确认 Docker 环境先确认机器上 Docker 和 Compose 都就绪docker --version docker compose version两条命令都能输出版本号就可以往下走。如果docker compose报找不到命令说明装的是老版本 Compose换用docker-compose --version试一下再不行就去 Docker 官网按对应系统重装一遍。2.2 建工作目录别把数据文件和配置文件混在系统目录里单独建一个干净的目录树mkdir -p ~/team-memory/{data,config} cd ~/team-memorydata/放持久化数据config/放配置文件。后面所有操作都在~/team-memory下面路径统一出问题了也好定位。这一步做完你会看到两个空目录和一个能正常输出版本号的 Docker 环境。如果目录建不成先检查当前用户对家目录有没有写权限。3 用 Docker Compose 部署团队记忆系统我不推荐直接一把docker run因为记忆系统通常涉及「应用 数据库」两个容器用 Compose 编排更清楚重启、依赖顺序都不用手动管。3.1 写 docker-compose.yml在~/team-memory下新建docker-compose.ymlservices: memory-db: image: postgres:16-alpine container_name: team-memory-db restart: unless-stopped environment: POSTGRES_USER: memory POSTGRES_PASSWORD: change_this_password POSTGRES_DB: team_memory volumes: - ./data/pgdata:/var/lib/postgresql/data healthcheck: test: [CMD-SHELL, pg_isready -U memory -d team_memory] interval: 10s timeout: 5s retries: 5 memory-app: image: ghcr.io/example/team-memory:latest container_name: team-memory-app restart: unless-stopped depends_on: memory-db: condition: service_healthy ports: - 127.0.0.1:8088:8080 environment: DB_HOST: memory-db DB_PORT: 5432 DB_USER: memory DB_PASSWORD: change_this_password DB_NAME: team_memory READONLY_BOARD_ENABLED: true volumes: - ./config:/app/config几个地方要留意POSTGRES_PASSWORD这里务必改成你自己的强密码别直接抄示例——这是记忆库的唯一防线ports我写的是127.0.0.1:8088:8080只绑定本机回环地址不给局域网其它机器直接连这是刻意的READONLY_BOARD_ENABLED打开只读看板后面异地同事翻的就是它3.2 拉起容器docker compose up -d第一次执行会拉镜像网速正常的话一两分钟能起来。用下面这条确认容器状态docker compose ps正常的输出里team-memory-db应该是healthyteam-memory-app是running。如果memory-app一直重启八成是连不上数据库——先docker compose logs memory-app看报错多半是密码或DB_HOST写错了。3.3 验证 Web 入口浏览器打开http://127.0.0.1:8088能出登录页或初始化页说明应用本身通了。第一次进入会引导你建管理员账号账号密码存好这是写入端的钥匙别乱发。4 接入各个 Agent把经验写进同一份记忆系统起来了接下来是真正解决「经验不共享」的那一步让几个 Agent 都往这份记忆里写。4.1 拿到写入用的 API Key在记忆系统的管理后台里进「设置 / API」页生成一个写入用的 API Key。这个 Key 只给内网 Agent 用别外传。生成后它会以tmk_开头前缀以你实际看到的为准复制下来我们把它存成环境变量避免硬编码进脚本export TEAM_MEMORY_URLhttp://127.0.0.1:8088 export TEAM_MEMORY_KEY你的写入APIKey4.2 用一行命令让 Agent 提交记忆记忆系统一般会提供 HTTP 接口。下面是给某个 Agent 写一条记忆的最简调用curl -X POST $TEAM_MEMORY_URL/api/memories \ -H Authorization: Bearer $TEAM_MEMORY_KEY \ -H Content-Type: application/json \ -d { agent: writer, type: note, title: CSDN 文章封面图统一走 OSS 图床, content: 所有文章的封面与正文图先上传阿里云 OSS再回填 CDN 链接避免平台前端转换后图片丢失。, tags: [csdn, 图片, 流程] }返回里带id字段就说明这条记忆已经进库了。之后任何一个 Agent 都能检索到它——这才是我们折腾这套系统的全部意义。4.3 让检索也统一入口检索接口同样简单Agent 用关键词把别人踩过的坑捞出来curl -G $TEAM_MEMORY_URL/api/memories/search \ -H Authorization: Bearer $TEAM_MEMORY_KEY \ --data-urlencode q图床 \ --data-urlencode limit5返回的是 JSON 数组每条含标题、摘要、标签。你可以在每个 Agent 的启动流程里加一步「先查记忆、再干活」这样新 Agent 一上线就自带团队经验。这一步的意义不在于「测接口」而是确认链路已经打通写进去的能查出来查出来的能用在别的 Agent 上。如果搜不到刚写的记忆先检查q是不是带了空格没做 URL 编码再看写入时tags有没有拼错。到这里内网的记忆共享已经成型。现在的短板是异地同事和他们的 Agent 还够不着。5 下载安装 cpolar把只读看板送出去本机的记忆看板只绑了127.0.0.1:8088异地同事连不上这是必然的——我们本来就没打算把写入口暴露出去。真正要给出去的是那份只读看板。这就轮到 cpolar 出场了。它负责的事很单一在我们不碰路由器、不申请公网 IP 的前提下给只读看板页开一条能公网访问的 HTTPS 隧道。装 cpolar 分平台我用的是 macOS用 Homebrew 一条命令搞定brew tap probezy/core brew install cpolar装完把服务装上并启动sudo cpolar service install sudo cpolar service startWindows、Linux、群晖 NAS 各有自己的安装包和入口官方下载页在https://www.cpolar.com/downloadmacOS 的快速入门可以看https://www.cpolar.com/blog/cpolar-quick-start-tutorial-macos-series。装完先验证服务活着cpolar version curl -s http://127.0.0.1:9200 || echo 服务未启动第一条能输出版本号、第二条有响应就说明 cpolar 本地 Web UI默认9200端口已经起来了。敲黑板cpolar service install/start需要 sudo在飞书这类非交互通道里没法输密码。稳妥做法是在本机终端手动跑一次这两条命令装完再回来继续别在这里卡住。6 用 cpolar 穿透只读记忆看板6.1 先只开随机地址做验证给只读看板对应的端口开一条 HTTP 隧道cpolar http 8088前台运行时会直接打印一条公网地址形如https://xxxx.r6.cpolar.top。把这条地址丢到手机浏览器换成 4G 流量绕开局域网试一下能打开只读看板页就说明穿透链路是通的。提醒一句免费套餐生成的随机地址 24 小时内会变化所以这一步只用来确认链路别急着发给同事——第二天链接就失效会被人念叨。6.2 绑定固定二级子域名要让异地同事长期用一个稳定入口得起固定二级子域名。固定二级子域名需要 cpolar 基础套餐或以上官方配置文章在这里https://www.cpolar.com/blog/configure-the-secondary-subdomain-name。操作路径是登录 cpolar 后台https://dashboard.cpolar.com/在「预留」页https://dashboard.cpolar.com/reserved里预留一个二级子域名比如team-memory-board然后回来改配置文件。Linux / macOS 的配置文件在/usr/local/etc/cpolar/cpolar.ymlmacOS 通过 Homebrew 安装的路径与此一致如遇差异以cpolar service输出提示的路径为准。YAML 缩进敏感千万别用 TAB用两个空格。添加如下隧道tunnels: memory-board: addr: 8088 proto: http region: cn_vip subdomain: team-memory-board改完重启服务让配置生效sudo cpolar service restart6.3 验证固定地址重启后打开本地 Web UIhttp://127.0.0.1:9200在「状态 → 在线隧道列表」里应当能看到memory-board隧道公网地址是https://team-memory-board.cpolar.cn这类固定形式。然后在异地同事的角度验证一次用外部网络打开这个地址只读看板能正常翻页、能搜索就成功了。如果打不开按这个顺序查本地curl http://127.0.0.1:8088是否正常9200里隧道是否显示在线预留的二级子域名拼写和配置里的subdomain是否完全一致大小写、连字符最容易错6.4 只读是刻意的再收个尾这是这整套方案里最该讲清的一点。给异地同事的入口只开只读看板写入端口的8088依然只绑在127.0.0.1公网上根本摸不到写入接口READONLY_BOARD_ENABLED只对看板放行读操作。你还可以用 cpolar 企业或 NAS 套餐的 IP 白名单能力把访问限制在同事固定出口 IP 上——这一步不是必须但把异地访问收窄到「只看、不能改」的范围内是这套设计最值钱的地方。7 总结现在回头看这套东西其实就干成了一件事把几个各干各的 Agent接进了同一份团队记忆同时把「能写」和「能看」彻底拆开——内网负责写和查公网只读看板给异地同事翻。写权限没出门经验却出了门。关键步骤就三条用 Docker Compose 起「记忆应用 Postgres」数据挂到./data应用只绑127.0.0.1:8088给每个 Agent 接上写入 API Key把对话、文档、代码片段统一提交进记忆库检索也走同一入口用 cpolar 给只读看板开 HTTPS 隧道预留固定二级子域名team-memory-board异地同事拿固定链接直接翻后续想扩的话方向也清楚等 Agent 多到需要分团队可以按业务线拆成多条只读看板隧道用 cpolar 保留的自定义域名分别指过去谁的部门看谁的面板记忆库里再按tags做周期性归档过期经验自动降权。之所以这么搭是因为它把最麻烦的两件事都甩给了成熟工具存储和检索交给容器化的记忆系统公网可达交给 cpolar你只需要守好「只读」这条线。链接稳定、权限清楚、异地同事不用装任何东西打开浏览器就能翻——这套组合比每次手工导出文档再发给别人省事太多了。
返回列表