Technical note · side-effecting action

从一句对话,到一个可持续生长的 Discord workspace。

“创建子区”不是另一种回复语气,而是改变外部协作拓扑的动作。这个页面说明它如何做到可预览、可确认、低噪音、可验证,并让稳定理解最终回到 canonical source。

01 · Ontology

为什么它不能只是第七个“对话方式”

conversation mode 只影响当前 agent 的回应策略;Discord workspace action 会创建真实 thread、发送 starter、通知人或 agent,并产生需要回填的协作状态。两者共享结构化意图,但副作用等级完全不同。

协议改变什么确认证据结束条件
Conversation mode当前回复的行为方式选择 mode 即可message + mode + run + reply本轮回复完成
Discord subarea action外部协作空间与参与关系预览后再次确认thread id + starter id + read-back + parent创建、验证、返回链接并声明 writeback
02 · Lifecycle

七步闭环

01捕获 attention topic草稿 → 引用 → 真实 Gong → 纠偏;隔离 acceptance
02显示来源并生成 starterwhy / decide / writeback / noise rule
03Gong review可修改;编辑后 provenance 变为 Gong 已编辑
04防误触后确认指纹未变化且等待 1.2 秒
05–07Create → read-back → record返回 thread/message URL 与回填目标
默认 parent channel 是当前 workspace 所属的“任务管理区”;服务端只允许白名单 parent,浏览器不能任意指定 guild 或 bot identity。
查看已验证的真实 grow place →
03 · Contract

浏览器只发送结构化草案

浏览器不接触 Discord token。公开 relay 校验 workspace session 和字段边界,再通过 Tailscale + shared relay secret 调用 WeHub 中枢机上的 Discord relay。

POST /gong/workspace/discord-thread-create
{
  "agent": "ghy-avatar",
  "topic": "对话方式如何继续定制",
  "why": "需要多轮讨论与 agent 协作",
  "decide": "确定下一批高价值方式",
  "writeback": ".../seed.md"
}
200 OK
{
  "ok": true,
  "thread_url": "https://discord.com/channels/...",
  "starter_message_url": "https://discord.com/channels/.../...",
  "parent_channel_id": "1501459513226559598",
  "verified": true
}
04 · Security

Secret、mentions 与 parent 都留在服务端

SECRET

双 relay 边界

公网 origin 只持短期 shared relay secret;Discord bot token 只在 WeHub 中枢机的 Hermes profile 中。

MENTIONS

最小 allowed_mentions

禁用 @everyone、@here 和 role parse;只允许明确的 Gong user id,后续 agent 由讨论需要再加入。

PARENT

白名单父频道

创建请求不能携带任意 guild/channel;当前只允许任务管理区,未来通过 server-side registry 扩展。

05 · Failure semantics

不能把“thread 创建了但 starter 失败”说成完整成功

阶段UI 状态可否重试处理
Preview本地草案可反复修改不触发网络写入
Create rejected未创建修正后可重试保留所有输入
Thread created, starter failed部分成功不得盲目再建 thread返回 thread id,改为补发 starter
Read-back failed状态待确认先查询不能声称 verified
Verified已创建无需重试显示稳定链接与 writeback target
Discord thread 是 live grow place,不是 canonical source。决定、seed、授权、项目状态或稳定知识形成后,必须回填到声明的文件、card、memory 或 skill。