关于 creating-letta-code-channels
面向在 Letta Code 中添加或调试频道的开发者技能,说明何时选择用户插件或内置频道,并指导实现、路由和测试消息回复。
主要功能
- 01选择用户插件或内置频道
- 02生成用户频道插件框架
- 03实现工具和中继回复模式
- 04测试发现、路由与消息送达
- 05处理配对及公共频道安全
适用场景
- 01制作无界面频道插件原型
- 02添加带自定义桌面 UI 的频道
- 03调试入站路由和配对
- 04验证出站回复行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ letta-ai/ skills --skill creating-letta-code-channels安装后在 Claude Code 中输入/creating-letta-code-channels确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/first-party-channels.mdtesting.mduser-plugins.mdscripts/scaffold-user-channel-plugin.ts详细介绍
创建 Letta Code 渠道
添加或调试 Letta Code 渠道支持时,请参考此文档。
首选方案
- 用户插件(
~/.letta/channels/<id>/)适用于无头实验、社区插件和快速工作流测试。 - 一方渠道(
src/channels/<id>/)适用于需要专用桌面 UI、自定义账户快照、类似 Slack/Discord 的自动路由、丰富协议字段或迁移/兼容垫片的场景。
用户插件不能覆盖一方渠道的 ID:telegram、slack 和 discord 在 ~/.letta/channels/ 下会被忽略。请使用 telegram-test、whatsapp-community 或 custom-chat 之类的 ID。
核心工作流
- 在
~/letta/letta-code或 worktree 中操作。 - 对于支持动态插件的分支,请阅读
src/channels/README.md。 - 对于用户插件,请创建:
~/.letta/channels/<id>/channel.json~/.letta/channels/<id>/plugin.mjs~/.letta/channels/<id>/accounts.json
- 为两种回复模式都实现
messageActions:显式工具回复和自动中继文本都使用通用的出站适配器路径。 - 测试时从
dmPolicy: "pairing"开始;对于已知的无头部署,可使用allowlist/open。 - 测试完整的四个环节:
- 插件发现/导入
- 入站
adapter.onMessage(msg)路由/配对 - 路由后的渠道通知到达 Agent
- 出站行为符合账户记录的回复模式:工具模式下通过
MessageChannel显式投递,或中继模式下自动投递最终文本
- 先运行有针对性的测试,然后运行
bun run typecheck、bun run lint、bun run build。
参考资料
只阅读所需内容:
references/user-plugins.md— 动态插件清单/账户/运行时/无头流程及注意事项。references/first-party-channels.md— 一方渠道文件级联和安全检查。references/testing.md— 冒烟测试清单和命令。
脚手架辅助工具
使用随附的脚手架创建最小化用户插件骨架。将 <path-to-this-skill> 替换为此技能目录的路径:
npx tsx <path-to-this-skill>/scripts/scaffold-user-channel-plugin.ts \
my-channel "My Channel" \
--runtime-package [email protected] \
--runtime-module some-sdk
它会创建 channel.json、plugin.mjs 和 accounts.example.json。将 TODO 入站/出站实现替换为实际的 SDK 调用。
重要经验
- 如果未设置
reply_mode或其值无效,账户默认使用工具模式。请在现有已保存账户中添加"reply_mode": "relay",同时保留其实际 ID、根字段和凭据。 - 中继模式需要包含 PR 4043 的构建版本;v0.34.1 早于该版本。设备端网关负责实现投递;远程主机必须提供传输和记录的逐输入策略。这是主机差异,而非 Agent 状态限制。模式更改仅影响新输入,不影响活动中或排队中的输入。
- 单一目标的中继输入会发送最终文本,不使用
MessageChannel;未完成的错误/取消文本、推理内容和子 Agent 输出均会排除。多目标输入需要显式回复,绝不广播。排队中的输入彼此独立。反应、文件和主动发送请使用工具模式。 - 对于公开渠道,除非存在经过验证的操作员路由,否则请抑制工具审批/控制提示。在公开渠道发布审批提示会泄露工具输入,并招致伪造的
approve回复。 - 用户插件运行时解析不得将父级/开发环境的
node_modules计入范围。运行时模块应仅从显式指定的运行时目录解析。 - 无头配对优先使用 CLI:
letta channels pair --channel <id> --code <code> --agent <agent-id> --conversation <conversation-id>。 - 运行中的监听器会在下一次入站未命中时重新加载
pairing.yaml和routing.yaml;只有适配器/账户配置本身发生变化时才需重启。
评论
支持 Markdown