MCPcopy
hub / github.com/cft0808/edict / main

Function main

scripts/sync_agent_config.py:122–207  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

120
121
122def main():
123 cfg = {}
124 try:
125 cfg = json.loads(OPENCLAW_CFG.read_text(encoding='utf-8'))
126 except Exception as e:
127 log.warning(f'cannot read openclaw.json: {e}')
128 return
129
130 agents_cfg = cfg.get('agents', {})
131 default_model = normalize_model(agents_cfg.get('defaults', {}).get('model', {}), 'unknown')
132 agents_list = agents_cfg.get('list', [])
133 merged_models = _collect_openclaw_models(cfg)
134
135 result = []
136 seen_ids = set()
137 for ag in agents_list:
138 ag_id = ag.get('id', '')
139 if ag_id not in ID_LABEL:
140 continue
141 meta = ID_LABEL[ag_id]
142 workspace = ag.get('workspace', str(OPENCLAW_HOME / f'workspace-{ag_id}'))
143 if 'allowAgents' in ag:
144 allow_agents = ag.get('allowAgents', []) or []
145 else:
146 allow_agents = ag.get('subagents', {}).get('allowAgents', [])
147 result.append({
148 'id': ag_id,
149 'label': meta['label'], 'role': meta['role'], 'duty': meta['duty'], 'emoji': meta['emoji'],
150 'model': normalize_model(ag.get('model', default_model), default_model),
151 'defaultModel': default_model,
152 'workspace': workspace,
153 'skills': get_skills(workspace),
154 'allowAgents': allow_agents,
155 })
156 seen_ids.add(ag_id)
157
158 # 补充不在 openclaw.json agents list 中的 agent(兼容旧版 main)
159 EXTRA_AGENTS = {
160 'taizi': {'model': default_model, 'workspace': str(OPENCLAW_HOME / 'workspace-taizi'),
161 'allowAgents': ['zhongshu']},
162 'main': {'model': default_model, 'workspace': str(OPENCLAW_HOME / 'workspace-main'),
163 'allowAgents': ['zhongshu','menxia','shangshu','hubu','libu','bingbu','xingbu','gongbu','libu_hr']},
164 'zaochao': {'model': default_model, 'workspace': str(OPENCLAW_HOME / 'workspace-zaochao'),
165 'allowAgents': []},
166 'libu_hr': {'model': default_model, 'workspace': str(OPENCLAW_HOME / 'workspace-libu_hr'),
167 'allowAgents': ['shangshu']},
168 }
169 for ag_id, extra in EXTRA_AGENTS.items():
170 if ag_id in seen_ids or ag_id not in ID_LABEL:
171 continue
172 meta = ID_LABEL[ag_id]
173 result.append({
174 'id': ag_id,
175 'label': meta['label'], 'role': meta['role'], 'duty': meta['duty'], 'emoji': meta['emoji'],
176 'model': extra['model'],
177 'defaultModel': default_model,
178 'workspace': extra['workspace'],
179 'skills': get_skills(extra['workspace']),

Callers 1

Calls 6

atomic_json_writeFunction · 0.90
_collect_openclaw_modelsFunction · 0.85
get_skillsFunction · 0.85
deploy_soul_filesFunction · 0.85
normalize_modelFunction · 0.70

Tested by

no test coverage detected