羊羽的AI-Native周报(2)
微信开放了消息API,注意:不是企业微信
微信 Bot API 技术解析:腾讯 iLink 协议首次合法开放
可以用接口给自己的微信发消息了,要知道,这个能力之前只能通过逆向 iPad/网页微信 api来实现,还容易被封号。
现在官方直接下场提供了官方 api !
除了对接龙虾,这个能力的想象空间非常大,已经有大量相关的开源组件了!
比如:
- GitHub - formulahendry/wechat-acp: Bridge WeChat chat messages to any ACP-compatible AI agent
- GitHub - chenhg5/cc-connect: Bridge local AI coding agents (Claude Code, Cursor, Gemini CLI, Codex)
整体交互流程:
sequenceDiagram
actor 用户 as 微信用户
participant Bot as Bot服务
participant iLink as iLink服务器
rect rgb(245, 247, 250)
Note over 用户,iLink: 1. 登录
Bot->>iLink: 获取登录二维码
iLink-->>Bot: 返回二维码
用户->>iLink: 扫码并确认登录
Bot->>iLink: 查询登录状态 [轮询]
iLink-->>Bot: 返回当前登录状态
end
rect rgb(250, 248, 245)
Note over Bot,iLink: 2. 接收消息
loop 长轮询拉取消息
Bot->>iLink: 发起消息拉取请求
iLink-->>Bot: 返回新消息或等待超时
end
end
rect rgb(245, 250, 246)
Note over Bot,iLink: 3. 回复消息
Bot->>iLink: 根据收到的会话上下文发送回复
iLink-->>Bot: 返回发送结果
end
唯一就是只能被动回复消息,有问才能有答!不过一问可以有多答。
OPC(一人公司)技术底座:Supabase
Supabase 是一个有免费额度的 BaaS 服务。
什么叫BaaS?
BaaS (Backend as a Service) 是一种云服务模型,旨在让开发者专注于前端/客户端业务。它将后端功能(如数据库、身份认证、文件存储、推送通知)封装为标准的 API 或 SDK。
开发者无需搭建服务器、管理数据库或编写复杂的中间件逻辑,即可实现完整的应用后端功能,极大地提升了研发效率与交付速度。
有了BaaS支撑,一般情况下,我们只需要写前端代码。可以用来快速的、低成本的落地自己的idea~
不用买机器、不用搭数据库、不用自己买域名做LB~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 核心逻辑:数据库即 API
export const TodoList = () => {
const [data, setData] = useState([]);
// 1. 直接查库
const load = async () => setData(await supabase.from('todos').select('*'));
// 2. 直接入库 (无须编写后端路由)
const add = async (val) => await supabase.from('todos').insert({ text: val });
return (
<div onClick={() => add('新任务')}>
{data.map(item => <p>{item.text}</p>)}
</div>
);
};
前端React/Vue 组件中,直接操作后端BaaS数据库,平台透明实现数据隔离/数据ACL。
还有很多其他有免费额度的平台,比如:
- Cloudflare
- Vercel
- upstash
总之,先白嫖验证想法!
TUI常用快捷键
终端里的 ctrl+a/e/f/b/p/n/w 等快捷键来自 GNU Readline 库,基于 Emacs 键位风格,bash/zsh 及大多数 CLI 应用均支持;
macOS 系统级文本框(飞书、Safari、备忘录等)也原生支持,因为Cocoa 文本系统内置了这套绑定。
背起来、用起来吧!
| 快捷键 | 常见含义 | 作用说明 |
|---|---|---|
Ctrl+A | 移动到行首 | 将光标快速移动到当前输入行的开头。 |
Ctrl+E | 移动到行尾 | 将光标快速移动到当前输入行的末尾。 |
Ctrl+F | 向前移动一个字符 | 光标向右移动一个字符,等价于”前进”。 |
Ctrl+B | 向后移动一个字符 | 光标向左移动一个字符,等价于”后退”。 |
Ctrl+P | 上一条历史记录 | 在命令历史中切换到上一条,常用于找回之前输入的命令。 |
Ctrl+N | 下一条历史记录 | 在命令历史中切换到下一条,通常和 Ctrl+P 配合使用。 |
Ctrl+W | 删除前一个单词 | 删除光标前的一个单词,适合快速修改输入内容。 |
CLAUDE.md @指令 嵌入内容
研究了下 ClaudeCode的记忆文件的处理,根据claude-code开源代码~
假设你的项目中存在以下两个文件:
文件 A: **CLAUDE.md**
1
2
3
4
# 星火计划项目指南
- 使用 Python 3.10+
- 所有函数必须包含类型注解
@path docs/conventions.md
文件 B: **docs/conventions.md**
1
2
3
# 代码规范
- 命名:变量使用 snake_case,类名使用 PascalCase
- 文档:所有公有方法必须写 Docstring
最终拼接的系统提示词结构如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<system-reminder>
# claudeMd
Contents of CLAUDE.md (项目主指令):
# 星火计划项目指南
- 使用 Python 3.10+
- 所有函数必须包含类型注解
@path docs/conventions.md
Contents of docs/conventions.md (代码规范):
# 代码规范
- 命名:变量使用 snake_case,类名使用 PascalCase
- 文档:所有公有方法必须写 Docstring
Keep the above context in mind when answering the following user messages.
</system-reminder>
挺有意思的,可以自行感受下hhhh
需要注意:
- SKILL.md 里不可以
@其他文件。 - 窗口输入的prompt可以使用
@指令,不过实现原理有差异,感兴趣可以自己摸索下。
SKILL动态装载原理
本质上就是一个Tool~
工具定义如下:
工具描述翻译如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
在主对话中执行技能
当用户要求您执行任务时,请检查是否有任何可用技能与之匹配。技能提供专门的能力和领域知识。
当用户引用"斜杠命令"或 /<something>(例如 /commit、/review-pr)时,他们指的是某项技能。请使用此工具来调用它。
如何调用:
- 使用此工具并提供技能名称和可选参数
- 示例:
- skill: "pdf" - 调用 pdf 技能
- skill: "commit", args: "-m 'Fix bug'" - 带参数调用
- skill: "review-pr", args: "123" - 带参数调用
- skill: "ms-office-suite:pdf" - 使用完全限定名称调用
重要提示:
- 可用技能列在对话的系统提示消息中
- 当技能与用户请求匹配时,这是一个阻塞性要求:在生成任何关于该任务的其他回复之前,必须先调用相关的技能工具
- 绝不要在未实际调用此工具的情况下提及某项技能
- 不要调用已经在运行的技能
- 不要将此工具用于内置 CLI 命令(如 /help、/clear 等)
- 如果你在当前对话轮次中看到 <command-name> 标签,则该技能已经加载 - 请直接遵循说明,而不要再次调用此工具
那么,怎么便捷的抓包看大模型接口交互呢?我来教你:
打开claude配置文件
1
code ~/.claude/settings.json
修改协议类型
看到没?https改成http!
使用你熟悉的抓包工具
我用Wireshark!
1
http.host contains "ep"
/PNQaby149o0wowxmeABcP0sinVf.png)
/ZItsbQnMPope8txLDwbcqxbTnkc.png)
/CPUEbk4B4oKFFtxgkwjcCJknnSb.png)
/GoCXblW2QoSo0qxjsEKclAeBnpd.png)