教程2026-10-26 · 智涌AI

公司级 Agent 怎么搭:LangChain 内部 Agent 的 5 个底座

公司级 Agent 头图:Slack 入口、身份、两层记忆、沙箱代理、定时触发五个底座

一个人用的 Agent 和一个团队共用的 Agent,难点完全不同。LangChain 在 2026 年 10 月 24 日的官方博客里,把自家营销、销售、工程三套内部 Agent 的做法摊开讲:三个团队各自踩坑,最后收敛到同一组五个底座。这篇按那篇文章和 LangSmith 官方文档整理成一份搭建清单,方便你给自己团队做「公司级 harness」时对照。我们没有部署 Managed Deep Agents,涉及产品行为的部分标「未实测」。

说明:三套 Agent 的分工、身份策略、两层记忆、定时运行的比例描述,全部来自 LangChain 官方博客原文;沙箱代理和身份配置的写法来自 LangSmith 文档。Managed Deep Agents 目前在 LangSmith Cloud 上是公开测试版,下面的代码片段我们没有实际部署,标「未实测」。

先看他们拿什么练手

文章用三套在跑的内部 Agent 当例子:

三者都建在 Managed Deep Agents 上,它叠在开源的 Deep Agents harness 之上,负责频道、定时任务、沙箱、记忆、身份这些基础设施。你用不用 LangChain 都行,这五个问题换什么框架都得回答。

底座一:住在大家已经在用的地方

他们的 Agent 都住在 Slack,每个 Agent 一个 Slack 应用,可以私聊,也可以在频道里 @。放在频道里有个副作用:别人能看到同事怎么用它,用法会自己传开。

有两个细节可以直接抄。一是「分出去」:人在讨论时想拉 Agent 进来,又不想让它的长输出淹掉人的对话,就让 Agent 在频道里另开一个线程干活。二是不硬塞:GTM Agent 起草的待发邮件一多,在 Slack 里一条条审很痛苦,他们最后还是做了一个专门的审阅界面。

底座二:身份,作者说这是最难的一块

Agent 动手时到底代表谁?业内两种做法:代调用者本人操作(on-behalf-of,OBO),或者不管谁叫都用一套固定凭证(服务账号)。LangChain 的做法是按工具分,同一个 Agent 里两种混用:

Agent代本人(OBO)固定身份
OpenSWE你私聊它时,用你的 GitHub 账号开 PR后台跑代码审查时,用自己的 GitHub App
GTM Agent邮件类工具,只在私聊里可用,公共频道不开放Salesforce 等,大家不必各自登录
Content StudioNotion 等公司社交账号;只有白名单用户能执行发布,其他人只能读或起草

落到自己团队,可以按一个问题给每个工具归类:这个动作出了事,该记在谁头上?要记在个人头上的(发邮件、用个人账号提交),走 OBO,并且只在私聊里开;记在团队头上、又不想每人登录一遍的(查 CRM),走服务账号;会对外发声的,再叠一层白名单。

LangSmith 文档里还有一条容易忽略的提醒:默认用 LangSmith API key 鉴权时,拿到 key 的人都能用同一个部署,可能看到同样的会话;要让每个终端用户有私有会话,得换成 Supabase、其他 JWT 提供方或自家后端来认人。另外,有 LangSmith 工作区访问权限的人能读和搜索部署里的全部会话,私有只是对终端用户而言(未实测)。

给每个工具归类时只问一句:出了事算谁的。算个人的走代本人授权,并且只在私聊里开放。

底座三:两层记忆

三个 Agent 都有两层记忆:全局记忆对所有人生效,用户记忆只对某个人生效,由 Agent 自己判断一条事实该记到哪一层。作者坦白这是目前探索最少的一块。实操上建议先定规矩:涉及个人偏好、私聊内容的只进用户层;团队口径、产品定位才进全局层,而且全局层最好有人能查看和删改。

底座四:代码在沙箱里跑,密钥留在沙箱外

三个 Agent 都要写代码、跑代码。模式是一样的:Agent 本身跑在沙箱外,连进沙箱执行;不同 Agent 用不同的基础镜像,OpenSWE 还会按频道和用户挑镜像。

关键在鉴权。LangSmith 沙箱的 Auth Proxy 挡在出站网络路径上:沙箱里的代码照常请求 API,代理按规则匹配目标域名,替它加上鉴权头,密钥本身从不进入沙箱。官方文档的示例(未实测):

from managed_deepagents import define_sandbox

sandbox = define_sandbox(
    proxy_config={
        "rules": [
            {
                "name": "openai-api",
                "match_hosts": ["api.openai.com"],
                "headers": [
                    {
                        "name": "Authorization",
                        "type": "workspace_secret",
                        "value": "Bearer {OPENAI_API_KEY}",
                    },
                ],
            },
        ],
    },
)

按 LangChain 介绍 Auth Proxy 的博客,这样做有三个好处:提示词注入、恶意依赖、日志误打印都拿不到密钥;Agent 能连哪些域名写进基础设施策略,不靠模型自觉;短期 OAuth 令牌可以走回调动态签发,回调失败时代理直接拒绝请求(fail closed)。不用 LangSmith 也能照这个思路做:出站走自家代理,白名单域名,密钥只在代理上。

底座五:大部分运行没人点

文章说很大比例的运行是定时或事件触发的,不是有人手动叫它。来源分两种:开发者预设的,比如 OpenSWE 监听新 PR,一开就审;用户自己让 Agent 建的,比如作者让 GTM Agent 每天发简报,它就给自己建了一个定时任务。

后一种很方便,也最容易失控。建议给 Agent 自建的定时任务加三条约束:能列出来、能一键停、每次运行留日志。

常见坑

完成标准

最后

如果你还在单人阶段,先把权限和护栏配好再谈多人共用。可以对照站内 Claude Code 权限配置详解,把 allow/deny 和沙箱边界先在自己机器上理顺。

关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。