HasteKit SDK 是 AI Skill Hub 本期精选Agent工作流之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
HasteKit SDK 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
HasteKit SDK 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:go install(推荐) go install github.com/hastekit/hastekit-sdk-go@latest # 方式二:从源码编译 git clone https://github.com/hastekit/hastekit-sdk-go cd hastekit-sdk-go go build -o hastekit-sdk-go . # 方式三:下载预编译二进制 # 访问 Releases 页面下载对应平台二进制文件 # https://github.com/hastekit/hastekit-sdk-go/releases
# 查看帮助 hastekit-sdk-go --help # 基本运行 hastekit-sdk-go [options] <input> # 详细使用说明请查阅文档 # https://github.com/hastekit/hastekit-sdk-go
# hastekit-sdk-go 配置说明 # 查看配置选项 hastekit-sdk-go --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export HASTEKIT_SDK_GO_CONFIG="/path/to/config.yml"
Group the changes under Added, Changed, Fixed, and Removed... The full house style is in references/style.md.
Point the agent at that folder:
go registry, err := hastekit.NewSkillRegistryFromDir("./skills") if err != nil { log.Fatal(err) }
agent := hastekit.NewAgent(&hastekit.AgentConfig{ Name: "Release_Agent", Instruction: hastekit.NewPrompt( "You help maintain this project's releases.", prompts.WithResolver(prompts.DefaultResolvers()...), // ResolveSkills lists them ), Skills: registry, LLM: model, })
The agent lists the skills in its prompt and adds the tool that reads them to its own tools, so a prompt can never advertise a skill the model has no way to open. A prompt runs only the resolvers it is given, so one that leaves out `ResolveSkills` gets a model that never hears about them — see [Prompt resolvers](#prompt-resolvers) below.
The prompt carries only each skill's name and description. The model calls `read_skill` with a name to pull in the instructions, and `read_skill` with a `file` to pull in one of the bundled files — so a long skill costs context only on the turns it is actually used.
Pass several directories to draw from more than one library — a shared set plus this agent's own, say:
go registry, err := hastekit.NewSkillRegistryFromDir("./skills", "/etc/agent/skills")
Reading happens once, at construction. To pick up edits on disk, build a new registry.
#### Shipping skills inside the binary
Where the skills are part of the program rather than of its deployment, `go:embed` puts the whole tree in the binary — no folder to mount, copy, or keep in sync:
go //go:embed skills var skillsFS embed.FS
registry, err := hastekit.NewSkillRegistry(skillsFS)
Embedding the parent folder is enough: a skill is found wherever a `SKILL.md` sits, so there is no `fs.Sub` to get right. `NewSkillRegistry` takes any `fs.FS`, so this is also the hook for skills that come from somewhere else entirely.
#### Rules
The name comes from the frontmatter, or from the folder when the frontmatter omits it. A folder holding a `SKILL.md` is one skill, and everything below it belongs to that skill — so a `SKILL.md` bundled as an example or a template stays a bundled file rather than becoming a second, half-formed skill.
Loading fails loudly on a skill with no description, on broken frontmatter, on a directory that isn't there, and on the same name defined twice. Skills decide how the agent behaves, so a bad one should stop startup rather than go quietly missing at runtime.
Only files a skill actually bundles are reachable through the tool: a path that tries to traverse out of the skill folder is refused, so one skill cannot read another or the rest of the filesystem the skills were read from.
Skills work the same under the Temporal and Restate runtimes: the durable agent registers and wraps the reader tool along with the rest, so a `read_skill` call is journaled like any other tool call and replays from the journal rather than re-reading the folder.
#### Skills from somewhere else
`AgentConfig.Skills` takes an `agents.SkillProvider` — a source that lists its skills, supplies the tool that reads them, and introduces them to the model:
go type SkillProvider interface { Skills() []agents.Skill SkillTool() agents.Tool // nil when the model already has a way to read them SkillHint() string // the prompt's prose: what they are, how to read one }
The agent asks the source for all three, which is what keeps the prompt and the tools in step. `SkillHint` is the whole of the section's prose and goes in verbatim — the resolver writes the `## Skills` heading and the catalogue, nothing else. Only the provider can write that hint honestly: a `SkillRegistry` names its own `read_skill` tool, while a host serving skills its own way names whatever the model actually has. Say nothing and the model gets the bare catalogue, which beats a prompt naming a tool the agent does not have.
A source that returns no tool is one the model can already reach. `agents.SkillList` lists such skills and adds nothing:
go Skills: agents.SkillList{{Name: "changelog", Description: "Write a release changelog entry."}},
`agents.SkillsWithHint` is the same, plus the prose — for a host that serves skill files through a tool of its own:
go Skills: agents.SkillsWithHint{ List: agents.SkillList{{ Name: "changelog", Description: "Write a release changelog entry.", FileLocation: "/skills/changelog/SKILL.md", }}, Hint: "Skills are specialised instructions for particular kinds of work. " + "Read one with the read_file tool at the location listed below.", },
#### Prompt resolvers
The system prompt is built by a chain of resolvers, each handed what the last produced along with the run's dependencies:
go type PromptResolverFn func(prompt string, deps *agents.Dependencies) (string, error)
A prompt starts with an empty chain and is used exactly as written — nothing appended, no templating. `prompts.DefaultResolvers()` is the standard set: `ResolveSkills`, `ResolveHandoffs`, `ResolveDeferredTools`, `ResolveTemplate` — the sections the agent contributes, then the `{{ placeholder }}` pass over the whole thing. Pass what you want, in the order you want; repeated calls accumulate:
go hastekit.NewPrompt("You help maintain this project's releases.", prompts.WithResolver(prompts.DefaultResolvers()...), prompts.WithResolver(func(prompt string, deps *agents.Dependencies) (string, error) { return prompt + "\n\n## House rules\n\nBe brief.", nil }), ) ```
go get -u github.com/hastekit/agent-sdk-go
Requirements: - Go 1.25.0 or higher
高质量的AI工作流SDK,支持多种框架
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ Apache 2.0 — 宽松开源协议,可商用,需保留版权声明和 NOTICE 文件,含专利授权条款。
经综合评估,HasteKit SDK 在Agent工作流赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | hastekit-sdk-go |
| 原始描述 | 开源AI工作流:Open source Golang LLM Proxy, Agent SDK with Restate & Temporal support for dura。⭐12 · Go |
| Topics | aigoagent-sdkworkflow |
| GitHub | https://github.com/hastekit/hastekit-sdk-go |
| License | Apache-2.0 |
| 语言 | Go |
收录时间:2026-06-22 · 更新时间:2026-06-22 · License:Apache-2.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端