Skip to content

Ajouter le package sidekick - #12

Draft
JoeyBG wants to merge 1 commit into
mainfrom
add/sidekick
Draft

Ajouter le package sidekick#12
JoeyBG wants to merge 1 commit into
mainfrom
add/sidekick

Conversation

@JoeyBG

@JoeyBG JoeyBG commented Jul 27, 2026

Copy link
Copy Markdown

Contexte

Équipe multi-modèles pour OpenCode basée sur le patron « sidekick » de Devin Fusion : un agent principal qui planifie, décide et révise, mais dont l'édition de fichiers est refusée au niveau de la couche de permissions. Son seul chemin vers le disque est de remettre une spec à un sidekick moins cher. L'intelligence coûteuse reste sur le jugement, un modèle bon marché fait le mécanique.

Adapté de mihneaptu/opencode-fusion (MIT), packagé pour APM.

Installation au scope utilisateur — c'est une config de poste, pas une dépendance de projet :

apm install -g mirego/agentic/sidekick#v1.3.0 --target opencode

Chacun route ensuite ses propres modèles dans son opencode.json. C'est justement la partie que tout le monde veut ajuster, donc aucun agent ne fixe de modèle.

Contenu

Agent Rôle Mode
build Planifie, délègue, révise, vérifie — edit/grep/glob/list refusés primary
plan Même posture que build, sans accès au sidekick ni à git en écriture primary
sidekick Exécute les éditions et les commandes subagent
normal Trappe de sortie : OpenCode standard, sans garde-fous primary
research / reviewer / design / vision Spécialistes optionnels subagent

Plus la commande /sidekick-status — vérification de santé en trois couches.

Écarts avec l'upstream

  • Aucun model: dans les frontmatter. Le frontmatter écrase opencode.json en silence sur toute clé qu'il définit, donc un modèle codé en dur gagnerait contre la config de la personne.
  • Plugins retirés. fusion-audit est couvert par opencode stats --models / --tools (et comme chaque rôle tourne sur son propre modèle, --models est l'attribution par agent). Son propre README admet que les hooks d'outils OpenCode n'exposent pas l'agent appelant, donc il ne répond pas à la question qu'un plugin d'audit existe pour répondre. fusion-claude est écarté : dépendance externe par poste, statut incertain côté Anthropic, et APM ne distribue pas les plugins OpenCode.
  • plan allégé — référence build au lieu de redupliquer sa discipline (l'upstream duplique ~480 mots). Sa posture de permissions est un sous-ensemble strict de celle de build : mesuré, zéro règle unique à plan, le seul écart réel est l'absence de sidekick et de git en écriture.
  • Trappe de sortie normal distribuée. Sans elle, le plan natif d'OpenCode survivrait avec edit: ask : on aurait trois primaires dont deux contraints et un qui contourne le patron en silence. Une trappe étiquetée vaut mieux qu'un trou.
  • Allowlist bash élargie à pnpm, make et mix en plus de npm/npx. C'est le seul endroit où une adaptation par projet a du sens — les patrons de permissions doivent nommer des commandes concrètes.

Vérifié

Installé au scope utilisateur et permissions résolues lues via opencode agent list :

build     primary   edit=deny  grep=deny  glob=deny  list=deny  bash*=deny
          task_allow=[design, explore, research, reviewer, sidekick, vision]
plan      primary   edit=deny  grep=deny  glob=deny  list=deny  bash*=deny
          task_allow=[explore, research, reviewer, vision]     <- pas de sidekick
sidekick  subagent  edit=allow bash*=allow   git commit/push = deny
normal    primary   edit=-  (non restreint, comme prévu)

build : git add allow, commit/push ask, push --force deny, pnpm run lint allow, lint:fix deny.

Le /sidekick-status a été exécuté depuis une session build réellement chargée : les trois couches passent. La couche 1 est confirmée positivement — deux appels bash ont été bloqués et l'ensemble de règles retourné était l'allowlist du package mot pour mot, ce qui prouve que la config est chargée et appliquée.

Prérequis

OpenCode >= 1.18. La clé subagent_depth n'existe pas avant : sur 1.17 et antérieur, OpenCode rejette le fichier de config au complet et ne démarre pas. Vérifié en pratique pendant le développement.

Notes de review

  • APM retire agent: des commandes OpenCode. L'install avertit frontmatter keys not supported for opencode commands and were dropped: agent. /sidekick-status ne peut donc pas s'épingler sur build : le prompt détecte l'agent actif et rapporte la couche 1 en SKIP depuis un agent non restreint, puisqu'un normal qui a edit ne prouve rien.
  • opencode agent list n'est pas dans l'allowlist de build, donc la couche 3 de /sidekick-status retombe toujours sur la lecture des fichiers — le check le plus faible, qui ne voit pas les règles de base fusionnées. Ajouter "opencode agent list*": allow réglerait ça. Volontairement laissé de côté pour ne pas élargir l'allowlist sans discussion.
  • Pas de tag posé. Le CHANGELOG est sous ## Unreleased — les tags sont au niveau du repo, donc v1.3.0 toucherait aussi spec-workflow.

Équipe multi-modèles pour OpenCode basée sur le patron « sidekick » de
Devin Fusion : un agent principal qui planifie et révise mais dont
l'édition de fichiers est refusée au niveau de la couche de permissions,
déléguant chaque changement à un sidekick moins cher.

Adapté de mihneaptu/opencode-fusion (MIT) avec quatre écarts :

- Aucun `model:` dans les frontmatter — le routage appartient au
  opencode.json de chaque personne, qui est justement ce que chacun veut
  ajuster. Le frontmatter écraserait la config en silence.
- Plugins retirés. `fusion-audit` est couvert par `opencode stats
  --models/--tools` (et l'attribution par agent découle du routage par
  rôle). `fusion-claude` est écarté : dépendance externe par poste et APM
  ne distribue pas les plugins OpenCode.
- `plan` allégé — référence `build` au lieu de redupliquer sa discipline.
  Sa posture de permissions est un sous-ensemble strict de celle de build.
- Trappe de sortie `normal` distribuée. Sans elle, le `plan` natif
  d'OpenCode survivrait avec `edit: ask` et contournerait le patron par
  accident.

L'allowlist bash couvre pnpm, npm, make et mix pour les stacks Mirego.

Installation au scope utilisateur, pas par projet :

    apm install -g mirego/agentic/sidekick --target opencode

Requiert OpenCode >= 1.18 : `subagent_depth` n'existe pas avant et 1.17
rejette le fichier de config au complet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant