JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3584
  • Score
    100M100P100Q107534F
  • License MIT

OpenCode plugin: injects core rules into every LLM call

Package Exports

  • opencode-core-rules-injector
  • opencode-core-rules-injector/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (opencode-core-rules-injector) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

opencode-core-rules-injector

OpenCode 插件:在每次 LLM 调用前持续注入核心规则,降低主 Agent 长时间自动运行时偏离工作流的风险。

目标

AGENTS.mdinstructions 适合会话启动时加载规则,但它们不是每轮 LLM 调用前的动态注入机制。本插件的目标是在主 Agent 连续执行工具调用、调度子 Agent、长时间自动推进任务时,仍然让模型持续看到 core-rules.md

注入路径

主路径:experimental.chat.system.transform

  • 每次 LLM 调用前触发。
  • core-rules.md 追加到 system prompt 数组。
  • 这是长任务自动运行期间的核心保障。

辅助路径:chat.message

  • 用户每次发送新消息时触发。
  • core-rules.md 插入到用户消息 parts 头部。
  • 这是用户消息级兜底,不替代主路径。

不使用:chat.params

  • OpenCode 当前源码中 chat.params 只能修改 temperature、topP、topK、maxOutputTokens 和 options。
  • 它不能修改 system prompt、messages 或 message parts。

运行态目录

~/.config/opencode/plugins/opencode-core-rules-injector/
├── config.toml
├── core-rules.md
└── logs/
    └── injector-YYYY-MM-DD.log

config.toml 默认内容:

[git]
user_name = "liumenglife"
user_email = "liumenglife@163.com"
default_branch = "main"

[logging]
daily_rotation = true

日志状态

日志按天滚动,写入:

~/.config/opencode/plugins/opencode-core-rules-injector/logs/injector-YYYY-MM-DD.log

状态码:

状态 含义
BOTH_OK 主路径和辅助路径都成功;这是状态计算能力和未来聚合日志保留状态,当前单条 hook 日志通常不会出现
PRIMARY_ONLY 主路径成功,辅助路径失败或未触发;表示主路径正在工作,长任务保障成立
FALLBACK_ONLY 主路径失败或未触发,仅辅助路径成功;只能说明用户消息级兜底生效,不代表长任务保障成立
BOTH_FAILED 主路径和辅助路径都失败或未触发

当前实现按 hook 写单条日志,不会在同一条日志里同时执行两条路径:experimental.chat.system.transform 日志中的 fallback 固定为 skipped,主路径成功时通常记录为 PRIMARY_ONLYchat.message 日志中的 primary 固定为 skipped,辅助路径成功时通常记录为 FALLBACK_ONLY。因此不需要看到 BOTH_OK 才算正常,长任务判断重点看 experimental.chat.system.transform 日志是否出现 PRIMARY_ONLY

示例:

2026-06-13T10:00:00.000Z session=ab12cd34 hook=experimental.chat.system.transform status=PRIMARY_ONLY primary=ok(chars=2451,mtime=1780000000000) fallback=skipped(no_user_message_this_turn)

安装

bun install -g opencode-core-rules-injector --trust

或:

npm install -g opencode-core-rules-injector

安装后重启 OpenCode。OpenCode 配置不会热重载。

迁移

安装或升级时会自动迁移:

  • ~/.config/opencode/core-rules.md~/.config/opencode/plugins/opencode-core-rules-injector/core-rules.md
  • ~/.config/opencode-agent/config.toml~/.config/opencode/plugins/opencode-core-rules-injector/config.toml

如果新路径文件已存在,安装脚本不会覆盖。

验证

npm test

运行 OpenCode 后检查日志:

rg "status=" ~/.config/opencode/plugins/opencode-core-rules-injector/logs

PRIMARY_ONLY 表示主路径正在工作,长任务注入保障成立。