0
269
近 7 天 269
34.9
生态多维模型
7 天前
2026-10-13
快速安装与配置
opencode.json写入当前项目的 opencode.json,只对这个仓库生效。
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-scriptbox@0.1.2"]
}写入 ~/.config/opencode/opencode.json,对所有项目生效。
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-scriptbox@0.1.2"]
}若你要在本地改造这个插件,先装到项目里再从本地路径引用。
shell
pnpm add -D opencode-scriptboxOpenCode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。
A closed-world registry of reusable agent utility scripts for OpenCode. Scripts run via shell — this plugin exposes them, never executes.
Built on the OpenCode 2.x plugin API only. No 1.x support.
Every session rediscovers the same helpers — the PNG diff, the log census,
the report shaper — and each time they come back slightly different,
living in /tmp or inlined into a heredoc that vanishes with the turn.
Past sessions evaporate, so agents reinvent instead of reuse. Scriptbox
gives those helpers one canonical home: a user-level directory where each
script carries a header contract, gets indexed on every read, and shows up
on demand as a single purpose line. Nothing enters context by merely being
on disk — only scripts with a valid name and header are visible, and
everything else in the directory stays private by default.
Filenames are lowercase alphanumeric-and-hyphens with a .py or .sh
suffix, descriptive enough to read (png-compare.py, never tmp-1.py).
The leading header carries a purpose: one-liner of at most 140 characters
plus an optional usage: line:
"""purpose: Compare baseline vs verify screenshots, print bbox diff.
usage: python3 png-compare.py BASE VERIFY [--json]
reads: two PNG files. writes: stdout only.
"""
Shell scripts say the same with # purpose: and # usage: comment
lines. Anything without a valid name or header is ignored by the indexer,
silently and completely.
Three tools in the scriptbox namespace work the registry. save takes a
filename and content, validates both against the contract, and stores the
script in one step — rejection happens before anything touches disk.
list returns the compact catalog of name plus purpose from a live disk
scan, which is the check to run before reaching for an ad-hoc heredoc.
show gives back usage, path, and last-used for one script. Alongside
them, a tool.execute.before hook watches shell invocations that reference
registry scripts and bumps their lastUsed, quietly feeding future
pruning. It never blocks or alters a call.
{ "package": "opencode-scriptbox@0.1.0", "options": {} }
Two options exist: { "dir": "/custom/registry/dir" } (the default home
is ~/.config/opencode/scripts) and { "metrics": true }, which keeps
session-aggregated counters — save, list and show calls, per-script uses
and shell matches — in the registry's usage.json, capped at twenty
sessions with cumulative totals. Only counts, never commands or contents,
and it defaults to off.
Development
npm install --no-audit --no-fund
npm test
npm run typecheck
License
MIT.
同类生态推荐
Better Hashline
opencode-better-hashline
Fail-closed, snapshot-bound line editing for OpenCode
Tell Sessions
opencode-tell-sessions
Inter-session direct messaging (DM) for OpenCode V1 & V2: agents in different sessions can message each other
Patchflow
opencode-patchflow
Anchor-based atomic batch edits for OpenCode: one auditable tool call instead of opaque python heredocs or N edit calls.