我们构建了Kontext CLI,因为AI编码代理需要访问GitHub、Stripe、数据库以及其他数十种服务——而目前大多数团队通过将长期有效的API密钥复制粘贴到.env文件或实际的聊天界面中来处理此问题,同时寄希望于一切顺利。
问题不仅仅是秘密的扩散。更重要的是,没有访问的来源追踪。你不知道哪个开发者启动了哪个代理,它访问了什么,或者是否应该被允许访问。当你将原始凭证交给一个进程时,你就失去了执行政策、审计访问或轻松更换凭证的能力。凭证就是授权,当自主代理每个会话进行数百次API调用时,这种方式在根本上是有问题的。
Kontext采取了不同的方法。你在一个.env.kontext文件中声明一个项目所需的凭证:
```
GITHUB_TOKEN={{kontext:github}}
STRIPE_KEY={{kontext:stripe}}
LINEAR_TOKEN={{kontext:linear}}
```
然后运行`kontext start --agent claude`。CLI通过OIDC进行身份验证,对于每个占位符:如果服务支持OAuth,它会通过RFC 8693令牌交换将占位符替换为短期访问令牌;对于静态API密钥,后端会将凭证直接注入到代理的运行环境中。无论哪种方式,凭证仅在会话期间存在于内存中——从未写入你机器上的磁盘。每个工具调用在代理运行时都会被流式记录以便审计。
最接近的类比是安全令牌服务(STS):你只需进行一次身份验证,后端动态生成短期、范围限定的凭证——但与传统STS不同的是,我们持有上游的秘密,因此没有长期有效的凭证会到达代理。后端持有你的OAuth刷新令牌和API密钥;CLI从未见过它们。它返回的是针对会话的短期访问令牌。
CLI为每个工具调用捕获的信息包括:代理尝试做了什么、发生了什么、是否被允许,以及是谁执行的——这些信息都归属于某个用户、会话和组织。
只需一条命令即可安装:`brew install kontext-dev/tap/kontext`
CLI使用Go编写(每个工具调用大约5毫秒的钩子开销),使用ConnectRPC进行后端通信,并将身份验证信息存储在系统密钥环中。今天支持Claude Code,Codex支持即将推出。
我们接下来将致力于服务器端的政策执行——每个工具调用的允许/拒绝决策的基础设施已经搭建好,我们只需完善流程,以便工具调用也可以被拒绝。
我们非常希望能听到你们对这种方法的反馈。特别想了解的是:团队目前是如何处理AI代理的凭证管理的?你们只是将环境变量粘贴到代理聊天中,还是找到了更好的解决方案?
GitHub: [https://github.com/kontext-dev/kontext-cli](https://github.com/kontext-dev/kontext-cli)
网站: [https://kontext.security](https://kontext.security)
返回首页
最新
自周六以来,我注意到这个模式,Claude Code在处理最基本的问题时,思考时间达到3-5分钟以上,版本为4.6。<p>这是否与他们降低缓存TTL有关呢?
编码代理让一切再次感觉快速——除了管理发布的二进制文件。<p>像这样的操作应该是你可以从终端运行的真实命令:<p>- “将登录修复部署到预发布环境”<p>- “生产环境和预发布环境之间的功能差异是什么?”<p>- “当任何安全修复发布到生产环境时通知我”<p>- “将Jen的最后一次更改推广到预发布环境”<p>- “与Acme的合作伙伴分享新的Beta API SDK”<p>这就是Fly所做的。<p>每当CI运行将工件推送到Fly注册表时,它就会创建一个发布——包括生成的二进制文件、AI生成的摘要、捕获的架构决策、合并的PR和提交。所有这些都是可搜索的。因此,当你问你的代理“我们什么时候发布了连接超时的修复”时,它会在所有这些信息中进行语义搜索,并找到正确的证据。没有版本号,没有翻阅运行ID,没有Git哈希。<p>Fly还理解你的运行环境,并与你的编码代理已经知道的任何部署框架(如Argo CD、Flux等)协同工作。它自动跟踪通过这些框架部署的内容,因此“现在生产环境中的最新更改是什么”会得到真实的答案。<p>还有一些其他值得了解的事项:<p>- 与你的GitHub仓库开箱即用的集成<p>- 通过MCP与Claude Code、Cursor、Codex等协同工作<p>- 无代理集成你的运行环境<p>- 以自然语言发送Slack通知——Fly监控发布,并在某些内容匹配时提供上下文通知<p>- 在后台运行Artifactory作为可扩展的包注册表<p>- 支持Docker、Helm、npm、PyPI、Maven、Gradle、Go和.NET,更多包类型正在添加中<p>- 一旦安装,你的包管理器就可以正常工作:npm publish、pip install、docker push——所有操作都自动通过你的私有Fly注册表路由。无需编辑.npmrc,无需处理令牌<p>试用一下,升级你管理发布二进制文件的方式——最终获得对实际运行内容的真实可见性。很高兴深入讨论它是如何工作的,处理了什么,以及我们接下来要去哪里。<p><a href="https://jfrog.com/fly" rel="nofollow">https://jfrog.com/fly</a>