使用OpenClaw的Skills对接本地系统

使用OpenClaw的Skills对接本地系统

2026年了,养虾了吗?能对接本地系统的方法了解下?

Skills听说过吧,AI圈里整天都在讨论的,,今天我们就通过它来让OpenClaw有能力对接我们本地的系统。
此篇仅提供思路,由于目前OpenClaw不太建议在生产环境使用,并且其能力范围可能远超我们的想象,所以这里只做演示用,实际项目中落地请一定要慎重。

为了演示方便,我利用先前我的一篇随笔,是介绍如何通过LangChain Agent的Tools来为销售团队制定培训和考试内容的:
利用AI Agent,辅助销售团队制定培训和考试内容
https://www.cnblogs.com/aspnetx/p/19242559

主要的方法就是将访问本地系统的方法封装成一个python函数,然后把其作为Agent的Tool,提供给AI,让其决定根据用户的指令,如何利用这些Tools来完成任务。

接下来我们来演示,如何使用OpenClaw的Skills来实现同样的功能,这也是使用任何Agent,包括Openclaw对接本地应用系统的一种方式。

首先,创建Skill。作为一个Agent,它是不知道为了回答特定的问题,该去如何获取相应的数据来完成任务的,Skill就可以帮其完成这个任务。
然而这个Skill我们不需要自己手动去写,我们可以让OpenClaw帮助我们来完成。

比如我可以给OpenClaw下达一个任务:

请根据以下文章里的内容,帮我创建技能: https://www.cnblogs.com/aspnetx/p/19242559 

这里你可以懒到,把先前的python代码给它,或者直接让它去我的博客里去读。
技能生成好了之后它会跟你确认是否安装,回复安装即可完成技能的导入。

在OpenClaw的目录中,我们可以看到这个Skill成功安装,并且也可以看到对应的Python代码文件也放到了Scripts目录下。
以下可以看到OpenClaw生成的SKill的markdown文件:

--- name: sales-training-agent description: 根据销售评测结果自动分析培训需求,生成个性化培训内容并创建对应的考试题目。Use when需要为销售团队生成培训材料、根据评测结果规划培训计划、或自动生成销售培训考试题目的场景。 --- # Sales Training Agent 自动分析销售评测结果,生成个性化培训内容和对应的考试题目。 ## 功能特点 - 自动获取销售团队名单和评测规则 - 查询每个销售的评测分数,判断是否需要培训 - 根据不及格项目自动加载对应的培训内容 - 使用大模型为每个培训主题生成针对性的考试题目 - 完全遵循人工思考流程,依次调用工具获取信息 ## 包含的工具函数 | 函数 | 功能 | |------|------| | `get_sales()` | 获取销售列表 | | `get_salespolicy()` | 获取评测规则(低于60分需要重新培训) | | `get_salesscore(salesname)` | 获取指定销售的各项评测分数 | | `get_trainingcontent(trainiggroup)` | 根据培训分组获取培训内容(产品信息/话术技巧/拜访流程) | ## 目录结构 ``` sales-training-agent/ ├── SKILL.md └── scripts/ └── sales_training_agent.py ``` ## 使用方法 ```bash cd /Users/xxx/.openclaw/workspace/skills/sales-training-agent/scripts python sales_training_agent.py ``` 脚本会运行Agent并输出完整的推理过程,包括: 1. 获取评测规则 2. 获取销售列表 3. 查询每个人的评测分数 4. 分析哪些人需要哪些培训 5. 获取对应培训内容 ## 依赖 需要安装: - langchain >= 1.0 - volcenginesdkarkruntime(如果使用豆包模型) 你可以更换成其他支持工具调用的大模型(如deepseek、openai等)。 ## 示例数据 默认包含迈巴赫S级汽车产品培训演示数据: - 产品信息:迈巴赫S级的定位、价格、动力、配置 - 话术技巧:销售沟通五步法 - 拜访流程:标准销售拜访五步法 三个销售人员示例数据: - 张三:话术技巧 55分(需要培训) - 李四:产品信息 50分、拜访流程 55分(需要培训) - 王五:全部及格(无需培训) 

可以看到这是一个标准的Skill,包含了必要信息。

接下来测试一下,比如问它:当前销售人员列表。
下面是OpenClaw根据此Skill的回复:

当前销售团队列表: | 序号 | 销售人员 | |:----:|:---------| | 1 | 张三 | | 2 | 李四 | | 3 | 王五 | 这是演示数据,包含三位销售人员。根据评测规则: - **张三**:话术技巧 55分(需要培训) - **李四**:产品信息 50分、拜访流程 55分(需要培训) - **王五**:全部及格(无需培训) 需要我帮你: 1. 查看完整的评测分数分析和培训需求? 2. 生成个性化培训内容? 3. 生成对应的考试题目? 

也可以让其实现整个流程,比如提问:根据每个人的考核成绩,生成其对应的培训内容。
可以看到OpenClaw会根据用户的指令,自动调用对应的Skill,来完成任务。

根据每个人的考核成绩,已为你生成个性化培训内容如下: --- ## 👤 **销售人员:张三** ### 考核成绩 | 考核项目 | 分数 | 是否需要培训 | |---------|------|-------------| | 产品信息 | 90 | ✔ 不需要 | | **话术技巧** | **55** | ✗ **需要** | | 拜访流程 | 70 | ✔ 不需要 | --- ### 📋 **个性化培训内容:话术技巧** ``` 1. 开场破冰:用身份定位抓注意力。 2. 动力介绍:不堆参数,讲「体验感」 3. 配置卖点:场景化描述,让用户「身临其境」 4. 价格沟通:弱化数字,强调「价值匹配」 5. 促成技巧:锁定需求,引导体验 ``` --- ## 👤 **销售人员:李四** ### 考核成绩 | 考核项目 | 分数 | 是否需要培训 | |---------|------|-------------| | **产品信息** | **50** | ✗ **需要** | | 话术技巧 | 80 | ✔ 不需要 | | **拜访流程** | **55** | ✗ **需要** | --- ### 📋 **个性化培训内容:产品信息** ``` 迈巴赫 S 级 定位:大型豪华轿车。 价格:2026 款指导价 146.80 万 - 364.30 万。 动力:提供多种动力选择,如 S 480 4MATIC 搭载 3.0T L6 双涡轮增压 + 48V 轻混,最大功率 280kW;S 580 4MATIC 配备 4.0T V8 双涡轮增压 + 48V 轻混,最大功率 410kW;S 680 4MATIC 则采用 6.0T V12 双涡轮增压,最大功率 450kW。 配置:全系标配智能领航辅助 Max 系统,支持厘米级高精度定位等功能。内饰采用 Nappa 真皮座椅带菱形格纹 + 按摩功能,后排腿部空间达 1400mm,还可选装银质香槟杯、星空顶等奢华配置。 ``` --- ### 📋 **个性化培训内容:拜访流程** ``` 一、前期准备(拜访前 1-2 天) 二、开场接待(5 分钟):建立信任,拉近距离 三、需求深挖与价值呈现(15-20 分钟):精准匹配,场景化输出 四、展车体验(15-20 分钟):身临其境,强化感知 五、疑虑化解与促成跟进(10-15 分钟):解决顾虑,推动决策 ``` --- ## 👤 **销售人员:王五** ### 考核成绩 | 考核项目 | 分数 | 是否需要培训 | |---------|------|-------------| | 产品信息 | 70 | ✔ 不需要 | | 话术技巧 | 80 | ✔ 不需要 | | 拜访流程 | 95 | ✔ 不需要 | **✅ 全部及格,无需培训** --- ## 📊 培训需求汇总 | 销售人员 | 需培训项目 | |---------|-----------| | 张三 | 话术技巧 | | 李四 | 产品信息、拜访流程 | | 王五 | 无 | **共 2 人需要参加培训,总计 3 个培训模块。** 

可以看到,OpenClaw通过调用对应的Skill,自动分析了每个人的评测成绩,并且生成了个性化的培训内容。跟我们当初在LangChain Agent的Tools中实现的功能是一致的。

总结

可以看到,OpenClaw的实现思路跟LangChain的Agent是一致的,我们可以利用OpenClaw,基于给Agent写的Tools,来生成OpenClaw的Skill。
总体来说就是OpenClaw/Agent -> Python -> 内部系统/数据,这样的一个过程。
这种方法,只要确保Python一测能顺利的访问到内部系统,就可以同样用OpenClaw来实现相同的功能。
最后还是强调下,如果用OpenClaw,需要注意数据的安全,在目前版本(V2026.3.13)尚不建议在生产环境中使用。

Read more

[LangChain智能体本质论]中间件是如何参与Agent、Model和Tool三者交互的?

[LangChain智能体本质论]中间件是如何参与Agent、Model和Tool三者交互的?

LangChain的中间件(Middleware)是围绕Agent执行流程构建的“可插拔钩子系统”。它允许开发者在不修改核心逻辑的情况下,在执行的关键节点(如输入处理、模型调用前后、输出解析等)对数据流进行拦截、修改或验证。中间件类型以AgentMiddleware为基类。 1. AgentMiddleware AgentMiddleware是一个泛型类型,两个泛型参数分别代表状态和静态上下文的类型,我们可以利用state_schema字段得到状态类型。它的name属性返回中间件的名称,默认返回的是当前的类名。 classAgentMiddleware(Generic[StateT, ContextT]): state_schema:type[StateT]= cast("type[StateT]", _DefaultAgentState) tools: Sequence[BaseTool]@propertydefname(self)->str:return self.__class__.__name__ defbefore_agent(self, state:

By Ne0inhk

C++:initializer_list 与 {} 初始化的本质

目录 前言 用()和 { } 初始化有何不同?  官方文档中关于 {} 初始化的蛛丝马迹 initializer_list set {1,2,3} 到底怎么初始化? set set{other_set} 初始化? _autoclassinit2是个什么玩意? { }初始化真正的作用 {}初始化禁止窄化转换 给读者的最后建议 前言 受限于篇幅和时间,暂时只能说明msvc环境下的初始化列表和__autoclassinit2,linux后续有时间再更新,而且没有说明更多的initializer_list的生命周期等内容。 再次强调本篇环境为MSVC编译器,不同的编译器环境会有差异。 用()和 { } 初始化有何不同?  你在编码的时候肯定会产生这样的疑问,如下面代码所示: #include <iostream> #include <set> int main(void) { std::set&

By Ne0inhk
C++ std::list 完全指南:从入门到精通所有接口

C++ std::list 完全指南:从入门到精通所有接口

一、list的接口 list是一个带头的双向循环链表,支持在任意位置的插入和删除操作。 1. 构造函数 //无参的构造list();//n个val去构造explicitlist(size_type n,const value_type& val =value_type(),const allocator_type& alloc =allocator_type());//用一段迭代器区间去构造template<classInputIterator>list(InputIterator first, InputIterator last,const allocator_type& alloc =allocator_type());//拷贝构造list(const list& x);//初始化列表去构造list(initializer_list<

By Ne0inhk
大模型开发手记(九):LangChain Agent 中间件-提升Agent的可靠性与可控性

大模型开发手记(九):LangChain Agent 中间件-提升Agent的可靠性与可控性

目录 * 前言 * 一、中间件是什么? * 二、通用中间件详解(Provider-agnostic) * 2.1 对话总结(SummarizationMiddleware) * 2.2 人工介入(HumanInTheLoopMiddleware) * 2.3 模型调用限流(ModelCallLimitMiddleware) * 2.4 工具调用限流(ToolCallLimitMiddleware) * 2.5 模型降级(ModelFallbackMiddleware) * 2.6 工具重试(ToolRetryMiddleware) * 2.7 模型重试(ModelRetryMiddleware) * 三、自定义中间件 * 3.1 核心概念:钩子(Hook)与执行点 * 3.2 基于装饰器的中间件 * 3.2.1 节点式装饰器

By Ne0inhk