mirror of
https://github.com/SikongJueluo/dsh-extensions.git
synced 2026-10-25 13:23:04 +08:00
No description
- TypeScript 78.7%
- JavaScript 20.9%
- Python 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Close the crash window between a run's state advance and the prompt it owes: both now persist in one run-record write, so a crash can never leave a run awaiting review with no delivery owed (or the reverse). - embed a transactional outbox (fully composed content, once-minted requestId, best-effort flag) in each run record; state advances, owed prompts, and nudges all commit through one atomic put - demote the deliveries table to a rebuildable projection serving UI history and manual redelivery; failed outbox entries stay in the record for manual retry, and startup re-derives projection rows from the authoritative outbox so the two tables cannot stay diverged - replay the durable session logs point-in-time on restart, merging both sides' facts into one event-time timeline (per-session replay judges turns against the wrong round): turn ends the crashed plugin never saw re-derive, pending signals commit or park on log evidence, and goal/turn/reply caches rebuild - commit a per-run, per-side turn-consumption checkpoint WITH every consumed turn end (advancing, skipped, or paused): replay consumes each turn exactly once, so a round-1 delivery can never be resubmitted as round 2's after a rework-plus-restart - migrate pre-checkpoint records in ONE merged write per run covering BOTH sides (per-side writes off a stale snapshot clobber each other), leaving a still-pending signal's turn unconsumed so the replay settles it from the log instead of silently stranding the verdict - buffer boot-window live events without judging them: the log scan seeds the baseline caches first, then buffered events fold and dispatch in arrival order, so a boot-time turn end never freezes its point-in-time context off a not-yet-seeded empty cache - seed bound sessions' caches from their durable logs before the run exists, distinguishing transient live folds (any live event can create one) from seeded ones via an explicit marker: a transient fold never blocks seeding, a seeded session is never re-seeded over live progress, concurrent seedings of one session SHARE the in-flight read (waiters await it; never treated as done), and buffered live events dispatch exactly once in arrival order over the scanned baseline — each turn end snapshots its own point-in-time goal/reply, so later buffered goal changes cannot leak backwards into earlier turns - re-seed both sessions inside the run chain BEFORE a resume/redelivery revives a paused run (startup replay only covers then-active runs): buffered turn ends queue behind the revival and are consumed by the live run against the durable baseline - gate the restart outbox drain by the run's current state: conversation prompts (start/review/rework/resume) only drain for an active run in the matching round/phase, terminal runs keep their committed notices, paused runs wait for the user, and legacy pre-outbox rows follow the same rules - serialize every same-run read-modify-write (signal, controls, turn-end transitions, delivery settlement) on a per-run chain computing from the latest committed state, so concurrent cancel/extend or receipt/cancel never resurrect the earlier state; network sends run off the chain (the queue may re-enter inline) with settlement back on it - add fault-injection recovery tests (crash before/after the commit write, after the send, projection-write windows), reviewer-repro regressions across all five review rounds (multi-round restart on current and legacy records, pending verdicts on either side, frozen-inspect boot handoff for live and cold goals, transient-fold and mid-read seeding, shared in-flight waits, buffered goal-change point-in-time, stopped-run drain, projection divergence, concurrent controls under host-realistic delayed puts), a real Cordis + storage-domain + atomic-file medium roundtrip suite, and burst serialization coverage |
||
| docs | ||
| packages | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.base.json | ||
dsh-extensions
Out-of-tree DeepSeek Harness 插件 bundle 集,pnpm workspace monorepo。
| Bundle | 说明 |
|---|---|
dsh-oauth-providers |
OAuth 认证的 LLM 厂商集(当前:ChatGPT 订阅),无需 API Key |
dsh-plan-usage |
GLM / OpenAI Codex / MiniMax / OpenCode Go 套餐配额查询,planUsage 服务 + 设置页分区 |
dsh-auto-permit |
审批瀑布上的 AI 判官:小模型在弹窗之前决定是否放行 bash 提权(精确记忆 → 高危形状让路 → 判官调用) |
dsh-cmd-permit |
同一瀑布上的确定性白名单:配置内的命令族提权不弹窗也不耗判官调用(种子为空——缓存类绕行改走 toolchain-access 目录授权,rtk 代理任意命令也不再默认 Full access);denyShape 高危表以 ctx.cmdPermit 共享给上面那位 |
dsh-execution-guard |
参数预检(审批与副作用之前、同批整体校验)+ 重复 INVALID_ARGS 纠偏提示(原生 repeat-reminder 只认完全相同的参数,抓不到"值在变、形状没变") |
dsh-task-anchor |
checkpoint_task 恢复锚点:记 jj 工作层 / goal 身份 / 阶段 / 归属文件 / 验证摘要,恢复时比对并报告一致或漂移(只报告,不 rebase、不 resume goal) |
dsh-auto-env |
按 session 工作区自动加载 direnv / devenv 环境 |
dsh-auto-continue |
套餐限额后睡到重置点自动重试,支持跨进程重启续跑 |
dsh-crew |
固定路由委派工具组:三档 subagent(quick / 主力 / smart)+ create_agent 常驻角色代理,档位语义写进工具描述治 over-escalation |
dsh-handoff |
/handoff <任务> 一条命令交接会话,简报即新 session 的首条 prompt |
dsh-context-audit |
/context-audit 命令 + 侧边栏面板:按 provider/model、工具、会话三层统计本机会话日志(缓存命中率、工具失败率…),数据不出本机 |
dsh-remote-exec |
白名单远端容器执行工具:在固定 SSH 主机的固定 Docker 容器里跑 fish 命令,ssh 走宿主侧 spawn,跳板链与 agent 转发原样生效 |
dsh-rtk-rewrite |
rtk 命令改写执行器:模型跑 git status、实际执行 rtk git status,用确定性压缩输出降低上下文压力 |
dsh-search-integrator |
多源检索 + 整合模型一次成文:web_research 吃整个问题,去重排序后返回带引文校验的综合答案与覆盖说明 |
dsh-toolchain-access |
沙箱窄目录授权:workspace-write 下精确 bind uv/Cargo/pnpm 缓存与共享锁目录(钉版 bwrap 布局、fail-closed),替代"撞 EROFS 再提权 Full access";接入见 plan-dsh-toolchain-access.md |
安装
pnpm install && pnpm build
dsh plugin --profile <profile> add ./packages/<name>
dsh --profile <profile>
- 插件按 profile 安装,多个 profile 需分别
add。 - 从 git 安装时 pnpm ≥ 10 会拦截
prepare脚本,需按提示在 profile 的pnpm-workspace.yaml里allowBuilds放行——等于授权安装期执行代码,先审阅并钉住 commit。
开发
见 AGENTS.md。
许可
GPL-3.0-or-later。packages/oauth-providers 部分派生自 werifu/dsh-oai-oauth(MIT)与 @earendil-works/pi-ai(MIT),完整许可文本见 THIRD-PARTY-NOTICE.md。