工作台能力
频道配置
CogineWork 默认在本地工作台里使用。你也可以把某个智能体接到企业 IM、社区平台、消息总线和语音系统。 频道配置属于每个智能体;同一个实例里,不同智能体可以使用不同的机器人凭据和访问策略。
推荐先打开 Work → 连接,查看当前智能体已接入和可用的渠道。凭据和行为在 Work → 智能体 → 该智能体 → 连接 里编辑。高级用户也可以使用:
coginework channels list --agent-id default
coginework channels config --agent-id default
频道凭据只应填写在对应的密码字段或受控配置中,不要写入智能体提示词、工作区文件、日志或截图。
内建频道
当前公开配置入口包括:
| 类型 | 频道 |
|---|---|
| 本地控制面 | Console |
| 企业与团队 IM | Feishu/Lark、WeCom、Slack、Mattermost、Matrix |
| 社区与个人消息 | Discord、Telegram、QQ、OneBot v11、iMessage、WeChat iLink、Xiaoyi、Yuanbao |
| 机器与语音 | MQTT、Voice、SIP |
Console 是必需的第一方渠道,会保持启用。这里的 Console 就是本地工作台自己,不是已经去掉的「控制」页。 其他频道都是可选连接;能否启动还取决于相应 SDK、平台权限、网络连通性和组织策略。
外部频道的安全显示默认值
外部频道默认只发送最终回答和明确面向用户的内容,不公开 Agent 的内部执行细节:
| 字段 | 外部频道默认值 | 说明 |
|---|---|---|
show_tool_calls | false | 隐藏工具名、参数、命令和调用状态 |
show_tool_results | false | 隐藏原始工具输出和内部进度 |
show_thinking | false | 隐藏 thinking/reasoning |
tool_call_max_length | 200 | 工具调用预览的最大字符数;0 表示不截断 |
tool_result_max_length | 500 | 工具结果预览的最大字符数;0 表示不截断 |
根配置 show_tool_details 默认是 true,并统一决定所有频道在已启用工具消息时显示详情还是摘要;它
不会开启工具消息,也不控制 thinking。Console 默认开启自己的工具、thinking 和 usage 显示,但同样
服从这个全局详情开关。Console 的每频道显示默认值不会传播到 Feishu、Discord 或插件频道。
如确需排障,可按单个频道显式开启对应的正向开关。建议先在测试机器人和测试会话中启用,完成后关闭。
长度设为 0 时不截断工具调用或工具结果。
旧配置中的 filter_tool_messages 和 filter_thinking 只用于升级兼容。迁移时会反转旧负向语义:
旧值为 true 时对应的 show_* 为 false,旧值为 false 时对应的 show_* 为 true;已有合法的
show_* 字段优先。
迁移会先验证并备份配置,再原子替换;失败不会通过重置其他 Agent、凭据或会话来“修复”。
通用访问控制
所有外部频道继承以下通用字段:
{
"enabled": true,
"dm_policy": "allowlist",
"group_policy": "allowlist",
"allow_from": ["approved-user-or-room-id"],
"require_mention": true,
"dm_disabled": false,
"group_disabled": false
}
dm_policy/group_policy可设为open或allowlist。allow_from中使用平台提供的稳定用户或会话标识,不使用昵称做授权。require_mention适合群聊机器人,避免处理未点名的普通讨论。dm_disabled/group_disabled可以完全关闭对应入口。- 组织策略中的
channels.use和channels.configure仍会在服务端生效;UI 是否显示开关不构成授权。
群聊会话
支持 share_session_in_group 的频道可以选择群成员共用一个上下文,或按发送者隔离:
- Feishu 和 OneBot 默认
false,群成员分别使用独立会话。 - Matrix 与 WeCom 保留各自现有默认值;修改前应先确认现有群历史与业务预期。
- 开关只影响新消息的会话路由,不应合并、改写或删除已有历史。
- 即使共享对话上下文,ACL、审批、审计和回复路由仍以真实发送者身份处理。
对需要讨论连续性的固定小群,可以显式开启共享;对包含不同权限成员的群,建议保持发送者隔离。
Feishu / Lark
中国区使用 domain: "feishu",国际版使用 domain: "lark"。需要 app_id 和 app_secret;
事件订阅场景还可以配置 encrypt_key、verification_token。streaming_enabled 控制 CardKit 流式卡片。
{
"channels": {
"feishu": {
"enabled": true,
"domain": "feishu",
"app_id": "<app-id>",
"app_secret": "<secret>",
"streaming_enabled": true,
"share_session_in_group": false
}
}
}
domain 也接受经过策略允许的完整 HTTP(S) gateway URL。自定义 endpoint 属于高风险配置,必须通过
服务端校验和组织策略,不能靠插件声明的 manifest.trust 自动获得权限。
新默认会隐藏工具调用、结果和 thinking,包括普通消息、流式更新、错误、审批与 history/replay 等路径。 这不会隐藏明确面向用户交付的最终图片、音频、视频或文件。
Discord
配置 bot_token 后,可按需设置代理、媒体目录和 streaming_enabled。所有显示字段都是正向语义:
开关为 true 才展示对应内容,保存、reload 和进程重启后不会反转。
若启用 accept_bot_messages,需额外评估机器人互相触发和消息回路风险。上线前应使用固定 Bot 版本完成
私聊、群聊、显式开关、重连和回复路由测试。
OneBot v11
OneBot 通过 reverse WebSocket 接入 NapCat、go-cqhttp 或 Lagrange。CogineWork 默认只监听 loopback:
{
"channels": {
"onebot": {
"enabled": true,
"ws_host": "127.0.0.1",
"ws_port": 6199,
"access_token": "",
"share_session_in_group": false,
"media_base64": false,
"media_base64_max_mb": 10,
"media_download_max_mb": 50
}
}
}
- 监听地址改为非 loopback 时,必须设置
access_token,否则频道拒绝启动。 - NapCat 端和 CogineWork 端 token 必须一致。
- 引用回复会展开为受限上下文;文本和媒体按 OneBot 能力分别投递。
- 入站远程媒体会经过 URL、redirect、大小、类型、超时、目标 Workspace 和 File Guard 校验。
media_base64只应在确认网关和消息大小限制后开启。
Matrix
Matrix 支持 access token 登录,也支持 user_id + password 登录;homeserver 末尾的 / 会自动规范化。
可选能力包括 E2EE、流式更新、结构化 mention、群成员会话隔离和历史条数限制。
{
"channels": {
"matrix": {
"enabled": true,
"homeserver": "https://matrix.example.com",
"user_id": "@bot:example.com",
"access_token": "<token>",
"encryption": true,
"streaming_enabled": true,
"history_limit": 50,
"share_session_in_group": true
}
}
}
瞬时 homeserver 登录失败会有界重试,并可在 stop/reload 时取消。启用 E2EE 前应确认运行环境已提供兼容的 加密后端;缺失依赖时频道应明确失败,而不是退化为不受控明文行为。
Telegram
配置 bot_token,按需设置 base_url、HTTP 代理、typing 和 streaming。polling 遇到 409 Conflict
时会终止冲突 poller 并有界恢复,不会静默启动多个长期 poller。reload/stop 会取消后台任务并关闭 client。
QQ 频道需要 app_id 和 client_secret,支持 C2C、群和频道消息。每种会话保留独立 session 与 reply route,
避免并发用户、群成员或不同消息类型之间错投回复。max_reconnect_attempts 控制重连上限。
其他内建频道
- iMessage:仅 macOS,读取 Messages 数据库;启用前确认系统隐私权限和媒体目录。
- Mattermost:配置服务器 URL 与 Bot Token,保留 thread/reply 语义,可开启 typing。
- MQTT:配置 broker、subscribe/publish topic、QoS 和 TLS;适合机器消息,不等同于多人聊天授权模型。
- Slack:使用 Bot Token 与 App Token 的 Socket Mode,支持 edit-in-place streaming 和 thread。
- WeCom:配置
bot_id、secret与 WebSocket URL,支持 streaming 和群共享会话。 - WeChat iLink:推荐通过 Console 扫码取得短期 token;token 文件默认位于受控本地路径。
- Xiaoyi:配置 AK、SK 和 Agent ID;主动发送失败会显式报告,session ID 会规范化。
- Yuanbao:配置 App ID、App Secret;空 API domain 和缺失 proto descriptor 有安全 fallback。
- Voice:使用 Twilio ConversationRelay;需要单独配置号码、STT/TTS 和 webhook。
- SIP:提供 dev 与 LiveKit 形态;必须设置并发、通话时限、SIP/RTP 和凭据边界。
机器人身份冲突
多个 Agent 使用同一个 Bot identity 时,CogineWork 会阻止或警告潜在冲突,以避免重复消费、reply route 覆盖和平台限流。诊断只显示频道和 Agent 上下文,不会输出 token、secret 或其派生比较值。
主动发送
主动通知必须先查询已存在的用户和会话,再使用精确标识发送:
coginework chats list --agent-id default --channel feishu
coginework channels send \
--agent-id default \
--channel feishu \
--target-user '<user-id>' \
--target-session '<session-id>' \
--text '通知内容'
不要猜测 target user/session,也不要用昵称代替查询结果。主动发送仍受频道配置、ACL 和组织策略约束。
插件频道
插件可以注册 BaseChannel 子类、schema-driven 配置字段、图标和文档链接。插件频道进入与内建频道相同的
manager、显示默认、访问策略和生命周期,不需要自行复制一套 Console 表单。
CLI 会在生成频道配置菜单前加载已安装插件。插件可提供自定义 configurator;没有提供时会使用基本的 enabled/bot-prefix 回退表单。把现成插件装进桌面见插件;开发接口见开发频道插件。
排障顺序
- 确认保存后的有效配置:
coginework channels list --agent-id <id>
- 检查组织策略是否允许
channels.use与channels.configure。 - 核对机器人权限、事件订阅、稳定用户/群 ID 和平台侧回调地址。
- 检查是否有 Bot identity 冲突、重复 poller 或 endpoint/token 不匹配。
- 在测试机器人中验证私聊、群聊、回复、媒体、streaming、重连和主动发送。
- 仅在必要时临时开启受限诊断显示,完成后关闭。
自动化和 mock 测试不能替代真实平台验收。若涉及 Feishu 或 Discord 的显示问题,只有固定 Bot/version/config 下的真实消息、reload、重启、history/replay、错误与审批路径都通过后,才应把对应 Issue 标记为已验证。