news 2026/9/30 1:49:51

AgentScope 2.0 完全实战:3 步让编码智能体跑通隔离、权限与多租户上线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AgentScope 2.0 完全实战:3 步让编码智能体跑通隔离、权限与多租户上线

AgentScope 2.0 完全实战:3 步让编码智能体跑通隔离、权限与多租户上线

【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope

AgentScope 2.0 是通义实验室开源的生产级多智能体框架,用终端对话到在线服务的方式组装 ReAct 智能体。这篇文章带你先 3 步在终端跑起一个能读写文件的编码智能体,再讲清权限引擎、沙箱后端怎么选,最后把同一个智能体变成多租户、带 Web UI 的 Agent Service。照着做,每一步都有具体命令、目录和规则示例。

3 步跑通第一个终端编码智能体 🚀

最快上手的入口是终端控制台,不需要部署任何服务。

第 1 步:安装核心包(要求 Python ≥ 3.11,这是硬门槛):

uv pip install agentscope

第 2 步:拿到源码并进入 console 示例:

git clone https://gitcode.com/GitHub_Trending/ag/agentscope cd agentscope/examples/console

第 3 步:配好模型 Key 并运行(示例默认用 DashScope):

export DASHSCOPE_API_KEY=sk-... python main.py

打开的就是一个完整的聊天界面:流式输出、工具调用的人机确认、Ctrl+C 中断以及中断后的恢复,都由launch_console接管。示例脚本 main.py 里能看到智能体的组装方式——Bash、Read、Write、Edit、Grep、Glob 这些工具全部来自LocalWorkspace.list_tools(),AgenticMemoryMiddleware把长期记忆写进工作区目录下的 Markdown 文件,下次启动还在。复杂任务会被拆成可跟踪的计划,边执行边更新进度:

到这里,智能体已经能改你当前目录里的文件了。接下来要回答的问题是:哪些动作必须先问你,哪些可以直接执行?

它会不会乱改我的文件:权限引擎与 5 种模式对照 🔐

权限引擎在"工具 + 规则"两层做控制,源码在 src/agentscope/permission/。

规则层:每条规则由tool_name、rule_content、behavior(allow / deny / ask)三个字段组成,匹配方式随工具类型变化——Bash 按命令子串匹配,读写工具按文件路径 glob 匹配。也就是说一条Bash + "rm -rf" + deny就能拦住所有带这个子串的命令,一条Write + "secrets/**" + deny就能锁住整个敏感目录。

全局层:规则之上叠加 5 种模式,从"人在场"一路覆盖到"完全无人值守":

模式核心行为适用场景
DEFAULT逐次询问;命中放行规则,或 Bash 识别为安全只读命令(如ls、git status)才免问日常开发,最稳妥
ACCEPT_EDITS工作目录内的读写与文件系统命令(mkdir、mv、cp 等)自动放行,前提是所有目标路径都在工作目录内人在场、快速迭代
EXPLORE严格只读:只放行 Read/Grep/Glob 与只读命令,任何修改类工具直接拒绝通读代码库、做方案
BYPASS跳过所有检查,只保留你显式写的 deny / ask 规则沙箱内无人值守
DONT_ASK把所有"询问"决策转成"拒绝"定时任务、后台执行

一条必须记住的结论:BYPASS 连工具自带的安全询问也会跳过——rm -rf、改写 shell 配置这类动作它不再拦。所以用 BYPASS 时,deny 规则就是唯一护栏,一定要写够。想让无人值守仍保留安全底线,用 DONT_ASK 代替:该问的全变成拒。

模式解决"问不问",沙箱解决"在哪跑"——下一节看 8 个执行后端怎么选。

代码到底在哪执行:8 种沙箱后端对照

"代码在哪里跑"由 workspace 后端决定。同一套工具箱绑定不同后端时,工具代码一行不用改。

后端运行位置适用时机
Local本地文件系统本地开发,最快
Docker容器生产隔离,多数团队第一选择
K8sKubernetes 集群已有集群、要多副本调度
E2B / Daytona云沙箱无服务器、按需弹性
Apple ContainermacOS 原生容器macOS 环境
BubblewrapLinux 用户命名空间轻量隔离、无容器运行时
OpenSandboxOpenSandbox 服务对接既有沙箱平台

SDK 侧各后端实现在 src/agentscope/workspace/;服务侧由 workspace_manager 按会话和租户分配工作区。依赖按后端拆成了独立 extras(workspace-docker、workspace-e2b、workspace-k8s等,见 pyproject.toml),只用 Docker 隔离就只装这一个。tests/目录下每个后端都有独立测试文件,接入前先跑一遍对应用例最稳。

单智能体至此闭环。但"你自己能用"和"别人也能用"之间还差一层服务化。

从单智能体到多租户在线服务:Agent Service 怎么拼

服务层把同一个智能体变成多租户、多会话的在线应用。完整入口看 examples/agent_service/main.py——一次create_app(...)把所有零件拼在一起:

  • 存储:示例用RedisStorage(状态可持久化到 Redis 或 SQL,SQL 后端自带 Alembic 迁移),会话与智能体状态落库后重启不丢进度;
  • 消息总线:单进程用InMemoryMessageBus,多进程部署换成RedisMessageBus;
  • IM 频道:DingTalkChannel、FeishuChannel、DiscordChannel直接注册,消息路由在服务层完成,智能体接知识库后就是一个能查资料的客服入口;
  • 智能体团队:主智能体按需创建子智能体,用内置团队工具协调分工,源码在 src/agentscope/app/_tool/;示例还注册了一个SubAgentTemplate自定义的只读 explorer(EXPLORE 模式),专门负责探索代码库而绝不改动文件;
  • 后台任务卸载:长耗时工具调用自动转入后台,结果出来后唤醒智能体继续对话,前端全程可感知,实现见 _tool_offload_middleware.py;
  • RAG 与定时任务:内置多租户知识库与调度器,examples/rag/ 有完整的索引与接入示例。

观测方面不用额外接入:OpenTelemetry SDK 与 OTLP 导出器就在基础依赖里,追踪和指标直接汇入你现有的监控体系。

对输出质量要求高的场景,examples/pipeline/goal/ 演示了"执行者 + 验证者"流水线:一个写代码,另一个用结构化输出给出通过/不通过及理由,不通过就把反馈带回重做。两者共享同一个工作区,验证者检查的是真实产物而不是口头汇报——这正是 GoalPipeline 值得单独跑一遍的原因。

在最短路径上再走两步就能上线:

python main.py # 在 examples/agent_service 下,需先启动 Redis
cd examples/web_ui && pnpm install && pnpm dev

Web UI 页面里把 API 地址指向http://localhost:8000,权限确认、定时任务、工具调用就能在网页上完整体验。

功能都齐了,剩下的是真正会咬人的地方。

权衡与避坑:上线前必须定的 6 件事 ⚠️

  1. 无人值守首选"容器 + BYPASS + deny",而不是"DEFAULT + 人工逐条点"。原因:DEFAULT 下每个未放行动作都会挂起等人确认,长任务会卡死在确认上;而容器隔离已经把爆炸半径圈住了。做法:Docker 工作区 + BYPASS 模式 + 明确的 deny 规则。想保留安全底线就用 DONT_ASK,把所有询问转成拒绝。
  2. deny 规则要写到命令与路径粒度。Bash 规则按子串匹配,rm -rf、sudo各配一条;读写规则按 glob 匹配,secrets/**、.env各配一条。规则挂在 deny_rules 里,BYPASS 下依然生效。
  3. 生产环境别装[full],按功能挑 extras。full 打包了 20 多个功能组;只跑对话服务的话,service+storage-redis+channel+workspace-docker足够,依赖面小、升级风险低。
  4. 长对话必须接压缩与卸载。上下文只写不擦会越来越乱,模型会先失忆再出错。框架内置自动压缩与工具结果卸载,用法就是把 workspace 传成offloader,长任务再挂上上下文类中间件(示例见 examples/console/main.py 里的AgenticMemoryMiddleware)。
  5. InMemory 消息总线不能跨进程。示例默认InMemoryMessageBus,一上 uvicorn 多进程或多机部署,任务状态就丢了。多进程前换RedisMessageBus,示例 main.py 里注释已给出写法。
  6. 两个环境坑提前查掉。Windows 上 uvicorn 的reload会强制 SelectorEventLoop,无法启动内置工具依赖的子进程,Windows 部署请关掉 reload(示例已按平台处理);Web UI 需要 Node.js ≥ 20。

延伸阅读索引

  • 更新日志:docs/NEWS.md
  • 路线图:docs/roadmap.md
  • 权限引擎源码:src/agentscope/permission/
  • 沙箱工作区各后端实现:src/agentscope/workspace/

【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 1:49:27

开发运维必备:使用Docker部署SQLynx提升数据库管理效率

【Docker项目实战】使用Docker部署SQLynx数据库管理工具一、SQLynx介绍1.1 SQLynx简介1.2 SQLynx核心特点1.3 SQLynx 三个版本对比二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、…

作者头像 李华
网站建设 2026/9/30 1:46:19

使用git管理代码仓库

一、新建本地仓库并将代码上传到空的远程仓库 新建远程仓库 登录代码托管平台,新建git仓库,假设其地址为 https://www.todo.com/your-username/repo_name.git本地仓库初始化 打开终端,进入本地代码所在的文件夹,运行 git init将本…

作者头像 李华