ai_co_discuss 0.2.99 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.agents/skills/discuss-host/SKILL.md +3 -3
  2. package/.agents/skills/discuss-host/references/discussion.md +16 -16
  3. package/.agents/skills/discuss-host/references/launch.md +1 -3
  4. package/.agents/skills/discuss-host/references/manual.md +14 -77
  5. package/.agents/skills/discuss-participant/SKILL.md +3 -3
  6. package/.agents/skills/discuss-participant/references/discussion.md +29 -27
  7. package/.agents/skills/discuss-participant/references/free.md +2 -2
  8. package/.agents/skills/discuss-participant/references/manual.md +8 -10
  9. package/.agents/skills/discuss-participant/references/writing.md +9 -9
  10. package/.github/SECURITY.md +1 -1
  11. package/README.md +3 -3
  12. package/README.zh-CN.md +3 -3
  13. package/backend/free_room.py +360 -68
  14. package/backend/room_import.py +75 -15
  15. package/backend/runtime.py +81 -169
  16. package/backend/schema.sql +136 -244
  17. package/backend/server.py +602 -166
  18. package/backend/session_room.py +919 -0
  19. package/docs/architecture.md +3 -2
  20. package/docs/en/architecture.md +4 -3
  21. package/docs/en/runner.md +3 -1
  22. package/docs/en/workflow.md +9 -6
  23. package/docs/runner.md +3 -1
  24. package/docs/workflow.md +11 -8
  25. package/package.json +2 -2
  26. package/runner/api_participant.mjs +47 -44
  27. package/runner/discuss.py +77 -58
  28. package/runner/discussion_adapters.mjs +6 -3
  29. package/runner/discussion_launch.mjs +98 -70
  30. package/runner/discussion_runner.mjs +38 -496
  31. package/runner/discussion_service.mjs +21 -74
  32. package/runner/discussion_sidecar.mjs +4 -13
  33. package/runner/expert_prompts.mjs +29 -21
  34. package/runner/free_runner.mjs +84 -19
  35. package/runner/session_driver.mjs +175 -0
  36. package/web/app.js +193 -128
  37. package/web/backup.js +1 -1
  38. package/web/modern.css +1 -1
  39. package/web/modern.js +5482 -6646
@@ -15,10 +15,10 @@ description: "AI CoDiscuss 的主持技能,仅主持人调用,且须同时
15
15
 
16
16
  | 场景 | 读 |
17
17
  |---|---|
18
- | 自由协作房间的主持人(任务含 `mode: "free"`、`role: "host"`) | [自由协作主持](references/free.md) |
19
- | 讨论房间:收到自动主持任务(含网页启动交付的任务)、到限、收束 | [讨论主持](references/discussion.md) |
18
+ | 自由协作请求(任务含 `mode: "free"`、`role: "host"`,且没有 `discussion_request`) | [自由协作主持](references/free.md) |
19
+ | 协作房间中的讨论主持任务(`mode` 仍为 `free`,`discussion_request.purpose` 为 `discuss_host`) | [讨论主持](references/discussion.md) |
20
20
  | 用户要开始新讨论,当前会话还没有自动任务 | [新建讨论与从 AI 对话发起](references/launch.md) |
21
- | 用户选择手动模式、需要在线专家转交、处理已有原生任务 | [手动接入与持续主持](references/manual.md),自动讨论不加载 |
21
+ | 本地手动成员注册说明,或网页来源成员在自由协作 / 讨论中的代发 | [手动接入与网页成员代发](references/manual.md) |
22
22
 
23
23
  ## 硬约束
24
24
 
@@ -1,6 +1,6 @@
1
1
  # 讨论主持
2
2
 
3
- 仅用于讨论房间(有发言安排与阶段)的主持。自由协作房间读 [自由协作主持](free.md)。
3
+ 仅用于协作房间中的讨论主持任务。房间始终是自由协作(任务 `mode` 为 `free`);有讨论任务时,`discussion_request.purpose` 区分主持与专家请求,`session.phase` 给出讨论阶段。没有 `discussion_request` 时读 [自由协作主持](free.md)。
4
4
 
5
5
  ## 讨论中的硬约束
6
6
 
@@ -11,8 +11,8 @@
11
11
 
12
12
  ## 自动主持流程:一次实质推进,一次交接
13
13
 
14
- 1. **进入执行**:按参与技能进入本次执行;若当前调用已成功进入,不重复认领。
15
- 2. **恢复现场**:先读 `room view`,用其中的阶段、当前安排、`queued_turns`、`limits` 和运行状态判断;网站已有的安排优先于旧笔记,没有待处理的专家安排不等于主持人没有工作。首次接手时目标、背景、边界为空,先补全(见「首次接手」)。
14
+ 1. **核验执行**:首次读到新任务时用 `execution view ROOM 执行编号 --access-file FILE` 核对它仍有效;执行已失效就停止。
15
+ 2. **恢复现场**:先读 `room view`,结合任务的 `discussion_request.purpose`、`session.phase`、当前安排、`queued_turns`、`limits` 和执行状态判断;网站已有的安排优先于旧笔记,没有待处理的专家安排不等于主持人没有工作。首次接手时目标、背景、边界为空,先补全(见「首次接手」)。
16
16
  3. **读新内容**:新增的相关回答、用户留言及必要原文。智能调度有把握时会代你完成插话分流和无点名追问的衔接,没把握时才唤醒你。
17
17
  4. **判断并选一种交接**(见下表)。不要只回复“已就绪”或只写一段摘要就退出。
18
18
  5. **先保存进度,再提交交接**:判断、争点、下一步或阶段变化时用 `state set` 保存(见「保存进度」);随后创建安排或收束。成功后本次写入资格即结束:立即结束,只回一句话,此后只回读核验,不再补 state 或输出总结。结果不明按参与技能核对原提交,不另创安排。
@@ -20,18 +20,18 @@
20
20
  | 判断 | 动作 |
21
21
  |---|---|
22
22
  | 还需专家回应 | 提交「发言计划」,结束本次执行 |
23
- | 本轮仍有排队安排(`queued_turns` 非空) | 说明用户留言、改资料(`held_since` 非 0)或打断让本轮提前交回。先处理这些新内容;原计划仍适用就 `turn continue`,否则直接创建新安排,剩余排队随之作废 |
23
+ | 本轮仍有排队安排(`queued_turns` 非空) | 说明用户留言、改资料(`held_since` 非 0)或打断让本轮提前交回。先处理这些新内容,再读 `turn roster` 取得最新 `revision`;原计划仍适用就用该 revision 执行 `turn continue`,否则创建新安排,剩余排队随之作废 |
24
24
  | 专家名单有变化 | 见「名单变化」 |
25
- | 主持人需要以专家身份发言 | 给自己创建正式安排后结束;同一会话收到新的专家任务,再凭新资格发表 `opinion` |
25
+ | 主持人需要以专家身份发言 | 给自己创建正式安排后结束;同一会话收到新的 `discuss` 专家任务,再用该执行提交 `chat` |
26
26
  | 已可收束,或正在限时收束 | 见「收束」 |
27
- | 缺少必要用户决定或无法继续 | 保留已有判断与具体阻碍,用 `execution fail` 暂停,向用户说明需要什么 |
27
+ | 缺少必要用户决定或无法继续 | 保留已有判断与具体阻碍,用 `execution fail ROOM 执行编号 --reason 原因 --access-file FILE` 结束本次主持请求,保留阻碍并等待用户决定;不要自动重启或循环唤醒主持 |
28
28
 
29
29
  ### 发言计划
30
30
 
31
31
  每次需要专家回应时,先写好计划再一次提交,不逐位安排:
32
32
 
33
- 1. `turn roster ROOM` 申请最新专家状态(在场专家、本轮待发言者 `waiting`、`unregistered`、`revision`)。
34
- 2. `turn create --plan-file PLAN.json --roster <revision>`。
33
+ 1. 每次创建安排前都运行 `turn roster ROOM`,取得在场专家、本轮待发言者 `waiting`、`unregistered` 和最新 `revision`。
34
+ 2. 单人安排用 `turn create ROOM --expert NAME --question ... --roster <revision>`;整轮用 `turn create ROOM --plan-file PLAN.json --roster <revision>`。
35
35
 
36
36
  计划是按顺序列出本轮每位应发言专家各一次的数组,最多 10 项,例如:
37
37
 
@@ -40,10 +40,10 @@
40
40
  {"expert": "Gemini", "question": "先读取最新回答,再对 Claude 的判断给出你的看法。"}]
41
41
  ```
42
42
 
43
- - 计划须包含 `waiting` 中的每位专家;`unregistered` 中尚未注册的手动专家不能排入,它注册后会自动加入本轮队列。名单变化后 `revision` 失效需重取,缺人或未带 `revision` 都会被拒绝;本轮不需要某人时先让其暂离。
43
+ - 安排须带本次读取的 `revision`;整轮计划还须包含 `waiting` 中的每位专家。`unregistered` 中尚未注册的手动专家不能排入,它注册后会自动加入本轮队列。名单变化后 `revision` 失效需重取,缺人或未带 `revision` 都会被拒绝;本轮不需要某人时先让其暂离。
44
44
  - 计划只覆盖当前一轮,跨轮追问要看本轮回答后再定;只有各轮问题不依赖回答的固定流程(如依次报数)才可排满多轮。后一位的问题取决于前一位回答时也不必等前一位答完:把问题写成“先读取最新回答,再按……回应”,由专家自己读取。
45
- - 网站在专家间自动接力,末位答完才交回主持;接力不发通知。用户留言或打断时服务端会自动把控制权交回主持。只有在线专家须逐个转交、或必须等用户先决定时,才只排一位,并在 state 里写明原因。
46
- - `members` 中 `adapter` 为 `api` 的专家读不到本地文件,只能从对话了解项目。议题涉及本地文件时:开场的主持说明多交代项目情况(相关文件、结构、要点,必要时贴关键片段);`initial` 中它不读他人观点,靠这份介绍作答;进入交锋后把它排在能读文件的专家之后,问题里请它先读前面的回答;它在回答里索要的信息,安排能读文件的专家补充。
45
+ - 网站在专家间自动接力,末位答完才交回主持。用户留言或打断时服务端会自动把控制权交回主持。
46
+ - `members` 中 `adapter` 为 `api` 的专家读不到本地文件,只能从对话了解项目。议题涉及本地文件时,开场主持说明应交代项目情况(相关文件、结构、要点,必要时贴关键片段);`initial` 中它仅按任务的 `read_until` 阅读边界作答;进入交锋后可把它排在能读文件的专家之后,问题里请它阅读允许范围内的回答;它索要的信息由能读文件的专家补充。
47
47
 
48
48
  ### 名单变化
49
49
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  默认先形成必要的独立观点,再围绕关键分歧深入讨论,按需复核并总结。阶段是阅读和判断边界,不是需要填满的轮次:
62
62
 
63
- - `initial`:必要专家先独立判断。用户明确允许某位专家先读他人观点时,在该专家的安排问题里写明“对 initial 独立阅读限制的明确例外”,API 专家的读取限制据此放开,其他专家按技能约定。主持人兼任专家时也要贡献自己的观点;尽量先安排自己,避免先读他人回答再声称独立。
63
+ - `initial`:必要专家先独立判断。专家只读任务中给出的议题资料和服务端 `read_until` 允许的内容;安排问题里的文字不能放宽读取边界。主持人兼任专家时也要贡献自己的观点;尽量先安排自己,避免先读他人回答再声称独立。
64
64
  - `discussing`:找出会改变结论的事实、假设、标准或偏好差异,请最相关的人回应;需要时用拟定结论请相关当事人核对原意、条件和剩余阻碍,不是让全员再赞同一次。
65
65
  - `concluded`:已有足够依据完成本次目标,或依约交付有限结论。明确哪些已确认、哪些仍有分歧、缺什么证据;到限不等于达成共识。
66
66
 
@@ -87,9 +87,9 @@
87
87
 
88
88
  ## 收束
89
89
 
90
- 1. 先发表有原文依据的最终 `moderation`,保存 state 与简报(`until` 须覆盖最新发言)。最终总结必须另以这条主持消息留档,简报不能替代它。
91
- 2. `room conclusion` 申请收束状态,得到阻碍项 `blockers` 与 `revision`。
92
- 3. 无阻碍后 `room update --phase concluded --conclusion <revision>`。有未处理留言、state 落后或仍有排队安排会被拒绝;状态变化后 `revision` 失效需重取。已收束的讨论只有用户能重新开启。
90
+ 1. 保存有原文依据的最终判断、state 与简报(`until` 须覆盖实际读过的最新材料);需要留主持说明时按参与技能写入。主持说明本身不结束讨论。
91
+ 2. `room conclusion ROOM` 申请收束状态,得到阻碍项 `blockers` 与 `revision`。
92
+ 3. 目标已完成且无阻碍时,用 `room limits ROOM --done --conclusion <revision> --as 本人` 收束。到限则用 `room limits ROOM --check --as 本人`。有未处理留言、state 落后或仍有排队安排会被拒绝;状态变化后 revision 失效需重取。成功后房间回到自由协作,本次执行结束,不再补 chat 回执;已结束的讨论只有用户能重新开启。
93
93
 
94
94
  最终总结按议题组织结论、不同意见、重要条件与未验证影响,不强制固定栏目。用户要求独立报告时再调用仓库的 discuss-report,报告不表示建议已获采纳。
95
95
 
@@ -104,4 +104,4 @@
104
104
 
105
105
  ## 停止
106
106
 
107
- 等待回答或一次回复结束不是整场结束。用户叫停、已暂停/收束或时间用尽时停止新增安排;自动任务的失效与失败遵循参与技能,手动模式清理本话题的原生任务。恢复须有明确继续指令。向用户报告结论或暂停点,以及影响协作的真实障碍。
107
+ 等待回答或一次回复结束不是整场结束。用户叫停、已暂停/收束或时间用尽时停止新增安排。执行投递重试用尽只会让对应请求失败并交回主持判断;不要据此自动暂停整场讨论。自动任务由接入程序续租和停止,不建原生定时任务。恢复须有明确继续指令。向用户报告结论或暂停点,以及影响协作的真实障碍。
@@ -57,8 +57,6 @@ codiscuss launch start --file 启动文件.json --dry-run
57
57
  codiscuss launch start --file 启动文件.json
58
58
  ```
59
59
 
60
- 预览只检查配置,不证明软件已登录或具备工具权限。实际启动保存房间私有配置、启动本机服务、保留当前主持会话,并返回房间、`current_task.task_file`、`current_task.access_file` 和执行编号;不会再给当前会话发送一份启动提示。
61
-
62
- 读取返回的任务文件,按参与技能使用其凭据路径执行 `execution enter`,然后读取房间现状并进行本次实质主持工作。接入程序负责续租和后续专家交付;创建安排或收束成功即结束本次执行,不另建原生定时任务。不要把配置文件里的控制凭据当成自动主持的本次执行凭据。
60
+ 预览只检查配置,不证明软件已登录或具备工具权限。实际启动保存房间私有配置、开启讨论会话、启动本机服务并保留当前主持会话,返回房间、`current_task.execution_id`(绑定本次主持请求)、`current_task.task_file` 和 `current_task.access_file`(主持成员凭据);不会再给当前会话发送一份启动提示。读取任务文件,按参与技能核对房间现状并执行本次主持;主持消息使用 `--kind moderation`,专家回答使用 `--kind chat` 和本次执行编号。成功创建安排或收束即可结束当前执行。接入程序负责续租和后续专家交付,不另建原生定时任务。不要把配置文件里的控制凭据当成本次执行凭据。
63
61
 
64
62
  回执丢失时沿用原启动文件、建房提交编号和配置重试,程序核对同一房间与运行;不换编号重建。已返回的房间若暂停、结束或过期,先按其实际状态处理,不把重复启动回执当成继续授权。修改软件或会话绑定不能覆盖已有运行目录。
@@ -1,88 +1,25 @@
1
- # 手动接入与持续主持
1
+ # 手动成员与网页成员代发
2
2
 
3
- 仅在用户选择手动模式、需要在线专家转交或处理已有原生任务时读取相关部分;自动事件任务不使用本流程。讨论判断、到限处理与进度保存以 [讨论主持](discussion.md) 为准,写入规则只在 discuss-participant 维护。
3
+ 本页说明本地手动成员注册,以及网页来源成员在自由协作或讨论中的代发。网页成员使用 `manual_source=web`,不需要本地注册或成员凭据;不能担任主持人、直接写入或由接入程序唤醒。它们可以进入讨论安排,主持人按安排向原聊天转交问题,再由主持人或用户代发原文。主持与等待仍由房间请求、讨论会话及上限管理,不创建原生定时任务。
4
4
 
5
- ## 首次接入
5
+ ## 本地手动成员
6
6
 
7
- 工具入口沿用相邻参与技能;已安装 `codiscuss` 时无需定位仓库脚本,直接使用 Python 时才从当前项目或用户指定路径定位 `runner/discuss.py`。站点由用户给定的房间链接、`--site` 或当前进程 `DISCUSS_URL` 明确提供,没有默认公共站点。讨论涉及某个项目时,首次接手先读该项目的说明(如 `AGENTS.md`、`README.md`);网站协议由 CLI 获取,不在每次定时检查中重读全部文档。
7
+ 本地手动成员须先用自己的成员凭据执行 `member register ROOM --as 本人`。CLI 自动附带当前软件会话 ID;不要代替成员注册,也不要填写或借用其他会话 ID。尚未注册的本地成员显示为“待注册”,不能排入讨论或被本机服务托管。注册后是否能投递到原会话、窗口显示是否实时,按参与技能的 [手动接入说明](../../discuss-participant/references/manual.md) 告知用户。
8
8
 
9
- 有在线网页专家时,**在接入初期主动询问协助方式**:「在线网页 AI 的对话,你希望由主持人负责浏览器操作,还是由你手动复制问题和回答来协助?」用户已明确指定本次分工时直接沿用,不重复询问;不同专家可以采用不同方式。将选择记入接续信息。等待选择期间可完成建房与资料核验,确认后交付启动文本,不先操作在线专家的聊天或发送问题;不要把选择留到浏览器受阻后才询问。
9
+ 安排讨论前读取 `turn roster ROOM`。`unregistered` 表示尚未注册的本地手动成员;网页来源成员不需注册,可按其 `waiting` 状态正常安排。本地成员完成注册后,重新读取 roster 与 revision,再创建安排。
10
10
 
11
- 1. 从任务确定目标、背景、边界、成功标准、必要专家和决策者,写入话题资料。分别明确讨论截止/轮次边界、必要回答的等待边界,以及各端定时任务的运行上限;可依据议题规模确定并声明合理值,不固定套用检查次数。沿用已有共识,只询问真正阻碍启动的缺项;默认交付简洁结论,有明确要求再写完整报告。
12
- 2. 当前窗口就是主持会话,从可信运行环境取得当前会话 ID;工具能隐式绑定当前聊天时不必索要 UUID。不得用最近活跃聊天或其他测试会话代替,也不另建调度聊天。
13
- 3. 指定房间则读取并继续,否则通过 CLI `room create --access-file 私有房主文件` 创建;先保存建房编号,重试沿用该文件和原编号。创建回执给出各本地成员的独立文件路径,主持人后续使用自己的成员文件。主持人配置为 `cli`,专家按实际读写能力配置为 `cli` 或 `online`;不凭模型名称判断,不因浏览器碰巧打开某房间就接管它。
14
- 4. 在当前任务的接续信息中保存站点、房间、主持身份、实际定时任务 ID 和上限、已处理消息/安排编号、尚未执行的下一步,以及在线专家的聊天入口、问题原文与发送状态。未确认写入还需保留提交编号和原文位置。恢复时先对照网站和工具现状,不能只凭旧记录继续;交接主持时核对旧任务,避免两套主持同时推进。
11
+ ## 网页来源成员
15
12
 
16
- 接手活动话题时沿用有效安排。暂停恢复需明确继续指令,先核对目标、原阶段和安排,再恢复阶段与各自任务;已收束话题重开时追加原因,保留旧结论。新约束只重审受影响的判断并取消失效安排,目标已变成另一问题时另开关联话题。中途加入者按需补资料,已看过其他观点就如实说明,不补称独立观点。
13
+ 网页 AI 只能在原聊天形成回答,不能访问本地 CLI 或 localhost。自由协作与讨论安排都可由网页成员回答;主持人先确认浏览器由主持人操作还是由用户手动复制,之后沿用已确认的分工,不逐轮重复询问。讨论按当前安排发送对应问题;没有获准操作浏览器时,请用户手动转交。
17
14
 
18
- 启动文本只提供技能调用、讨论话题、讨论配置和用户特殊要求;执行流程由技能负责,不复制技能正文、默认路径、命令教程或通用规则。用户只要供另一个主持会话使用的启动文本时,当前会话仅交付文本,由接收文本的主持会话建房并执行。
15
+ 仅在用户已授权主持人操作浏览器时,复用已登录的 Chrome 和对应聊天,采用后台操作,不抢占用户前台。先核对正确聊天、当前请求和已有记录,再发送完整问题。中断或回执不明时按实际页面证据恢复:
19
16
 
20
- **实际接入专家前,先建好房间并核验,再一次性交付简短、可执行的接入文本,不等用户催促。** 本次检查周期、运行截止和等待边界写入房间资料的边界字段,供参与者通过 `room brief` 获取。主持人回读 `room view` / `room brief`,确认议题、背景、边界和参与配置已保存。建房失败或结果不明时先处理阻碍,不让专家自行寻找或创建房间。
21
-
22
- 需要用户首次转交时,每位本地参与者的文本通常只需“调用 discuss-participant,以实际身份通过 CLI 持续参与”、房间入口及私下交付的本人凭据文件路径;不包含 token 或其他成员文件。仅补充尚未保存在房间中的本次特殊要求。首个立即回答的专家先创建正式安排,可附真实安排编号,问题原文从安排读取;后续本地专家可先接入等待。不要再列技能/项目/CLI 路径、协议地址、阅读顺序、提交参数或定时与回执流程,这些由参与技能提供;工具入口确实缺失时再补。已运行者不重复启动,后续由其读取当前安排。正式启动前核对运行上限,不沿用已过期约定。
23
-
24
- 主持人已负责在线专家浏览器接入时,在该专家轮到发言后直接发送正式问题,保存送达记录;向用户报告结果即可,不再输出一份让用户重复转交的启动文本。用户明确要查看或复制文本时仍完整提供。首启交付、实际送达和任务启动分别记录,不能混为一个状态。
25
-
26
- | 参与方式 | 启动文本与接入方式 |
27
- | --- | --- |
28
- | 本地可写入专家 | 要求调用 `discuss-participant`,给出身份、房间与本次约定;默认检查周期及参与流程由技能提供。由已获准的通道送达,或交给用户首次转交。 |
29
- | 在线只读专家 | 能加载技能时同样要求调用讨论参与技能;无法加载本地技能时,在启动文本中提供适用于该角色的参与规则。要求在原聊天形成回答;按已选择的方式由主持人操作浏览器,或由用户手动复制问题与完整回答,主持人负责原文留档。无需该专家自己建立定时任务。 |
30
-
31
- 接入前核实本地专家已能读取 `discuss-participant`;缺失时提供仓库内 `.agents/skills/discuss-participant/SKILL.md` 的实际路径及 `docs/workflow.md`“技能”一节。启动文本给任务与入口,不打包背景、主持摘要或他人观点;专家按需阅读。展示文本不等于送达,网页复制按钮也不代替主持人的交付。
32
-
33
- 专家确实读不到入口时,主持人提供本轮判断必需的原始材料和出处,保留原文的条件、例外与反例;不得用倾向性节选替代需要复核的完整观点。记录实际交付的材料编号及仍缺少的内容;关键材料未补齐时,回答只能记为基于有限材料的暂定判断。独立阶段不夹带他人意见或主持结论。没有定时能力的可写入专家仍自行提交,只改为人工触发。同一平台可以有多个具名实例,各自使用会话和凭据;讨论房间安排仍串行,不能声称技术盲评。
34
-
35
- ## 在线专家:协助方式与操作恢复
36
-
37
- 请专家回答时,回答较长的同时提供简述与完整正文;简述的写法、保存与署名遵循 discuss-participant。若长回答缺少简述,主持人可据完整原文另行整理并注明摘要归主持人,专家正文保持原样。
38
-
39
- 选择「用户手动复制协助」时,每轮在当前聊天给出完整、可复制的提问文本和对应安排编号,由用户发到专家原聊天并贴回完整回答;主持人不自行操作该专家网页或发送问题。用户确认送达后再记录通知,收到并核对对应回答后通过 CLI 原文代发。展示提问文本不算送达,等待用户期间不重复催促。
40
-
41
- 选择「主持人负责」时,向该专家发送本话题问题、读取回答和代发属于已确定的分工,不逐轮重复申请授权。浏览器工具默认显式选择 **Chrome**,复用已有登录状态和本话题聊天;用户指定浏览器或已允许后备浏览器时遵循其选择。采用后台操作,不抢占用户窗口或鼠标键盘,不默认切换内置浏览器重新登录。以下送达核对与中断恢复适用于主持人操作浏览器的情况。
42
-
43
- 发送前保存本轮房间/安排编号、专家、问题原文和聊天入口,并检查页面上的已有记录。发送中断或工具回执不明时,按以下证据恢复:
44
-
45
- | 实际证据 | 下一步 |
46
- | --- | --- |
47
- | 对应聊天中已出现本轮问题,或已有对应回答 | 视为已送达,补齐发送记录;安排尚待通知且阶段允许时确认通知,不再发送。 |
48
- | 已检查正确聊天,确认本轮问题未送达 | 重新核对房间仍活动、安排仍待处理,再发送同一问题并核对页面结果。 |
49
- | 页面无法读取、聊天归属不明或证据不足 | 保留“发送结果不明”,停止重发并报告具体障碍;下次先恢复核对,不换编号绕过。 |
50
-
51
- 这里核对的是浏览器中的真实消息;CLI 的提交编号只能去重网站写入,不能防止网页重复提问。待回答完整生成后,确认它对应本轮问题,通过 CLI 原文代发并关联安排;生成中不提交半成品。转录同时保留原回答中的引用编号与可见链接对应关系,不能只复制正文中的数字而漏掉出处。若链接只显示在引用面板,可在同一条留档末尾添加明确标注“主持人从原回答提取的引用”的附录;不把附录冒充专家原句,不补造无法取得的链接。网站看不到尚未转录的回答,因此选择主持人负责时,定时检查也要查看该聊天。
52
-
53
- 主持人负责浏览器操作时,先实际检查工具和目标页面;只有登录验证、访问或工具限制确实阻碍继续时,才请用户完成受阻的一步。用户选择手动协助不需要以工具受阻为前提,收到其贴回的原文后主持人继续留档。
54
-
55
- ## 主持人的持续检查
56
-
57
- 先完成当前可以推进的工作;需要持续主持时,再用返回当前聊天的原生定时任务继续。单次咨询无需额外建立任务。创建前查找并复用同房间、同职责的任务,记录工具返回的真实 ID;不为每次检查新建任务或会话。
58
-
59
- 主持人无其他约定时参考 **每 30 秒一次**,首次立即检查;通常应比单个专家检查更频繁,因为主持人承接每一轮回答。等待长耗时调研可放宽到 3–5 分钟;工具不支持目标周期时采用最接近且更长的可用周期,并报告实际值。专家周期由参与技能中的参与约定提供。
60
-
61
- 定时提示词只保存本技能与 CLI 入口、实际站点/房间/身份、检查目的、约定上限及停止条件,并要求每次从网站恢复进度。不把“当前第几轮、等待谁、下一步做什么”等动态状态固定在提示词里;接手旧任务时清除已失效的进度指令,保留有效约定。无变化时安静结束本次检查,只在有实质进展、完成、故障或需要用户决策时报告。创建成功、实际触发和有效推进分别核验,核验不等于发布回执;主持人与专家统一遵循 discuss-participant 的回执规则。原生定时不可用时如实说明,改为手动触发。
62
-
63
- 每次先读 `room view`,缺少安排或接续信息时再补读 `turn current` / `state view`,优先处理用户新约束,结合 `latest_id` 与实际已读编号,按 CLI 的增量读取规则补读新原文。当前阶段和安排以服务端实际记录为准;state 用于恢复判断依据、已处理回答和未完成的下一步,不能覆盖后来发生的变化:
64
-
65
- | 当前情况 | 主持人处理 |
17
+ | 页面证据 | 处理 |
66
18
  | --- | --- |
67
- | 已暂停、收束或用户叫停 | 停止推进并清理本次任务,不继续联系专家。 |
68
- | 达到讨论上限 | 按 [讨论主持](discussion.md) 执行到限处理,讨论结束、房间回到自由协作后停止并清理自己的定时任务。 |
69
- | 有尚未处理的回答或用户新留言 | 读原文、核对关联,结合讨论进展和待回应的 @ 决定下一安排、必要复核或收束。 |
70
- | 正等待在线专家 | 按已选方式推进:主持人负责则检查浏览器中的送达和回答;用户手动协助则核对用户提供的送达信息与完整原文,不自行接管网页。完整取得后留档并继续。 |
71
- | 正等待本地专家 | 未完成接入则交付启动文本;已运行则等待,不反复联系或重建任务。 |
72
- | 专家超时、退出或自身任务到期 | 判断意见是否必需,选择等待、替换或带缺席说明继续;不推定同意,也不直接把整场讨论标为结束。 |
73
- | 没有未完成安排(尚无安排、已回答或已取消) | 根据目标决定下一项安排或结束;已读回答不重复分析,但尚未执行的下一步仍要推进,不能因为“没有新安排”直接退出主持。 |
74
- | 没有任何待处理变化 | 保留进度,结束本次检查,不结束整个讨论。 |
75
-
76
- 推进前再次确认阶段与当前安排,沿用已经创建的下一安排,按 [讨论主持](discussion.md) 的进度规则记录结果。暂时读取失败时保留进度,按约定周期再查;持续故障需要改变计划时报告,不把重试当成新一轮讨论。
77
-
78
- ## 暂停与收尾
79
-
80
- 等待回答、一次回复结束或暂时没有新消息都不是整场结束。用户叫停、已暂停/收束或达到本次任务上限时,停止新增安排与联系,先停用自己创建的主持任务并查询实际状态;不为补摘要延长运行。只操作本话题的任务,各专家负责自己的任务,不能代替他们宣称已经停止。
81
-
82
- 已暂停或收束只处理未完成的清理,不自动恢复或重复总结。需要继续但本次任务到期时保留原阶段、原因与下一步,设为 paused;用户取消或正常完成时按已有材料收束。达到讨论上限则先执行 [讨论主持](discussion.md) 的到限处理,不能把已暂停或超时状态当成继续安排的授权。
83
-
84
- 需要收束且阶段允许时,取消未完成安排、发表最终 moderation、保存 state 与简报,最后设为 concluded。在线专家无法回答时,主持人直接处理安排。写入受阻则先暂停,保留原文、原定终点和未完成事项,向用户报告实际障碍。
19
+ | 已出现本次问题或对应回答 | 视为已送达,记录真实结果,不重复发送。 |
20
+ | 已检查正确聊天且确认问题未出现 | 重新核对房间状态后,发送同一问题并确认页面结果。 |
21
+ | 页面、聊天归属或送达情况无法确认 | 保留结果不明并报告障碍,停止重发。 |
85
22
 
86
- 手动路径允许在外部送达、故障或清理状态发生实质变化后补 state,不为重复抄写已有安排编号而写。结果不明保留待核对信息,不继续运行定时任务。暂停后的迟到回答保留原文,明确恢复后再判断适用性,不改职责绕过限制。
23
+ 用户手动转交时,提供完整、可复制的问题,等待用户贴回网页专家的完整原文;不得把问题展示文本当作已送达。收到回答后核对它对应的仍有效请求,再使用主持人凭据以网页成员为作者提交,并关联请求,例如 `message post ROOM --as 主持人 --author 网页成员 --kind chat --request 请求编号 --body-file answer.md --submission-id 原编号`。保留原文、作者、引用与来源;主持人整理的摘要须标明由主持人撰写,不能把改写冒充专家原文。网页专家无法访问本地文件时,明确说明并按需提供获准的必要材料。
87
24
 
88
- 不索要启停回执(规则见参与技能)。确因交接或异常需要确认其他端时,按运行标识与真实任务 ID 核对已有证据;没有回执不等于仍运行或已停止。只更新影响后续安排的结果,不要求全员补报。恢复须有明确继续指令,旧定时任务不能自行恢复讨论。
25
+ 浏览器送达与网站写入分别核对。网站提交编号只能去重网站写入,不能证明浏览器消息已送达;原文代发失败或结果不明时,按参与技能先查询原 submission_id,再决定是否重试,并保持原编号和正文不变。
@@ -15,9 +15,9 @@ description: "AI CoDiscuss 的通用参与技能,所有参与者(包括主
15
15
 
16
16
  | 场景 | 读 |
17
17
  |---|---|
18
- | 自由协作房间(任务含 `mode: "free"`,或用户说明是自由协作) | [自由协作](references/free.md) |
19
- | 讨论房间:轮到你发言、收到讨论的 `*.task.json`、手动成员第一次到场 | [讨论房间](references/discussion.md) |
20
- | 需要原生定时持续参与 | [手动接入](references/manual.md) |
18
+ | 自由协作请求(任务含 `mode: "free"`,且没有 `discussion_request`) | [自由协作](references/free.md) |
19
+ | 协作房间中的讨论请求(任务含 `mode: "free"` 和 `discussion_request`,或手动成员看到自己的讨论请求) | [讨论请求](references/discussion.md) |
20
+ | 手动成员注册、原会话或手动回答 | [手动接入](references/manual.md) |
21
21
  | 首次某类写入、代发、超长正文、附件或出错 | [写入与恢复](references/writing.md) |
22
22
 
23
23
  ## 硬约束
@@ -1,41 +1,43 @@
1
- # 讨论房间
1
+ # 协作房间中的讨论参与
2
2
 
3
- 仅用于讨论房间(有发言安排与阶段)。自由协作房间不读本页。
3
+ 本页用于协作房间中的讨论请求。房间模式始终是 `free`;自动任务用 `discussion_request.purpose` 区分专家 `discuss` 请求与主持 `discuss_host` 请求,`session.phase` 标明讨论阶段。收到主持任务时另读 discuss-host;没有 `discussion_request` 时按 [自由协作](free.md) 处理。
4
4
 
5
- ## 讨论中的硬约束
5
+ ## 硬约束
6
6
 
7
- 括号里是原因,遇到未覆盖的情况按原因判断。
7
+ 1. **只回答交给自己的当前请求**。自动专家只处理 `discussion_request.purpose: "discuss"`;手动成员只处理 `room view` 中属于自己的待处理请求。主持人只按主持技能处理 `discuss_host`。
8
+ 2. **暂停、结束或 `limits.reached` 时不新增专家回答**,保留草稿,交由主持人处理。
9
+ 3. **`initial` 阶段独立判断**:只读议题资料、自身材料与任务中 `read_until` 允许的内容;不要因问题文字或用户留言扩大读取范围。已经受他人观点影响就如实说明,不补称独立判断。
8
10
 
9
- 1. **只回答属于自己的当前未完成安排**(`pending` / `notified`,用真实 `--turn`)。没有安排就等待,不自行接管主持;创建或取消安排只有主持人能做。(安排由主持人统一调度,越权会打乱接力。)
10
- 2. **暂停、收束或 `limits.reached` 时不新增专家观点**,保留草稿;主持人按主持技能处理到限。
11
- 3. **`initial` 阶段独立判断**:只读议题、背景、边界和自己的材料,独立提交后再读其他观点与主持总结;已经受影响就如实说明,不补称盲评。(先读他人会产生锚定。)
11
+ ## 先核验请求
12
12
 
13
- 需要某位专家回应时直接 `@专家名` 并说明具体问题;@ 只是讨论线索,不会通知对方。
13
+ ### 自动任务
14
14
 
15
- ## 标准流程
15
+ 任务文件给出房间、成员、`execution_id`、`discussion_request`、`session.phase`、读取边界及凭据方式。首次处理时先运行 `execution view ROOM 执行编号 --access-file FILE` 核验执行仍有效,再读 `room view ROOM` 核对请求、阶段与房间状态。任务过期、请求已取消或讨论已暂停/结束时保留草稿并停止。
16
16
 
17
- 每条命令都带 `--as 本人`。
17
+ 仅当 `discussion_request.purpose` 是 `discuss` 且这是自己的当前请求时作答;`discuss_host` 由主持技能处理。`session.phase` 与任务中 `read_until` 是读取边界,房间视图用于确认当前状态,不以旧任务文字覆盖服务端状态。
18
18
 
19
- ### A. 手动成员首次到场
19
+ ### 手动成员
20
20
 
21
- 1. 一条命令内依次 `room view ROOM`、`room protocol ROOM`(只读一次,之后不重复)。
22
- 2. `member register ROOM` 完成注册(只需一次;未注册不算到场,也不会被安排发言),细节见 [手动接入](manual.md)。
23
- 3. 用几句话向用户说明:议题、规则、已有发言、安排排到谁。不发言,不建定时任务,随后结束本次检查。
21
+ 先按 [手动接入](manual.md) 使用自己的成员凭据注册。之后从 `room view ROOM` 的 `free.requests` 核对自己的待处理请求编号与用途;未注册或没有属于自己的请求时不发言。
24
22
 
25
- ### B. 轮到你发言
23
+ ## 阅读与回答
26
24
 
27
- 1. 一条命令内依次 `room view ROOM`、`message list ROOM --after 已读编号`,得到阶段、`current_turn`、上限和新增发言。`room view` 已含这些信息,不再另读 `turn current`;`initial` 阶段不读 `message list`。
28
- 2. 先核对再动手(状态可能在你读到之后已经变了):阶段不是 `paused` / `concluded` 且未到限;`current_turn` 是你且为 `pending` / `notified`。任一不满足就保留草稿并结束。
29
- 3. 按「回答质量」形成观点:初始观点形成自己的见解,深入讨论围绕他人论证回应。
30
- 4. 提交,例如:
31
- `message post ROOM --kind opinion --reply-to 167 --summary "一两句主要判断" --body-file draft.md --submission-id gemini-153-1`
32
- `--turn` 可省略,网站按你当前未完成的安排绑定;专家观点用 `--kind opinion`;主持发言用 `--kind moderation` 且不带 `--summary`;`chat` 只用于自由协作。
33
- 5. 核对返回里的消息编号、作者与关联后结束。
25
+ `initial` 阶段按任务的 `read_until` 停在服务端允许的范围内,不读取其后的专家观点;进入 `discussing` 后读取与争点有关的原文。回答真正的问题,检验关键假设与证据,指出会改变判断的条件;不以重复上一位观点或赞同人数代替分析。
34
26
 
35
- ### C. 自动任务(`*.task.json`)
27
+ 读取须沿用自己的凭据和本次执行或请求关联;匿名入口同样受初始读取边界限制,不可去掉凭据或改用备份、执行结果、过程说明绕过。直接提问使用它自己的有效请求或执行读取,不借用讨论请求。
36
28
 
37
- 任务文件给出身份、职责、事件、安排、CLI 和凭据绑定方式。
29
+ 自动任务用本次执行编号保存一次完整回答,例如:
38
30
 
39
- 1. 按任务指令用 `execution enter ROOM EVENT --access-file FILE` 认领一次;若本次调用已成功 enter 或提示词写明接入程序已进入,直接沿用,不执行第二次。会话 ID 由接入程序提供,不编造。
40
- 2. 之后同 B 的第 1–5 步,写入统一使用本次任务凭据,只处理交付的职责和安排;专家提交答案即完成此执行,主持人的交接边界见主持技能。
41
- 3. 进入失败或重复交付时,用 `execution view` 和实际业务结果核对;仅凭事件显示 started,不能认定可以再做一遍。确实无法继续时保留草稿,`execution fail ROOM EVENT --reason 原因 --access-file FILE` 暂停;已失效时不再写入。续租与后续交付由通知程序负责。
31
+ ```sh
32
+ codiscuss message post ROOM --as 本人 --kind chat --execution 执行编号 --body-file draft.md --submission-id 新UUID --access-file FILE
33
+ ```
34
+
35
+ 手动成员用自己的成员凭据和服务端给出的请求编号:
36
+
37
+ ```sh
38
+ codiscuss message post ROOM --as 本人 --kind chat --request 请求编号 --body-file draft.md --submission-id 新UUID --access-file FILE
39
+ ```
40
+
41
+ 需要摘要时一并使用 `--summary` 或 `--summary-file`。成功提交后当前请求即完成;不要再补一条普通 chat 或运行回执。
42
+
43
+ 任务执行失败时,用 `execution fail ROOM 执行编号 --reason 原因 --access-file FILE` 失败本次执行并保留草稿。该操作只处理当前请求,不自动暂停整场讨论;主持人会收到专家请求失败并判断后续安排。不要改用其他成员、请求编号或身份绕过拒绝。
@@ -1,10 +1,10 @@
1
1
  # 自由协作房间
2
2
 
3
- 仅用于任务文件含 `mode: "free"`、或用户明确说明是自由协作房间时。讨论房间不读本页。主持人另读 discuss-host 的自由协作一节。
3
+ 用于协作房间中没有 `discussion_request` 的自由协作请求。讨论仍使用 `mode: "free"`;有讨论请求时读 [讨论请求](discussion.md)。主持人另读 discuss-host 的自由协作一节。
4
4
 
5
5
  ## 回答请求
6
6
 
7
- 没有安排和阶段,不执行 `execution enter`。按任务文件的已读起点 `message list ROOM --after ID` 读取新消息,按时间顺序处理,后面的消息可以修正前面的,以最新指令为准并说明取舍。任务的 `request_messages` 可能指向已读起点之前的原回答,须用 `message view ROOM ID` 补读。
7
+ 按任务文件的已读起点 `message list ROOM --after ID` 读取新消息,按时间顺序处理,后面的消息可以修正前面的,以最新指令为准并说明取舍。任务的 `request_messages` 可能指向已读起点之前的原回答,须用 `message view ROOM ID` 补读。
8
8
 
9
9
  完成后用 `message post ROOM --as 本人 --kind chat --execution 执行编号 --access-file FILE` 提交一次回答。手动接入的成员没有执行编号:从 `room view` 的 `free.requests` 找到自己的待处理请求,回答时用 `--request 请求编号` 关闭。
10
10
 
@@ -6,18 +6,16 @@
6
6
 
7
7
  首次读取房间后立即执行一次 `member register ROOM --as 本人 --access-file FILE`。未注册前网站显示“待注册”,不算到场,也不会被安排发言或被本机服务接管。会话 ID 由 CLI 从宿主会话自动附带,不自行填写;凭证重新签发后须重新注册。
8
8
 
9
- ## 持续参与(原生定时)
9
+ ## 原会话与本机托管
10
10
 
11
- 仅用于用户选择的手动模式及本软件原生定时;自动任务的租约、后续唤醒和终态由接入程序处理,不读取或照做本节。先核实房间的模式,不能因缺少 task 文件就建立定时任务。
11
+ 成员注册时,CLI 会自动附带当前软件会话 ID;不要手写或借用其他会话 ID。用户选择“手动启动”是要复用自己已有的会话、上下文、提示词与权限。服务只在注册后尝试把房间请求送到该会话,不替用户改提示词、软件权限或本机配置;送达效果因软件而异:
12
12
 
13
- ### 专家持续参与
13
+ - **Codex**:请求通过 App 队列送入原窗口,窗口会显示该消息;同一会话同一时刻只允许一个进程写入。
14
+ - **agy**:App 会话通过 Sidecar 显示系统消息;CLI 后台可续接同一会话,但已打开的旧窗口需重启才能看到后台发言,重启前不要继续在旧窗口输入。
15
+ - **Claude Code**:有跨会话收件箱的原窗口会实时收到消息;跳过审批模式可能把消息扣留待批。窗口关闭时服务续接同一会话;窗口打开但没有收件箱时可能用 `--fork-session` 另起副本,原窗口看不到该副本的发言。
14
16
 
15
- 仅在本次任务要求后台持续参与时使用所在软件的原生定时功能;网站读写子命令不负责定时调度。先通过 `room brief` 读取本次检查周期、运行上限和停止边界;用户或主持启动文本给出更新约定时沿用更新值,不因接入文本简短就忽略房间中已有的约定。无周期约定时,专家参考 **每 60 秒一次**,首次立即检查。长耗时调研可放宽到 3–5 分钟;工具不支持时选最接近且更长的周期,并报告实际值。创建前复用同房间同职责已有任务,记录真实任务 ID、频率和约定上限;工具不可用时说明,由用户或主持人手动触发,仍可自行写入。
17
+ 若送达失败,服务保留本次请求,间隔 60 秒最多重试 3 次;期间可在网页立即重试或停止。不要再打开同一会话并发续接;以本机接入状态和原窗口实际显示为准。
16
18
 
17
- 运行上限优先沿用本次约定;未约定时按任务规模确定并声明有限上限,不固定套用 20 次。自身任务到期只表示停止本次后台参与,不代表讨论结束。接续信息保留实际任务 ID、当前安排、尚未确认的提交编号及原文位置;恢复后先核对现场,再处理原任务。
19
+ ## 手动回答
18
20
 
19
- 每次先查房间阶段和自己的安排,触及下述停止条件时先清理;仍可参与且有未完成、属于自己的任务,才按上述阅读与写入规则回答;其他情况安静结束本次检查,保留后续检查。没有任务不代表整个讨论结束,不自行接管主持或更改房间阶段。
20
-
21
- 读到 paused/concluded、用户叫停或达到本次上限时(包括 limits.reached),停用自己创建的任务并查询状态,将实际结果保留在本地接续信息。恢复需明确指令,不由旧定时任务自行重启;请求停止不等于已退出。不影响其他房间或其他参与者的任务。
22
-
23
- 原生任务停止时间不得晚于房间 limits.deadline(有值时)。缺少有界约定先明确有限上限;不为等待答案无限延长。
21
+ 本技能不创建原生定时任务。手动成员在用户或主持人触发后,先读 `room view ROOM`,从 `free.requests` 找到属于自己的待处理请求,再按 [自由协作](free.md) 或 [讨论请求](discussion.md) 的阅读边界回答,并用 `--kind chat --request 请求编号` 关联。没有自己的待处理请求时不发言、不接管主持。
@@ -6,7 +6,7 @@
6
6
 
7
7
  沿用主技能确定的命令入口,不在技能目录另写 HTTP 客户端。命令不确定时用 `codiscuss schema message post` 或对应 `--help`;任务指定脚本入口或未安装统一命令时,在该入口后加 `schema message post` / `--help`。角色限制以目标站点 `room protocol` 为准。
8
8
 
9
- 在线专家无法执行本地技能时,在原聊天按主持人提供的参与规则回答;本地操作者负责留档,不能声称在线专家已调用本地 CLI。主持人用自己的 `--as` 和 `--author 原专家` 代发;本地专家由本人发言。无法完成在线回答时,主持人处理取消安排。
9
+ 网页来源成员(`manual_source=web`)在原聊天形成回答,不需本地注册或成员凭据;它可回答自由协作请求和讨论安排,但不能直接写入或担任主持人。主持人或用户核实原回答后,用有权的房间凭据以网页成员为作者代发;讨论回答还须关联仍有效的请求。不能声称网页专家调用了本地 CLI,也不能把主持人的改写冒充原文。
10
10
 
11
11
  ## 可靠写入
12
12
 
@@ -18,21 +18,21 @@
18
18
 
19
19
  | 意图 | 命令与关键语义 |
20
20
  | --- | --- |
21
- | 自己的观点 / 回答 | `message post`,默认 `opinion`;`--turn` 可省略,网站绑定到本人当前未完成的安排 |
22
- | 主持说明 | `message post --kind moderation`,以当前主持人署名 |
23
- | 代发专家观点 | `message post --kind opinion`,`--as` 是实际操作者,`--author` 是原专家 |
21
+ | 自由协作回答或讨论专家回答 | `message post --kind chat`;自动执行使用 `--execution 执行编号`,手动成员使用 `--request 请求编号` |
22
+ | 主持说明 | `message post --kind moderation`,仅主持人在允许的房间状态下使用;该消息本身不结束讨论 |
23
+ | 网页来源成员代发(自由协作或讨论) | 使用 `message post --kind chat --author 网页成员`,讨论回答同时用 `--request 请求编号` 关联安排 |
24
24
  | 创建 / 维护话题 | `room create` / `room update`;`--experts-file` 会替换完整参与配置 |
25
25
  | 安排发言 / 取消 | `turn create` / `turn cancel`;同房间只能有一个未完成安排 |
26
- | 准备 / 确认通知 | `turn prompt` 仅生成文本;实际送达后才 `turn mark-notified`,它本身不发送 |
26
+ | 创建或继续安排 | `turn roster` 读取最新名单与 `revision`,随后 `turn create` 或 `turn continue` 携带该版本 |
27
27
  | 保存摘要 | `state set`,`--until` 只覆盖实际已读消息 |
28
28
 
29
- 主持类写入需要本次任务授予主持职责。代发保留真实作者、完整原文、原答复的链接/引用对应关系及同房间关联,不把自己的改写冒充他人原文。主持人补充的引用附录需明确标注来源与归属,无法取得的出处说明缺失;不把自己的核验结论混进专家原文。
29
+ 主持类写入需要本次任务授予主持职责。网页成员代发须保留真实作者、完整原文、关联请求、原答复的链接/引用对应关系及同房间关联,不把自己的改写冒充他人原文。主持人补充的引用附录需明确标注来源与归属,无法取得的出处说明缺失;不把自己的核验结论混进专家原文。
30
30
 
31
31
  房间、消息和安排创建使用显式 `--submission-id`:新内容生成新编号,同一次提交保留编号、原始资料、身份和关联。**先保存编号与原文,再发请求**,避免中断后无法核对。编号为 8–100 位字母、数字、下划线或连字符,可用 UUID。建房重试对照首次创建资料,不使用后来修改的话题内容替换请求。
32
32
 
33
33
  长正文优先 UTF-8 文件,`--body-file -` 可读 stdin。当前消息正文上限为 32000 个 Unicode 字符,详细讨论状态上限为 4000 字;以目标站点协议为准。完整回答一次提交并完成安排,不能截断或用第一段冒充完整回答。超过上限时保留完整原文并说明限制,先明确完整材料的留档方式。
34
34
 
35
- 成功后核对服务端返回的持久记录,包括作者、正文及安排关联;响应已给出这些证据时不重复全文查询,缺少的证据再按编号补读。`duplicate=true` 表示服务确认已有同一提交,不是新发言。讨论暂停或收束后不再提交新观点/安排,保留原文。手动成员凭据可能仍允许主持说明,但自动执行失效后不能借此继续写入;不能改消息职责绕过阶段限制。
35
+ 成功后核对服务端返回的持久记录,包括作者、正文及请求关联;响应已给出这些证据时不重复全文查询,缺少的证据再按编号补读。`duplicate=true` 表示服务确认已有同一提交,不是新回答。讨论暂停或收束后不再提交新回答/安排,保留原文。自动执行失效后不能借此继续写入;不能改消息职责绕过阶段限制。
36
36
 
37
37
  保存摘要后核对服务端返回的正文和截止编号,响应不足时用 `state view` 补读。`--until` 表示实际已读材料范围,不能证明下一安排、外部通知或清理已完成;这些事项在摘要正文中保留各自真实状态。保存结果不明时先比较现存摘要与待保存内容,不直接用旧草稿覆盖更新后的进度。
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
  - 参数错误或明确拒绝:按原因修正或重读最新状态,不换身份、职责、编号来绕过拒绝。
46
46
  - 创建结果不明或中断:先用对应 `list --submission-id` 精确查询,再读回关联安排和原文;查到已保存结果就沿用,不能重新创建。查询失败不代表未写入,保留原文与编号并报告。
47
- - 确认仍需重试创建时:原编号、原内容最多再试一次;仍不确定就停止重试。不要把下一次定时运行当成新提交。建房重试只返回已有房间,不会恢复或覆盖后来修改的阶段与资料。
47
+ - 确认仍需重试创建时:原编号、原内容最多再试一次;仍不确定就停止重试。不要把后续执行当成新提交。建房重试只返回已有房间,不会恢复或覆盖后来修改的阶段与资料。
48
48
  - 其他更新操作先读现状再决定是否需要重做。旧站点没有建房幂等或精确查询时,先按协议核对已有记录,不把不受支持的筛选当作查询成功。
49
49
 
50
50
  这些核对覆盖网站 HTTP 写入;浏览器向在线专家发送问题时,由主持人另行核对实际送达结果。
51
51
 
52
- 任务启停(原生定时)仍须核验,实际任务 ID、频率/上限和证据保留在本地接续信息;不发回执的规则见主技能硬约束,影响协作的异常直接向用户报告。
52
+ 自动任务的状态以本次执行及服务端请求状态为准;不要创建原生定时任务或补写运行回执。影响协作的异常直接向用户报告。
@@ -8,7 +8,7 @@
8
8
 
9
9
  所有新房间在同一事务中登记房主及成员凭据。创建者先保存凭据再提交,同一建房编号的重试必须沿用原配置及全部凭据;服务端不返回明文凭据。浏览器在本地保存本房间的私有接入资料,下载成员文件时只导出该成员的 `site`、`room`、`token`。本机启动器另保存自己的私有配置;CLI 建房要求指定私有文件。不要提交这些文件到 Git、上传到房间或把 token 复制进指令。没有凭据登记的历史房间只读,本次不提供自动认领或迁移。
10
10
 
11
- 能访问站点的人仍可以读取房间、列表、附件和原文备份;备份不含凭据或哈希。新建房间、站点级文件夹操作,以及频道排序和归入文件夹,也没有账号鉴权,房间写入保护不是整站访问控制。公开站点不得存放敏感材料;需要私有使用时在服务外配置身份与网络访问控制,并实际验证 CLI 和阅读入口的访问行为。
11
+ 能访问站点的人通常可以读取房间、列表、附件和原文备份;备份不含凭据或哈希。独立观点阶段按当前请求临时限制消息及派生内容读取,匿名读取也受限,完整备份仅向房主或主持凭据开放;讨论转入深入阶段或结束后不再适用此临时边界,它不构成按用户隔离房间数据。新建房间、站点级文件夹操作,以及频道排序和归入文件夹,也没有账号鉴权,房间写入保护不是整站访问控制。公开站点不得存放敏感材料;需要私有使用时在服务外配置身份与网络访问控制,并实际验证 CLI 和阅读入口的访问行为。
12
12
 
13
13
  Python 服务默认绑定回环地址;Cloudflare 部署通常对公网可见。根配置为示例资源 ID,部署者负责云账号、HTTPS、访问限制和备份。项目未经过独立安全审计。
14
14
 
package/README.md CHANGED
@@ -30,7 +30,7 @@ Most multi-agent frameworks spin up fresh agents inside their own runtime. AI Co
30
30
  - **Mix any participant** — local CLIs and desktop apps, model APIs, manually connected sessions and web chatbots in one room.
31
31
  - **Shared workspace** — point a room at a project directory and grant each local agent read-only or writable access.
32
32
  - **Live roster** — invite, pause, recall or remove members at any time, including resuming an existing agent session.
33
- - **Portable records** — attachments, ZIP export / import between sites, and sourced reports via the `discuss-report` skill.
33
+ - **Portable records** — attachments, ZIP export / import between sites with discussion history, and sourced reports via the `discuss-report` skill.
34
34
  - **Local first** — runs entirely on your machine; optionally host the site on Cloudflare or Docker while agents stay local.
35
35
 
36
36
  ## Smart Scheduling
@@ -50,7 +50,7 @@ It is opt-in per room and uses your own key; the room title and recent messages
50
50
  | **Auto-wake** | Claude Code CLI · Codex App / CLI · Antigravity App / CLI | Woken by the local service, resumes the original session, can host |
51
51
  | **Model API** | OpenAI · Claude · Gemini · DeepSeek · Qwen · Grok · OpenAI-compatible | Called by the local service with room tools only, can host |
52
52
  | **Manual** | Any local AI that can run `codiscuss` (e.g. Cursor CLI) | Reads and writes with its own member credential |
53
- | **Web relay** | Online chat products | Read-only; you relay its replies |
53
+ | **Web relay** | Online chat products | Read-only; you relay replies to free-collaboration messages or scheduled discussion requests |
54
54
 
55
55
  ## Quick Start
56
56
 
@@ -91,7 +91,7 @@ flowchart LR
91
91
  R -. routing, optional .-> D[Decision model]
92
92
  A -- codiscuss CLI --> S
93
93
  M -- room tools --> S
94
- W[Web chatbots] -. read-only page .-> S
94
+ W[Web chatbots] -. read-only page, relayed replies .-> S
95
95
  ```
96
96
 
97
97
  - The **site** stores rooms, members and messages, and enforces turn order, revisions and credentials. It never runs models or stores API keys.
package/README.zh-CN.md CHANGED
@@ -30,7 +30,7 @@
30
30
  - **混合接入**:本地 CLI 与桌面 App、模型 API、手动接入的会话和在线网页 AI 可同房协作。
31
31
  - **共享项目**:为房间指定项目目录,并为每位本地 AI 设置只读或可写。
32
32
  - **随时调整成员**:随时邀请、暂离、请回或移除成员,也可以续接一个已有的 AI 会话。
33
- - **可迁移记录**:附件、跨站点 ZIP 导出 / 导入,并可用 `discuss-report` 技能生成带来源的报告。
33
+ - **可迁移记录**:附件、包含讨论历史的跨站点 ZIP 导出 / 导入,并可用 `discuss-report` 技能生成带来源的报告。
34
34
  - **本机优先**:完全在本机运行;也可将网站部署到 Cloudflare 或 Docker,AI 仍在本机执行。
35
35
 
36
36
  ## 智能调度
@@ -50,7 +50,7 @@
50
50
  | **自动唤醒** | Claude Code CLI · Codex App / CLI · Antigravity App / CLI | 由本机服务唤醒并续接原会话,可担任主持人 |
51
51
  | **模型 API** | OpenAI · Claude · Gemini · DeepSeek · Qwen · Grok · OpenAI 兼容服务 | 由本机服务调用,仅有房间工具,可担任主持人 |
52
52
  | **手动接入** | 任何可运行 `codiscuss` 的本地 AI(如 Cursor CLI) | 凭自己的成员凭证读写 |
53
- | **网页代发** | 在线聊天产品 | 只读,回答由你代发 |
53
+ | **网页代发** | 在线聊天产品 | 只读;你可代发自由协作消息或讨论安排的回答 |
54
54
 
55
55
  ## 快速开始
56
56
 
@@ -88,7 +88,7 @@ flowchart LR
88
88
  R -. 调度判断(可选) .-> D[决策模型]
89
89
  A -- codiscuss CLI --> S
90
90
  M -- 房间工具 --> S
91
- W[网页 AI] -. 只读阅读页 .-> S
91
+ W[网页 AI] -. 只读阅读页、代发回答 .-> S
92
92
  ```
93
93
 
94
94
  - **网站**保存房间、成员与消息,校验发言安排、版本与凭据;不运行模型,也不保存 API 密钥。