sogeisetsu · Daily GitHub activitysogeisetsu 的 GitHub 每日动态
@sogeisetsu·2026-10-30 00:00 – 24:00 · UTC+8
18 own commits were made across four repositories, plus 26 automated commits by github-actions[bot].
In sogeisetsu/opencode-go-model-picker, 8 commits added priced accounting, Console calibration, output v2, expired-seed labeling, and documentation on request derivation and cost sources.
In sogeisetsu/opencode-skill-management, 7 commits made the four actions return one JSON object with a declared output schema and updated the bilingual docs, README, changelog, and acceptance records to v1.1.0.
In sogeisetsu/sogeisetsu, 2 commits tightened AGENTS.md, moved model-selection testing into MODELS.md, and added Xiaohongshu Dots as a daily-report fallback; in sogeisetsu/opencode-agent-sandbox, 1 commit corrected schema and registration details in the V2 plugin and tool-registration findings.
The user opened or closed 2 issues: they opened openchamber/openchamber issue #5935, “Settings > MCP omits the Console MCP server that OpenCode adds at runtime,” and commented on issue #5879 about viewing and clearing task temp files.
Issue #5935 received replies from openchamber-bot[bot], which traced the cause to config-only page data, and yulia-ivashko, who requested triage.
Separately, btriapitsyn closed openchamber/openchamber issue #5680 about the outdated session-retention hint.
当天在四个仓库完成 18 次本人提交,另有 26 次由 github-actions[bot] 自动提交。
sogeisetsu/opencode-go-model-picker 的 8 次提交加入计价核算、Console 校准、输出 v2、过期价格种子标记,并补充请求推导与费用来源文档。
sogeisetsu/opencode-skill-management 的 7 次提交让四个动作输出单个 JSON 对象并声明输出 schema,同时将中英文文档、README、CHANGELOG 和验收记录更新至 v1.1.0。
sogeisetsu/sogeisetsu 的 2 次提交收紧 AGENTS.md、将选型实测移入 MODELS.md,并接入小红书 Dots 作为日报链尾兜底;sogeisetsu/opencode-agent-sandbox 的 1 次提交纠正了 V2 插件与工具注册实测中的 schema 和 Registration 误传。
用户新开或关闭 2 个 issue:新开 openchamber/openchamber 的 #5935“Settings > MCP omits the Console MCP server that OpenCode adds at runtime”,并在 #5879 评论任务临时文件的查看与清理。
#5935 收到 openchamber-bot[bot] 回复,其将原因追溯到页面仅使用配置层数据;yulia-ivashko 则请求进行分类处理。
此外,btriapitsyn 关闭了 openchamber/openchamber 的 #5680,该 issue 涉及过时的会话保留提示。
26 automated commits by @github-actions[bot] · not counted in the total26 次自动提交,由 @github-actions[bot] 发起 · 不计入总提交数
This release ships a package with exactly what the skill needs at runtime, plus the license:
opencode-go-model-picker-2.0.0-min.zip → SKILL.md, references/, scripts/, LICENSEUnzip it into ~/.config/opencode/skills/ (Linux/macOS) or %USERPROFILE%\.config\opencode\skills\ (Windows) so the folder is named opencode-go-model-picker. No dependencies, no build step.
Chinese documentation: README-ZH.md.
---
references/quota-math.md and scripts/quota-math.mjs: the one priced-accountingimplementation. Formula v2 prices each assistant message on its own timestamp,
picks the price by the request's prompt length when a model has context-length
tiers, applies the peak-hour multiplier only to models that declare one, and
bills cache writes on the models that charge for them. Reasoning tokens are
billed at the output rate, checked message-by-message against the provider's own
per-message cost — omitting them under-prices a message by 4–34%. Derived quantities
(share of cap, the three independent pool windows, sessions per window, official
and observed capacity), the pool reverse-solve order, the eight known gaps, and
the degradation rules for every missing field.
references/console-mcp.md and scripts/probe-console.mjs: the five Console MCPstates (authorized / gated / unauthenticated / absent / unknown),
decided cheapest-first (in-run tool result → opencode mcp list → config → oneinitialize request), with the fixed per-state guidance copy, the three-level
fallback, and the enabling steps for the OpenCode CLI and OpenChamber. The probe
never prints a token and never classifies a network failure as "not set up".
scripts/calibrate-usage.mjs: sums the local OpenCode SQLite database per agentand model, compares it with the Console's own cost to measure the bias (warning
when it drifts more than 10%), reverse-solves the plan pool in the documented
order, projects month-end occupancy from the billing cycle, and — with --write
— stores plan, models.<id>.billing, usage.agentSplit and calibration in
the snapshot.
references/model-prices.json gained cacheWritePer1M, ctxTiers, capUsd,peak, promoUntil and a verified status per model, plus currentplanVerifiedAt dates. It is now the single home of price, cap, context tiers
and peak hours.
plan.go, models.<id>.billing, availability,capabilities (per-capability source + verifiedAt), usage.agentSplit andcalibration.
scripts/discover-agents.mjs now reports a run-level deadChainIds summary(missing-from-catalog, retired, registry-missing, registry-deprecated),
warns on a shared chain head (contention) because the per-model cap is shared,
and warns per agent when a Go id's catalog status is retired (catalog).
references/data-sources.md gained a Console-bill (priority 0) section, atwo-quota-layer section, official-vs-observed request counts, and a dated
capability/compliance table (image input, training, retention, availability).
quota-math.mjs reports seed freshness — verifiedAt (the newestplanVerifiedAt / priceVerifiedAt in the table), ageDays and stale — and
marks a seed older than seven days as expired, so an offline run labels its
numbers instead of presenting them as current. calibrate-usage.mjs reports the
same under prices.
Basis: line (`Console bill(authoritative) / Estimate / Uncalibrated`) and one denominator for the whole
table, and the table columns are the priced ones: headroom, accounted$/session (median · P90), share of the model cap, 10 runs as a share of the
three pool windows, actual monthly occupancy, and why.
Usage evidence block is mandatory: last-30-days spend and requests, alast-7-days pace with a month-end projection, the count of candidates without an
ELO, the dead chain ids for this run, and the main agents' share of spend.
SKILL.md's workflow was reordered to discover → probe Console → read the billand calibrate → refresh the snapshot → detect plan changes → allocate → build
chains → output → stop, and now ends with nine explicit self-checks.
scripts/refresh-prices.mjs reads the cache-write price and the context-lengthtiers from models.dev, and carries the plan-side constants (capUsd /monthlyLimitUsd, peak, promoUntil, estReq*, status) through a rewrite,
so regenerating the seed no longer deletes them.
calibrate-usage.mjs --write raises schemaVersion to 3 when it writes v3 keys;an existing v2 file is read as-is (every v3 key is optional).
references/agent-sources.md states that a native agent.<name>.model cannotexpress a chain, and points at the chain-capable source when failover is wanted.
2026-10-30 plan page (the DeepSeek V4.1 Flash 4x promo is gone; its cap is $80;
peak/off-peak pricing replaced it).
current model) are replaced by the priced columns, and the Basis: line is
mandatory. A v1 report shape is no longer valid.
absent (hence null) until calibrate-usage.mjs --write runs.
references/model-prices.json entry shape grew from 16 to 21 keys; anythingreading that seed directly must tolerate the new fields.
SKILL.md's workflow numbering changed, so any prompt that referred to"step 2 = refresh" now points at the Console probe instead.
AI This release adds references/quota-math.md and scripts/quota-math.mjs for per-message priced accounting, including context-length tiers, peak-hour multipliers, cache-write billing, reasoning-token checks, and seed freshness with expiry after seven days. It adds references/console-mcp.md and scripts/probe-console.mjs to distinguish five Console MCP states without printing tokens, plus scripts/calibrate-usage.mjs to compare local SQLite usage with Console cost, reverse-solve plan pools, and optionally write calibration data. The report now requires a Basis: line and a Usage evidence block, and the snapshot schema advances to v3 with billing, availability, capabilities, agent-split usage, and calibration fields.本次发布新增 references/quota-math.md 与 scripts/quota-math.mjs,按消息时间戳计价,支持上下文长度分层、高峰时段倍率、缓存写入计费、推理 token 校验,并在七天后标记价格种子过期。新增 references/console-mcp.md 与 scripts/probe-console.mjs,用于区分五种 Console MCP 状态且不打印 token;scripts/calibrate-usage.mjs 则对比本地 SQLite 用量与 Console 费用、反解计划池,并可写入校准数据。报告现在必须包含 Basis: 行和 Usage evidence 块,快照 schema 升级至 v3,加入计费、可用性、能力、按 agent 拆分用量和校准字段。
skill_management gives every installed OpenCode skill a switch: list what is installed, find out
why one will not load, hide it from the model, and put it back. Disabling writes one globalskill permission rule — no skill file is ever moved, edited or deleted.
All four actions now return one JSON object instead of Markdown. The tool also declares anoutput JSON Schema, so the host validates every result; this is a real structured tool result,
not Markdown wrapped in a JSON string.
schemaVersion (currently 1), action, ok, warnings.ok: false plus error: { code, message }; success is no longer inferred from✅ / ❌ in the text.
list returns callerAgent, summary, skills[], config, sidecar, consistency.description is still the first line, no longer truncated to 60 characters.
inspect returns skill, idDerivation, agents[], caller, conclusion. Missing andambiguous targets use skill_not_found / name_ambiguous.
disable / enable return changed, reason, before, diff, verification, backup,sidecar; enable also returns location, rule, candidates, relatedRules.
enable now returns ok: false with config_unparsable when the target config cannot beparsed and no candidate rule exists, instead of claiming "nothing to change".
Nothing else broke: actions, input fields, the written rule shape, the same-line marker format
and the single-file layout are unchanged.
/zh-cn): <https://sogeisetsu.github.io/opencode-skill-management/>
opencode plugin add) and the package contents.| Action | What you get | Writes config |
|---|---|---|
list | Every registered skill and its effective state for the calling agent (available / disabled / ask) | No |
inspect | Why one skill is (not) usable: the matched rule, per-agent differences, how the id was derived | No |
disable | Hidden from the model-visible list and rejected at load (effect: "ask" keeps it listed with confirmation) | Yes |
enable | Deletes the one blocking rule, whoever wrote it | Yes |
Permissions are evaluated for the calling agent only: last match wins (findLast, with *
and ? globs), and no match falls back to ask, not allow.
The rule disable writes is exactly this line (the trailing comment is the provenance markerenable uses):
{ "action": "skill", "resource": "windows-shell", "effect": "deny" } // skill_managementWrites are atomic, preserve indentation, key order, line endings (CRLF/LF) and BOM, keep one
backup, and are verified by reloading the host and polling the caller's rule set; a write the
host did not pick up is rolled back.
skill_management({ action: "list" })
skill_management({ action: "inspect", id: "windows-shell" })
skill_management({ action: "disable", id: "windows-shell" })
skill_management({ action: "disable", id: "windows-shell", dryRun: true })
skill_management({ action: "disable", id: "windows-shell", effect: "ask" })
skill_management({ action: "enable", id: "windows-shell" })A list result looks like this (abridged):
{
"schemaVersion": 1,
"action": "list",
"ok": true,
"warnings": [],
"callerAgent": { "id": "build", "verified": true },
"summary": { "total": 29, "disabled": 1, "ask": 0, "diverged": 2, "derivedIds": 0 },
"skills": [
{ "id": "windows-shell", "state": "available", "source": "config", "path": "..." },
{ "id": "pdf-tools", "state": "disabled", "source": "catalog", "path": "..." }
],
"config": { "file": ".../opencode.jsonc", "hadPermissions": true, "notes": [] },
"sidecar": { "file": ".../skill_management.state.json", "ok": true, "error": null },
"consistency": { "staleSidecarIds": [], "unrecordedRules": [], "missingFromRegistry": [] }
}Full field tables and error codes are on the four action pages of the docs site.
| Channel | Command / asset | Notes |
|---|---|---|
| npm (recommended) | opencode plugin add opencode-skill-management@1.1.0 | Installs the package and registers it in the global config; no token needed |
| git spec | opencode plugin add github:sogeisetsu/opencode-skill-management | Bypasses the npm registry |
| Single file | asset skill_management.js | Drop it into <config>/plugins/; best for offline use |
| npm tarball | asset opencode-skill-management-1.1.0.tgz | The same tarball npm publishes; for auditing or internal mirrors |
Verify it loaded in a new process:
opencode plugin list --builtin
# skill_management 1.1.0 opencode-skill-management@1.1.0node tools/verify.mjs: 260 assertions pass, entirely against a temporary config directory.list and the"skill not found" error path, and both passed the host's output validation.
Full diff: <https://github.com/sogeisetsu/opencode-skill-management/compare/v1.0.0...v1.1.0>
AI All four actions now return one JSON object instead of Markdown and declare an output JSON Schema for host validation. The envelope includes schemaVersion, action, ok, and warnings; failures use ok: false with an error object, and enable reports config_unparsable when no candidate rule can be found. The release also adds a bilingual Astro and Starlight documentation site, documents minimal npm installation and package contents, and fixes theme menus, card alignment, and mobile spacing.四个动作现在统一返回单个 JSON 对象而非 Markdown,并声明 output JSON Schema 供宿主校验。结果信封包含 schemaVersion、action、ok 和 warnings,失败使用 ok: false 与 error 对象;enable 在找不到候选规则时返回 config_unparsable。本次发布还新增基于 Astro 与 Starlight 的中英文文档站,补充最小 npm 安装与包文件说明,并修复主题菜单、卡片对齐和移动端间距。
For the maintainer: fix-ready — cause traced Your analysis is right: the page is built from config layers only, and the runtime answer that does contain opencode_console is used only as a p…
@openchamber-bot triage