Skip to content

AI团队角色解析

这份配置文件定义了一个名为 Oh My OpenCode 的多智能体(Multi-Agent)系统架构。该系统通过为不同的任务角色分配特定的大语言模型(LLM)、温度参数(Temperature,控制创造性与确定性)以及权限策略(Permission,控制文件编辑、命令执行和网络访问),来实现高效、安全且专业的协作开发流程。

以下是对配置中各个智能体(Agents)及其职责的详细中文解析:

1. 核心开发与架构类

这些角色主要负责代码的生成、架构设计和系统级操作。

  • code-architect (代码架构师)

    • 模型: qianfan/glm-5 (精确模式, 低温度 0.2)
    • 职责: 负责系统的高层设计、技术选型和代码结构规划。
    • 特点: 极度严谨(低温度),修改文件和执行命令前必须询问用户(ask),禁止联网,防止意外破坏项目结构或陷入死循环。
  • code-generator (代码生成器)

    • 模型: qianfan/glm-5 (精确模式, 温度 0.4)
    • 职责: 根据需求编写具体的功能代码。
    • 特点: 平衡了精确性与一定的灵活性。执行编辑和命令需询问用户,禁止联网,确保生成的代码符合预期。
  • system-engineer (系统工程师)

    • 模型: qianfan/glm-5 (温度 0.7)
    • 职责: 负责系统部署、环境配置、运维脚本执行等底层系统任务。
    • 特点: 拥有较高的创造性(较高温度),允许直接执行 Bash 命令(allow),但编辑文件和联网需询问。适合处理需要系统权限的自动化任务。
  • debug-specialist (调试专家)

    • 模型: qianfan/glm-5 (精确模式, 低温度 0.2)
    • 职责: 专门负责定位 Bug、分析错误日志并提供修复方案。
    • 特点: 极度冷静和精确。修改代码和执行调试命令前需询问用户,禁止联网,专注于逻辑排查。

2. 质量保障与分析类

这些角色负责审查代码、测试功能以及数据分析。

  • code-reviewer (代码审查员)

    • 模型: qianfan/glm-5 (精确模式, 极低温度 0.1)
    • 职责: 审查代码质量、规范性、潜在漏洞,但不直接修改代码。
    • 特点: 最保守的角色。禁止编辑、执行命令和联网,仅输出审查意见,确保客观性。
  • tester (测试员)

    • 模型: qianfan/glm-5 (均衡模式)
    • 职责: 编写测试用例、执行测试计划并报告结果。
    • 特点: 使用均衡模型,旨在全面覆盖测试场景。
  • data-scientist (数据科学家)

    • 模型: qianfan/glm-5 (均衡模式)
    • 职责: 处理数据分析任务、统计建模或数据可视化逻辑。
  • visual-analyst (视觉分析师)

    • 模型: qianfan/qwen3-vl-235b-a22b-instruct (多模态模型)
    • 职责: 分析图像、图表或 UI 截图,提供视觉层面的洞察。
    • 特点: 使用视觉大模型,可联网获取信息,但禁止修改文件或执行命令。

3. 知识、研究与创意类

这些角色负责外部信息获取、深度思考和内容创作。

  • knowledge-expert (知识专家)

    • 模型: qianfan/glm-5 (均衡模式)
    • 职责: 回答技术概念、查询文档或解释复杂理论。
    • 特点: 可联网搜索(ask),但不参与代码修改或系统操作。
  • researcher (研究员)

    • 模型: qianfan/glm-5 (均衡模式)
    • 职责: 进行广泛的技术调研、竞品分析或新趋势探索。
  • deep-thinker (深度思考者)

    • 模型: qianfan/deepseek-v3.2 (擅长推理的模型)
    • 职责: 处理极其复杂的逻辑问题、数学推导或长链条推理任务。
    • 特点: 使用 DeepSeek 模型,温度较低以保证逻辑严密,可联网辅助思考。
  • creative-writer (创意作家)

    • 模型: qianfan/kimi-k2.5 (长文本/创意模型)
    • 职责: 撰写文档、README、营销文案或故事性内容。
    • 特点: 高温度(0.8)以激发创造力,可联网搜集素材,但不触碰代码库。

4. 管理与协调类

这些角色负责流程控制和多智能体协作。

  • project-manager (项目经理)

    • 模型: qianfan/glm-4.7
    • 职责: 跟踪项目进度、管理任务列表、汇总状态。
    • 特点: 权限控制非常细致:禁止大部分 Bash 命令,仅允许 git statusgit diff 来查看项目状态,禁止编辑和联网。这是一个纯粹的“观察者”和“协调者”。
  • multi-agent-coordinator (多智能体协调员)

    • 模型: qianfan/minimax-m2.1
    • 职责: 调度其他智能体,分配任务,整合不同角色的输出结果。
    • 特点: 使用 Minimax 模型(通常擅长对话和角色扮演),负责团队内部的沟通流转。

5. 基础/通用智能体 (Hephaestus 等)

配置中还包含一组使用 opencode/glm-4.7-free 模型的基础智能体,它们可能作为默认 fallback 或处理特定领域的轻量级任务:

  • hephaestus, oracle, librarian, explore, multimodal-looker, prometheus, metis, momus, atlas:
    • 这些名字源自希腊神话,分别暗示了锻造(代码构建)、预言(预测/分析)、图书管理(知识库)、探索、多模态观察、火种(初始化)、智慧、嘲讽(可能是压力测试或反向思考)、地图(导航)等功能。
    • 由于使用的是免费版的 GLM-4.7,它们可能用于处理低成本、高并发或对精度要求不极端的辅助任务。

配置中的关键策略分析

  1. 分级权限控制 (Security First):

    • 高风险操作受限: 核心的代码生成和架构角色(code-architect, code-generator)在编辑文件或执行命令时均设置为 "ask"(询问用户),防止 AI 幻觉导致代码库损坏。
    • 只读角色: code-reviewer 被完全剥夺了写权限,确保审查的独立性。
    • 特权角色: 只有 system-engineer 被允许直接执行 Bash 命令,体现了最小权限原则。
  2. 模型专业化 (Model Specialization):

    • 逻辑/代码: 主要使用 glm-5 (百度文心系列),特别是 precise 变体,保证代码准确性。
    • 视觉: 专门调用 qwen3-vl (通义千问视觉版)。
    • 深度推理: 调用 deepseek-v3.2
    • 创意写作: 调用 kimi-k2.5
    • 这种“专才专用”的策略能最大化每个任务的效果。
  3. 温度参数调节 (Temperature Tuning):

    • 低温度 (0.1 - 0.2): 用于架构、审查、调试 (code-architect, code-reviewer, debug-specialist),追求确定性和零错误。
    • 中温度 (0.3 - 0.5): 用于常规生成、协调和数据科学,平衡稳定与灵活。
    • 高温度 (0.7 - 0.8): 用于系统工程的创新方案、创意写作 (creative-writer),鼓励发散思维。
  4. 实验性功能 (Experimental Features):

    • 开启了 **动态上下文修剪 **(dynamic_context_pruning),包括去重、覆盖写入和错误清除。这表明系统针对长对话进行了优化,旨在减少 Token 消耗并防止上下文窗口溢出,同时保护最近几轮对话不被误删。
    • 禁用了 playwright 技能(可能是为了安全或避免浏览器自动化带来的复杂性)和部分后台钩子(如自动更新检查),以保持运行环境的纯净和可控。

配置文件

json
{
  "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
  "agents": {
    "hephaestus": {
      "model": "opencode/glm-4.7-free"
    },
    "oracle": {
      "model": "opencode/glm-4.7-free"
    },
    "librarian": {
      "model": "opencode/glm-4.7-free"
    },
    "explore": {
      "model": "opencode/glm-4.7-free"
    },
    "multimodal-looker": {
      "model": "opencode/glm-4.7-free"
    },
    "prometheus": {
      "model": "opencode/glm-4.7-free"
    },
    "metis": {
      "model": "opencode/glm-4.7-free"
    },
    "momus": {
      "model": "opencode/glm-4.7-free"
    },
    "atlas": {
      "model": "opencode/glm-4.7-free"
    },
    "code-architect": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.2,
      "permission": {
        "edit": "ask",
        "bash": "ask",
        "webfetch": "deny",
        "doom_loop": "deny"
      },
      "disable": false
    },
    "code-reviewer": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.1,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "deny"
      }
    },
    "knowledge-expert": {
      "model": "qianfan/glm-5",
      "variant": "balanced",
      "temperature": 0.5,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "ask"
      }
    },
    "visual-analyst": {
      "model": "qianfan/qwen3-vl-235b-a22b-instruct",
      "temperature": 0.6,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "ask"
      }
    },
    "system-engineer": {
      "model": "qianfan/glm-5",
      "temperature": 0.7,
      "permission": {
        "edit": "deny",
        "bash": "allow",
        "webfetch": "ask"
      }
    },
    "project-manager": {
      "model": "qianfan/glm-4.7",
      "temperature": 0.3,
      "permission": {
        "edit": "deny",
        "bash": {
          "*": "deny",
          "git status": "allow",
          "git diff": "allow"
        },
        "webfetch": "deny"
      }
    },
    "data-scientist": {
      "model": "qianfan/glm-5",
      "variant": "balanced"
    },
    "researcher": {
      "model": "qianfan/glm-5",
      "variant": "balanced"
    },
    "tester": {
      "model": "qianfan/glm-5",
      "variant": "balanced"
    },
    "creative-writer": {
      "model": "qianfan/kimi-k2.5",
      "temperature": 0.8,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "ask"
      }
    },
    "deep-thinker": {
      "model": "qianfan/deepseek-v3.2",
      "temperature": 0.3,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "ask"
      }
    },
    "multi-agent-coordinator": {
      "model": "qianfan/minimax-m2.1",
      "temperature": 0.5,
      "permission": {
        "edit": "deny",
        "bash": "deny",
        "webfetch": "ask"
      }
    },
    "code-generator": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.4,
      "permission": {
        "edit": "ask",
        "bash": "ask",
        "webfetch": "deny"
      }
    },
    "debug-specialist": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.2,
      "permission": {
        "edit": "ask",
        "bash": "ask",
        "webfetch": "deny"
      }
    }
  },
  "categories": {
    "visual-engineering": {
      "model": "qianfan/qwen3-vl-235b-a22b-instruct",
      "temperature": 0.6,
      "reasoningEffort": "high"
    },
    "ultrabrain": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.1,
      "reasoningEffort": "xhigh"
    },
    "deep": {
      "model": "qianfan/glm-5",
      "variant": "precise",
      "temperature": 0.2,
      "reasoningEffort": "high"
    },
    "artistry": {
      "model": "opencode/glm-4.7-free"
    },
    "quick": {
      "model": "qianfan/glm-4.7",
      "temperature": 0.7,
      "reasoningEffort": "low"
    },
    "unspecified-low": {
      "model": "qianfan/glm-4.7"
    },
    "unspecified-high": {
      "model": "qianfan/glm-5"
    },
    "writing": {
      "model": "qianfan/glm-5",
      "temperature": 0.7,
      "textVerbosity": "medium"
    }
  },
  "disabled_hooks": [
    "auto-update-checker",
    "background-notification",
    "doom_loop_recoverer"
  ],
  "disabled_skills": [
    "playwright"
  ],
  "experimental": {
    "aggressive_truncation": true,
    "dynamic_context_pruning": {
      "enabled": true,
      "notification": "minimal",
      "turn_protection": {
        "enabled": true,
        "turns": 2
      },
      "strategies": {
        "deduplication": {
          "enabled": true
        },
        "supersede_writes": {
          "enabled": true,
          "aggressive": false
        },
        "purge_errors": {
          "enabled": true,
          "turns": 3
        }
      }
    }
  },
  "background_task": {
    "defaultConcurrency": 2,
    "staleTimeoutMs": 120000
  }
}