Show HN: Kontext CLI – Credential broker for AI coding agents in Go | 海外技术热榜
原文链接
🔗 Show HN: Kontext CLI – Credential broker for AI coding agents in Go
翻译说明
本文翻译自Hacker News最新热门技术文章,内容仅供学习参考,版权归原作者所有。
完整翻译内容
跳到内容 导航菜单 切换导航 登录 外观设置 - 平台 - AI 代码创建 - GitHub Copilot 使用 AI 编写更好的代码 - GitHub Spark构建和部署智能应用程序 - GitHub 模型管理和比较提示 - MCP 注册表^(新)集成外部工具 - 开发人员工作流程 - 操作自动化任何工作流程 - Codespaces即时开发环境 - 问题计划和跟踪工作 - 代码审查管理代码更改 - 应用程序安全 - GitHub 高级安全性查找并修复漏洞 - 代码安全性在构建时保护您的代码 - 秘密保护在泄漏开始之前阻止泄漏 - 探索 - 为什么选择 GitHub - 文档 - 博客 - 变更日志 - Marketplace 查看所有功能 - 解决方案 - 按公司规模 - 企业 - 中小型团队 - 初创公司 - 非营利组织 - 按使用案例 - 应用程序现代化 - DevSecOps - DevOps - CI/CD - 查看所有用例 - 按行业 - 医疗保健- 金融服务 - 制造业 - 政府 - 查看所有行业 查看所有解决方案 - 资源 - 按主题探索 - 人工智能 - 软件开发 - 开发运营 - 安全性 - 查看所有主题 - 按类型探索 - 客户案例 - 活动和网络研讨会 - 电子书和报告 - 业务见解 - GitHub 技能 - 支持和服务 - 文档 - 客户支持 - 社区论坛 - 信任中心 - 合作伙伴 查看所有内容来源 - 开源 - 社区 - GitHub SponsorsFund 开源开发人员 - 项目 - 安全实验室 - 维护者社区 - 加速器 - GitHub Stars - 存档计划 - 存储库 - 主题 - 趋势 - 集合 - 企业 - 企业解决方案 - 企业平台人工智能驱动的开发者平台 - 可用的附加组件 - GitHub 高级安全性企业级安全功能 - Copilot for Business 企业级 AI 功能 - 高级支持企业级 24/7 支持 - 定价 搜索或跳转到... 搜索代码、存储库、用户、问题、拉取请求... 搜索 清除搜索语法提示 提供反馈 我们会阅读每条反馈,并非常认真地对待您的输入。 请附上我的电子邮件地址,以便与我联系 取消 提交反馈 已保存的搜索 使用已保存的搜索更快地筛选结果 姓名查询 要查看所有可用的限定符,请参阅我们的文档。 取消 创建已保存的搜索 登录 注册 外观设置 重置焦点 您已使用其他选项卡或窗口登录。重新加载以刷新您的会话。您在另一个选项卡或窗口中注销。重新加载以刷新您的会话。您在另一个选项卡或窗口上切换了帐户。重新加载以刷新您的会话。 解除警报 {{ message }} kontext-security / kontext-cli 公开 - 通知 您必须登录才能更改通知设置 - Fork 1 - Star 79 - 代码 - 问题 12 - 拉取请求 7 - 操作 - 模型 - 安全和质量 0 - 见解 其他导航选项 - 代码 - 问题 - 拉取请求 - 操作 - 模型 - 安全和质量 - 见解 kontext-security/kontext-cli 主分支 标签 转到文件代码打开更多操作菜单 文件夹和文件 Na我名称 最后一次提交消息 最后一次提交日期 最新提交 历史记录 47 次提交 47 次提交 .github .github 资产 asset cmd/kontext cmd/kontext gen/kontext/agent/v1 gen/kontext/agent/v1 内部 内部 脚本 脚本 .gitignore .gitignore .goreleaser.yaml .goreleaser.yaml .release-please-manifest.json .release-please-manifest.json CHANGELOG.md CHANGELOG.md CODE_OF_CONDUCT.md CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTING.md 许可证 许可证 README.md README.md SECURITY.md SECURITY.md SUPPORT.md SUPPORT.md buf.gen.yaml buf.gen.yaml buf.yaml buf.yaml go.mod go.mod go.sum go.sum release-please-config.json release-please-config.json 查看所有文件 存储库文件导航 - 自述文件 - 行为准则 - 贡献 - MIT 许可证 - 安全性 [Kontext CLI 横幅] Kontext CLI 存储凭证。在运行时注入。代理从不存储密钥。 网站 · 文档 · Discord 什么是 Kontext CLI? Kontext CLI 是一款开源命令行工具,它将 AI 编码代理与企业级身份、凭证管理和治理结合在一起,而无需改变开发人员的工作方式。 我们为何构建它:AI 编码代理需要访问 GitHub、Stripe、数据库和数十种其他服务。如今,团队将长期存在的 API 密钥复制粘贴到 .env 文件中,并希望得到最好的结果。 Kontext 将其替换为短期的、有范围的凭据,这些凭据在会话开始时注入,并在会话结束时消失。每个工具调用都会被记录。每个秘密都被考虑在内。 工作原理:您可以在单个 .env.kontext 文件中声明您的项目需要哪些凭据。当您运行 kontext start 时,CLI 对您进行身份验证,通过 RFC 8693 令牌交换将占位符交换为短期令牌,使用注入的这些凭据启动代理,并将每个工具调用流式传输到 Kontext 仪表板进行审核和治理。当会话结束时,凭据自动过期。 快速入门 brew install kontext-security/tap/kontext 如果您更喜欢直接二进制安装,请下载最新的 GitHub 版本: tmpdir="(mktemp -d)" \ && gh release download --repo kontext-security/kontext-cli --pattern 'kontext_*_darwin_arm64.tar.gz' --dir "tmpdir" \ && archive="tmpdir" -maxdepth 1 -name 'kontext_*_darwin_arm64.tar.gz' -print -quit)" \ && tar -xzf "tmpdir" \ && sudo install -m 0755 "tmpdir/kontext" /usr/local/bin/kontext 然后,从安装了 Claude Code 的任何项目目录中: kontext start --agent claude 就是这样。首次运行时,CLI 以交互方式处理所有事情 — 登录、提供商连接、凭证解析。随时运行 kontext logout 以从系统密钥环中清除存储的 OIDC 会话。 工作原理 kontext start --agent claude 1. 身份验证 — 打开浏览器以进行 OIDC 登录,将刷新令牌存储在系统密钥环中,并让您稍后通过 kontext 注销将其清除 2. 创建会话 — 向 Kontext 后端注册,在仪表板中可见 3. 解析凭证 — 读取 .env.kontext,交换短期令牌的占位符 4. 启动代理 — 生成 Claude 代码,并将凭证注入为env vars + 治理挂钩 5. 捕获挂钩事件 — PreToolUse、PostToolUse 和 UserPromptSubmit 事件流式传输到后端 6. 彻底拆除 — 会话结束、凭据过期、临时文件删除 功能 - 启动 Claude 代码的一个命令:kontext start --agent claude — 无配置文件、无 Docker、无设置脚本 - 临时凭证:会话范围内的短期令牌,退出时自动过期。 .env 文件中不再存在长期存在的 API 密钥 - 声明性凭证模板:将 .env.kontext 提交到您的存储库,团队中的每个开发人员都可以获得相同的凭证设置,而无需共享机密 - 治理遥测:Claude hook 事件通过用户、会话和组织属性流式传输到后端 - 默认情况下安全:OIDC 身份验证、系统密钥环存储、RFC 8693 令牌交换、静态 AES-256-GCM 加密 - 精益运行时:本机 Go 二进制文件,无需本地守护程序安装,无需 Node/Python 运行时 - 更新通知:在 kontext 启动时,后台检查会查询公共 GitHub 版本 API(缓存 24 小时,从不阻止启动)。使用 KONTEXT_NO_UPDATE_CHECK=1 禁用声明凭据 .env.kontext 文件声明项目需要什么凭据: GITHUB_TOKEN={{kontext:github}} STRIPE_KEY={{kontext:stripe}} DATABASE_URL={{kontext:postgres/prod-readonly}} 将其提交到您的存储库 — 整个团队共享相同的模板。秘密保留在 Kontext 中,而不是在源代码管理中。 支持的代理 代理标志状态 ------------- ---------------- -------- Claude Code --agent claude Active Cursor 和 Codex 支持已计划,但尚未在此存储库中提供。 架构 kontext start --agent claude │ ├── Auth:来自密钥环的 OIDC 刷新令牌 ├── ConnectRPC:CreateSession → 仪表板中的会话 ├── Sidecar:Unix 套接字服务器(kontext.sock) │ └── 心跳循环(30 秒) ├── 钩子:settings.json → Claude Code --settings ├── 代理:使用注入的 env 生成 claude │ │ │ ├── [PreToolUse] → kontext hook → sidecar → backend │ ├── [PostToolUse] → kontext hook → sidecar → backend │ └── [UserPromptSubmit] → kontext hook → sidecar → backend │ └── 退出时:EndSession → cleanup Go sidecar:轻量级 sidecar 进程与代理一起运行,并通过 Unix 套接字进行通信。挂钩处理程序通过 sidecar 发送标准化事件,以便 CLI 可以将代理特定的逻辑保留在后端合约之外。 治理遥测:会话生命周期和挂钩事件流向 Kontext 后端,为数据提供动力包含会话、跟踪和审核历史记录的 shboard。 CLI 捕获代理尝试执行的操作以及发生的情况,但从不捕获 LLM 推理、令牌使用情况或对话历史记录。 Development # Build go build -o bin/kontext ./cmd/kontext # 生成 protobuf (需要 buf + 插件) buf generated # 测试 go test ./... go test -race ./... go vet ./... gofmt -w ./cmd ./internal # 本地使用链接 ln -sf (pwd)/bin/kontext ~/.local/bin/kontext 协议服务定义: kontext-security/proto agent.proto CLI 仅通过 ConnectRPC 与 Kontext 后端通信。 Hook 处理程序使用长度前缀的 JSON 通过 Unix 套接字与 sidecar 进行通信。 许可证 MIT 支持 请参阅 SUPPORT.md 了解正确的支持渠道。 关于 AI 编码代理的开源 CLI。让您的编码代理在不暴露密钥的情况下访问服务。 主题 cli golang 安全 ai mcp 秘密管理 grpc 开发人员工具 oidc 安全工具 ai-代理 kontext 审核日志记录 凭证管理 资源 自述文件 许可证 MIT 许可证 行为准则 行为准则 贡献 贡献 安全策略 安全策略 呃哦! 加载时出错。请重新加载此页面。 活动 自定义属性 星星 79 颗星星 观察者 0 正在观看 分叉 1 分叉 报告存储库 版本 5 v0.2.2 最新版本 2026 年 4 月 14 日 + 4 版本 软件包 0 呃哦! 加载时出错。请重新加载此页面。 呃哦! 加载时出错。请重新加载此页面。 贡献者- - - 呃哦! 加载时出错。请重新加载此页面。 语言 - Go 97.1% - Shell 2.9% 页脚 © 2026 GitHub, Inc. 页脚导航 - 条款 - 隐私 - 安全 - 状态 - 社区 - 文档 - 联系人 - 管理 cookie - 请勿共享我的个人信息 您目前无法执行该操作。
翻译声明:本文由AI自动翻译,如有不准确之处欢迎指正
🙏 如果本文对你有帮助,欢迎打赏支持,你的鼓励是我持续输出优质内容的最大动力! 💴 打赏通道:点击文章末尾「赞赏」按钮即可,每一分支持都是我前进的动力~