ai_co_discuss 0.2.69 → 0.2.71

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.
package/docs/workflow.md CHANGED
@@ -1,153 +1,155 @@
1
- # 讨论工作流
2
-
3
- 网站保存共享记录,主持人负责判断与安排,各 AI 在自己的软件或用户配置的 API 中形成意见。软件参与者由 Skill 定义协作规则、CLI 执行单次读写;API 参与者由本机程序提供房间工具,保留相同的阶段、独立观点、原文、身份与执行边界。程序唤醒可混用两种入口,API 专家和主持人仅使用房间上下文。
4
-
5
- ## 选择推进方式
6
-
7
- - **讨论(全自动)**:主持人与专家都由本机服务唤醒(CLI / App / API)。本机软件与权限配置完成后明确启动,可按轮次、总时长上限或手动停止结束。主持创建正式安排即结束本步;专家自行回答,程序再续接原主持。自动任务不另建原生定时。项目及 cwd 可选,分别属于本机接入配置。本地专家可单独选“手动接入”:成员记录带 `adapter: manual`,不被唤醒,凭自己的成员凭证提交安排内的回答,接入程序不派发它的事件,回答保存后照常续接主持人;主持人必须由本机唤醒。手动专家若运行在 Claude Code 或 Codex 中,任一带凭据的 CLI 调用(首条通常是 `room view`)都会附带该会话的 `CLAUDE_CODE_SESSION_ID` / `CODEX_THREAD_ID`(Codex 桌面应用会话转为 `codex`,其余转为 `codex_cli`),本机服务核对本机存在该会话后自动把它转为托管(`access=runner`、借用会话),之后每轮照常唤醒;服务没有 Claude 配置、找不到会话或其他软件的手动专家仍停在手动。手动专家不回答时讨论停在该安排,由用户取消安排(主持人被唤醒重新安排),或受轮次与总时长上限约束,没有单独的自动超时。模式在手动与全自动间切换时,带 `adapter: manual` 的专家保持手动(转为托管后不再带此标记)。网页 AI 会打断自动推进,只进入自由协作。
8
- - **开启 / 结束讨论**:讨论是自由协作房间里可临时开启的推进手段,不再是另一种房间。房主在右侧成员栏点“开启讨论”(目标、轮次与总时长上限,需一位由本机唤醒的 AI 主持人),房间变为讨论状态,由主持人安排成员轮流发言;到限、收束或点“结束”后房间回到自由协作,成员、历史与结论全部保留,之后还可再次开启(计数与计时重置)。开启与结束由房主凭据调用 `POST discussion {action: start|end}`。
9
- - **自由协作**:你或 AI 主持人点名一位或多位成员,各自在原会话处理请求;没有讨论安排和轮次。每位成员单独选择本机唤醒、手动接入或网页代发,见下方 [自由协作房间](#自由协作房间)。
10
- - **手动接入**:自由协作成员的一种接入方式。本地成员持自己的凭据文件自行读写,可由人工或软件原生定时触发;网页成员只能阅读房间,回答需转交代发;网页 AI 从其服务器读取阅读链接,本机网站对它不可达,此时由用户粘贴材料。只有这两种成员时建房无需本机接入服务。复制参与指令、下载凭据文件或复制凭证文本都不代表已经送达、接入或唤醒。
11
-
12
- 讨论中随时可以直接提问:在输入框 @ 一位或多位在场成员(含主持人),网站为每位被点名者建一条“直接提问”请求,立即唤醒,任何阶段(含暂停、收束)都可用;它不占发言安排、不计轮次与时长上限,也不改变讨论进度,回答保存为普通发言(chat)并带请求状态徽标。成员正在处理讨论安排时,它的直接提问排队等安排结束,反之同理,同一会话不并发续接;讨论运行中 @ 主持人时不另建请求(主持人本来就会处理用户留言)。手动成员可用 `--request` 关联请求回答,网页成员由你代发。
13
-
14
- 讨论运行中可在进度看板邀请专家(经本机服务配置后加入;Codex CLI / App、Claude 可填写已有会话 ID,续接这个带有自己上下文的原会话,标注为借用会话),或从成员菜单让专家暂离、请回或移除。暂离会取消它当前与排队中的安排,保留位置与会话,不计入之后的轮次;请回换发新凭证、续接原会话。邀请保留已有安排,新专家排在已有安排之后;暂离、请回或移除不暂停讨论,但排队中的安排作废,由主持人重新安排;主持人本身不能暂离或移除,更换主持人仍会暂停;正在发言(有进行中安排)的专家须先暂停讨论才能暂离或移除。已保存的观点属于讨论记录,不能删除;需要纠正时请主持人追问或让该专家补充一条。故障只暂停并保留原因,不静默换软件、身份或创建第二个会话。
15
-
16
- 邀请弹窗与新建房间使用同一种角色卡片(同宽、正反面等高):可一次选多位 AI(每个平台一张卡片,已在场的平台以新实例加入),在卡片正面切换“程序启动 / 手动启动”,点“邀请”后先加入程序启动的成员、再加入手动启动的成员(各自保持选择顺序),避免尚未注册的手动成员堵住自动成员;遇到第一个失败即停止并保留未处理的卡片。手动成员加入后弹窗列出它们的复制按钮和实时注册状态。手动启动卡片没有设置项,不翻面,正面直接写已实测的接管差异:Codex 的消息可实时送入已开窗口;agy 的后台发言写入同一会话、已开窗口需重启才显示;Claude Code 的后台接管会让会话分叉、原窗口看不到。已有本轮发言安排时,新邀请的自动专家立即排在队列末尾,手动专家在自己完成注册后才排入(未注册前不排入,避免队列停在它身上);保留当前发言和原有相对顺序、问题;重复邀请请求不重复排队。暂停或尚无安排时,由主持人在继续推进时将新专家安排在本轮尚未发言的原专家之后;进入收束后不再追加安排。邀请不会启动或恢复讨论,也不会清除待处理的用户留言。
17
-
18
- 邀请手动专家后,弹窗提供“复制启动指令”;复制成功后自动关闭,复制失败则保留弹窗并显示错误,方便重试。关闭后仍可在参与者列表中再次复制,不另设“稍后再复制”按钮。复制只交付指令,不改变发言顺序。轮到手动专家时,输入框上方也提供该按钮,复制成功后显示勾号与“已复制”,2 秒后恢复。
19
-
20
- 手动专家的“注册”:专家须在自己的会话里执行 `member register`,网站才把它记为已注册;会话 ID 由 CLI 自动采集,不由专家填写。进度看板中该专家显示“待注册”(警示色,并提示把启动指令交给它的会话),注册后显示“已注册”,轮到与发言后沿用排队、发言中、本轮已发言等状态。存在待注册的手动成员时,输入框上方持续提示并提供复制启动指令,直到它注册;换发新凭证(请回)后需重新注册。只有已注册且上报了 Claude Code / Codex 会话的专家才会被本机服务接管。注册不改变发言顺序。
21
-
22
- ## 自由协作房间
23
-
24
- 成员回答下的执行报告列出请求编号、耗时、终态与工作区观察文件;失败或取消的报告保留在原请求下。报告展示最近 100 次执行;“未提供自动改动检测”表示非 Git 目录或未上报,不能据此判断没有文件变化。
25
-
26
- 自由协作房间从同一角色库选择一位或多位成员。用户是需求方而不是主持人:只要有能自行发言的成员(本机唤醒或手动接入),房间就始终有一位 AI 主持人,默认是第一位本机唤醒的成员,可点皇冠或在成员菜单中更换;主持人不能直接卸任,离开或被移出时由下一位成员接任,原先由用户主持的旧房间在下一条消息时自动指定。只有一位成员时,每条消息都交给它;有多位时,你的消息默认发给主持人;在正文中 `@成员` 才让其他成员发言(代码和引用中的 @ 不算,输入框中会生效的 @ 显示为蓝色),被点名的成员各自处理,主持人也可以 @ 其他成员派活。输入框下方的备注行显示这条消息会发给谁。只有网页 AI 成员时没有主持人,未点名的消息只作留言。输入 `@` 后,输入框上方弹出在场成员菜单,继续输入可筛选;用方向键与 Enter / Tab 或点击补全,Esc 关闭。选择只修改草稿。输入框 Enter 发送、Shift + Enter 换行;发送按钮始终用于发言,无正文或附件时禁用,成员处理中也不切换为停止按钮。自动成员空闲时,服务把它名下所有未处理的消息打包成一次执行交给原会话;执行期间再发的消息排队,下一次一起投递。手动成员自行读取自己的请求,在线成员由用户转交。成员按时间顺序处理,后面的消息可以修正前面的。
27
-
28
- 运行中可在右侧成员栏邀请 AI(沿用本机软件配置和本房间工作目录),也可让成员离开、请回或移除。自动成员的项目文件权限默认只读;需要它修改项目时,在邀请前选择“项目文件可写”,权限只应用于这位成员;App 与手动成员的文件权限由其软件设置,API 与网页成员不访问项目文件。填写已有会话 ID 时续接该原会话,不新建。离开会立即停止它的工作;请回时换发新凭证并续接它原来的会话。邀请时可选“手动接入”:成员不会被自动唤醒,而是得到一份私有凭据文件,由你在它的会话中按参与技能读写。自由协作房间里,手动成员执行 `member register` 之前视为不存在:不能被点名,不收请求,不进“全体各自回应”和智能调度候选;注册后与其他成员一样可被点名,其 CLI 上报会话后本机服务按软件转为托管(Claude Code、Codex、agy),此后与自动成员无异;转托管时本机服务为该成员生成新凭证并由网站替换,浏览器生成的原凭证随即失效(本机不保存原凭证)。绑定你正在使用的会话的成员会标注“借用会话”:它工作时不要在原窗口继续操作。
29
-
30
- 输入 `@全体成员`(或 `@all`)等同于点名当前所有可点名成员(含主持人,不含未注册的手动成员),各自同时回答,主持人不汇总。需要后发言的成员看到前面的回答时,改用 `@全体依次`(或 `@all-seq`):同样点名全体,但主持人先答,其余按加入顺序,前一位的请求结束(完成、失败或取消)后下一位才收到请求;轮到时已离开的成员被跳过。成员不止一位时 @ 菜单前两项提供这两个选项。
31
-
32
- 可以把一位本机成员设为主持人。之后没有点名的消息交给主持人分配;主持人在回答中点名成员派活,只点名一位成员时,其回答直接面向用户,主持人不再被唤醒;点名多位成员时,都结束后主持人再被唤醒一次,继续汇总或安排下一步。派出的成员全部失败时不再唤醒主持人;同一条消息引出的 AI 请求最多 8 次,用完即停,成员栏会提示,发一条新消息即重新开始。
33
-
34
- 普通成员回答中的 `@成员` 或结构化 `to` 只保存为“建议请 X 回应”,不自动唤醒;正文里的代码与引用不算建议。房主可在原回答下点击“转为请求”,网站记录一条用户确认,建立新任务链,并把请求关联到原回答。重复点击或重试返回同一条请求,已完成、失败或取消的请求也不会重新派发;目标成员离开后不能转换。自动、手动和在线成员沿用各自的接入方式。
35
-
36
- 在线 AI 以“网页代发”成员加入:点名后,在成员栏复制阅读通知交给它;拿到回答后,在输入框选择“代发”该成员并粘贴原文,记录保留它为作者、你为提交者,并关闭它的待处理请求。
37
-
38
- 新建房间时可勾选“智能调度”(可选,需本机服务,供应商为 TypeSafe Jev 或 OpenAI Decisions,按次计费)。开启后,没点名的消息先由决策模型判断(通常约 1 秒),主持人等结果出来才启动;消息明确在对某位成员说(叫了名字、追问其回答、补充其正在处理的消息,置信度 ≥ 0.7)就直接改由该成员回答;要求全体各自回应(如“都出来打个招呼”)就同时请所有成员各答一次,主持人不再汇总;只是“好的”“谢谢”就不唤醒任何成员(这两种置信度须 ≥ 0.85);拿不准或需要分工协调时仍由主持人处理。每次判断都在该消息下留一行“智能调度”记录,可点 👍 / 👎 评价这次判断是否合适。自动改派失败时退回为 60 秒内可手动采纳的建议。目前只能在建房时开启。开启智能调度只需连接本机服务,成员可以全是手动接入或网页成员:本机服务仍登记该房间并运行决策;被推荐的手动或网页成员与其他成员一样,采纳后在成员栏出现待处理请求,由你或其自行处理(网页成员需你复制通知并代发)。
39
-
40
- 需要深入讨论时,在成员栏点“开启讨论”(或建房时勾选“创建后开启讨论”):在弹窗里填目标、轮次和时长等上限,由本机唤醒的主持人安排成员轮流发言。到限、结束或用户点“回到自由协作”后,房间继续自由协作,成员、历史与结论保留,可再次开启;不再另建讨论房间。
41
-
42
- 多位成员共享同一个工作目录时不加锁,由你划分各自负责的文件。成员栏会提示“可能的改动冲突”:两位成员在重叠时段都改动了同一文件时列出文件名。提示依据执行前后的 Git 工作区对比,无法确定修改者,未出现提示也不代表没有覆盖;非 Git 目录不提供提示。
43
-
44
- 页面在每条消息上标出请求状态(待投递、处理中、已回复、已停止、失败)。本机服务离线时请求停在“待投递”,不显示为已唤醒。在右侧成员菜单点「停止」会作废该成员当前执行和尚未投递的消息,迟到的回答会被拒绝;之后重新发消息即可。一次执行失败只影响这次请求,房间继续可用。
45
-
46
- 两种房间的用户写入均须房间控制凭据,未持有凭据的浏览器只能阅读。手动成员的创建、邀请和请回直接在网站完成,并交付各自私有凭据文件;在线成员只交付阅读指令。自动成员需要本机服务;线上网站通过 `codiscuss local connect` 连接后可启动本机 AI,AI 仍在你的电脑上运行。
47
-
48
- ## 点名追问与智能衔接
49
-
50
- 新建讨论时可选“点名追问”,默认关闭;之前创建的房间视为开启,保持原有方式。
51
-
52
- - **开启**:每轮结束后主持人读完回答,给每位专家写针对性的追问。
53
- - **关闭**:首轮仍由主持人拆题出题;之后专家统一按“先读上一轮回答、回应不同意或需补充的观点、可 @ 彼此提问”发言,主持人用自己的主持说明引导方向。同时开启“智能调度”时,每轮结束由决策模型判断:还有分歧就自动开下一轮(先请最需要回应的专家,不是上一轮最后发言者),可以收束、跑偏或卡住才唤醒主持人。决策模型每次只安排一位发言人,那位答完后再判断下一位(含点“跳过”、邀请或成员变动后队列为空的情况);手动接入的专家不由它安排。自动开轮受轮次与时长上限约束,到限照常交给主持人处理。
54
-
55
- ## 讨论上限
56
-
57
- 准备或暂停阶段可配置以下参数;活动讨论需先暂停再修改,保存参数不重置计时或历史轮次。
58
-
59
- | 参数 | 范围与作用 |
60
- | --- | --- |
61
- | 轮次上限 | 0–100;0 或留空不预设;全部配置专家各完成一次观点才计一轮 |
62
- | 讨论总时长 | 0–1440 分钟;0 或留空不预设;从首次进入讨论阶段或创建安排开始,只统计进行中时间:暂停(含执行失败后)、准备与收束期间不计入用时,也不消耗总时长 |
63
- | 单次 AI 执行 | 默认不限,0 表示不限,或设置 1–60 分钟;仅自动模式,从实际进入执行起算,超时暂停,不自动重试 |
64
- | 达到上限后 | 讨论结束,房间回到自由协作;不自动宣布达成共识 |
65
-
66
- 网页新建默认 3 轮、不限时长、单次执行不限时;到限一律结束讨论。新建表单分别显示轮次和时长上限,点击数值才展开滚轮;鼠标滚轮逐格切换,停止滚动即停住,鼠标或手指在屏幕上拖动则保留松手惯性。选择即时生效,点击外部即可收起,无需确认。时长收起时显示小时及剩余分钟,展开后分为小时、分钟两列,按 1 小时、1 分钟选择;轻点各列中间数字可直接输入,启用时长上限后范围为 1–1440 分钟,24 小时时分钟固定为 0。拖动松手后先按阻尼减速,再按预计停止位置吸附;系统“减少动画”下仍保留拖动惯性,只去掉数字的三维翻转。两项各自提供“不限”,关闭“不限”恢复此前数值,首次启用时长上限为 1 小时,互不改动;下方实时说明哪个上限先到便触发所选动作。未传参数的 CLI 建房默认轮次、总时长与单次执行不限;旧房间保留已有设置。全自动支持不限总时长:按轮次上限或手动停止结束,重启不自动添加时长上限;主动设置的单次 AI 执行超时和租约仍有效。CLI 可额外指定未来 24 小时内的运行截止,但不能延长话题已设的截止。
67
-
68
- “主持”及“接入”显示配置、已用/剩余时间、已完成轮次和到限状态。新专家安排及观点由服务端拒绝越界,原提交的幂等重试和用户留言保留。自动程序定期调用到限处理;手动主持每次原生检查时执行 `room limits ROOM --check --as 本人`,也可由用户点击界面中的检查按钮。仅打开页面不触发写入或启动 AI。新建的讨论房间由程序按“专家观点数 ÷ 在场专家数”统计轮次(`limits.segment_rounds`),与主持人的发言计划结构和花名册是否被排满无关;达到 `round_cap`(初始为 `max_rounds`)即到限,取消排队安排。此前创建的房间没有轮次预算记录,沿用按花名册逐轮统计的旧口径,不做迁移。网页的轮次显示(右上角进度、看板、对话缩略图的轮次分组)使用同一口径:房间视图的 `round_groups` 每满“在场专家数”条观点成一轮,重新开始或追加轮数时在新计数起点另起一轮,编号全程连续;`rounds` 仍按“每位专家各发言一次”生成,只用于安排与花名册(`turn roster`、邀请补齐位置)。旧房间的 `round_groups` 与 `rounds` 相同。
69
-
70
- 到限后程序结束讨论:取消未完成安排、撤销旧自动执行(运行换代并停止),阶段记为 `concluded`,房间回到自由协作,与用户点“结束”相同;主持人不自行总结,`stop_reason` 保留到限原因。目标提前完成时由主持人 `room limits --done` 通知程序,效果与到限相同(原因记为 `goal_done`);主持人在无阻碍项时直接 `room update --phase concluded` 也同样回到自由协作。需要继续讨论时再次“开启讨论”(计数与计时重置);需要总结时直接请主持人写一份。讨论结束(到限、宣布完成、收束或点“结束”)时,讨论期间尚未被主持人回应的用户留言——`held_since` 起、主持人最后一条消息之后、且未点名任何人的——按自由协作规则补交给主持人(只有一位成员时交给它),不用重发。页面到限提示不代表外部手动软件已停止。升级前已因到限或目标完成而暂停的讨论,看板只提供“结束”。
71
-
72
- 升级前已收束、仍未回到自由协作的讨论可重启:用户指定新的轮次与总时长上限,计数起点和计时重置,历史与原结论保留,随后按暂停状态重新启动。已收束的页面展示结束状态,不再显示活动倒计时或后来才触发的到限警告。
73
-
74
- ## 角色与参与方式
75
-
76
- | 角色 | 责任 |
77
- | --- | --- |
78
- | 用户 | 提出目标、约束、决策偏好;可留言、参与或担任主持人 |
79
- | 主持人 | 明确问题、接入专家、决定下一安排、维护主持简报与状态、保留分歧并收束 |
80
- | 本地专家(cli) | 自主读取材料、提交自己安排的回答;管理自己创建的原生定时任务 |
81
- | 在线专家(online) | 从可访问链接按需阅读,在原聊天形成回答;主持人或用户保留真实原文后代发 |
82
-
83
- 主持人可以兼任专家。自己的观点用 `opinion` 并关联自己的正式安排,主持说明和共识总结用 `moderation`;不能把个人意见直接写成共识。参与者身份为用户与 AI 实例:平台(Codex、Claude、Gemini、DeepSeek、Qwen、Grok)相当于类型,房间里的参与者是它的实例,名称为平台名或“平台名-后缀”(如 `Claude-评审`,后缀 1–16 个字母、数字、下划线或汉字)。同一平台的多个实例各有会话、模型和思考强度,名称在同房间唯一;在角色卡片库中再次选择同一平台即新增一个实例。本机默认软件配置按平台保存,实例的模型与强度只用于本场。
84
-
85
- ## 从议题到结论
86
-
87
- 1. **准备**:确定目标、背景、约束、参与者和停止边界。区别讨论截止、必要回答等待边界与各端任务运行上限。主持人建房后回读资料,再交付接入文本。网页新建只填写话题名称与用户原文,目标、背景与边界由主持人首次接手时补全,已有内容不覆盖。
88
- 2. **独立初始观点**:必要专家先基于相同目标与材料提出自己的见解;提交前不读他人观点和主持结论。已受到影响应如实说明。串行安排不等于技术盲评。
89
- 3. **深入讨论**:阅读彼此观点,围绕影响选择的争点追加论证、修正判断或提出 @ 追问。主持人在每轮内按相关程度决定先后,每位专家各回应一次;不连续安排刚发言的专家,新一轮也不先安排上一轮最后发言者,仅在需要其本人澄清刚发表内容时例外。
90
- 4. **必要复核**:对拟定结论核对原意、条件和未决影响。解释某人的话受到质疑时,请原作者澄清;另一人赞同不能代替原作者确认。不要求所有议题都多做一轮复核。
91
- 5. **收束**:将共识总结作为独立主持消息留档,保留分歧、未确认事项及下一步。更新共享状态和阶段,核验本次任务停止;达到时限不等于问题已解决。
92
-
93
- 阶段值为 `preparing`、`initial`、`discussing`、`paused`、`concluded`。讨论阶段由主持人结合目标决定;配置的到限处理可以暂停,收束完成仍需主持人确认。一轮指参与专家各完成一次完整观点,同轮补充只计一次;主持说明和用户留言不推进轮次。
94
-
95
- ## 正式安排
96
-
97
- 同一时刻只能有一个未完成安排(整轮中排队的安排不计)。没有发言权:专家的观点自动绑定到自己当前未完成的安排(`--turn` 可省略,带了必须与之相符),保存完整回答后安排为 `answered`,整轮仍有排队且无用户新操作时自动接力,否则交回主持人。消息与安排状态在同一事务中保存。
98
-
99
- AI 不借用用户身份发言;用户本人留言不受安排限制,话题暂停或收束时仍可留言(如 @主持人 提问),已存档房间除外。@ 和回复只是内容关联,不自动创建安排;讨论中点名成员的直接提问见上文。
100
-
101
- ### 整轮安排与用户介入
102
-
103
- 主持人可以一次排好本轮顺序:先 `turn roster` 申请最新专家状态(在场专家、本轮待发言者 `waiting` 与 `revision`),再 `turn create --plan-file … --roster <revision>`。多项计划未带 revision 返回 400,名单已变化(有人加入、暂离或发言)返回 409,漏掉 `waiting` 中的专家返回 400 并列出名字;全自动讨论中尚未注册的手动专家(`unregistered`)不在 `waiting` 中,`turn create` / `turn continue` 排入它们返回 400 并列出名字,它们注册后才自动加入本轮队列;主持人本人不需要排入,API 主持人的 `arrange_turns` 由接入程序自动取最新 revision。第一项立即生效,其余为 `queued`。专家保存回答后,网站在同一事务中把下一位排队专家的安排转为当前;末位答完才交回主持人。接力不发通知,需要逐个转交的在线专家不放进整轮。
104
-
105
- 用户留言或修改目标、背景、边界、焦点会记为待主持人处理(`held_since`),不打断正在发言的专家;该专家保存回答后交回主持人而不接力。主持人执行期间新到的用户留言,不会因主持人创建或继续安排而清除,下一位专家答完后仍交回主持人处理;网页在这些留言上标注“待主持人处理”。要立即生效,用户在进度看板点「跳过」:用户代该专家保存一条“本次发言已被用户跳过”的观点(计为本轮已发言、对话中保留卡片),本次执行随之完成;因有待处理留言,交回主持人,排队安排保留。主持人处理后用 `turn continue` 按原计划继续,或直接创建新安排,剩余排队改为 `skipped`。建房时开启“智能调度”的讨论,留言由决策模型先判断:有把握是“仅补充信息”就按原计划继续,是在问某位专家就先请该专家回应,其余情况才交回主持人;每次判断都在对话中留一行“智能调度”记录。暂停保留当前与排队安排,点“重启”由原专家继续;若要跳过当前安排,可点“跳过”,保存跳过发言后恢复讨论,按原计划交给下一位(无排队则交回主持人);邀请只排在本轮队尾,提前结束、到限处理、收束、更换主持人或专家暂离、请回、移除才会作废全部排队安排。
106
-
107
- 在线专家由主持人以自身操作者身份、指定原专家代发。正常推进不超时夺取;到限会结束讨论,取消未完成安排并撤销旧自动执行。
108
-
109
- ## 按需读取与表达
110
-
111
- 先读房间概要和当前安排,再按问题读取背景、共享状态或指定原文。独立阶段遵守阅读边界;深入阶段补读与问题相关的他人观点。增量读取以实际读过的编号为起点,每次最多 20 条,按 `next_after` 继续,不直接跳到房间 `latest_id`。
112
-
113
- 每次回答包含简述和完整正文。简述通常一两句,说明本次主张、变化或分歧;详细论据、适用条件、数字、验证和引用放在正文,不能用摘要代替原文。代发保留真实作者和完整引用关系,主持人另写的摘要注明实际摘要作者。
114
-
115
- 观点应直接回答当前问题,以证据支持判断;有依据时坚持,也可以说明理由后修正。分歧区分事实、假设、标准和偏好,分别查证、比较或交给决策者。外部引用、估计与实测分开,未核验数字不能因多人赞同变成事实。
116
-
117
- ## 通知与持续检查
118
-
119
- `turn create` 保存安排;自动运行中同时保存待接入事件,但不直接操作软件。`turn prompt` 只生成转交文本,`turn mark-notified` 只记录已经发生的送达。复制按钮、工具调用发起和任务创建都不证明对方已收到或已运行。本地 CLI 专家可以自行发现 `pending` 安排,无需伪造通知状态。
120
-
121
- 在线专家由主持人操作时,发送前记录实际聊天、问题和安排。发送结果不明先检查正确聊天是否出现问题/回答,不换编号或重发绕过。完整回答生成后才原文留档;引用面板中的链接需随原文保存,补充附录注明由主持人提取。
122
-
123
- 手动接入后的持续讨论可使用各软件的原生定时功能。默认参考周期为主持人 30 秒、专家 60 秒;长调研可放宽到 3–5 分钟,工具不支持时选择最接近且更长的周期并报告实际值。每次必须有有限运行上限;定时提示保存静态约定和入口,动态进度每次从网站恢复。全自动事件模式不使用此定时流程。
124
-
125
- 主持人无新回答时仍需检查是否有尚未执行的下一安排;专家无自己的安排时安静结束本次检查。无变化不产生状态消息,不为每次检查重建任务。自己的任务到期只代表自身停止参与,不代表整场讨论结束。
126
-
127
- ## 状态保存与中断恢复
128
-
129
- - `host_brief`:面向用户的主持简报,说明已有判断、争点和下一步,最多 1600 个 Unicode 字符。
130
- - `state_text`:详细共享状态,保存依据、已处理编号、下一步及其执行情况,最多 4000 字符。
131
- - `state_until`:主持人实际已读材料截止编号,不证明后续安排、通知或清理已经完成。
132
-
133
- 关键判断、安排或阶段发生变化时保存并回读;纯等待不重复写。执行下一动作前记录“拟做、未执行”,成功后保存真实结果。恢复时对照服务端:动作已发生只补记录,未发生才执行。状态保存失败先核对并恢复,不继续联系新专家。
134
-
135
- 房间、消息、安排创建使用稳定 `submission_id`。请求结果不明先精确查询,再决定是否沿用原编号与原文重试;查询失败不等于未写入。浏览器送达去重独立于网站提交去重,详见 [CLI 故障处理](cli.md#写入核对与错误处理)。
136
-
137
- ## 暂停与结束
138
-
139
- 用户叫停、房间暂停/收束或达到约定上限时,先停止新增安排和联系专家,停用并核验自己创建的任务。正常完成或约定限时交付时,依次取消剩余安排、发表共识总结、保存状态并设为 `concluded`。
140
-
141
- 明确暂停或主持任务到期而仍需讨论时设为 `paused`,保留原阶段、原因和下一步。写入故障阻碍收束时同样先暂停,保留未执行事项。
142
-
143
- 各专家负责停止自己的任务,主持人不能替其他端宣称停止。恢复暂停话题须用户明确继续;迟到回答先保留,恢复后判断适用性。
144
-
145
- **没有运行回执。** 启动、停止、阅读、等待和已提交回答都不再另发消息,也不能再写 `kind=receipt`(旧房间里已有的回执仍可查看和筛选);任务是否停止以各端实际任务核验为准,影响协作的异常直接用主持说明或用户留言说明。
146
-
147
- 具体执行约束以仓库 [参与技能](../.agents/skills/discuss-participant/SKILL.md) 和 [主持技能](../.agents/skills/discuss-host/SKILL.md) 为准,站点字段与限制通过 `room protocol` 获取。
148
-
149
- ## 备份与讨论报告
150
-
151
- 用户可从网页“备份当前讨论”下载服务器已保存的完整房间快照与原文。备份不改变讨论阶段,也不代替任务停止核验。
152
-
153
- 需要将讨论整理为独立成果时,使用 [讨论归档技能](../.agents/skills/discuss-report/SKILL.md),明确来源范围和本地输出目录。报告按主题解释建议如何形成,保留异议、修订与原文链接;讨论建议和用户已采纳的决定分别记录。网页备份负责保存数据,报告负责综合分析,两者均不自动执行后续建议。
1
+ # 讨论工作流
2
+
3
+ 网站保存共享记录,主持人负责判断与安排,各 AI 在自己的软件或用户配置的 API 中形成意见。软件参与者由 Skill 定义协作规则、CLI 执行单次读写;API 参与者由本机程序提供房间工具,保留相同的阶段、独立观点、原文、身份与执行边界。程序唤醒可混用两种入口,API 专家和主持人仅使用房间上下文。
4
+
5
+ ## 选择推进方式
6
+
7
+ - **讨论(全自动)**:主持人与专家都由本机服务唤醒(CLI / App / API)。本机软件与权限配置完成后明确启动,可按轮次、总时长上限或手动停止结束。主持创建正式安排即结束本步;专家自行回答,程序再续接原主持。自动任务不另建原生定时。项目及 cwd 可选,分别属于本机接入配置。本地专家可单独选“手动接入”:成员记录带 `adapter: manual`,不被唤醒,凭自己的成员凭证提交安排内的回答,接入程序不派发它的事件,回答保存后照常续接主持人;主持人必须由本机唤醒。手动专家若运行在 Claude Code 或 Codex 中,任一带凭据的 CLI 调用(首条通常是 `room view`)都会附带该会话的 `CLAUDE_CODE_SESSION_ID` / `CODEX_THREAD_ID`(Codex 桌面应用会话转为 `codex`,其余转为 `codex_cli`),本机服务核对本机存在该会话后自动把它转为托管(`access=runner`、借用会话),之后每轮照常唤醒;服务没有 Claude 配置、找不到会话或其他软件的手动专家仍停在手动。手动专家不回答时讨论停在该安排,由用户取消安排(主持人被唤醒重新安排),或受轮次与总时长上限约束,没有单独的自动超时。模式在手动与全自动间切换时,带 `adapter: manual` 的专家保持手动(转为托管后不再带此标记)。网页 AI 会打断自动推进,只进入自由协作。
8
+ - **开启 / 结束讨论**:讨论是自由协作房间里可临时开启的推进手段,不再是另一种房间。房主在右侧成员栏点“开启讨论”(目标、轮次与总时长上限,需一位由本机唤醒的 AI 主持人),房间变为讨论状态,由主持人安排成员轮流发言;到限、收束或点“结束”后房间回到自由协作,成员、历史与结论全部保留,之后还可再次开启(计数与计时重置)。开启与结束由房主凭据调用 `POST discussion {action: start|end}`。
9
+ - **自由协作**:你或 AI 主持人点名一位或多位成员,各自在原会话处理请求;没有讨论安排和轮次。每位成员单独选择本机唤醒、手动接入或网页代发,见下方 [自由协作房间](#自由协作房间)。
10
+ - **手动接入**:自由协作成员的一种接入方式。本地成员持自己的凭据文件自行读写,可由人工或软件原生定时触发;网页成员只能阅读房间,回答需转交代发;网页 AI 从其服务器读取阅读链接,本机网站对它不可达,此时由用户粘贴材料。只有这两种成员时建房无需本机接入服务。复制参与指令、下载凭据文件或复制凭证文本都不代表已经送达、接入或唤醒。
11
+
12
+ 讨论中随时可以直接提问:在输入框 @ 一位或多位在场成员(含主持人),网站为每位被点名者建一条“直接提问”请求,立即唤醒,任何阶段(含暂停、收束)都可用;它不占发言安排、不计轮次与时长上限,也不改变讨论进度,回答保存为普通发言(chat)并带请求状态徽标。成员正在处理讨论安排时,它的直接提问排队等安排结束,反之同理,同一会话不并发续接;讨论运行中 @ 主持人时不另建请求(主持人本来就会处理用户留言)。手动成员可用 `--request` 关联请求回答,网页成员由你代发。
13
+
14
+ 讨论运行中可在进度看板邀请专家(经本机服务配置后加入;Codex CLI / App、Claude 可填写已有会话 ID,续接这个带有自己上下文的原会话,标注为借用会话),或从成员菜单让专家暂离、请回或移除。暂离会取消它当前与排队中的安排,保留位置与会话,不计入之后的轮次;请回换发新凭证、续接原会话。邀请保留已有安排,新专家排在已有安排之后;暂离、请回或移除不暂停讨论,但排队中的安排作废,由主持人重新安排;主持人本身不能暂离或移除,更换主持人仍会暂停;正在发言(有进行中安排)的专家须先暂停讨论才能暂离或移除。已保存的观点属于讨论记录,不能删除;需要纠正时请主持人追问或让该专家补充一条。故障只暂停并保留原因,不静默换软件、身份或创建第二个会话。
15
+
16
+ 邀请弹窗与新建房间使用同一种角色卡片(同宽、正反面等高):可一次选多位 AI(每个平台一张卡片,已在场的平台以新实例加入),在卡片正面切换“程序启动 / 手动启动”,点“邀请”后先加入程序启动的成员、再加入手动启动的成员(各自保持选择顺序),避免尚未注册的手动成员堵住自动成员;遇到第一个失败即停止并保留未处理的卡片。手动成员加入后弹窗列出它们的复制按钮和实时注册状态。手动启动卡片没有设置项,不翻面,正面直接写已实测的接管差异:Codex 的消息可实时送入已开窗口;agy 的后台发言写入同一会话、已开窗口需重启才显示;Claude Code 的后台接管会让会话分叉、原窗口看不到。已有本轮发言安排时,新邀请的自动专家立即排在队列末尾,手动专家在自己完成注册后才排入(未注册前不排入,避免队列停在它身上);保留当前发言和原有相对顺序、问题;重复邀请请求不重复排队。暂停或尚无安排时,由主持人在继续推进时将新专家安排在本轮尚未发言的原专家之后;进入收束后不再追加安排。邀请不会启动或恢复讨论,也不会清除待处理的用户留言。
17
+
18
+ 邀请手动专家后,弹窗提供“复制启动指令”;复制成功后自动关闭,复制失败则保留弹窗并显示错误,方便重试。关闭后仍可在参与者列表中再次复制,不另设“稍后再复制”按钮。复制只交付指令,不改变发言顺序。轮到手动专家时,输入框上方也提供该按钮,复制成功后显示勾号与“已复制”,2 秒后恢复。
19
+
20
+ 手动专家的“注册”:专家须在自己的会话里执行 `member register`,网站才把它记为已注册;会话 ID 由 CLI 自动采集,不由专家填写。进度看板中该专家显示“待注册”(警示色,并提示把启动指令交给它的会话),注册后显示“已注册”,轮到与发言后沿用排队、发言中、本轮已发言等状态。存在待注册的手动成员时,输入框上方持续提示并提供复制启动指令,直到它注册;换发新凭证(请回)后需重新注册。只有已注册且上报了 Claude Code / Codex 会话的专家才会被本机服务接管。注册不改变发言顺序。
21
+
22
+ ## 自由协作房间
23
+
24
+ 成员回答下的执行报告列出请求编号、耗时、终态与工作区观察文件;失败或取消的报告保留在原请求下。报告展示最近 100 次执行;“未提供自动改动检测”表示非 Git 目录或未上报,不能据此判断没有文件变化。
25
+
26
+ 自由协作房间从同一角色库选择一位或多位成员。用户是需求方而不是主持人:只要有能自行发言的成员(本机唤醒或手动接入),房间就始终有一位 AI 主持人,默认是第一位本机唤醒的成员,可点皇冠或在成员菜单中更换;主持人不能直接卸任,离开或被移出时由下一位成员接任(旧主持人尚未处理的未点名消息一并交给新主持人;更换主持人时同理,已开始处理的不移交),原先由用户主持的旧房间在下一条消息时自动指定。只有一位成员时,每条消息都交给它;有多位时,你的消息默认发给主持人;在正文中 `@成员` 才让其他成员发言(代码和引用中的 @ 不算,输入框中会生效的 @ 显示为蓝色),被点名的成员各自处理,主持人也可以 @ 其他成员派活。输入框下方的备注行显示这条消息会发给谁。只有网页 AI 成员时没有主持人,未点名的消息只作留言。输入 `@` 后,输入框上方弹出在场成员菜单,继续输入可筛选;用方向键与 Enter / Tab 或点击补全,Esc 关闭。选择只修改草稿。输入框 Enter 发送、Shift + Enter 换行;发送按钮始终用于发言,无正文或附件时禁用,成员处理中也不切换为停止按钮。自动成员空闲时,服务把它名下所有未处理的消息打包成一次执行交给原会话;执行期间再发的消息排队,下一次一起投递。手动成员自行读取自己的请求,在线成员由用户转交。成员按时间顺序处理,后面的消息可以修正前面的。
27
+
28
+ 运行中可在右侧成员栏邀请 AI(沿用本机软件配置和本房间工作目录),也可让成员离开、请回或移除。自动成员的项目文件权限默认只读;需要它修改项目时,在邀请前选择“项目文件可写”,权限只应用于这位成员;App 与手动成员的文件权限由其软件设置,API 与网页成员不访问项目文件。填写已有会话 ID 时续接该原会话,不新建。离开会立即停止它的工作;请回时换发新凭证并续接它原来的会话。邀请时可选“手动接入”:成员不会被自动唤醒,而是得到一份私有凭据文件,由你在它的会话中按参与技能读写。自由协作房间里,手动成员执行 `member register` 之前视为不存在:不能被点名,不收请求,不进“全体各自回应”和智能调度候选;注册后与其他成员一样可被点名,其 CLI 上报会话后本机服务按软件转为托管(Claude Code、Codex、agy),此后与自动成员无异;转托管时本机服务为该成员生成新凭证并由网站替换,浏览器生成的原凭证随即失效(本机不保存原凭证)。绑定你正在使用的会话的成员会标注“借用会话”:它工作时不要在原窗口继续操作。
29
+
30
+ 输入 `@全体成员`(或 `@all`)等同于点名当前所有可点名成员(含主持人,不含未注册的手动成员),主持人不汇总。同时回答还是依次回答由智能调度判断:后发言的成员需要看到前面的回答(接龙、轮流补充或反驳、逐个评审)且置信度 ≥ 0.7 时依次回答,其余情况、未开启智能调度或判断失败时同时回答;主持人不由本机唤醒时直接同时回答。判断期间消息下显示“智能调度分析中”,结果记为一行“智能调度”决策。依次回答按房间的发言顺序逐个进行,前一位的请求结束(完成、失败或取消)后下一位才收到请求;轮到时已离开的成员被跳过。手动输入 `@全体依次`(或 `@all-seq`)可不经判断直接依次回答。成员不止一位时 @ 菜单第一项为 `@全体成员`。
31
+
32
+ 右栏“发言顺序”在自由协作与讨论中显示同一份顺序:已发言(✓)、正在发言、待发言依次编号;不在本次依次回答或本轮未安排的成员(含讨论主持人)列在分隔线下、不编号,离开的成员列在最后。房主把鼠标移到待发言成员上时序号变为把手,拖动(Esc 取消)或聚焦后用上下方向键调整顺序,松手即生效,已发言和正在发言者不动;拖动途中顺序被他人改动时本次拖动作废并提示重新调整:`@全体依次` 进行中时调整其余排队成员,讨论中只调整本轮排队的安排(各自的问题随之移动);主持人一次排到后续轮次时,后续轮次折叠为“后续已排 N 轮”,只读不可拖,主持人通常会在每轮结束后重新安排;没有排队时,自由协作中拖动设置房间默认顺序,之后的 `@全体依次` 按它排列,开启讨论后主持人读取的专家状态也按它列出。默认顺序未设置时为主持人在前、其余按加入顺序。
33
+
34
+ 可以把一位本机成员设为主持人。之后没有点名的消息交给主持人分配;主持人在回答中点名成员派活,只点名一位成员时,其回答直接面向用户,主持人不再被唤醒;点名多位成员时,都结束后主持人再被唤醒一次,继续汇总或安排下一步。派出的成员全部失败时不再唤醒主持人;同一条消息引出的 AI 请求最多 8 次,用完即停,成员栏会提示,发一条新消息即重新开始。
35
+
36
+ 普通成员回答中的 `@成员` 或结构化 `to` 只保存为“建议请 X 回应”,不自动唤醒;正文里的代码与引用不算建议。房主可在原回答下点击“转为请求”,网站记录一条用户确认,建立新任务链,并把请求关联到原回答。重复点击或重试返回同一条请求,已完成、失败或取消的请求也不会重新派发;目标成员离开后不能转换。自动、手动和在线成员沿用各自的接入方式。
37
+
38
+ 在线 AI 以“网页代发”成员加入:点名后,在成员栏复制阅读通知交给它;拿到回答后,在输入框选择“代发”该成员并粘贴原文,记录保留它为作者、你为提交者,并关闭它的待处理请求。
39
+
40
+ 新建房间时可勾选“智能调度”(可选,需本机服务,供应商为 TypeSafe Jev 或 OpenAI Decisions,按次计费)。开启后,没点名的消息先由决策模型判断(通常约 1 秒),主持人等结果出来才启动;消息明确在对某位成员说(叫了名字、追问其回答、补充其正在处理的消息,置信度 ≥ 0.7)就直接改由该成员回答;要求全体各自回应(如“都出来打个招呼”)就同时请所有成员各答一次,主持人不再汇总;只是“好的”“谢谢”就不唤醒任何成员(这两种置信度须 ≥ 0.85);拿不准或需要分工协调时仍由主持人处理。每次判断都在该消息下留一行“智能调度”记录,可点 👍 / 👎 评价这次判断是否合适。自动改派失败时退回为 60 秒内可手动采纳的建议。目前只能在建房时开启。开启智能调度只需连接本机服务,成员可以全是手动接入或网页成员:本机服务仍登记该房间并运行决策;被推荐的手动或网页成员与其他成员一样,采纳后在成员栏出现待处理请求,由你或其自行处理(网页成员需你复制通知并代发)。
41
+
42
+ 需要深入讨论时,在成员栏点“开启讨论”(或建房时勾选“创建后开启讨论”):在弹窗里填目标、轮次和时长等上限,由本机唤醒的主持人安排成员轮流发言。到限、结束或用户点“回到自由协作”后,房间继续自由协作,成员、历史与结论保留,可再次开启;不再另建讨论房间。
43
+
44
+ 多位成员共享同一个工作目录时不加锁,由你划分各自负责的文件。成员栏会提示“可能的改动冲突”:两位成员在重叠时段都改动了同一文件时列出文件名。提示依据执行前后的 Git 工作区对比,无法确定修改者,未出现提示也不代表没有覆盖;非 Git 目录不提供提示。
45
+
46
+ 页面在每条消息上标出请求状态(待投递、处理中、已回复、已停止、失败)。本机服务离线时请求停在“待投递”,不显示为已唤醒。在右侧成员菜单点「停止」会作废该成员当前执行和尚未投递的消息,迟到的回答会被拒绝;之后重新发消息即可;失败的执行报告上有“重发”,会把原消息(点名的请求带上 @成员)填回输入框,由你确认后发送。归档房间会同时作废它尚未完成的执行与排队请求。一次执行失败只影响这次请求,房间继续可用。
47
+
48
+ 两种房间的用户写入均须房间控制凭据,未持有凭据的浏览器只能阅读。手动成员的创建、邀请和请回直接在网站完成,并交付各自私有凭据文件;在线成员只交付阅读指令。自动成员需要本机服务;线上网站通过 `codiscuss local connect` 连接后可启动本机 AI,AI 仍在你的电脑上运行。
49
+
50
+ ## 点名追问与智能衔接
51
+
52
+ 新建讨论时可选“点名追问”,默认关闭;之前创建的房间视为开启,保持原有方式。
53
+
54
+ - **开启**:每轮结束后主持人读完回答,给每位专家写针对性的追问。
55
+ - **关闭**:首轮仍由主持人拆题出题;之后专家统一按“先读上一轮回答、回应不同意或需补充的观点、可 @ 彼此提问”发言,主持人用自己的主持说明引导方向。同时开启“智能调度”时,每轮结束由决策模型判断:还有分歧就自动开下一轮(先请最需要回应的专家,不是上一轮最后发言者),可以收束、跑偏或卡住才唤醒主持人。决策模型每次只安排一位发言人,那位答完后再判断下一位(含点“跳过”、邀请或成员变动后队列为空的情况);手动接入的专家不由它安排。自动开轮受轮次与时长上限约束,到限照常交给主持人处理。
56
+
57
+ ## 讨论上限
58
+
59
+ 准备或暂停阶段可配置以下参数;活动讨论需先暂停再修改,保存参数不重置计时或历史轮次。
60
+
61
+ | 参数 | 范围与作用 |
62
+ | --- | --- |
63
+ | 轮次上限 | 0–100;0 或留空不预设;全部配置专家各完成一次观点才计一轮 |
64
+ | 讨论总时长 | 0–1440 分钟;0 或留空不预设;从首次进入讨论阶段或创建安排开始,只统计进行中时间:暂停(含执行失败后)、准备与收束期间不计入用时,也不消耗总时长 |
65
+ | 单次 AI 执行 | 默认不限,0 表示不限,或设置 1–60 分钟;仅自动模式,从实际进入执行起算,超时暂停,不自动重试 |
66
+ | 达到上限后 | 讨论结束,房间回到自由协作;不自动宣布达成共识 |
67
+
68
+ 网页新建默认 3 轮、不限时长、单次执行不限时;到限一律结束讨论。新建表单分别显示轮次和时长上限,点击数值才展开滚轮;鼠标滚轮逐格切换,停止滚动即停住,鼠标或手指在屏幕上拖动则保留松手惯性。选择即时生效,点击外部即可收起,无需确认。时长收起时显示小时及剩余分钟,展开后分为小时、分钟两列,按 1 小时、1 分钟选择;轻点各列中间数字可直接输入,启用时长上限后范围为 1–1440 分钟,24 小时时分钟固定为 0。拖动松手后先按阻尼减速,再按预计停止位置吸附;系统“减少动画”下仍保留拖动惯性,只去掉数字的三维翻转。两项各自提供“不限”,关闭“不限”恢复此前数值,首次启用时长上限为 1 小时,互不改动;下方实时说明哪个上限先到便触发所选动作。未传参数的 CLI 建房默认轮次、总时长与单次执行不限;旧房间保留已有设置。全自动支持不限总时长:按轮次上限或手动停止结束,重启不自动添加时长上限;主动设置的单次 AI 执行超时和租约仍有效。CLI 可额外指定未来 24 小时内的运行截止,但不能延长话题已设的截止。
69
+
70
+ “主持”及“接入”显示配置、已用/剩余时间、已完成轮次和到限状态。新专家安排及观点由服务端拒绝越界,原提交的幂等重试和用户留言保留。自动程序定期调用到限处理;手动主持每次原生检查时执行 `room limits ROOM --check --as 本人`,也可由用户点击界面中的检查按钮。仅打开页面不触发写入或启动 AI。新建的讨论房间由程序按“专家观点数 ÷ 在场专家数”统计轮次(`limits.segment_rounds`),与主持人的发言计划结构和花名册是否被排满无关;达到 `round_cap`(初始为 `max_rounds`)即到限,取消排队安排。此前创建的房间没有轮次预算记录,沿用按花名册逐轮统计的旧口径,不做迁移。网页的轮次显示(右上角进度、看板、对话缩略图的轮次分组)使用同一口径:房间视图的 `round_groups` 每满“在场专家数”条观点成一轮,重新开始或追加轮数时在新计数起点另起一轮,编号全程连续;`rounds` 仍按“每位专家各发言一次”生成,只用于安排与花名册(`turn roster`、邀请补齐位置)。旧房间的 `round_groups` 与 `rounds` 相同。
71
+
72
+ 到限后程序结束讨论:取消未完成安排、撤销旧自动执行(运行换代并停止),阶段记为 `concluded`,房间回到自由协作,与用户点“结束”相同;主持人不自行总结,`stop_reason` 保留到限原因。目标提前完成时由主持人 `room limits --done` 通知程序,效果与到限相同(原因记为 `goal_done`);主持人在无阻碍项时直接 `room update --phase concluded` 也同样回到自由协作。讨论结束后,中间区在讨论最后一条消息之后显示结束卡,写明结束原因与目标是否完成;卡上的“继续讨论”沿用讨论目标、按新填的轮次与时长上限再次开启讨论(计数与计时重置),也可在成员栏重新“开启讨论”;需要总结时直接请主持人写一份。讨论结束(到限、宣布完成、收束或点“结束”)时,讨论期间尚未被主持人回应的用户留言——`held_since` 起、主持人最后一条消息之后、且未点名任何人的——按自由协作规则补交给主持人(只有一位成员时交给它),不用重发。页面到限提示不代表外部手动软件已停止。升级前已因到限或目标完成而暂停的讨论,看板只提供“结束”。
73
+
74
+ 升级前已收束、仍未回到自由协作的讨论可重启:用户指定新的轮次与总时长上限,计数起点和计时重置,历史与原结论保留,随后按暂停状态重新启动。已收束的页面展示结束状态,不再显示活动倒计时或后来才触发的到限警告。
75
+
76
+ ## 角色与参与方式
77
+
78
+ | 角色 | 责任 |
79
+ | --- | --- |
80
+ | 用户 | 提出目标、约束、决策偏好;可留言、参与或担任主持人 |
81
+ | 主持人 | 明确问题、接入专家、决定下一安排、维护主持简报与状态、保留分歧并收束 |
82
+ | 本地专家(cli) | 自主读取材料、提交自己安排的回答;管理自己创建的原生定时任务 |
83
+ | 在线专家(online) | 从可访问链接按需阅读,在原聊天形成回答;主持人或用户保留真实原文后代发 |
84
+
85
+ 主持人可以兼任专家。自己的观点用 `opinion` 并关联自己的正式安排,主持说明和共识总结用 `moderation`;不能把个人意见直接写成共识。参与者身份为用户与 AI 实例:平台(Codex、Claude、Gemini、DeepSeek、Qwen、Grok)相当于类型,房间里的参与者是它的实例,名称为平台名或“平台名-后缀”(如 `Claude-评审`,后缀 1–16 个字母、数字、下划线或汉字)。同一平台的多个实例各有会话、模型和思考强度,名称在同房间唯一;在角色卡片库中再次选择同一平台即新增一个实例。本机默认软件配置按平台保存,实例的模型与强度只用于本场。
86
+
87
+ ## 从议题到结论
88
+
89
+ 1. **准备**:确定目标、背景、约束、参与者和停止边界。区别讨论截止、必要回答等待边界与各端任务运行上限。主持人建房后回读资料,再交付接入文本。网页新建只填写话题名称与用户原文,目标、背景与边界由主持人首次接手时补全,已有内容不覆盖。
90
+ 2. **独立初始观点**:必要专家先基于相同目标与材料提出自己的见解;提交前不读他人观点和主持结论。已受到影响应如实说明。串行安排不等于技术盲评。
91
+ 3. **深入讨论**:阅读彼此观点,围绕影响选择的争点追加论证、修正判断或提出 @ 追问。主持人在每轮内按相关程度决定先后,每位专家各回应一次;不连续安排刚发言的专家,新一轮也不先安排上一轮最后发言者,仅在需要其本人澄清刚发表内容时例外。
92
+ 4. **必要复核**:对拟定结论核对原意、条件和未决影响。解释某人的话受到质疑时,请原作者澄清;另一人赞同不能代替原作者确认。不要求所有议题都多做一轮复核。
93
+ 5. **收束**:将共识总结作为独立主持消息留档,保留分歧、未确认事项及下一步。更新共享状态和阶段,核验本次任务停止;达到时限不等于问题已解决。
94
+
95
+ 阶段值为 `preparing`、`initial`、`discussing`、`paused`、`concluded`。讨论阶段由主持人结合目标决定;配置的到限处理可以暂停,收束完成仍需主持人确认。一轮指参与专家各完成一次完整观点,同轮补充只计一次;主持说明和用户留言不推进轮次。
96
+
97
+ ## 正式安排
98
+
99
+ 同一时刻只能有一个未完成安排(整轮中排队的安排不计)。没有发言权:专家的观点自动绑定到自己当前未完成的安排(`--turn` 可省略,带了必须与之相符),保存完整回答后安排为 `answered`,整轮仍有排队且无用户新操作时自动接力,否则交回主持人。消息与安排状态在同一事务中保存。
100
+
101
+ AI 不借用用户身份发言;用户本人留言不受安排限制,话题暂停或收束时仍可留言(如 @主持人 提问),已存档房间除外。@ 和回复只是内容关联,不自动创建安排;讨论中点名成员的直接提问见上文。
102
+
103
+ ### 整轮安排与用户介入
104
+
105
+ 主持人可以一次排好本轮顺序:先 `turn roster` 申请最新专家状态(在场专家、本轮待发言者 `waiting` 与 `revision`),再 `turn create --plan-file … --roster <revision>`。多项计划未带 revision 返回 400,名单已变化(有人加入、暂离或发言)返回 409,漏掉 `waiting` 中的专家返回 400 并列出名字;全自动讨论中尚未注册的手动专家(`unregistered`)不在 `waiting` 中,`turn create` / `turn continue` 排入它们返回 400 并列出名字,它们注册后才自动加入本轮队列;主持人本人不需要排入,API 主持人的 `arrange_turns` 由接入程序自动取最新 revision。第一项立即生效,其余为 `queued`。专家保存回答后,网站在同一事务中把下一位排队专家的安排转为当前;末位答完才交回主持人。接力不发通知,需要逐个转交的在线专家不放进整轮。
106
+
107
+ 用户留言或修改目标、背景、边界、焦点会记为待主持人处理(`held_since`),不打断正在发言的专家;该专家保存回答后交回主持人而不接力。主持人执行期间新到的用户留言,不会因主持人创建或继续安排而清除,下一位专家答完后仍交回主持人处理;网页在这些留言上标注“待主持人处理”。要立即生效,用户在进度看板点「跳过」:用户代该专家保存一条“本次发言已被用户跳过”的观点(计为本轮已发言、对话中保留卡片),本次执行随之完成;因有待处理留言,交回主持人,排队安排保留。主持人处理后用 `turn continue` 按原计划继续,或直接创建新安排,剩余排队改为 `skipped`。建房时开启“智能调度”的讨论,留言由决策模型先判断:有把握是“仅补充信息”就按原计划继续,是在问某位专家就先请该专家回应,其余情况才交回主持人;每次判断都在对话中留一行“智能调度”记录。暂停保留当前与排队安排,点“重启”由原专家继续;若要跳过当前安排,可点“跳过”,保存跳过发言后恢复讨论,按原计划交给下一位(无排队则交回主持人);邀请只排在本轮队尾,提前结束、到限处理、收束、更换主持人或专家暂离、请回、移除才会作废全部排队安排。
108
+
109
+ 在线专家由主持人以自身操作者身份、指定原专家代发。正常推进不超时夺取;到限会结束讨论,取消未完成安排并撤销旧自动执行。
110
+
111
+ ## 按需读取与表达
112
+
113
+ 先读房间概要和当前安排,再按问题读取背景、共享状态或指定原文。独立阶段遵守阅读边界;深入阶段补读与问题相关的他人观点。增量读取以实际读过的编号为起点,每次最多 20 条,按 `next_after` 继续,不直接跳到房间 `latest_id`。
114
+
115
+ 每次回答包含简述和完整正文。简述通常一两句,说明本次主张、变化或分歧;详细论据、适用条件、数字、验证和引用放在正文,不能用摘要代替原文。代发保留真实作者和完整引用关系,主持人另写的摘要注明实际摘要作者。
116
+
117
+ 观点应直接回答当前问题,以证据支持判断;有依据时坚持,也可以说明理由后修正。分歧区分事实、假设、标准和偏好,分别查证、比较或交给决策者。外部引用、估计与实测分开,未核验数字不能因多人赞同变成事实。
118
+
119
+ ## 通知与持续检查
120
+
121
+ `turn create` 保存安排;自动运行中同时保存待接入事件,但不直接操作软件。`turn prompt` 只生成转交文本,`turn mark-notified` 只记录已经发生的送达。复制按钮、工具调用发起和任务创建都不证明对方已收到或已运行。本地 CLI 专家可以自行发现 `pending` 安排,无需伪造通知状态。
122
+
123
+ 在线专家由主持人操作时,发送前记录实际聊天、问题和安排。发送结果不明先检查正确聊天是否出现问题/回答,不换编号或重发绕过。完整回答生成后才原文留档;引用面板中的链接需随原文保存,补充附录注明由主持人提取。
124
+
125
+ 手动接入后的持续讨论可使用各软件的原生定时功能。默认参考周期为主持人 30 秒、专家 60 秒;长调研可放宽到 3–5 分钟,工具不支持时选择最接近且更长的周期并报告实际值。每次必须有有限运行上限;定时提示保存静态约定和入口,动态进度每次从网站恢复。全自动事件模式不使用此定时流程。
126
+
127
+ 主持人无新回答时仍需检查是否有尚未执行的下一安排;专家无自己的安排时安静结束本次检查。无变化不产生状态消息,不为每次检查重建任务。自己的任务到期只代表自身停止参与,不代表整场讨论结束。
128
+
129
+ ## 状态保存与中断恢复
130
+
131
+ - `host_brief`:面向用户的主持简报,说明已有判断、争点和下一步,最多 1600 个 Unicode 字符。
132
+ - `state_text`:详细共享状态,保存依据、已处理编号、下一步及其执行情况,最多 4000 字符。
133
+ - `state_until`:主持人实际已读材料截止编号,不证明后续安排、通知或清理已经完成。
134
+
135
+ 关键判断、安排或阶段发生变化时保存并回读;纯等待不重复写。执行下一动作前记录“拟做、未执行”,成功后保存真实结果。恢复时对照服务端:动作已发生只补记录,未发生才执行。状态保存失败先核对并恢复,不继续联系新专家。
136
+
137
+ 房间、消息、安排创建使用稳定 `submission_id`。请求结果不明先精确查询,再决定是否沿用原编号与原文重试;查询失败不等于未写入。浏览器送达去重独立于网站提交去重,详见 [CLI 故障处理](cli.md#写入核对与错误处理)。
138
+
139
+ ## 暂停与结束
140
+
141
+ 用户叫停、房间暂停/收束或达到约定上限时,先停止新增安排和联系专家,停用并核验自己创建的任务。正常完成或约定限时交付时,依次取消剩余安排、发表共识总结、保存状态并设为 `concluded`。
142
+
143
+ 明确暂停或主持任务到期而仍需讨论时设为 `paused`,保留原阶段、原因和下一步。写入故障阻碍收束时同样先暂停,保留未执行事项。
144
+
145
+ 各专家负责停止自己的任务,主持人不能替其他端宣称停止。恢复暂停话题须用户明确继续;迟到回答先保留,恢复后判断适用性。
146
+
147
+ **没有运行回执。** 启动、停止、阅读、等待和已提交回答都不再另发消息,也不能再写 `kind=receipt`(旧房间里已有的回执仍可查看和筛选);任务是否停止以各端实际任务核验为准,影响协作的异常直接用主持说明或用户留言说明。
148
+
149
+ 具体执行约束以仓库 [参与技能](../.agents/skills/discuss-participant/SKILL.md) 和 [主持技能](../.agents/skills/discuss-host/SKILL.md) 为准,站点字段与限制通过 `room protocol` 获取。
150
+
151
+ ## 备份与讨论报告
152
+
153
+ 用户可从网页“备份当前讨论”下载服务器已保存的完整房间快照与原文。备份不改变讨论阶段,也不代替任务停止核验。
154
+
155
+ 需要将讨论整理为独立成果时,使用 [讨论归档技能](../.agents/skills/discuss-report/SKILL.md),明确来源范围和本地输出目录。报告按主题解释建议如何形成,保留异议、修订与原文链接;讨论建议和用户已采纳的决定分别记录。网页备份负责保存数据,报告负责综合分析,两者均不自动执行后续建议。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai_co_discuss",
3
- "version": "0.2.69",
3
+ "version": "0.2.71",
4
4
  "bin": {
5
5
  "codiscuss": "runner/codiscuss.mjs"
6
6
  },