一起学习 Microsoft kars¶
本教程以九章连续故事跟随四人创业团队 ByteCraft AI:他们必须在不赌上公司 现金流和首位客户源码安全的前提下,发布从 Issue 到 Pull Request 的研发 Agent Forge。每章从一个新的交付问题开始,以工程决策或可验证产物结束。
团队有意识地采用两个框架:
- 使用 OpenClaw 快速完成对话式原型和工具迭代。
- 当流程需要成为明确、可测试的应用代码时,切换到 Microsoft Agent Framework(MAF)Python。
应用框架发生变化时,kars 仍保持一致的 Sandbox、Router、Policy、Audit 和网络 控制。
kars 的运行原理¶
kars 把每个 Agent 视为受治理的 Kubernetes 工作负载。Agent 不拥有独立的外部 网络路径,也不持有生产 Azure 凭据。Sidecar Router 会在转发前评估每项外部操作。
开发者 / CI
|
| 提交 karsSandbox 与 Policy CRD
v
Kubernetes API <------> kars Controller
|
| 持续协调
v
独立 Sandbox Namespace
+--------------------------------------+
| egress-guard(Init Container) |
| |
任务 / 源码 ---->| Agent Runtime,UID 1000 |
| OpenClaw 或 MAF Python |
| | |
| | localhost:8443/8444 |
| v |
| Inference Router,UID 1001 |
| | Policy | Budget | Audit | Auth |
+---|----------------------------------+
|
| 只转发经过批准的外部请求
v
模型提供商 / MCP / 经过批准的服务
组件职责¶
| 组件 | 负责什么 | 不负责什么 |
|---|---|---|
karsSandbox |
声明一个 Agent Runtime、隔离、资源和 Policy 引用 | 不直接决定某次请求是否允许 |
| kars Controller | 监听 CRD,创建 Namespace、Pod、配置、身份资源与 NetworkPolicy | 不位于模型/工具请求数据路径中 |
| Agent Container | 以 UID 1000 运行 OpenClaw、MAF Python 或其他支持的 Runtime | 不应持有生产提供商凭据或直接出口 |
| Egress Guard | 安装规则,强制 Agent 流量进入本地 Router | 是 Safety Net,而不是语义策略引擎 |
| Inference Router | 执行推理、工具、Token 预算、身份、出口与审计决定 | 不判断生成代码是否正确 |
InferencePolicy |
选择模型行为,定义每日与单请求 Token 预算 | 不取代提供商配额或应用循环限制 |
ToolPolicy / McpServer |
控制具名工具、身份元数据、速率限制和 MCP 访问 | 不会让所有已安装工具自动变安全 |
| NetworkPolicy | 限制 Kubernetes 网络影响范围 | 不取代 Router 的主机/操作策略 |
一次请求的完整路径¶
- 开发者向 Agent Runtime 提交需求。
- Runtime 把推理或受治理工具流量发送到 Localhost Router。
- Router 检查相关 Policy;模型、工具、主机或操作未获允许时立即拒绝。
- 对于推理请求,Router 检查单请求与每日 Token 预算。
- 在 AKS 中,Router 通过 Workload Identity 或每 Sandbox Entra Agent ID 获取 平台身份;Agent 不会得到该凭据。
- Router 只把经过批准的请求转发到配置的提供商或服务。
- Router 把决定、Token、延迟和请求元数据写入 Audit Chain,再把响应返回 Agent。
- Kubernetes Status 与 Conditions 显示声明的 Sandbox 和 Policy 是否成功协调。
本地 Docker 模式使用相同 Router 决策代码,但 Agent 与 Router 位于同一容器,
因此它是 Inner Loop 开发界面,而非生产安全边界。本地 Kubernetes
(--target local-k8s)会复现多容器 Pod、UID 分离、Egress Guard、
NetworkPolicy、Controller 与 CRD 模型。AKS 则增加生产身份和可选机密隔离。
资料来源:架构、 CRD 参考 与 Runtime Catalog。
目录¶
- 需求:演示之前先约束产品
- 原型:一切从 OpenClaw 开始
- 开发:保护客户代码仓库
- 平台:把演示变成 Kubernetes 契约
- 治理:控制 Token、工具和出口
- 框架:从 OpenClaw 切换到 MAF Python
- 测试:阻止 Forge 无限修复同一个测试
- 部署:把 Forge 推广到 AKS
- 发布:交付 Issue 到 PR 的完整流程
创业团队¶
| 成员 | 创业团队角色 | 核心关注 |
|---|---|---|
| Maya | 联合创始人兼 AI 工程师 | 交付有用的 Agent 行为 |
| Arun | 产品负责人 | 解决客户的研发瓶颈 |
| Ethan | 平台工程师 | 让环境可重复、可运维 |
| Lina | 安全工程师 | 限制源码、身份、工具、成本与出口 |
约定¶
- 命令使用兼容 POSIX 的 Shell。
- 请替换
<尖括号>中的值。 - 示例使用
kars-system命名空间。 - 默认学习环境为本地 Kubernetes。
- 生产建议以 AKS 为基础。