1. 项目概述:为什么我们需要一个“能干活”的AI助手
如果你和我一样,已经尝试过市面上不少AI聊天机器人,那你可能也经历过这样的挫败感:当你问一个稍微复杂点的问题,比如“帮我分析一下这个代码仓库的架构,然后写一份重构计划”,AI助手要么给你一个笼统的建议,要么在生成一段代码后就“卡住”了,你需要不断追问和引导,整个过程像在挤牙膏。问题的核心在于,大多数AI助手本质上是一个“问答机”,它们擅长理解和生成文本,但缺乏一个关键的“执行引擎”。它们告诉你“可以这样做”,却无法替你“动手去做”。
这就是我最初接触Kyber时最兴奋的地方。它不是一个简单的聊天界面,而是一个AI智能体运行时。你可以把它理解为一个配备了“双手”和“工具箱”的AI大脑。它不仅能理解你的意图,还能直接调用工具去执行——比如运行终端命令、读写文件、搜索网页、甚至跨机器操作。更关键的是,它能处理多步骤、长时间运行的任务,并且在后台执行时,前端聊天依然保持响应,你可以随时打断、询问进度或下达新指令。这种“边聊边干”的能力,才是将AI从玩具变成生产力工具的关键。
Kyber 的设计哲学很明确:为实际工作流而生。无论是开发者的日常调试、运维的自动化巡检,还是内容工作者的研究整理,它都能作为一个主动的、可执行的协作者嵌入你的工作环境。它支持通过 Discord、Telegram、WhatsApp、Web 仪表盘或命令行等多种方式交互,让你在最习惯的地方启动复杂的工作。接下来,我将深入拆解它的架构、核心功能以及我在实际部署和使用中积累的经验,希望能帮你判断它是否也能成为你的“新宠”。
2. 核心架构与设计理念拆解
2.1 从“聊天机器人”到“智能体运行时”的范式转变
传统AI聊天应用(包括许多基于大语言模型API搭建的Bot)通常采用“请求-响应”的同步模式。你发送一条消息,AI处理并回复,然后会话结束。对于需要多轮交互或外部工具调用的复杂任务,要么由开发者预先编排好复杂的对话流(这很不灵活),要么依赖AI的“思维链”能力在单次回复中规划所有步骤(这极易出错且无法执行)。
Kyber 从根本上改变了这个模式。它引入了一个异步任务执行引擎。当你下达一个指令,如“监控日志并发现错误时通知我”,Kyber 会将其解析并创建为一个或多个后台任务。这些任务拥有独立的状态机(排队、运行、完成、失败、取消),并且可以并行执行。这意味着,一个耗时10分钟的代码编译任务不会阻塞你同时询问另一个无关的问题。这种并发能力是它能处理“真实工作”的基础。
2.2 主机-辐条网络模型:跨机器协作的基石
Kyber 近期架构中一个非常亮眼的更新是支持Host/Spoke(主机-辐条)网络模型。这解决了智能体物理执行边界的问题。
- 场景举例:你的主力开发机是一台MacBook,但你还有一个性能更强的Linux VPS用于跑模型或部署服务。传统方案下,AI助手要么只能操作本地机器,要么你需要通过复杂的SSH隧道或API来桥接。
- Kyber的解决方案:你可以在MacBook(主机)和VPS(辐条)上分别安装Kyber,并将它们配对。配对后,运行在MacBook上的Kyber智能体就获得了“远程视野”和“远程手”。你可以直接对它说:“连接到我的VPS,检查
/var/log/nginx下最新的错误日志,并把摘要发给我。” Kyber智能体会自动判断这个任务更适合在VPS上执行,通过安全的内部通道将指令和所需的工具调用发送到VPS上的Kyber实例,执行完毕后再将结果返回并整合进对话。
这个模型极大地扩展了应用场景。你可以让轻量级的客户端(如树莓派)作为辐条,执行特定的硬件交互或数据采集任务,而由中心主机上的智能体进行决策和汇总。所有配对机器间还可以共享一个分布式笔记本,用于持久化存储上下文和笔记,实现了真正意义上的“跨设备工作空间”。
2.3 工具生态与技能系统:赋予AI“超能力”
Kyber 的核心能力来源于其丰富的内置工具集和可扩展的技能系统。这些工具是智能体与真实世界交互的接口。
内置工具核心类别:
- Shell工具:执行任意系统命令。这是最强大也最需谨慎使用的工具。Kyber通常会要求确认高风险命令,并且其执行是在一个受控的上下文中。
- 文件I/O工具:读取、写入、列出、搜索文件和目录。使得代码分析、配置修改、日志查看成为可能。
- 网络工具:进行网页搜索(通过DuckDuckGo或Serper API)和直接抓取网页内容。这是研究型任务的核心。
- 定时任务工具:内置的Cron调度器。允许你创建周期性任务,例如“每小时检查一次服务器状态并报告”。
- 笔记本工具:提供增删改查操作的持久化存储。用于保存会议记录、项目待办事项、临时代码片段等。
- 远程工具:在配对的辐条机器上执行上述工具操作,实现跨机器工作流。
技能系统:除了内置工具,Kyber 支持安装社区或自建的“技能”。技能是对一个或多个工具和预设提示词的封装,用于解决特定领域问题。例如,一个“Docker管理”技能可能包含检查容器状态、查看日志、重启服务等一系列工具调用和最佳实践逻辑。仪表盘中有专门的技能市场,可以一键安装,这大大降低了使用门槛,让非技术用户也能快速获得专业能力。
3. 从零到一的部署与配置实战
3.1 一分钟安装背后的技术细节
官方宣称的“60秒安装”并非营销噱头。安装脚本install.sh的设计非常精良,它做了以下几件关键事情:
curl -fsSL https://kyber.chat/install.sh | bash- 环境检测:脚本会首先识别你的操作系统(macOS, Linux, WSL)和架构(x86_64, arm64)。这是正确安装依赖和二进制包的前提。
- 依赖管理:它会检查并提示安装系统级依赖,如
curl,git,python3,pip等。对于macOS用户,可能会通过Homebrew安装;对于Linux,则使用apt或yum等包管理器。 - 核心安装:通过Python的pip安装
kyber-chat包。这里选择pip安装而非直接分发二进制,有利于管理Python依赖和后续更新。 - 引导式配置:安装完成后,脚本会自动启动首次运行配置向导。这是最关键的一步,它会引导你:
- 选择AI提供商(OpenAI, Anthropic, OpenRouter等)。
- 输入对应的API密钥。
- 选择默认使用的模型(如gpt-4o, claude-3.5-sonnet等)。
- 安全配置写入:所有敏感的API密钥绝不会被写入普通的JSON或YAML配置文件。向导会将它们写入项目目录下的
.env文件中,并自动设置严格的文件权限(如600),确保只有当前用户可读。这是“安全默认”原则的体现。 - 服务模式设置(可选):脚本会询问你是否将Kyber设置为系统服务(通过systemd或launchd),以便在后台持续运行并开机自启。对于服务器部署,强烈建议开启此选项。
实操心得:虽然安装流程很顺畅,但在国内网络环境下,从PyPI下载
kyber-chat包或某些依赖可能会较慢或失败。一个可靠的备选方案是:先通过git clone从GitHub拉取源码,然后在项目目录内使用pip install -e .进行可编辑模式安装。这样也方便后续追踪最新提交或进行自定义修改。
3.2 多通道连接配置详解
Kyber的强大之处在于你可以通过最熟悉的方式与它交互。以下是如何配置各个通道:
1. Web仪表盘安装完成后,默认会在http://localhost:8080启动Web服务。这是功能最全的管理界面,无需额外配置。你可以在这里聊天、管理任务、配置Cron、安装技能等。
2. Discord Bot
- 在 Discord Developer Portal 创建一个新的应用和Bot。
- 复制Bot的Token。
- 在Kyber的Web仪表盘 “Settings” -> “Channels” -> “Discord” 中,粘贴Token并保存。
- 在Discord开发者门户中,为你的Bot设置所需的权限(如发送消息、读取消息、使用斜杠命令等),并生成OAuth2链接邀请它到你的服务器。
3. Telegram Bot
- 在Telegram中与
@BotFather对话,创建一个新的Bot,获取Token。 - 在Kyber的Web仪表盘 “Settings” -> “Channels” -> “Telegram” 中,粘贴Token。
- 为了让Kyber能接收消息,你需要配置Webhook或使用长轮询。Kyber安装脚本通常会尝试自动设置Webhook(需要你的服务有公网URL)。对于本地开发,更简单的方法是启用“Polling”模式(在高级设置中),但这要求你的Kyber实例能主动访问Telegram API。
4. WhatsApp(通过WhatsApp Business API)
- 配置最为复杂,通常需要Meta开发者账号、电话号码和商业验证。
- Kyber通过集成像
whatsapp-business这样的第三方库或网关服务来实现。你需要在.env文件中配置相关的访问令牌和电话号码ID。 - 除非有明确的商业自动化需求,否则个人用户建议先从Discord或Telegram开始。
5. 命令行界面CLI是最直接的方式。安装后,你可以直接运行kyber chat进入交互式对话,或者使用kyber run “你的指令”来执行单次任务。CLI输出会包含丰富的格式和状态指示,非常适合集成到脚本中。
注意事项:同时开启多个聊天通道时,消息可能会并行处理。虽然Kyber的并发引擎能处理,但如果你在Discord和Web端同时对同一个智能体说话,它可能会交叉处理两个对话的上下文。建议为不同的使用场景(如工作、个人、特定项目)创建不同的“Agent Personas”(代理角色),并在不同通道中指定使用不同的角色,以实现上下文隔离。
3.3 关键安全配置与最佳实践
安全是自动化工具的生命线。Kyber在安全设计上有几个值得称道的点,但用户也需主动加固:
.env文件管理:所有密钥都存在这里。务必确保该文件不在版本控制中(.gitignore已默认包含)。定期检查文件权限是否为600。- 工具执行沙箱:虽然Shell工具功能强大,但Kyber并非在完全隔离的沙箱中运行命令。这意味着,如果AI被诱导或错误地执行了
rm -rf /,会造成真实破坏。** mitigation策略**:- 使用非特权用户运行:永远不要用root用户运行Kyber服务。创建一个专用用户(如
kyber)来运行。 - 限制命令范围:在配置文件中,可以定义允许或禁止的命令模式列表。例如,禁止包含
rm -rf、dd、mkfs等危险模式的命令。 - 善用确认机制:对于文件删除、服务重启等高风险操作,在Kyber的Agent设置中,可以强制要求“高危操作前需人工确认”。
- 使用非特权用户运行:永远不要用root用户运行Kyber服务。创建一个专用用户(如
- 网络访问控制:Kyber的Web工具可以访问任意URL。如果你在受控的内网环境,可能不希望它访问外部互联网。可以在防火墙层面出站规则,或修改Kyber的网络工具配置,限制可访问的域名。
- 定期审计与更新:通过Web仪表盘的“Security Center”定期查看安全扫描报告,了解任务执行历史。关注项目GitHub的Release,及时更新以获取安全补丁和新功能。
4. 高阶工作流与实战案例剖析
4.1 案例一:自动化代码审查与热修复
场景:作为一名全栈开发者,我经常需要在多个微服务仓库间切换。一个常见的需求是,当生产环境监控报警时,快速定位并尝试修复问题。
传统流程:查看报警 -> SSH登录服务器 -> 查看日志 -> 定位代码文件 -> 分析原因 -> 本地修改 -> 测试 -> 提交 -> 部署。整个过程紧张且容易出错。
Kyber工作流:
- 指令:我在项目团队的Discord频道里@Kyber机器人:“生产环境
user-service的登录接口返回500错误,日志显示‘Invalid password hash comparison’。请立刻分析该仓库最新代码,找到可能的问题并提供一个热修复方案,如果修复简单且安全,直接创建补丁分支和PR。” - Kyber的执行分解:
- 步骤1(文件I/O):Kyber智能体首先定位到
user-service的Git仓库目录。 - 步骤2(Shell):运行
git pull获取最新代码。 - 步骤3(文件I/O + 代码理解):使用
grep或类似工具搜索与“password hash”、“comparison”相关的代码文件(如auth.py,utils/security.py)。读取这些文件内容,利用其语言模型能力分析逻辑。 - 步骤4(推理与决策):它可能发现一个函数在比较哈希值时,错误地使用了
!=而不是not constant_time_compare(),导致了时序攻击漏洞或逻辑错误。 - 步骤5(文件I/O):编辑有问题的文件,将错误的比较语句替换为安全的常量时间比较函数。
- 步骤6(Shell):运行项目的单元测试
pytest tests/test_auth.py来验证修复是否破坏现有功能。 - 步骤7(Shell):如果测试通过,创建新分支
hotfix/login-hash-comparison,提交更改。 - 步骤8(Shell + 网络):将分支推送到远程仓库,并利用GitHub CLI或API创建Pull Request,在PR描述中自动填充问题分析和修改内容。
- 步骤9(通知):在整个过程中,Kyber会在Discord频道里实时更新状态:“正在分析代码”、“已定位问题在auth.py第42行”、“修复完成,运行测试中”、“测试通过,PR #123 已创建”。最后,将PR链接发到频道。
- 步骤1(文件I/O):Kyber智能体首先定位到
价值:将原本需要15-30分钟的紧急排查和初步修复流程,压缩到2-3分钟的指令下达和等待时间,并且所有操作留痕,可审查。
4.2 案例二:跨机器数据同步与备份检查
场景:我的个人照片和文档同步在本地NAS和云存储(如Backblaze B2)上。我需要定期检查同步是否完整,并在NAS磁盘空间不足时预警。
传统流程:写一个Shell脚本,用cron定时运行,通过邮件发送报告。调试和修改脚本不够灵活。
Kyber工作流:
- 配置:在我的本地NAS(主机A)和一台具有公网IP的VPS(主机B,用于访问云存储API)上分别安装并配对Kyber。
- 创建Cron任务:在Kyber的Web仪表盘“Cron Jobs”页面,创建一个新任务。
- 调度:
0 2 * * *(每天凌晨2点运行) - 指令:“检查NAS主目录
/volume1/photos和/volume1/docs的文件夹大小,然后通过Backblaze B2 API检查对应桶中文件的数量和总大小,比较两者差异。如果本地大小超过云端的95%,或者本地磁盘剩余空间小于50GB,则在Discord的‘家庭运维’频道发送警告消息。将每次检查的结果摘要记录到共享笔记本的‘备份检查日志’中。”
- 调度:
- Kyber的执行分解(跨机器):
- 步骤1(远程工具):Kyber智能体运行在VPS上,但它通过配对连接,首先在NAS上执行
df -h和du -sh命令,获取磁盘空间和目录大小。 - 步骤2(网络工具):在VPS本地,使用
curl调用Backblaze B2的API(密钥已安全存储在VPS的.env中),获取云存储桶的统计信息。 - 步骤3(计算与逻辑判断):比较数据,判断是否触发警告条件。
- 步骤4(通知):如果触发,通过配置好的Discord通道发送警告。
- 步骤5(笔记本工具):无论是否触发警告,都将本次检查的时间戳、本地大小、云端大小、差异值、磁盘剩余空间等数据,作为一条新记录追加到共享笔记本中。这个笔记本在NAS和VPS上都能看到,形成了统一的日志中心。
- 步骤1(远程工具):Kyber智能体运行在VPS上,但它通过配对连接,首先在NAS上执行
价值:将分散的脚本逻辑(本地命令、远程API调用、条件判断、通知、日志)统一在一个可自然语言配置和管理的智能任务中。修改检查逻辑只需更新任务指令,无需重写和部署脚本。
4.3 案例三:个性化信息聚合与晨报
场景:每天早上,我想快速了解关注的信息:特定主题的新闻、GitHub上收藏仓库的更新、待办事项列表、以及服务器状态。
传统流程:打开多个浏览器标签:Hacker News、GitHub、运维面板、日历,手动浏览。
Kyber工作流:
- 指令:我告诉Kyber:“创建并启用一个每天早上7点运行的Cron任务,任务内容是:1. 从Hacker News和RSS源A获取‘AI’和‘Rust’相关的前5条新闻标题和链接。2. 检查我GitHub星标仓库列表前10个,看看过去24小时有没有新的Release。3. 从共享笔记本的‘每日待办’章节读取今天的任务。4. 检查所有配对机器的服务状态(通过预定义的
systemctl is-active命令列表)。将以上信息整合成一份简洁的Markdown格式报告,发送到我的Telegram私聊和Discord的私人频道。” - Kyber的执行:
- 利用网络工具抓取和解析网页与RSS。
- 使用GitHub API(需配置Token)获取仓库信息。
- 读取笔记本内容。
- 通过远程工具在多台机器上执行状态检查命令。
- 最后,将结构化数据整合成一份格式优美的报告,并通过两个不同的聊天通道发送给我。
价值:将主动信息获取变为被动接收简报,节省大量晨间时间,且简报内容完全可定制。
5. 深入核心:任务并发、状态管理与故障排查
5.1 并发模型是如何工作的?
Kyber的并发不是简单的多线程。它基于异步I/O和任务队列构建。当你从任何通道发送消息时,消息会被放入一个中央任务队列。一个或多个“工作器”会从队列中取出任务进行处理。
- 关键设计:每个任务的处理过程(即AI的“思考”和“工具调用”)是可中断的。当AI调用一个需要等待的工具时(如一个运行2分钟的Shell命令),任务状态会被持久化,工作器可以释放出来处理队列中的新消息。等Shell命令执行完毕,结果返回,该任务会被重新调度,AI接着处理下一步。这确保了即使有长任务运行,聊天界面也绝不会“卡死无响应”。
- 仪表盘中的体现:在Web界面的“Tasks”面板,你可以看到所有任务的状态(Queued, Running, Completed, Failed, Cancelled),并且可以点击进入实时查看某个运行中任务的详细步骤日志,就像看一个流水线一样清晰。
5.2 如何有效地管理和取消任务?
误操作或任务进入死循环时,取消功能至关重要。
- 从Web仪表盘取消:在“Tasks”列表或任务详情页,每个运行中的任务都有一个红色的“Cancel”按钮。点击后,Kyber会尝试向该任务发送终止信号。
- 从聊天通道取消:你可以直接发送消息“取消任务[任务ID]”或“取消最后一个任务”。Kyber会识别并执行。
- 取消的传播:如果任务正在执行一个Shell命令,Kyber会尝试向该命令进程发送SIGTERM信号。对于更复杂的多步骤任务,取消信号会阻止后续步骤的执行。取消后,任务状态变为“Cancelled”,并会生成一个简要的原因说明。
实操心得:不是所有工具调用都能被完美取消。例如,一个已经发出的HTTP请求,如果服务器响应慢,可能无法中断。最可靠的方式是在编写自定义技能或复杂指令时,让AI将大任务拆分成可检查点式的小步骤,并在步骤间加入“用户是否要求继续?”的确认点。
5.3 常见问题与排查指南
即使设计再完善,在实际部署中也会遇到问题。以下是我遇到的一些典型情况及解决方法:
问题1:安装后启动失败,提示“端口8080被占用”或“数据库连接错误”。
- 排查:Kyber默认使用8080端口和SQLite数据库(位于安装目录下的
kyber.db)。 - 解决:
- 端口冲突:可以通过环境变量
KYBER_WEB_PORT指定其他端口,如KYBER_WEB_PORT=9090 kyber start。 - 数据库错误:检查
kyber.db文件的权限,确保运行Kyber的用户有读写权限。如果是升级后出现,尝试备份后删除旧数据库文件(首次启动会自动重建),但会丢失历史任务记录。
- 端口冲突:可以通过环境变量
问题2:AI提供商的API调用频繁失败或超时。
- 排查:首先在Web仪表盘的“Providers”设置页面测试API连接是否正常。查看Kyber的日志(通常输出到控制台或系统日志,如
journalctl -u kyber)。 - 解决:
- 网络问题:如果使用OpenAI等境外服务,确保网络连通性。考虑在配置中使用代理(在
.env中设置HTTP_PROXY和HTTPS_PROXY)。 - 额度或频次限制:检查API账户的余额和速率限制。Kyber目前不支持自动切换备胎提供商,但你可以手动在仪表盘中快速切换另一个已配置的提供商。
- 模型不可用:有时特定模型可能临时下线。在配置中尝试换一个模型,如从
gpt-4-turbo-preview切换到gpt-4o。
- 网络问题:如果使用OpenAI等境外服务,确保网络连通性。考虑在配置中使用代理(在
问题3:Shell命令执行成功,但AI无法正确理解输出结果。
- 排查:这通常是命令输出格式过于复杂或冗长,超出了AI模型的上下文处理能力,或者输出中包含特殊字符导致解析混乱。
- 解决:
- 优化命令输出:在指令中引导AI使用更简洁的命令。例如,不说“列出所有文件”,而说“使用
ls -la | head -20列出前20个文件”。 - 使用文本处理工具:让AI在调用Shell命令后,紧接着用
grep,awk,jq(用于JSON) 等工具过滤和格式化输出,再将清晰的结果交给AI分析。例如:“运行docker ps --format “table {{.Names}}\t{{.Status}}”来获取容器状态。” - 分步执行:对于需要分析大量日志的任务,让AI先
tail -n 100查看最后100行,而不是一次性cat整个文件。
- 优化命令输出:在指令中引导AI使用更简洁的命令。例如,不说“列出所有文件”,而说“使用
问题4:跨机器配对失败,提示连接错误。
- 排查:配对需要主机能访问辐条机器的指定端口(默认为8080),且防火墙规则允许。
- 解决:
- 检查网络连通性:从主机
ping或telnet辐条机器的IP和端口。 - 验证配对码:在辐条机器的Kyber Web仪表盘“Network”页面生成配对码,在主机上输入时确保完全一致,无多余空格。
- 检查服务绑定:确保辐条机器上的Kyber服务绑定在
0.0.0.0而非127.0.0.1(可通过启动参数或环境变量KYBER_WEB_HOST=0.0.0.0设置)。 - 考虑反向代理或隧道:对于没有公网IP的机器,可以使用
frp,ngrok或云服务商的内网穿透功能,将辐条机器的端口暴露给主机。
- 检查网络连通性:从主机
问题5:Cron任务没有按预期执行。
- 排查:首先确认Kyber服务本身在持续运行(服务模式)。然后去Web仪表盘的“Cron Jobs”页面查看该任务的上次执行时间和状态。
- 解决:
- 检查Cron表达式:Kyber使用的Cron语法是标准的Unix Cron格式。使用在线Cron表达式验证器检查你的表达式是否正确。
- 查看任务日志:点击Cron任务旁边的“执行历史”,查看具体某次运行的详细日志,看是否有错误信息。
- 时区问题:确保运行Kyber的服务器系统时区设置正确,Cron调度是基于系统时间的。
6. 性能调优与生产环境部署建议
对于个人使用,Kyber在树莓派或旧笔记本上都能运行良好。但如果你计划用于团队或处理高频率任务,以下几点优化建议值得参考:
- 数据库后端:默认的SQLite在轻负载下没问题,但并发任务多时可能成为瓶颈。Kyber支持切换到PostgreSQL。只需在
.env文件中设置DATABASE_URL=postgresql://user:password@localhost/kyberdb,并在首次启动前初始化数据库。PostgreSQL能显著提升任务队列的处理能力和可靠性。 - 模型选择与成本控制:
- 复杂任务用强模型:对于需要深度推理、代码生成或复杂规划的任务,使用GPT-4、Claude 3.5 Sonnet等顶级模型。
- 简单任务用轻量模型:对于信息查询、格式化、简单分类等任务,可以切换到GPT-3.5-Turbo或Claude Haiku,成本大幅降低。
- 利用OpenRouter:OpenRouter聚合了众多模型提供商,方便比价和切换。你可以在Kyber中配置OpenRouter作为Provider,然后在仪表盘中根据任务需求灵活选择性价比最高的模型。
- 资源限制:在
.env文件中,可以设置KYBER_MAX_WORKERS来控制并发工作线程数,避免同时运行过多任务耗尽内存或CPU。对于文件I/O和网络工具,也可以设置超时时间,防止单个任务挂起。 - 高可用考虑(进阶):虽然单实例已足够稳定,对于关键业务,可以考虑在负载均衡器后部署多个Kyber工作节点,并共享同一个PostgreSQL数据库和Redis(用于缓存和消息队列,如果未来版本支持)。这样即使一个节点宕机,其他节点也能接管任务。
7. 技能开发与生态扩展
Kyber的真正潜力在于其可扩展性。当你发现某个工作流反复出现时,就可以考虑将其封装成一个“技能”。
一个简单的技能开发示例:查询天气假设我们想创建一个weather技能,它接收一个城市名作为输入,返回天气信息。
创建技能目录结构:
kyber-weather-skill/ ├── skill.yaml # 技能元数据 ├── tools.py # 工具函数定义 └── prompts.yaml # 系统提示词定义技能元数据 (
skill.yaml):name: weather version: 1.0.0 author: Your Name description: Get current weather for a city. entry_point: tools.get_weather # 指向主要工具函数实现工具函数 (
tools.py):import requests from typing import Dict, Any def get_weather(city: str) -> Dict[str, Any]: """ Fetches current weather for a given city. Args: city: Name of the city (e.g., 'Beijing'). Returns: A dictionary containing weather details. """ # 这里使用一个假设的天气API,实际需替换为真实API(如OpenWeatherMap) # 注意:API密钥应通过环境变量管理,不要硬编码! api_key = os.getenv("WEATHER_API_KEY") if not api_key: return {"error": "Weather API key not configured."} url = f"https://api.weatherapi.com/v1/current.json?key={api_key}&q={city}" try: response = requests.get(url, timeout=10) response.raise_for_status() data = response.json() # 提取并格式化我们需要的信息 return { "city": data["location"]["name"], "condition": data["current"]["condition"]["text"], "temp_c": data["current"]["temp_c"], "humidity": data["current"]["humidity"], "wind_kph": data["current"]["wind_kph"] } except requests.exceptions.RequestException as e: return {"error": f"Failed to fetch weather: {str(e)}"}编写提示词 (
prompts.yaml):system: | You are a helpful weather assistant. When the user asks about the weather in a city, use the `get_weather` tool to fetch the data and present it in a friendly, concise format. If the city is not found or there's an error, apologize and explain what went wrong.安装与使用:将整个文件夹放入Kyber的
skills目录(通常位于~/.kyber/skills或安装目录下的skills文件夹),或者在Web仪表盘的“Skills”页面通过“Install from Folder”加载。加载后,你就可以直接对Kyber说:“使用weather技能,查询北京的天气。”
通过开发技能,你可以将任何API、脚本或复杂流程封装成AI可以轻松调用的模块,不断扩展Kyber的能力边界。社区也在不断贡献各种技能,从数据库查询到社交媒体管理,生态逐渐丰富。
从我几个月的深度使用来看,Kyber代表了一类新型的AI应用范式:它不满足于仅仅回答问题,而是立志成为你数字世界中的一名“执行伙伴”。它的学习曲线比简单的聊天机器人要陡峭,需要你理解一些基本的运维概念和工具原理。但一旦你跨越了这个门槛,它所带来的自动化能力和效率提升是颠覆性的。你可以从一个小而具体的自动化任务开始,比如每日备份检查,逐渐扩展到更复杂的工作流。它的多通道接入和跨机器能力,使得它能够无缝融入你现有的工作环境,而不是强迫你改变习惯。如果你已经厌倦了和“光说不练”的AI助手对话,并渴望一个能真正动手帮你解决问题的智能协作者,那么Kyber绝对值得你投入时间深入探索。