受够了在 Agent 提示词中打补丁,这个方案解决了访问控制难题
速览
当前开发 AI Agent 时,开发者常需在提示词中通过“打补丁”的方式强行植入访问控制逻辑,导致代码混乱且难以维护。该工具/方案提供了一种标准化的修复方式,旨在将访问控制与提示词逻辑解耦,提升系统的安全性与可维护性。
AI 深度解读
Show HN: 厌倦了用胶带把访问控制粘在 Agent 提示词里?这是解决方案
来源:Hacker News 项目:Cast (开源多用户、多 Agent 系统框架)
背景
当前的 AI Agent 开发框架大多基于一个隐含假设:即“一名开发者与一个 Agent 进行交互”。这种架构在个人开发或小规模实验阶段运行良好,但一旦团队或家庭希望共享同一套 AI 设置,架构的局限性便暴露无遗。
在现有的主流实践中,访问控制(Access Control)通常以文本形式硬编码在 System Prompt(系统提示词)中。例如:
system: "Only respond to admin commands if the user provides the key ADMIN_ACCESS"
这种方式的致命缺陷在于:LLM(大语言模型)可以通过“辩论”或提示词注入(Prompt Injection)绕过这些规则。因为规则本身就是模型可见的文本,模型无法区分“指令”与“配置”,从而导致安全漏洞。
此外,身份管理、权限路由以及 Agent 之间的协调,往往是在核心架构搭建完成后,作为补丁(bolted on)事后添加的。这导致系统缺乏原生支持多用户、多 Agent 协作的灵活性。
核心内容
Cast 是一个开源的、自托管的(Self-hosted)框架,旨在解决上述问题。它提供了一个原生的多用户、多 Agent 系统底座,采用 MIT 协议,甚至可以在 Mac Mini 上运行。
1. 核心设计理念:配置与提示分离
Cast 的核心创新在于将访问控制从“提示词”转变为“配置”。
- 旧模式:访问规则是提示词的一部分,模型可见,可被绕过。
- Cast 模式:访问规则是后端配置,模型永远看不到它,因此无法泄露或覆盖它。
在 Cast 中,权限路由通过配置文件定义,例如:
# who can reach this agent
yao@telegram ioaq # in, out, admin, query
* ---- # everyone else: nothing
这意味着只有授权用户(如 yao 通过 Telegram 连接)才能访问特定功能,而其他用户被完全隔离。
2. 快速部署与运行
Cast 提供了极简的本地部署流程,依赖 Node.js 20+ 和容器运行时(macOS 使用 Apple Container,Linux/WSL2 使用 Docker)。
安装步骤:
git clone https://github.com/yaodub/cast.git
cd cast
npm i -g pnpm
pnpm start
pnpm start会安装依赖、构建 Agent 容器镜像(首次约需 2 分钟)并启动服务器。- 需要 Anthropic API Key 或 Claude.ai Token 作为 LLM 凭证。
- 启动后,浏览器自动打开管理面板:
http://localhost:5051/admin/
3. 基于自然语言的 Agent 构建 (Design)
服务器启动时为空。管理面板集成了 Design 模块,这是一个基于聊天的 Agent 构建器。
- 自然语言定义:用户可以用自然语言描述需求,例如:“一个读取我晨间邮件并标记值得回复内容的 Agent”。
- 自动脚手架:Design 会自动生成对应的文件结构。
- 配置与发布:用户配置模型参数和密钥,一键上线。
- 多通道接入:授权用户可通过 Slack、Telegram 或 Web 界面与同一个 Agent 进行独立的私密对话。
4. 与 Claude Code 集成
Cast 提供了三个专用技能(Skills),可与 Claude Code 结合使用,将普通会话转化为精通 Cast 语境的开发会话:
/cast-build/cast-refine/cast-debug这些命令允许开发者通过自然语言迭代 Agent,所有变更需经过人工审查(Review)后落地。
5. 架构与目录结构
Cast 的架构清晰,便于扩展:
- Server:核心服务位于
packages/cast/。 - Agents:Agent 不是代码文件,而是文件夹,默认位于
~/.cast/agents/<name>/(可通过CAST_AGENTS_DIR环境变量自定义路径)。 - Extensions:扩展功能(如邮件、日历、网页抓取、WhatsApp)位于
packages/ext-*包中。 - Docs & Site:网站和文档位于
apps/site/。
详细架构、工作示例和设计文档可访问 getcast.dev。
关键要点
- 安全范式转移:Cast 彻底摒弃了将访问控制写在 Prompt 中的做法,转而使用后端配置。这消除了模型“听命于提示词”从而绕过权限的风险,实现了真正的隔离。
- 原生多用户支持:不同于现有框架的“事后打补丁”,Cast 从底层设计就支持多用户身份识别、权限路由和 Agent 间协调。
- 极低门槛构建:通过
Design模块,非代码用户也能通过自然语言构建 Agent,并自动处理文件结构和配置。 - 轻量级与自托管:项目轻量,支持自托管,硬件要求低(Mac Mini 即可),适合家庭或小型团队私有化部署。
- 开发者友好:提供与 Claude Code 的深度集成,支持代码级的 Agent 迭代和审查流程。
- 当前状态:目前为开发者 Alpha 版本,存在粗糙边缘。特别是浏览器内的构建控制台(Chat-to-build 流程)尚属预览版,但底层的安全、身份和路由机制已具备生产可用性。
意义与影响
Cast 的出现标志着 AI Agent 开发从“单人实验”向“多人协作/生产环境”过渡的关键一步。
- 解决安全痛点:在当前的 Agent 生态中,Prompt 注入和权限绕过是主要安全隐患。Cast 通过将权限逻辑从 LLM 的上下文窗口中移除,提供了一种更稳健的安全模型。这对于企业级或家庭共享场景至关重要。
- 降低多 Agent 协作门槛:现有的 Agent 框架往往难以处理复杂的身份管理和路由逻辑。Cast 将这些复杂性封装在底层,让开发者专注于 Agent 的功能定义,而非基础设施的拼凑。
- 推动 Agent 即服务(AaaS)的本地化:通过支持自托管和轻量级部署,Cast 使得个人开发者和小型团队能够构建私有的、安全的 AI 助手网络,而不必完全依赖云端 SaaS 平台。
- 开源社区的补充:作为 MIT 许可的开源项目,Cast 填补了现有框架在多用户、多 Agent 原生支持方面的空白,为社区提供了一个可参考的架构范例。
尽管目前仍处于 Alpha 阶段,但 Cast 所倡导的“配置优于提示”、“原生多用户支持”的理念,为下一代 Agent 框架的设计提供了重要的方向指引。
