首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

显示 HN:Kastor – AI 代理的 Terraform 风格规范

2026-07-08 1 阅读 约8分钟阅读 weirdguy
分享:
字号:
Kastor Kastor 是“人工智能代理的 Terraform”。如今,代理是在框架(LangGraph、CrewAI)内强制定义的,或者在平台 UI(OpenAI 助手、Bedrock Agents)中一起单击的,不存在供应商中立、可版本化、可审查的事实来源。 Kastor 提供了一种:类型化的声明性规范(HCL 中的 .agent 、 .tool 、 .prompt 文件)和具有两条路径的 Go 工具链 — kastor build 为目标框架生成可运行项目,kastor plan / kastor apply 协调代理作为托管平台上的长期资源,具有状态、差异和偏差检测。完整的设计位于 SPEC.md 中。 Status Kastor 是一个早期的概念证明。今天工作:解析 .agent 、 .tool 、 .prompt 和 kastor.hcl 验证引用和提示变量构建可运行的 LangGraph 项目示例:天气代理、内容调度程序代理 计划 v0:kastor 计划/应用本地状态文件和偏差检测 部署到 aws/azure 平台。这不是另一个代理运行时/框架。示例 Kastor 中的代理是一个小型声明性规范: agent "weather" { description = "Answers Weather questions for a location and date" model = model 。快速系统提示=提示。天气系统工具 = [ 工具 . web_search ] input "location" { type = string description = " 获取天气的位置 " } input "date" { type = string optional = true } output "weather" { type = string } } 安装 Homebrew:brew tap fancyGuy/tap && brew install kastor 安装脚本(验证版本校验和,安装到 /usr/local/bin 或 ~/.local/bin ,从不 sudo):curl -fsSL https://raw.githubusercontent.com/weirdGuy/kastor/main/scripts/install.sh | sh 使用 Go 1.26+: go install github.com/weirdGuy/kastor/cmd/kastor@latest 或者从发布页面下载适合您平台的存档,根据 checksums.txt 进行验证,然后将 kastor 二进制文件放在您的 PATH 上。快速入门:构建天气示例先决条件:Go 1.26+、Python 3.11+、OpenAI API 密钥和 Tavily API 密钥(示例的搜索工具针对 Tavily 托管的 MCP 服务器运行)。将规范编译为 LangGraph 项目: go build ./cmd/kastor ./kastor validate Examples/weather/ ./kastor build Examples/weather/ kastor build 将生成的项目写入 example/weather/gen/langgraph (目标声明的输出)。生成的输出未提交:它可以从规范中重现,并且代码生成确定性由测试强制执行。设置生成的项目: cd Examples/weather/gen/langgraph python3 -m venv .venv 。 .venv/bin/activate pip install -rrequirements.txt 该示例的 web_search 工具通过其规范 URI mcp://search-server/tavily_search 固定到 MCP 服务器和工具。如何访问该服务器是部署配置,而不是规范:在工作目录中创建 mcp_servers.json (或将 KASTOR_MCP_CONFIG 环境变量指向其他位置的文件)。对于 Tavily 的托管服务器: { "search-server" : { "transport" : " Streamable_http " , "url" : " https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR-KEY " } } URL 嵌入了您的 API 密钥,这就是 mcp_servers.json 被 gitignored 的原因 — 将其视为秘密,切勿提交。另请注意,规范 URI 的最后一个路径段 ( tavilly_search ) 必须命名服务器实际通告的工具,否则调用会失败并显示“不公开工具”。导出模型凭证(示例的模型“fast”块使用提供程序 openai ): export OPENAI_API_KEY=sk-... 运行代理: python3 main.py Weather --inputs ' {"location": "Lisbon", "date": "tomorrow"} ' 它将代理声明的输出合约打印为 JSON: { "weather" : " ... " } gen/langgraph 内生成的 README.md 拥有完整运行项目端:每个代理的输入和输出、工具绑定和 MCP 配置。一个 v0 警告(SPEC.md §3.2/§4):agent.weather 的可选 Forecast_context 输入引用 agent.forecast 的输出。该引用在编译时进行验证并排序依赖关系图,但生成的代码不会为您运行上游代理 - 如果您需要上下文,请自行运行预测并通过 --inputs 传递其摘要。开发 go build ./... # 构建一切 go test ./... # 运行所有测试 SPEC.md 是设计决策的真相来源; CLAUDE.md 记录了日常约定。早期反馈 我目前正在寻找在生产中构建代理或尝试代理工具的人们的反馈。如果您想关注该项目或讨论设计:加注星标/观看存储库以获取更新 打开问题以获取错误或设计反馈 加入早期 Discord:邀请
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱