opencode-anchored-standard
其他 活跃维护

opencode-anchored-standard

862930522/opencode-anchored-standard

opencode锚定标准双阶段工具目录插件,会话启动时自动注入最小工具集,无需手动配置初始工具清单,支持后续按需扩展工具,降低会话启动配置成本,提升开发交互效率。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
18 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:862930522/opencode-anchored-standard
git clone https://github.com/862930522/opencode-anchored-standard.git
git clone git@github.com:862930522/opencode-anchored-standard.git
README.md main

opencode-anchored-standard

中文说明

An opencode plugin that runs a two-phase tool catalog:
bootstrap each session with a minimal tool surface, then unlock the full toolset
after the session's first tool call.

Inspired by xiaobright/dsh-anchored-standard,
the two-phase preset for DeepSeek Harness. This is an independent implementation
for opencode — no DeepSeek Harness code is included.

Why

Models with strong tool catalogs can over-rely on them on the very first turn,
picking an elaborate tool before understanding the task. A bootstrap phase
forces a cheap, minimal start (shell + read) and only hands over the full
catalog once the model has actually started working. The phase is derived from
durable session state, so resume, reload and compaction all preserve it
no plugin-side storage is needed.

How it works

Per session:

  1. While the session has no durable tool call in its history, the plugin:
    • injects a short bootstrap rule into the system prompt (only bash and
      read are usable right now);
    • rejects calls to any other tool with a model-visible error that
      explains the unlock condition.
  2. The first call of any bootstrap tool — successful or failed — promotes
    the session.
  3. From then on every tool is allowed, and the bootstrap rule disappears from
    the system prompt (so the prompt changes exactly once, like the original).

Promotion state is cached in memory per session and re-derived from message
history on demand, so a fresh plugin instance (restart) picks up the correct
phase automatically.

Platform note: opencode currently has no API to filter the tool catalog per
request (the tools array sent to the model is assembled by the core and not
hookable). The anchored approach here keeps the full catalog listed for
request-cache stability, and enforces the bootstrap phase through the system
prompt plus execution interception. Behavior is equivalent for a
rule-following model; the original DeepSeek Harness preset instead hides the
tools from the catalog entirely.

Install

Add the plugin to your opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-anchored-standard"]
}

Restart opencode and start a new session. The plugin has no network access and
adds no telemetry.

Options

{
  "plugin": [["opencode-anchored-standard", { "bootstrapTools": ["bash", "read"] }]]
}
Option Type Default Description
bootstrapTools string[] ["bash", "read"] Tools available during the bootstrap phase.

Verify

Check a session's requests:

  • the first request's system prompt contains the Bootstrap phase section;
  • calling any non-bootstrap tool before the first bootstrap tool call fails
    with a "locked" error;
  • after the first bash/read call the Bootstrap phase section is gone and
    every tool works.

Development

npm install
npm run check   # typecheck + build + tests

Tests run against the compiled output with plain node --test, no opencode
instance required.

License

MIT. The mechanism is inspired by
xiaobright/dsh-anchored-standard
(MIT); see NOTICE.