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 status和git 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,它们可能用于处理低成本、高并发或对精度要求不极端的辅助任务。
配置中的关键策略分析
分级权限控制 (Security First):
- 高风险操作受限: 核心的代码生成和架构角色(
code-architect,code-generator)在编辑文件或执行命令时均设置为"ask"(询问用户),防止 AI 幻觉导致代码库损坏。 - 只读角色:
code-reviewer被完全剥夺了写权限,确保审查的独立性。 - 特权角色: 只有
system-engineer被允许直接执行 Bash 命令,体现了最小权限原则。
- 高风险操作受限: 核心的代码生成和架构角色(
模型专业化 (Model Specialization):
- 逻辑/代码: 主要使用
glm-5(百度文心系列),特别是precise变体,保证代码准确性。 - 视觉: 专门调用
qwen3-vl(通义千问视觉版)。 - 深度推理: 调用
deepseek-v3.2。 - 创意写作: 调用
kimi-k2.5。 - 这种“专才专用”的策略能最大化每个任务的效果。
- 逻辑/代码: 主要使用
温度参数调节 (Temperature Tuning):
- 低温度 (0.1 - 0.2): 用于架构、审查、调试 (
code-architect,code-reviewer,debug-specialist),追求确定性和零错误。 - 中温度 (0.3 - 0.5): 用于常规生成、协调和数据科学,平衡稳定与灵活。
- 高温度 (0.7 - 0.8): 用于系统工程的创新方案、创意写作 (
creative-writer),鼓励发散思维。
- 低温度 (0.1 - 0.2): 用于架构、审查、调试 (
实验性功能 (Experimental Features):
- 开启了 **动态上下文修剪 **(dynamic_context_pruning),包括去重、覆盖写入和错误清除。这表明系统针对长对话进行了优化,旨在减少 Token 消耗并防止上下文窗口溢出,同时保护最近几轮对话不被误删。
- 禁用了
playwright技能(可能是为了安全或避免浏览器自动化带来的复杂性)和部分后台钩子(如自动更新检查),以保持运行环境的纯净和可控。
配置文件
{
"$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
}
}