ai_co_discuss 0.3.39 → 0.3.41
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/.agents/skills/discuss-host/references/discussion.md +4 -0
- package/.agents/skills/discuss-host/references/free.md +8 -0
- package/.agents/skills/discuss-host/references/workflow-draft.md +38 -0
- package/README.md +139 -138
- package/backend/server.py +4 -2
- package/docs/runner.md +8 -0
- package/package.json +86 -86
- package/runner/adapters/antigravity_cli.mjs +324 -324
- package/runner/adapters/api.mjs +313 -299
- package/runner/adapters/claude.mjs +384 -313
- package/runner/discussion_launch.mjs +1437 -1351
- package/runner/discussion_runner.mjs +233 -230
- package/runner/free_runner.mjs +907 -890
- package/runner/remote_launch.mjs +4 -2
- package/runner/workflows.mjs +321 -0
- package/web/app.js +4261 -4194
- package/web/modern.css +1 -1
- package/web/modern.js +4415 -3586
|
@@ -72,6 +72,10 @@
|
|
|
72
72
|
|
|
73
73
|
核对会改变结论的数字、出处与适用条件,区分实测、外部声称、估计和建议。误述原意时请原作者澄清;另一人的赞同不能代替当事人确认。保留少数意见及其影响,不为了收束抹去限制,也不为凑轮次制造争论。重复立场时缩小争点或补有区分力的证据,仍无法判断就明确保留未决。
|
|
74
74
|
|
|
75
|
+
## 工作流
|
|
76
|
+
|
|
77
|
+
本次任务有 `workflow` 字段时,按其工作流说明安排发言:本地软件读 `skills` 末尾的 SKILL.md,API 主持人读本次系统提示中的正文。规则见 [自由协作主持](free.md) 的“工作流”一节;没有该字段时不按任何工作流做事。
|
|
78
|
+
|
|
75
79
|
## 首次接手
|
|
76
80
|
|
|
77
81
|
网页新建只要求话题名称与用户原文,目标、背景和讨论边界留给主持人。首次接手时若这些字段为空,先读用户原文与已知材料补全,用 `room update ROOM --goal-file ... --background-file ... --boundaries-file ... --as 本人`(凭据方式遵循参与技能)一次保存,再安排专家。只有歧义会改变讨论方向时才向用户确认。
|
|
@@ -24,3 +24,11 @@
|
|
|
24
24
|
- 同一条用户消息最多推进若干轮(`room view` 的 `free.max_rounds`,本链已用见 `free.chain_rounds`,用户可调):你派一次活算一轮,成员做完交回给你汇总不另计。到上限时你的下一次派活会被暂存、任务链停下,由用户决定继续或发新消息;你不能自己加轮。派活前先想清楚需要几位、几轮,最后一轮留给汇总。(上限防止 AI 之间无人值守地来回转交。)
|
|
25
25
|
|
|
26
26
|
用户请成员分工改代码(定计划、实现、评审、整理文档)时,先读 [开发协作](dev-flow.md)。
|
|
27
|
+
|
|
28
|
+
## 工作流
|
|
29
|
+
|
|
30
|
+
本次任务有 `workflow` 字段时,本房间启用了用户的工作流:本地软件读取任务文件 `skills` 末尾的 SKILL.md;API 主持人读取本次系统提示中的工作流正文,不尝试打开该文件路径。按它组织工作,它优先于开发协作参考流程。每次任务都重读一遍,内容变了就重新核对分工。`workflow.members` 列出每张卡片现在由哪位成员担任、是否在场、项目权限;只点名其中在场的成员,名单里缺某个角色时在回答里说明缺谁,不另找成员代替。工作流只带来做法和成员,不扩大你的权限。
|
|
31
|
+
|
|
32
|
+
本次任务(本地任务文件或 API 的 `task`)没有 `workflow` 字段时,不按任何工作流做事,即使会话里读过。
|
|
33
|
+
|
|
34
|
+
用户请你把本房间的做法存成工作流时,读 [起草工作流](workflow-draft.md)。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 起草工作流(主持人)
|
|
2
|
+
|
|
3
|
+
用户请你把本房间形成的做法存成工作流时读本页。你只起草,保存由用户在网页“工作流库 → 粘贴导入”完成;不要自己写入本机服务目录。
|
|
4
|
+
|
|
5
|
+
## 内容
|
|
6
|
+
|
|
7
|
+
工作流 = 一份给主持人读的 SKILL.md + 一组 Agent 卡片。
|
|
8
|
+
|
|
9
|
+
- **SKILL.md**:用途、工序、每一步找哪个角色、产物放在项目哪里。只按角色的显示名、描述和产物路径说话,不引用卡片提示词的内容(API 主持人读不到卡片);各角色共同遵守的约束直接写在这里。它会被别人拿去其他项目用:不写本项目的具体事实、本机路径或密钥,项目信息写成“读项目 README 找到……”。正文最多 20,000 字。
|
|
10
|
+
- **卡片**:每个角色一张,就是专家预设,最多 30 张。`name` 为 `平台-卡片ID`(如 `Antigravity-writer`、`DeepSeek-science`),卡片 ID 只用英文、数字和下划线,最多 16 位,同一工作流内不重名(不区分大小写);正文是只发给该角色的专属提示词(最多 4,000 字)。你读不到成员现有的专属提示词,可以留空,用户会在网页用“从房间成员导入卡片”取原文。主持人不设卡片。
|
|
11
|
+
- 只写这次房间里确实验证过的做法;没跑通过的步骤不写成规则。
|
|
12
|
+
|
|
13
|
+
## 格式
|
|
14
|
+
|
|
15
|
+
说明文字只能写在首个 `workflow-file` 分隔行之前;分隔行之后一律算文件正文,最后一个文件后不要再加说明。格式部分如下,分隔行必须独占一行、从行首开始;实际消息不要把整段包在 Markdown 代码围栏中:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
<!-- workflow-part: 1/1 id: novel-serial -->
|
|
19
|
+
<!-- workflow-file: SKILL.md -->
|
|
20
|
+
---
|
|
21
|
+
name: novel-serial
|
|
22
|
+
label: 连载小说
|
|
23
|
+
description: 一句话说明,不换行
|
|
24
|
+
---
|
|
25
|
+
(SKILL.md 正文)
|
|
26
|
+
<!-- workflow-file: agents/writer.md -->
|
|
27
|
+
---
|
|
28
|
+
name: Antigravity-writer
|
|
29
|
+
label: 执笔
|
|
30
|
+
description: 一句话说明,不换行
|
|
31
|
+
project_access: read
|
|
32
|
+
---
|
|
33
|
+
(专属提示词)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- `id` 只用小写英文、数字、下划线和连字符,1—40 位;分段头的 `id` 与 SKILL.md 的 `name` 相同。
|
|
37
|
+
- 头信息只支持单行 `key: value`;卡片可写 `name`、`label`、`description`、`project_access`(read / write / auto / full)、`model`、`effort`,其余不写。
|
|
38
|
+
- 一条消息装不下(正文上限约 32,000 字)时拆成多条,最多 20 段;每条都带分段头 `序号/总数`,同一文件不要拆到两条里。
|
package/README.md
CHANGED
|
@@ -1,138 +1,139 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# AI CoDiscuss
|
|
4
|
-
|
|
5
|
-
**One room for all your AI agents.**
|
|
6
|
-
|
|
7
|
-
Bring Claude Code, Codex, Antigravity and model APIs into a shared room —<br>
|
|
8
|
-
each keeps its own session, tools and account — then delegate by mention or run structured discussions.
|
|
9
|
-
|
|
10
|
-
[Quick Start](#quick-start) · [How It Works](#how-it-works) · [Documentation](#documentation) · [简体中文](README.zh-CN.md)
|
|
11
|
-
|
|
12
|
-
[](https://github.com/huyan1458/ai_co_discuss/actions/workflows/ci.yml)
|
|
13
|
-
[](https://www.npmjs.com/package/ai_co_discuss)
|
|
14
|
-
[](package.json)
|
|
15
|
-
[](LICENSE)
|
|
16
|
-
|
|
17
|
-
<a href=".github/assets/promo.mp4"><img src=".github/assets/promo.webp" alt="AI CoDiscuss intro: several AI agents are mentioned in one room, work in parallel and reach a sourced conclusion" width="900"></a>
|
|
18
|
-
|
|
19
|
-
<sub>Click the animation for the full video with sound</sub>
|
|
20
|
-
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
## Why AI CoDiscuss
|
|
24
|
-
|
|
25
|
-
Most multi-agent frameworks spin up fresh agents inside their own runtime. AI CoDiscuss takes the opposite approach: it connects the AI tools you **already use** — with their existing sessions, project context, permissions and subscriptions — and gives them a shared room with a durable record of messages, viewpoints, disagreements and conclusions.
|
|
26
|
-
|
|
27
|
-
## Features
|
|
28
|
-
|
|
29
|
-
- **Delegate by mention** — `@` an agent and it works in its own original session; several can run in parallel. Unaddressed messages go to an AI host that routes the work.
|
|
30
|
-
- **Structured discussions** — set a goal and round / time limits; the host schedules speakers and follow-ups, then the room returns to free collaboration with history and conclusions kept.
|
|
31
|
-
- **Smart Scheduling** — optionally let a decision model handle routine routing instead of waking the host.
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
| **
|
|
54
|
-
| **
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
codiscuss local
|
|
76
|
-
codiscuss local
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
R --
|
|
92
|
-
R
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
- The **
|
|
99
|
-
- **
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- **
|
|
107
|
-
- **From
|
|
108
|
-
- **
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# AI CoDiscuss
|
|
4
|
+
|
|
5
|
+
**One room for all your AI agents.**
|
|
6
|
+
|
|
7
|
+
Bring Claude Code, Codex, Antigravity and model APIs into a shared room —<br>
|
|
8
|
+
each keeps its own session, tools and account — then delegate by mention or run structured discussions.
|
|
9
|
+
|
|
10
|
+
[Quick Start](#quick-start) · [How It Works](#how-it-works) · [Documentation](#documentation) · [简体中文](README.zh-CN.md)
|
|
11
|
+
|
|
12
|
+
[](https://github.com/huyan1458/ai_co_discuss/actions/workflows/ci.yml)
|
|
13
|
+
[](https://www.npmjs.com/package/ai_co_discuss)
|
|
14
|
+
[](package.json)
|
|
15
|
+
[](LICENSE)
|
|
16
|
+
|
|
17
|
+
<a href=".github/assets/promo.mp4"><img src=".github/assets/promo.webp" alt="AI CoDiscuss intro: several AI agents are mentioned in one room, work in parallel and reach a sourced conclusion" width="900"></a>
|
|
18
|
+
|
|
19
|
+
<sub>Click the animation for the full video with sound</sub>
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
## Why AI CoDiscuss
|
|
24
|
+
|
|
25
|
+
Most multi-agent frameworks spin up fresh agents inside their own runtime. AI CoDiscuss takes the opposite approach: it connects the AI tools you **already use** — with their existing sessions, project context, permissions and subscriptions — and gives them a shared room with a durable record of messages, viewpoints, disagreements and conclusions.
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
|
|
29
|
+
- **Delegate by mention** — `@` an agent and it works in its own original session; several can run in parallel. Unaddressed messages go to an AI host that routes the work.
|
|
30
|
+
- **Structured discussions** — set a goal and round / time limits; the host schedules speakers and follow-ups, then the room returns to free collaboration with history and conclusions kept.
|
|
31
|
+
- **Smart Scheduling** — optionally let a decision model handle routine routing instead of waking the host.
|
|
32
|
+
- **Workflows** — save a way of working as a host playbook (`SKILL.md`) plus a set of agent cards, share it as a folder, and select it when creating a room or inviting members; after you confirm the members, the host follows the playbook. It brings the method and the people, not a guaranteed procedure. See [runner docs](docs/runner.md#工作流可选).
|
|
33
|
+
- **Mix any participant** — local CLIs and desktop apps, model APIs and manually connected sessions in one room.
|
|
34
|
+
- **Shared workspace** — point a room at a project directory, grant each local agent read-only or writable access, and browse files with text, Markdown and static HTML previews from the room.
|
|
35
|
+
- **Live roster** — invite, pause, recall or remove members at any time, including resuming an existing agent session.
|
|
36
|
+
- **Portable records** — attachments, ZIP export / import between sites with discussion history, and sourced reports via the `discuss-report` skill.
|
|
37
|
+
- **Local first** — runs entirely on your machine; optionally host the site on Cloudflare or Docker while agents stay local.
|
|
38
|
+
|
|
39
|
+
## Smart Scheduling
|
|
40
|
+
|
|
41
|
+
Many turns in a room are routing decisions: who a message is for, whether members should answer together or in order, whether a round should continue. With Smart Scheduling enabled, these are answered by a decision model (TypeSafe Jev; OpenAI Decisions is experimental) instead of waking the AI host, typically in about a second.
|
|
42
|
+
|
|
43
|
+
- Unaddressed messages go to the member they are clearly meant for, to everyone, or to no one; otherwise to the host.
|
|
44
|
+
- In discussions, it resumes the queue after an interjection and picks the next speaker between rounds.
|
|
45
|
+
- It acts only above a confidence threshold, and falls back to the host on low confidence or errors. Each decision is shown in the conversation and can be rated.
|
|
46
|
+
|
|
47
|
+
It is opt-in per room and uses your own key; the room title and recent messages are sent to the provider. See [Smart Scheduling](docs/en/workflow.md#smart-scheduling).
|
|
48
|
+
|
|
49
|
+
## Supported Participants
|
|
50
|
+
|
|
51
|
+
| Mode | Participants | Notes |
|
|
52
|
+
| --- | --- | --- |
|
|
53
|
+
| **Auto-wake** | Claude Code CLI · Codex App / CLI · Antigravity App / CLI | Woken by the local service, resumes the original session, can host |
|
|
54
|
+
| **Model API** | OpenAI · Claude · Gemini · DeepSeek · Qwen · Grok · OpenAI-compatible | Called by the local service with room tools only, can host |
|
|
55
|
+
| **Manual** | Any local AI that can run `codiscuss` (e.g. Cursor CLI) | Reads and writes with its own member credential |
|
|
56
|
+
|
|
57
|
+
## Quick Start
|
|
58
|
+
|
|
59
|
+
> [!NOTE]
|
|
60
|
+
> Requires **Node.js 24+** and **Python 3.10+**. Install and sign in to the AI tools you plan to use first; for API-only use, an API key is enough.
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
npm install --global ai_co_discuss@latest
|
|
64
|
+
codiscuss setup
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`setup` detects your AI tools, installs the discussion skills and opens the local site at <http://127.0.0.1:8765>. Then:
|
|
68
|
+
|
|
69
|
+
1. Click **New Room** (新建房间) and add AI members.
|
|
70
|
+
2. Pick a host with the crown icon, and optionally set a project directory.
|
|
71
|
+
3. Optionally enable **Start discussion after creating** (创建后开启讨论) and set a goal.
|
|
72
|
+
4. Create the room and start talking — `@` members to assign work.
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
codiscuss local open # open or reuse the local site
|
|
76
|
+
codiscuss local status # show site and service status
|
|
77
|
+
codiscuss local stop # stop the site and its managed service
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
To upgrade, run `codiscuss local stop`, then `npm install --global --prefer-online ai_co_discuss@latest` and `codiscuss setup`. Options, upgrade and uninstall are covered in [Setup](docs/en/runner.md#installation).
|
|
81
|
+
|
|
82
|
+
> [!NOTE]
|
|
83
|
+
> The web UI and detailed documentation are currently available in Chinese.
|
|
84
|
+
|
|
85
|
+
## How It Works
|
|
86
|
+
|
|
87
|
+
```mermaid
|
|
88
|
+
flowchart LR
|
|
89
|
+
U[You · browser] --> S[(Room site<br>local or hosted)]
|
|
90
|
+
S -- events --> R[Local runner<br>codiscuss service]
|
|
91
|
+
R -- wake / resume --> A[Claude Code · Codex · Antigravity]
|
|
92
|
+
R -- API calls --> M[Model APIs]
|
|
93
|
+
R -. routing, optional .-> D[Decision model]
|
|
94
|
+
A -- codiscuss CLI --> S
|
|
95
|
+
M -- room tools --> S
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- The **site** stores rooms, members and messages, and enforces turn order, revisions and credentials. It never runs models or stores API keys.
|
|
99
|
+
- The **local runner** consumes site events and wakes each agent in its own session, or calls the model API you configured. Keys stay on your machine.
|
|
100
|
+
- **Agents** read and post through the `codiscuss` CLI using per-member credentials, guided by the bundled `discuss-host` and `discuss-participant` skills.
|
|
101
|
+
|
|
102
|
+
Details: [Architecture](docs/en/architecture.md) · [Setup](docs/en/runner.md)
|
|
103
|
+
|
|
104
|
+
## More Ways to Start
|
|
105
|
+
|
|
106
|
+
- **Hosted site, local agents** — run `codiscuss local connect https://your-site` once on the machine running your agents. See [From a hosted site](docs/en/runner.md#from-a-hosted-site).
|
|
107
|
+
- **From a phone or tablet** — after connecting once and saving your usual projects on that computer, sign in to the same site as administrator on any device to create rooms whose agents that computer wakes. Folder paths stay on the computer. See [From other devices](docs/en/runner.md#from-other-devices).
|
|
108
|
+
- **From an AI chat** — ask a local agent to use the `discuss-host` and `discuss-participant` skills to create and host a room. See [From an AI chat](docs/en/runner.md#from-an-ai-chat).
|
|
109
|
+
- **Model APIs** — configure provider, base URL, protocol and model per member. See [API access](docs/en/runner.md#api-access).
|
|
110
|
+
|
|
111
|
+
## Deployment
|
|
112
|
+
|
|
113
|
+
The site can be self-hosted on **Cloudflare Pages + D1** or **Docker**; agents and the runner still run on your own machine. A Docker site keeps its own rooms; the Cloudflare site keeps none and, after you sign in, shows the rooms on your paired computer through an encrypted relay. See [Deployment](docs/en/deployment.md).
|
|
114
|
+
|
|
115
|
+
> [!WARNING]
|
|
116
|
+
> The site does not yet provide user login or read-access isolation. Anyone who can reach the site can read its rooms. Read the [security policy](.github/SECURITY.md) before exposing it publicly.
|
|
117
|
+
|
|
118
|
+
## Documentation
|
|
119
|
+
|
|
120
|
+
| Topic | Document |
|
|
121
|
+
| --- | --- |
|
|
122
|
+
| Rooms, discussions, Smart Scheduling, members and skills | [User guide](docs/en/workflow.md) |
|
|
123
|
+
| Installation, entry points, API access, command line, troubleshooting | [Setup](docs/en/runner.md) |
|
|
124
|
+
| Local, Docker and Cloudflare deployment | [Deployment](docs/en/deployment.md) |
|
|
125
|
+
| Design principles, components and data boundaries | [Architecture](docs/en/architecture.md) |
|
|
126
|
+
|
|
127
|
+
Documentation is written in Chinese.
|
|
128
|
+
|
|
129
|
+
## Contributing
|
|
130
|
+
|
|
131
|
+
Issues and pull requests are welcome. See the [contributing guide](.github/CONTRIBUTING.md) for development setup, running from source and testing.
|
|
132
|
+
|
|
133
|
+
## Security
|
|
134
|
+
|
|
135
|
+
The [security policy](.github/SECURITY.md) describes the current trust model, credential handling and data boundaries. The project has not undergone an independent security audit.
|
|
136
|
+
|
|
137
|
+
## License
|
|
138
|
+
|
|
139
|
+
Released under the [MIT License](LICENSE). Third-party components are listed in [THIRD_PARTY_NOTICES](docs/THIRD_PARTY_NOTICES.md). Product names and logos belong to their respective owners and do not imply endorsement.
|
package/backend/server.py
CHANGED
|
@@ -1837,7 +1837,7 @@ class DiscussionHandler(BaseHTTPRequestHandler):
|
|
|
1837
1837
|
site = self.local_request_site(method)
|
|
1838
1838
|
route = parts[2:]
|
|
1839
1839
|
if method == "OPTIONS" and route in (["settings"], ["launch"], ["room-models"], ["room-files"], ["room-member"], ["room-member-access"], ["room-member-allow"], ["room-member-adapter"], ["room-member-model"], ["room-profiles"], ["room-restore"], ["room-fork"], ["models"], ["api-key"], ["api-check"],
|
|
1840
|
-
["scheduler-check"], ["tts-settings"], ["tts"], ["stt"], ["pick-directory"], ["projects"], ["presets"], ["machine-link"], ["admin-account"]):
|
|
1840
|
+
["scheduler-check"], ["tts-settings"], ["tts"], ["stt"], ["pick-directory"], ["projects"], ["presets"], ["workflows"], ["room-workflow"], ["machine-link"], ["admin-account"]):
|
|
1841
1841
|
return self.respond({"ok": True})
|
|
1842
1842
|
if route == ["settings"] and method in ("GET", "POST"):
|
|
1843
1843
|
command = "settings"
|
|
@@ -1867,6 +1867,8 @@ class DiscussionHandler(BaseHTTPRequestHandler):
|
|
|
1867
1867
|
command = "projects"
|
|
1868
1868
|
elif route == ["presets"] and method == "POST":
|
|
1869
1869
|
command = "presets"
|
|
1870
|
+
elif route in (["workflows"], ["room-workflow"]) and method == "POST":
|
|
1871
|
+
command = route[0]
|
|
1870
1872
|
elif route == ["machine-link"] and method == "POST":
|
|
1871
1873
|
command = "machine-link"
|
|
1872
1874
|
elif route == ["admin-account"] and method == "POST":
|
|
@@ -1878,7 +1880,7 @@ class DiscussionHandler(BaseHTTPRequestHandler):
|
|
|
1878
1880
|
if self.headers.get_content_type() != "application/json":
|
|
1879
1881
|
raise ValueError("本机操作须使用 application/json")
|
|
1880
1882
|
payload = self.read_payload()
|
|
1881
|
-
if command in ("start", "room-config", "room-models", "room-files", "room-member", "room-member-access", "room-member-allow", "room-member-adapter", "room-member-model", "room-profiles", "room-restore", "room-fork"):
|
|
1883
|
+
if command in ("start", "room-config", "room-models", "room-files", "room-member", "room-member-access", "room-member-allow", "room-member-adapter", "room-member-model", "room-profiles", "room-restore", "room-fork", "room-workflow", "workflows"):
|
|
1882
1884
|
payload.pop("access_file", None)
|
|
1883
1885
|
payload.update(site=site, entry="web")
|
|
1884
1886
|
if command == "room-files" and not payload.get("token") and not self.bridge_origin:
|
package/docs/runner.md
CHANGED
|
@@ -94,6 +94,14 @@ API 成员可以担任专家或主持人。房间指定了项目目录时,它
|
|
|
94
94
|
|
|
95
95
|
翻开成员卡片,“提示”一行可以给这位专家单独写几句要求,例如“回答先给结论”。它只发给这位专家,不改变权限;部分软件带有预设,可随时恢复。卡片背面的书签图标把这张卡片的描述、提示词、项目权限、模型与强度存为专家预设,之后在“添加”行一键加入,见 [使用指南](workflow.md#成员管理)。
|
|
96
96
|
|
|
97
|
+
## 工作流(可选)
|
|
98
|
+
|
|
99
|
+
工作流把一种多人协作的做法存下来,供别的房间复用:一份给主持人读的做法说明(SKILL.md),加一组 Agent 卡片(每张就是一个专家预设)。建房或邀请时在“工作流”一行选中它,确认卡片后作为成员加入;主持人此后按说明组织工作。它只带来做法和成员,不保证工序,具体怎么做仍由主持人判断,你随时可以 @ 任何成员。
|
|
100
|
+
|
|
101
|
+
- **保存**:点“工作流库”新建或编辑;也可以请房间主持人“把这个房间的做法存成工作流”,复制它起草的消息,在工作流库“粘贴导入”。编辑页可以“从当前房间成员导入”卡片,提示词保持原文。
|
|
102
|
+
- **分享**:工作流存在本机服务目录的 `workflows` 文件夹,一个工作流一个文件夹;编辑页可复制路径,复制整个文件夹即可分享。导入时会列出每张卡片的提示词和项目权限;要求写文件的卡片默认按只读导入,逐张勾选后才放开。
|
|
103
|
+
- **修改与停用**:修改工作流会作用于所有启用它的房间,成员下一次执行就按新内容;工作流卡片的提示词弹窗提供“去工作流库编辑”。右栏显示工作流状态并可停用:它带来的成员离开(主持人保留),正在进行的工作随之停止;重新启用先打开邀请面板,确认后请回原成员并加入你保留的新增卡片。
|
|
104
|
+
|
|
97
105
|
## 朗读与语音输入(可选)
|
|
98
106
|
|
|
99
107
|
在火山引擎控制台开通「语音合成2.0」(朗读)和「录音文件识别2.0」(语音输入),复制 API Key,填进网页“设置”的“语音”。朗读可设一个通用音色,并按 AI 平台(Claude、Codex、Gemini 等)分别配音色,没配的平台、你自己的消息和程序消息用通用音色;还可选语速、改语气提示(默认是“像给朋友讲故事一样”的自然语气)。密钥只保存在本机,费用按你的账号计费。
|
package/package.json
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ai_co_discuss",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"bin": {
|
|
5
|
-
"codiscuss": "runner/codiscuss.mjs"
|
|
6
|
-
},
|
|
7
|
-
"scripts": {
|
|
8
|
-
"dev": "npm run build && wrangler pages dev --ip 127.0.0.1 --port 8787",
|
|
9
|
-
"db:local": "wrangler d1 execute DB --local --file backend/schema.sql",
|
|
10
|
-
"db:remote": "wrangler d1 execute DB --remote --file backend/schema.sql",
|
|
11
|
-
"check": "node --check backend/worker.mjs && node --check web/app.js && node --check runner/admin_account.mjs && node --check runner/codiscuss.mjs && node --check runner/discussion_api.mjs && node --check runner/discussion_launch.mjs && node --check runner/discussion_local.mjs && node --check runner/discussion_runner.mjs && node --check runner/discussion_service.mjs && node --check runner/discussion_setup.mjs && node --check runner/discussion_sidecar.mjs && node --check runner/discussion_skills.mjs && node --check runner/discussion_tui.mjs && node --check runner/execution_progress.mjs && node --check runner/expert_prompts.mjs && node --check runner/files.mjs && node --check runner/free_runner.mjs && node --check runner/remote_launch.mjs && node --check runner/scheduler.mjs && node --check runner/session_driver.mjs && node --check runner/adapters/antigravity_app.mjs && node --check runner/adapters/antigravity_cli.mjs && node --check runner/adapters/antigravity_sidecar.mjs && node --check runner/adapters/api.mjs && node --check runner/adapters/claude.mjs && node --check runner/adapters/cli.mjs && node --check runner/adapters/codex_app.mjs && node --check runner/adapters/codex_app_client.mjs && node --check runner/adapters/codex_cli.mjs && node --check runner/adapters/common.mjs && node --check runner/adapters/index.mjs && node --check runner/adapters/profiles.mjs",
|
|
12
|
-
"runner": "node runner/discussion_runner.mjs",
|
|
13
|
-
"service": "node runner/discussion_service.mjs",
|
|
14
|
-
"build:ui": "vite build --config frontend/vite.config.mjs --mode markdown && vite build --config frontend/vite.config.mjs --mode backup && vite build --config frontend/vite.config.mjs",
|
|
15
|
-
"test:markdown": "node --test tests/test_markdown.mjs",
|
|
16
|
-
"build": "npm run check && npm run build:ui && node scripts/build_pages.mjs",
|
|
17
|
-
"test:pages": "node --test tests/test_pages.mjs",
|
|
18
|
-
"deploy": "npm run build && wrangler pages deploy --branch main --commit-dirty=true",
|
|
19
|
-
"deploy:pages": "npm run deploy",
|
|
20
|
-
"test": "npm run test:python && npm run test:js",
|
|
21
|
-
"test:python": "python -m unittest discover -s tests -p test_*.py",
|
|
22
|
-
"test:js": "node --test tests/test_*.mjs",
|
|
23
|
-
"test:install": "node --test tests/test_setup.mjs tests/test_local.mjs tests/test_package.mjs"
|
|
24
|
-
},
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@iconify-json/lucide": "1.2.144",
|
|
27
|
-
"@mdit/plugin-katex": "1.1.3",
|
|
28
|
-
"@nuxt/ui": "4.11.3",
|
|
29
|
-
"@tailwindcss/vite": "4.3.3",
|
|
30
|
-
"@vitejs/plugin-vue": "6.0.10",
|
|
31
|
-
"fflate": "0.8.3",
|
|
32
|
-
"katex": "0.18.10",
|
|
33
|
-
"markdown-it": "15.0.3",
|
|
34
|
-
"markdown-it-cjk-friendly": "3.0.0",
|
|
35
|
-
"motion-v": "2.7.0",
|
|
36
|
-
"pdfjs-dist": "6.4.299",
|
|
37
|
-
"vite": "8.3.4",
|
|
38
|
-
"vue": "3.5.44",
|
|
39
|
-
"wrangler": "4.151.0"
|
|
40
|
-
},
|
|
41
|
-
"description": "让不同 AI 在各自软件中协作的共享讨论空间",
|
|
42
|
-
"keywords": [
|
|
43
|
-
"ai",
|
|
44
|
-
"multi-agent",
|
|
45
|
-
"discussion",
|
|
46
|
-
"cli",
|
|
47
|
-
"codex",
|
|
48
|
-
"claude",
|
|
49
|
-
"gemini"
|
|
50
|
-
],
|
|
51
|
-
"homepage": "https://github.com/huyan1458/ai_co_discuss#readme",
|
|
52
|
-
"repository": {
|
|
53
|
-
"type": "git",
|
|
54
|
-
"url": "git+https://github.com/huyan1458/ai_co_discuss.git"
|
|
55
|
-
},
|
|
56
|
-
"bugs": {
|
|
57
|
-
"url": "https://github.com/huyan1458/ai_co_discuss/issues"
|
|
58
|
-
},
|
|
59
|
-
"author": "huyan1458",
|
|
60
|
-
"license": "MIT",
|
|
61
|
-
"engines": {
|
|
62
|
-
"node": ">=24"
|
|
63
|
-
},
|
|
64
|
-
"overrides": {
|
|
65
|
-
"fontless": {
|
|
66
|
-
"esbuild": "0.28.2"
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
"files": [
|
|
70
|
-
"runner/*.mjs",
|
|
71
|
-
"runner/adapters/*.mjs",
|
|
72
|
-
"runner/*.py",
|
|
73
|
-
"backend/*.py",
|
|
74
|
-
"backend/schema.sql",
|
|
75
|
-
"backend/migrations/*.sql",
|
|
76
|
-
"server.py",
|
|
77
|
-
"web/**",
|
|
78
|
-
".agents/skills/discuss-host/**",
|
|
79
|
-
".agents/skills/discuss-participant/**",
|
|
80
|
-
".agents/skills/discuss-report/**",
|
|
81
|
-
".github/SECURITY.md",
|
|
82
|
-
"docs/**",
|
|
83
|
-
"!**/*.log",
|
|
84
|
-
"LICENSE"
|
|
85
|
-
]
|
|
86
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "ai_co_discuss",
|
|
3
|
+
"version": "0.3.41",
|
|
4
|
+
"bin": {
|
|
5
|
+
"codiscuss": "runner/codiscuss.mjs"
|
|
6
|
+
},
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "npm run build && wrangler pages dev --ip 127.0.0.1 --port 8787",
|
|
9
|
+
"db:local": "wrangler d1 execute DB --local --file backend/schema.sql",
|
|
10
|
+
"db:remote": "wrangler d1 execute DB --remote --file backend/schema.sql",
|
|
11
|
+
"check": "node --check backend/worker.mjs && node --check web/app.js && node --check runner/admin_account.mjs && node --check runner/codiscuss.mjs && node --check runner/discussion_api.mjs && node --check runner/discussion_launch.mjs && node --check runner/discussion_local.mjs && node --check runner/discussion_runner.mjs && node --check runner/discussion_service.mjs && node --check runner/discussion_setup.mjs && node --check runner/discussion_sidecar.mjs && node --check runner/discussion_skills.mjs && node --check runner/discussion_tui.mjs && node --check runner/execution_progress.mjs && node --check runner/expert_prompts.mjs && node --check runner/files.mjs && node --check runner/free_runner.mjs && node --check runner/remote_launch.mjs && node --check runner/scheduler.mjs && node --check runner/session_driver.mjs && node --check runner/workflows.mjs && node --check runner/adapters/antigravity_app.mjs && node --check runner/adapters/antigravity_cli.mjs && node --check runner/adapters/antigravity_sidecar.mjs && node --check runner/adapters/api.mjs && node --check runner/adapters/claude.mjs && node --check runner/adapters/cli.mjs && node --check runner/adapters/codex_app.mjs && node --check runner/adapters/codex_app_client.mjs && node --check runner/adapters/codex_cli.mjs && node --check runner/adapters/common.mjs && node --check runner/adapters/index.mjs && node --check runner/adapters/profiles.mjs",
|
|
12
|
+
"runner": "node runner/discussion_runner.mjs",
|
|
13
|
+
"service": "node runner/discussion_service.mjs",
|
|
14
|
+
"build:ui": "vite build --config frontend/vite.config.mjs --mode markdown && vite build --config frontend/vite.config.mjs --mode backup && vite build --config frontend/vite.config.mjs",
|
|
15
|
+
"test:markdown": "node --test tests/test_markdown.mjs",
|
|
16
|
+
"build": "npm run check && npm run build:ui && node scripts/build_pages.mjs",
|
|
17
|
+
"test:pages": "node --test tests/test_pages.mjs",
|
|
18
|
+
"deploy": "npm run build && wrangler pages deploy --branch main --commit-dirty=true",
|
|
19
|
+
"deploy:pages": "npm run deploy",
|
|
20
|
+
"test": "npm run test:python && npm run test:js",
|
|
21
|
+
"test:python": "python -m unittest discover -s tests -p test_*.py",
|
|
22
|
+
"test:js": "node --test tests/test_*.mjs",
|
|
23
|
+
"test:install": "node --test tests/test_setup.mjs tests/test_local.mjs tests/test_package.mjs"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@iconify-json/lucide": "1.2.144",
|
|
27
|
+
"@mdit/plugin-katex": "1.1.3",
|
|
28
|
+
"@nuxt/ui": "4.11.3",
|
|
29
|
+
"@tailwindcss/vite": "4.3.3",
|
|
30
|
+
"@vitejs/plugin-vue": "6.0.10",
|
|
31
|
+
"fflate": "0.8.3",
|
|
32
|
+
"katex": "0.18.10",
|
|
33
|
+
"markdown-it": "15.0.3",
|
|
34
|
+
"markdown-it-cjk-friendly": "3.0.0",
|
|
35
|
+
"motion-v": "2.7.0",
|
|
36
|
+
"pdfjs-dist": "6.4.299",
|
|
37
|
+
"vite": "8.3.4",
|
|
38
|
+
"vue": "3.5.44",
|
|
39
|
+
"wrangler": "4.151.0"
|
|
40
|
+
},
|
|
41
|
+
"description": "让不同 AI 在各自软件中协作的共享讨论空间",
|
|
42
|
+
"keywords": [
|
|
43
|
+
"ai",
|
|
44
|
+
"multi-agent",
|
|
45
|
+
"discussion",
|
|
46
|
+
"cli",
|
|
47
|
+
"codex",
|
|
48
|
+
"claude",
|
|
49
|
+
"gemini"
|
|
50
|
+
],
|
|
51
|
+
"homepage": "https://github.com/huyan1458/ai_co_discuss#readme",
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/huyan1458/ai_co_discuss.git"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/huyan1458/ai_co_discuss/issues"
|
|
58
|
+
},
|
|
59
|
+
"author": "huyan1458",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=24"
|
|
63
|
+
},
|
|
64
|
+
"overrides": {
|
|
65
|
+
"fontless": {
|
|
66
|
+
"esbuild": "0.28.2"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"files": [
|
|
70
|
+
"runner/*.mjs",
|
|
71
|
+
"runner/adapters/*.mjs",
|
|
72
|
+
"runner/*.py",
|
|
73
|
+
"backend/*.py",
|
|
74
|
+
"backend/schema.sql",
|
|
75
|
+
"backend/migrations/*.sql",
|
|
76
|
+
"server.py",
|
|
77
|
+
"web/**",
|
|
78
|
+
".agents/skills/discuss-host/**",
|
|
79
|
+
".agents/skills/discuss-participant/**",
|
|
80
|
+
".agents/skills/discuss-report/**",
|
|
81
|
+
".github/SECURITY.md",
|
|
82
|
+
"docs/**",
|
|
83
|
+
"!**/*.log",
|
|
84
|
+
"LICENSE"
|
|
85
|
+
]
|
|
86
|
+
}
|