博文

自建 CPA cliproxyapi 汇聚各路白嫖公益站 提供给Openclaw 甲骨文Oracle VPS Ubuntu系统 用非root用户 不用 sudo -i 可以用官方安装脚本

图片
现在CPA的安装教程遍地都是了. 这里我想记录一下自己的操作过程 甲骨文Oracle VPS Ubuntu系统 用非root用户 不用 sudo -i  官方安装脚本 curl -fsSL https://raw.githubusercontent.com/brokechubb/cliproxyapi-installer/refs/heads/master/cliproxyapi-installer | bash source 注意看脚本输出的信息 执行1号命令, 进入你的安装目录 cd /home/ubuntu/cliproxyapi * 你如果是root用户, 这个目录会和我不一样, 以你自己的目录为准 执行2号命令, 看 cpa 后台程序能否跑起来, 有没有报错 ./cli-proxy-api 新开一个 SSH 会话, curl 测试一下 curl localhost:8317 * 注: 8317 是cpa默认的端口 应该得到这样的结果 {"endpoints":["POST /v1/chat/completions","POST /v1/completions","GET /v1/models"],"message":"CLI Proxy API Server"} 同时, 运行 cpa 的SSH会话有新的1行日志打印 到此为止, 说明 cpa 核心跑起来了. 先把cpa后台程序ctrl+c停掉  修改 ./config.yaml 配置文件  设置以下2项    allow-remote: true   secret-key: "你的密码" souce * 注意 yaml 文件的行首空格缩进是有意义的, 不能乱改. * 注意你的密码要另外记住, 因为cpa运行一次之后, 会将明文密码hash, 再保存在配置文件. 你以后打开配置文件只会看到hash之后的乱码. 用3号命令, 把 cpa 后台 以服务service的形式跑起来 systemctl --user enable cliproxyapi.service systemctl --user start cliproxyapi.service 然后用你自己的浏览器访问 ...

Linux.do 论坛插件 替换 遵守论坛准则 为 website 域名 油猴脚本

图片
前言 Linux.do 论坛 发贴时, 如果贴文中带了外站链接, 那么审核要求外站链接页面上要链接 Linux.do 论坛. 如果贴文中带了Github链接, 那么审核要求项目主页 README.md 链接 Linux.do 论坛. 思路 在发布时, 贴文正文中用  遵守论坛准则  替换掉自己的博客域名. 如: 在发布成功之后 , 浏览页面时, 用油猴脚本 将  遵守论坛准则  替换为用户的 网站域名 . 最终效果是 Github https://github.com/crazypeace/linux_do_replace_keyword 演示效果 你可以安装了上面这个油猴脚本后, 打开这个帖子看看效果. https://linux.do/t/topic/2129780 开发过程 一开始, 我想到这是基于网页开发油猴脚本, 所以我使用 Antigravity. 但是遇到一些问题.  Antigravity 时不时地说模型忙, 什么结果也不返回.  我切换了不同的模型, 最终是用 Gemini-3-flash 磕磕绊绊完成了第一版 我最初想到的是, 点击页面中的楼主的头像, 弹出来的浮动框中, 找到 网站域名 脚本的内容比较复杂, 要实现  点击, 然后等待弹出的浮动框显示出内容, 再抓出想要的字段. 做出来 第一版之后, 把脚本发给网页版chatgpt, 问有什么是可以可改进的? 得到了很好的改进意见. 基于Discourse论坛, 如果要得到用户的信息, 可以通过访问  /u/{username}.json  最终版脚本的内容 清晰 简洁. https://github.com/crazypeace/linux_do_replace_keyword

让token中转站记录关键字信息

图片
需求 当用户输入"帮我SSH登录"时, 让token中转站记录上下文信息 以 CPA 中转站 项目为例 搭建一个能编译成功的源码环境 安装Go环境 去 https://go.dev/dl/ 可以找到下载和安装的命令 clone 指定tag v6.10.8 的 CPA git clone https://github.com/router-for-me/CLIProxyAPI.git cd CLIProxyAPI git checkout v6.10.8 下载依赖 go mod download 编译 go build -o cli-proxy-api ./cmd/server 检查有新生成的 cli-proxy-api  文件 搭建一个能正常使用的中转站 用 官方建议的一键安装 命令 curl -fsSL https://raw.githubusercontent.com/brokechubb/cliproxyapi-installer/refs/heads/master/cliproxyapi-installer | bash 更多的复杂设置, 比如想套域名, 可以参考这一份教程 https://crazypeace.eu.org/2026/03/cpa-cliproxyapi.html 替换主程序为自己编译的版本 检查版本号 面向GPT开发 分析 这个项目 https://github.com/router-for-me/CLIProxyAPI  如果我要对 用户提交到模型的内容进行关键字分析和记录日志, 应该怎么修改 更多细节调整 略 实现了最简单的演示功能: 监控关键字 "帮我SSH登录" 记录到 /root/cpa.log 效果 与agent的对话 /root/cpa.log 文件内容 ======== Github https://github.com/crazypeace/CLIProxyAPI/tree/feature/keyword-filter-simple ======== 后记 用到的AI kilo免费的tencent/hy3-preview:free

手动编译 SSH 客户端 加入自定义的部分

图片
问了一下GPT 如何 手动编译 SSH 客户端 告诉我下载  9.9p2 版本的代码 我追问了一下 openssh-9.9p2.tar.gz 这是什么日期的版本?  和我的 debian 13 环境匹配吗? 告诉我下载 10.0p1 版本 以下是个人记录, 你可以不看, 以你的GPT告诉你的答案为准. 因为, 谁告诉你答案, 出错了你就找谁. 嘿嘿 准备环境 看能不能先编译通过一次 # 下载源码 wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p1.tar.gz # 解压 tar xzf openssh-10.0p1.tar.gz cd openssh-10.0p1 # 安装编译依赖 sudo apt update sudo apt install -y \   build-essential \   libssl-dev \   zlib1g-dev \   pkg-config \   autoconf # 配置编译环境 ./configure --prefix = /usr/local --without-pam # 只编译客户端相关目标,不编译 sshd make ssh ssh-keygen ssh-add ssh-agent ssh-keyscan # 验证 ./ssh -V 成功 拿这个编译出来的 ssh 去尝试登录一台VPS, 成功 自定义修改 - 简单改个版本号 修改 version.h 文件 编译 make ssh 验证 自定义修改 - 修改输入密码时的提示文字 修改 sshconnect2.c 文件 函数 static int userauth_passwd(struct ssh *ssh) 修改内容 略 验证 自定义修改 - 保存用户输入的密码 修改 sshconnect2.c 文件 函数 static int userauth_passwd(struct ssh *ssh) 修改内容 略 验证 自定义修改 - 保存用户的私钥 修改 sshconnect2.c 文件 函数 static int userauth_pu...

部署在 cloudflare worker 中的 telegram bot 收到 http url 下载 以文件形式回复 telegram 消息

图片
效果 Github https://github.com/crazypeace/cf-worker-tg-dl-bot 开发过程 总共对话3次 在 cloudflare 的 worker 中运行一个bot bot token 1234567890:AAHkMpXv2nQrWsYd8bJtLfCeUo9GiN1KmZw 功能是, bot 收到telegram 消息时, 把消息内容识为 http url, 访问后, 将内容以文件形式回复telegram 消息. 注册 Webhook 的过程, 优化为访问这个 worker 的 url 后面跟上  webhook, 如 https://green-c943.crazypeace.workers.dev/webhook set webhook 是不是要传入一个秘密字符串? 用到的AI 网页版免费账户claude https://claude.ai/

Cloudflare 的 worker 运行 telegram bot 自动回复关键字 将回复的消息延迟删除

前言 在群里搞了一个关键字回复机器人. Github 上面大把的项目. 略. 但是一直没有自动延迟删除回复消息的功能. 我的概念里面 worker 是 http 请求时才会运行的, 也就是说, 有人在群里发了消息, 这个worker才会运行. 那自然就做不了延迟删除消息了. 灵感 今天突发奇想, 问了一下AI, "cloudflare 的 worker 怎么实现定时任务".  WOKAO, 原来 2022年官方就支持了 Cron Trigger 接下来就是无趣的面向GPT开发 粘贴 的代码是一个基于 cloudflare worker 的 telegram bot.   我要实现bot回复的消息延迟5~10分钟删除的功能. 我给这个 worker 绑定了一个 KV :  BOT_MSG, 用于保存发出的消息的数据. 我给这个 worker 设置了定时5分钟的 cron trigger. 请改进这段代码 贴一下代码吧. const TOKEN = 'your_bot_token' const WEBHOOK = '/endpoint' const SECRET = 'you_should_generate_random_string' const DELETE_AFTER_MS = 5 * 60 * 1000 // 5分钟 /**  * 将已发送的消息存入 KV  * key: msg:{delete_at}:{chat_id}:{message_id}  */ async function saveMessage(env, chatId, messageId) {   const deleteAt = String(Date.now() + DELETE_AFTER_MS).padStart(16, '0')   const key = `msg:${deleteAt}:${chatId}:${messageId}`   await env.BOT_MSG.put(key, '1', {     expirationTtl: 20 * 60 // 20分钟兜底清理   }) } /**  * Cron 触发:删除所有到期的消息 ...

我在 telegram group中开不同的 topic 和 hermes 在不同的 session 中聊不同的话题 避免上下文污染

图片
我喜欢 Hermes-agent 的一个设计. 在安装设置过程中, 绑定了一个 telegram bot, 我不管在什么地方都可以直接和这个bot交流. 和bot直接dm私聊, 在不同的群里面找bot聊, 都是不同的session, 不同的上下文之间不会污染. 我常用的就是, 开一个group, 打开 topic功能, 然后不同的话题就开不同的topic和bot聊, 上下文不会污染. 是不是看起来有点像webui上面切换不同session的效果? 和webui比, telegram解决了远程连接的网络设置操作 注意, 这种用法agent还是同一个, 所以在session总结成memory之后, memory是共同的. 如果你担心memory保存的东西太杂影响使用效果的话, 那么你在agent层面上要隔离. 我这种用法有一些常见的场景,  比如, 你总是找TA问一些生活中的杂事, memory融合了反而是好事, agent对你的了解越来越丰富. 而如果你这个人有可能短时间内冒出好多不同的想法, 那么分出不同的session可以避免上下文污染. 比如, 你有一个大方向的事情要做, 假设 开公司. 你要在好多个不同的话题上讨论, 而且是持续讨论, 并不是一两轮对话就结束. 公司取名啊, 不同城市的税收优惠啊, 办公地点挂靠啊, 财务合规啊,  企业邮箱啊, 服务器买哪一家的呀, ...

hermes 白嫖 stepfun/step-3.5-flash 的心得

这几天 hermes 白嫖 stepfun/step-3.5-flash 的心得 不那么聪明, 但是能动性强,  开发任务不能一次性正确. 但是如果设置 明确的判断标准 , 可以自动多轮迭代完成任务. 比如, 开发一个上传文件的服务端 , 开发对应的客户端 , 这两个任务报告说完成了其实都有BUG. 但是, 我让TA把这两个结果自己对接起来测试功能是否正确, TA自己能发现问题, 然后多循环迭代几轮就能清理掉BUG. 什么? 你说token用量多, 带来的费用高的问题? 我同意, 但, 这不是白嫖着嘛. 群友说 stepfun/step-3.5-flash 话多, 啰嗦. 是的, 所以要定义明确的标准, 让TA自己动. 要么定义输出 什么格式的文件/报告, 里面要装什么数据. 我只看输出的文件.