← 返回 Skills 市场
na-wen

ChatDev 2.0 Multi-Agent Team

作者 NA-Wen · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ⚠ suspicious
296
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install chatdev
功能描述
Invoke ChatDev ability units (workflows) via local API (port 6400). Use when the user needs specialized agent workflows like data visualization (from CSV), o...
使用说明 (SKILL.md)

ChatDev Ability Units

Ability units represent capability units. You can browse what's available, inspect required args, run them, or upload new ones. Use these endpoints when you need to invoke a predefined ability unit (e.g., paper review, data visualization) via the local API.

Run ability units via the local API and return final_message from the JSON response.

API endpoints

  1. Browse ability units
  • Method: GET
  • URL: http://127.0.0.1:6400/api/workflows
  • Example:
    curl --noproxy 127.0.0.1 -v http://127.0.0.1:6400/api/workflows
    
  1. Get ability unit raw content
  • Method: GET
  • URL: http://127.0.0.1:6400/api/workflows/\x3Cfilename>/get
  • Purpose: fetch the raw YAML content for an ability unit file.
  • Example:
    curl --noproxy 127.0.0.1 -v \
      http://127.0.0.1:6400/api/workflows/test.yaml/get
    
  1. Get ability unit args
  • Method: GET
  • URL: http://127.0.0.1:6400/api/workflows/\x3Cability_unit>.yaml/args
  • Purpose: fetch input parameter schema for an ability unit.
  • Example:
    curl --noproxy 127.0.0.1 -v -X GET \
      http://127.0.0.1:6400/api/workflows/test.yaml/args
    
  1. Run ability unit
  • Method: POST

  • URL: http://127.0.0.1:6400/api/workflow/run

  • Content-Type: application/json

  • SSE support: set Accept: text/event-stream to stream events (started, log, completed, error). Omit the header to get the normal JSON response.

  • Output: parse JSON and return final_message. If missing, report failure and include any error fields. After you get output_dir, move it to your working directory.

  • Available ability units:

    1. Paper Review
    • yaml_file: yaml_instance/paper_review.yaml
    • task_prompt: arXiv URL/ID or paper title.
    • Purpose: fetch content and deliver technical + writing reviews.
    • Example:
      curl --noproxy 127.0.0.1 -v -X POST http://127.0.0.1:6400/api/workflow/run \
        -H "Content-Type: application/json" \
        -H "Accept: text/event-stream" \
        -d '{
          "yaml_file": "yaml_instance/paper_review.yaml",
          "task_prompt": "https://arxiv.org/abs/1706.03762"
        }'
      
    1. Data Visualization
    • yaml_file: yaml_instance/data_visualization_basic.yaml
    • task_prompt: dataset description + analysis goals.
    • attachments: absolute paths to CSV files.
    • Purpose: profile, clean, plan 4-6 charts, iterate visualizations.
    • Example:
      curl --noproxy 127.0.0.1 -v -X POST http://127.0.0.1:6400/api/workflow/run \
        -H "Content-Type: application/json" \
        -d '{
          "yaml_file": "yaml_instance/data_visualization_basic.yaml",
          "task_prompt": "please analyze and visualize the data",
           "attachments": ["/Users/yufan/Projects/bugfix/ChatDev/sample_sales.csv"]
        }'
      
  1. Upload ability unit
  • Method: POST
  • URL: http://127.0.0.1:6400/api/workflows/upload/content
  • Content-Type: application/json
  • Format notes: filename should end with .yaml; content must be a valid YAML string that includes version, vars, and a graph with id, start, nodes, and edges (as in the example).
  • Tip: if uploads keep failing with format errors, call the "get ability unit raw content" endpoint to inspect an existing ability unit's structure and copy its format.
  • Example:
    curl --noproxy 127.0.0.1 -v -X POST \
      http://127.0.0.1:6400/api/workflows/upload/content \
      -H "Content-Type: application/json" \
      -d @- \x3C\x3C'EOF'
    {
      "filename": "test.yaml",
      "content": "version: 0.4.0\
    

vars: {}
graph:
id: paper_review
description: Three agents collaboratively review academic papers from different perspectives. Input can be an arxiv URL or paper title.
is_majority_voting: false
start:
- Paper Fetcher
nodes:
- id: Paper Fetcher
type: agent
config:
name: gpt-4o
provider: openai
role: |
You are a paper content fetcher.
base_url: ${BASE_URL}
api_key: ${API_KEY}
description: Fetches paper content from arxiv
context_window: 0
edges: []" } EOF


6) Update ability unit
- Method: PUT
- URL: http://127.0.0.1:6400/api/workflows/\x3Cfilename>/update
- Content-Type: application/json
- Format notes: same payload as upload (`filename` + YAML `content` string).
- Example:

curl --noproxy 127.0.0.1 -v -X PUT
http://127.0.0.1:6400/api/workflows/test.yaml/update
-H "Content-Type: application/json"
-d @- \x3C\x3C'EOF' { "filename": "test.yaml", "content": "version: 0.4.0
vars: {}
graph:
id: paper_review
description: Update example.
is_majority_voting: false
start:
- Paper Fetcher
nodes:
- id: Paper Fetcher
type: agent
config:
name: gpt-4o
provider: openai
role: |
You are a paper content fetcher.
base_url: ${BASE_URL}
api_key: ${API_KEY}
description: Fetches paper content from arxiv
context_window: 0
edges: []" } EOF


7) Rename ability unit
- Method: POST
- URL: http://127.0.0.1:6400/api/workflows/\x3Cfilename>/rename
- Content-Type: application/json
- Body: `{ "new_filename": "new_name.yaml" }`
- Example:

curl --noproxy 127.0.0.1 -v -X POST
http://127.0.0.1:6400/api/workflows/test.yaml/rename
-H "Content-Type: application/json"
-d '{"new_filename":"renamed.yaml"}'


8) Copy ability unit
- Method: POST
- URL: http://127.0.0.1:6400/api/workflows/\x3Cfilename>/copy
- Content-Type: application/json
- Body: `{ "new_filename": "copy.yaml" }`
- Example:

curl --noproxy 127.0.0.1 -v -X POST
http://127.0.0.1:6400/api/workflows/test.yaml/copy
-H "Content-Type: application/json"
-d '{"new_filename":"test-copy.yaml"}'


9) Delete ability unit
- Method: DELETE
- URL: http://127.0.0.1:6400/api/workflows/\x3Cfilename>/delete
- Example:

curl --noproxy 127.0.0.1 -v -X DELETE
http://127.0.0.1:6400/api/workflows/test.yaml/delete


10) List local tools (function_calling)
- Method: GET
- URL: http://127.0.0.1:6400/api/tools/local
- Example:

curl --noproxy 127.0.0.1 -X GET http://127.0.0.1:6400/api/tools/local


## Tools hot updates
Local function tools are managed via the same backend (port 6400).

Endpoints:
- List local tools: `GET http://127.0.0.1:6400/api/tools/local`
- Create/overwrite local tool file: `POST http://127.0.0.1:6400/api/tools/local`

Create example:

curl --noproxy 127.0.0.1 -X POST http://127.0.0.1:6400/api/tools/local
-H "Content-Type: application/json"
-d '{ "filename": "add.py", "content": "def add(a: int, b: int) -> dict:
return {"result": a + b}
", "overwrite": true }'


YAML example (local function_calling):

tooling:

  • type: function config: tools: - name: add

## Common scenarios and tool suggestions
- If the agent needs to search the web, use `web_search`.
- If the agent needs to fetch a URL's content, use `read_webpage_content`.
- If the agent needs to inspect local files, use `describe_available_files` and `list_directory`.
- If the agent needs to read a file snippet, use `read_text_file_snippet` or `read_file_segment`.
- If the agent needs to write output files, use `save_file`.

## Advanced Workflow Templates

Below are advanced YAML templates you can copy and adapt. They cover debate loops,
subgraph reuse, conditional edges, and selective payload routing.

### 1) Two-Agent Debate Loop with Judge Stop Criteria
```yaml
version: 0.4.0
vars: {}
graph:
  id: debate_loop
  description: Two agents debate until the judge outputs "Verdict: STOP".
  is_majority_voting: false
  start:
    - Topic
  nodes:
    - id: Topic
      type: passthrough
      config: {}
    - id: Pro
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          You are the PRO debater. Respond with arguments and counterpoints.
    - id: Con
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          You are the CON debater. Respond with arguments and counterpoints.
    - id: Judge
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Evaluate the debate. Output:
          Score: \x3C0-1>
          Notes: \x3Cbrief>
          Verdict: CONTINUE|STOP
    - id: Final
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Produce the final summary of the debate and recommendation.
  edges:
    - from: Topic
      to: Pro
      keep_message: true
    - from: Topic
      to: Con
      keep_message: true
    - from: Pro
      to: Judge
    - from: Con
      to: Judge
    - from: Judge
      to: Pro
      condition: need_reflection_loop
    - from: Judge
      to: Con
      condition: need_reflection_loop
    - from: Judge
      to: Final
      condition: should_stop_loop

2) Subgraph Reuse + Selective Payload Passing

version: 0.4.0
vars: {}
graph:
  id: parent_with_subgraph
  description: Uses a subgraph and only forwards the "Summary" section.
  start:
    - Request
  nodes:
    - id: Request
      type: passthrough
      config: {}
    - id: ResearchSubgraph
      type: subgraph
      config:
        type: file
        config:
          path: "subgraphs/deep_research_executor_sub.yaml"
    - id: Writer
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Write the final report using only the provided Summary.
  edges:
    - from: Request
      to: ResearchSubgraph
      keep_message: true
    - from: ResearchSubgraph
      to: Writer
      process:
        type: regex_extract
        config:
          pattern: "Summary:\\s*(.*)"
          group: 1
          multiline: true
          dotall: true
          on_no_match: pass

3) Conditional Routing + Minimal Payload

version: 0.4.0
vars: {}
graph:
  id: router_with_conditions
  description: Route to different nodes based on tags; forward only CONTENT block.
  start:
    - Router
  nodes:
    - id: Router
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Decide the route. Output exactly:
          ROUTE: QA|REPORT
          CONTENT: \x3Cpayload to forward>
    - id: QA
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Answer the question concisely.
    - id: REPORT
      type: agent
      config:
        provider: openai
        base_url: ${BASE_URL}
        api_key: ${API_KEY}
        name: gpt-4o
        role: |
          Write a structured report.
  edges:
    - from: Router
      to: QA
      condition:
        type: keyword
        config:
          any: ["ROUTE: QA"]
      process:
        type: regex_extract
        config:
          pattern: "CONTENT:\\s*(.*)"
          group: 1
          dotall: true
          on_no_match: drop
    - from: Router
      to: REPORT
      condition:
        type: keyword
        config:
          any: ["ROUTE: REPORT"]
      process:
        type: regex_extract
        config:
          pattern: "CONTENT:\\s*(.*)"
          group: 1
          dotall: true
          on_no_match: drop

Tips

  • Any workflow YAML can be used as a subgraph to compose more complex tasks, including existing ability units/workflows. Example:
    - id: Research Subgraph
      type: subgraph
      config:
        type: file
        config:
          path: "yaml_instance/deep_research_v1.yaml"
    
  • Ensure that all generated artifacts are output to your workspace file paths whenever possible
  • Ensure that all agents’ roles are concise, sophisticated, and equipped with sufficient tools
安全使用建议
This skill talks to a local service at 127.0.0.1:6400 and lets you run, upload, and modify YAML workflows. Before using it: (1) confirm you actually run a trusted ChatDev server on that port (unknown source/homepage is a red flag); (2) do not upload or run unreviewed YAMLs—they can instruct the local server to call external APIs or embed/require secrets; (3) avoid supplying absolute paths to sensitive files (attachments may cause the server to read them); (4) check what the local server does with outputs and whether workflows can exfiltrate data; and (5) if possible, run the service in an isolated environment and inspect workflow YAMLs (especially any that reference ${API_KEY}, ${BASE_URL} or other placeholders) before allowing execution. If you can provide the local server's code or documentation (how placeholders are resolved, network egress rules, and auth for the local API), that will materially improve confidence.
功能分析
Type: OpenClaw Skill Name: chatdev Version: 0.1.0 The skill bundle provides an interface to a local ChatDev service (127.0.0.1:6400) that includes high-risk capabilities, most notably the ability to create or overwrite local Python tool files via the `/api/tools/local` endpoint as documented in `SKILL.md`. While these features are aligned with the stated purpose of managing multi-agent workflows, the ability to perform 'hot updates' on executable code presents a significant Remote Code Execution (RCE) risk. Additionally, the workflow templates in `SKILL.md` handle sensitive placeholders like `${API_KEY}`, which could be targeted for exposure if the agent is subjected to prompt injection.
能力评估
Purpose & Capability
Name/description (invoke local ChatDev ability units on 127.0.0.1:6400) align with the SKILL.md: all endpoints are local and relate to browsing, running, uploading, and managing ability unit YAMLs.
Instruction Scope
Instructions explicitly allow uploading/updating ability unit YAMLs (which may include fields like base_url and api_key), instruct using absolute file paths as 'attachments', and tell the agent to move output directories into the working directory. While these are within a 'workflow management' scope, they introduce risks: (1) uploaded workflows could instruct the local service to call external services or include credentials; (2) attaching absolute paths enables referencing arbitrary local files (which the server may read); (3) moving output directories implies filesystem operations. The SKILL.md grants broad discretion to upload/modify workflows without guidance on safety or provenance of those YAMLs.
Install Mechanism
Instruction-only skill with no install steps or external downloads. This minimizes install-time risk because nothing is written or fetched by the skill itself.
Credentials
The skill declares no required env vars or credentials, which is coherent. However example upload payloads show placeholders like ${BASE_URL} and ${API_KEY} embedded in uploaded YAML content; that pattern could be used (by the server or workflows) to reference or resolve credentials, so absence of requested credentials in metadata does not eliminate the possibility that workflows will attempt to use or prompt for secrets.
Persistence & Privilege
The skill does not request permanent/always-on inclusion and does not install or modify other skills. It simply instructs the agent to talk to a local API. That is appropriate for its purpose.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install chatdev
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /chatdev 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.0
This skill connects ChatDev 2.0 with OpenClaw and allows OpenClaw to create, manage, and execute multi-agent workflows through the local API. With this skill, users can: - Build custom multi-agent systems (MAS) in ChatDev 2.0 through OpenClaw - Let OpenClaw call your MAS in ChatDev 2.0 dynamically
元数据
Slug chatdev
版本 0.1.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 1
常见问题

ChatDev 2.0 Multi-Agent Team 是什么?

Invoke ChatDev ability units (workflows) via local API (port 6400). Use when the user needs specialized agent workflows like data visualization (from CSV), o... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 296 次。

如何安装 ChatDev 2.0 Multi-Agent Team?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install chatdev」即可一键安装,无需额外配置。

ChatDev 2.0 Multi-Agent Team 是免费的吗?

是的,ChatDev 2.0 Multi-Agent Team 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

ChatDev 2.0 Multi-Agent Team 支持哪些平台?

ChatDev 2.0 Multi-Agent Team 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 ChatDev 2.0 Multi-Agent Team?

由 NA-Wen(@na-wen)开发并维护,当前版本 v0.1.0。

💬 留言讨论