ai_co_discuss 0.4.0 → 0.4.2

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/runner.md CHANGED
@@ -117,7 +117,7 @@ API 成员可以担任专家或主持人。房间指定了项目目录时,它
117
117
 
118
118
  - **内置工作流**:安装包自带“小说剧本连载”(`story-serial`:编剧、写手、两位批评家与记录员逐集接力,附项目模板与状态检查脚本,脚本需要 Python 的 PyYAML)。默认不安装。在终端里运行 `codiscuss setup` 时,选完软件后有一步“安装配置”:先显示概览,按 → 展开,用空格勾选要装的工作流,回车继续;不勾就不装。也可以直接加 `--workflows` 安装全部(`install` 同样适用,非交互运行只认这个选项)。装的时候,已有同名的会覆盖为包里的最新版,原来那份先备份到服务目录的 `backups/workflows/`。选择只对这一次有效,不会记住,不选就不动工作流库。
119
119
  - **保存**:在“工作流”页点列表上方的 +,选“新建”,或导入别人分享的 zip 或文件夹(手机、平板上同样可用)。导入的内容先放上画布预览,点“保存”才写入。复制文件夹路径和删除工作流在说明抽屉底部。编辑页可以“从当前房间成员导入”卡片,提示词保持原文。想让主持人起草,打开下面的“主持人完整权限”。
120
- - **流程画布**:“工作流”页左边是工作流列表,中间是选中工作流的画布,右边是它的做法说明(SKILL.md);手机上列表下方可在“做法说明”和“示意图”之间切换。每位成员就是一张专家卡片,拖卡片上方的标题栏移动,点卡片翻面设置,× 删除。左上“成员”添加卡片(平台、预设,或当前房间的成员),“主持人”添加主持人节点;也可以从卡片右侧的圆点拖线到空白处,就地选要加的成员并自动连上。名称在右上角直接改,Ctrl+S 保存;列表里每项右边的“…”可以重命名、停用或删除(停用的工作流留在库里,但房间里不能再启用,已启用它的房间改用房间里的设置,随时可以再启用),列表右边缘可以拖动调宽;左上有撤销、重做(Ctrl+Z、Ctrl+Shift+Z),双击空白处复位视图。连线用来示意谁接谁:从「开始」右侧的圆点拖线连到卡片,连回前面的卡片画成金色虚线表示循环,主持人节点表示交回主持人判断。选中一条连线或一个主持人节点,可以写一句说明,如“同时审”“返工”“不等交回”“验收”。同一角色出场两次时,在“成员”菜单底部“已有成员再放一次”里点它。缩小看全图时,卡片换成大字名牌,说明也会放大。用 `workflow-creator` 新建或修改工作流时,AI 会照做法说明一起画好这张图。连线只帮你看懂工作流,程序不执行它,主持人也看不到;主持人派活按的是做法说明(SKILL.md,就在画布右侧,默认显示排好版的内容,点“编辑”修改;面板可以拖宽或收起),顺序、同时做、什么时候交回、要不要返工都写在那里。
120
+ - **流程画布**:“工作流”页左边是工作流列表,中间是选中工作流的画布,右边是它的做法说明(SKILL.md);手机和竖着拿的平板上,工作流排成顶部的一行标签,右端两个图标在“做法说明”和“示意图”之间切换。每位成员就是一张专家卡片,拖卡片上方的标题栏移动,点卡片翻面设置,× 删除。左上“成员”添加卡片(平台、预设,或当前房间的成员),“主持人”添加主持人节点;也可以从卡片右侧的圆点拖线到空白处,就地选要加的成员并自动连上。名称在右上角直接改,Ctrl+S 保存;列表里每项右边的“…”可以重命名、停用、复制文件夹路径或删除(停用的工作流留在库里,但房间里不能再启用,已启用它的房间改用房间里的设置,随时可以再启用),列表右边缘可以拖动调宽;左上有撤销、重做(Ctrl+Z、Ctrl+Shift+Z),双击空白处复位视图。连线用来示意谁接谁:从「开始」右侧的圆点拖线连到卡片,连回前面的卡片画成金色虚线表示循环,主持人节点表示交回主持人判断。选中一条连线或一个主持人节点,可以写一句说明,如“同时审”“返工”“不等交回”“验收”。同一角色出场两次时,在“成员”菜单底部“已有成员再放一次”里点它。打开时按看得清卡片的大小从“开始”那端显示,双击空白处看全图。用 `workflow-creator` 新建或修改工作流时,AI 会照做法说明一起画好这张图。连线只帮你看懂工作流,程序不执行它,主持人也看不到;主持人派活按的是做法说明(SKILL.md,就在画布右侧,默认显示排好版的内容,点“编辑”修改;面板可以拖宽或收起),顺序、同时做、什么时候交回、要不要返工都写在那里。
121
121
  - **让主持人自己建**:建房时(第 3 节“协作方式”)或在“成员与设置 → 协作设置”勾选“主持人完整权限”后,直接对主持人说要什么分工(或“把这个房间的做法存成工作流”),它会自己保存、在本房间启用,并邀请工作流里的成员,接着就按流程派活,不需要你导入或添加成员。之后让它改流程,改动从成员下一次执行起生效。打开这个开关后,也可以在输入框输入 `/` 选一个已保存的工作流,输入框里会写好“启用工作流「名称」(ID),”,补上要做的事发给主持人,它就启用这个工作流并带来成员(没打开时该项灰显)。主持人带来的成员项目权限最高为可写;只有本地软件担任的主持人能这样做,API 主持人不行。
122
122
  - **主持人完整权限的其他控制**:同一个开关打开后,主持人会自己处理房间里的问题、持续推进:成员跑偏时插话、卡住时打断或重试、模型不可用时换模型、无法恢复时换人;你也可以直接说“停下写手”“全部停下”“下一个让批评家先说”“请一位 Codex 进来只读评审”“把记录员请出去”“开个 Goal 把剩下几集写完”“暂停讨论”。邀请只用本机已配置的软件,项目权限最高可写;它自己开的 Goal 用你的默认预算(不限时为 8 次续跑、90 分钟)。成员连续 10 分钟没有新输出时,系统会提醒主持人检查;主持人派出长任务时还可以给自己设定时检查(每 5–120 分钟一次,房间空闲后自动结束)。它也能撤回自己派出的活,正在循环的接力会立即停下。以下仍由你决定:对主持人自己操作或更换主持人、批准超出上限的轮数、高于可写的权限或放行工具、改项目目录、撤回你的消息、私聊。API 主持人没有命令行,不能这样做。
123
123
  - **分享**:工作流存在本机服务目录的 `workflows` 文件夹,一个工作流一个文件夹;编辑页可复制路径,把整个文件夹(或打成 zip)发给对方即可分享。导入时会列出每张卡片的提示词和项目权限;要求写文件的卡片默认按只读导入,逐张勾选后才放开。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai_co_discuss",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "bin": {
5
5
  "codiscuss": "runner/codiscuss.mjs"
6
6
  },
@@ -11,6 +11,13 @@
11
11
  import { spawn } from 'node:child_process';
12
12
  import { createInterface } from 'node:readline';
13
13
 
14
+ /**
15
+ * The under-development `context_management` feature lets the model call `new_context`, which drops the history without a
16
+ * summary and relies on `notes`/`history` tools to recover it; when those tools fail ("The backend request failed" on
17
+ * every call, 0.163, 2026-11), the turn forgets the room task and ends without answering. Room turns keep Codex's
18
+ * summarizing compaction instead.
19
+ */
20
+ const CONTEXT_OVERRIDES = ['-c', 'features.context_management=false'];
14
21
  const [executable, ...server_args] = process.argv.slice(2);
15
22
  const pending = new Map();
16
23
  let next_id = 0;
@@ -19,7 +26,7 @@ let turn_id = '';
19
26
  let finished = false;
20
27
  const queued_steers = [];
21
28
 
22
- const server = spawn(executable, ['app-server', ...server_args], { windowsHide: true, shell: false, stdio: ['pipe', 'pipe', 'pipe'] });
29
+ const server = spawn(executable, ['app-server', ...CONTEXT_OVERRIDES, ...server_args], { windowsHide: true, shell: false, stdio: ['pipe', 'pipe', 'pipe'] });
23
30
  server.stderr.pipe(process.stderr);
24
31
  server.once('error', error => fail(error.message));
25
32
  server.once('close', code => { if (!finished) fail(`Codex app-server 意外退出(${code})`); });
@@ -355,7 +355,7 @@ export function list_workflows(home) {
355
355
  const flag = disabled.includes(id) ? { disabled: true } : {};
356
356
  try {
357
357
  const workflow = read_saved_workflow(home, id);
358
- return { id, label: workflow.label || id, description: workflow.description, cards: workflow.agents.length, ...flag };
358
+ return { id, label: workflow.label || id, description: workflow.description, cards: workflow.agents.length, directory: workflow.directory, ...flag };
359
359
  } catch (error) { return { id, label: id, description: '', cards: 0, error: error.message, ...flag }; }
360
360
  });
361
361
  });