dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
目标生命周期扩展(不改 DSH 核心包):goal_abandon 放弃原语 —— 以 block + blockedReason.code='abandoned' 承载主动放弃,停续跑且原因可辨识
一句话:给目标补一个「主动放弃」原语——goal_abandon,不改 DSH 核心包。
为什么值得用:核心的目标状态机没有「放弃」这个动作(只有 complete / blocked)。但实际工作中「我决定不做了」是一个真实且需要留痕的状态——它既不是完成,也不该混进「等外部条件」的 blocked。本插件用 blocked + blockedReason.code='abandoned' 承载它:自动续跑停止(driver 对 phase !== 'active' 直接 return)、原因可辨识(与核心的 model-reported / round-limit 区分开),且可反悔(核心的 update_goal action=resume 接受 blocked)。
工具面 1 个(名称逐字来自 src/index.ts 的 defineTool({ name })):
| 工具 | 用途 |
|---|---|
goal_abandon | 放弃当前 goal(不改 DSH 核心包:以 goals.block + blockedReason.code='abandoned' 承载放弃语义)。判据:phase 变 blocked 后自动续跑停止(driver 对 phase !== 'active' 直接 return);放弃原因留在 blockedReason.message,code='abandoned' 与核心的 model-reported / round-limit 可区分。放弃可反悔——核心 update_goal action=resume 接受 blocked |
依据《DSH 插件生态倡议书》三条原则:组合优先 / 声明清晰 / 兼容优先。
inject):goals · agents · tools —— 组合行装载时等待这些 servicegoal_abandon;slot 无;service 无agent-goal-opsdsh-plugin.json(RFC 0001 v0.1 Draft 形状)——id = com.jonah791.goal-ops,required = (无),optional = (无)src/fabric.ts → lib/fabric.js(骨架,不依赖 DSH/Cordis;Fabric SDK 发布后填充实现)⚠ 不是认证:Fabric 目前只有文档草案(无正式 schema、无 SDK、无 conformance 套件),因此不得声称本插件 「通过 Fabric 认证」或「已符合 Fabric 标准」。对齐的是 RFC 0001 的 manifest 形状 + 可机械校验的明文规则;
dsh-plugin.json的$schema是自证 draft 的占位,Phase 0 发布 canonical identifier 后替换。
组合片段(cordis.patch.yml):
- insert:
- id: agent-goal-ops
name: dsh-goal-ops
config: {}
本插件与宿主同进程、全权限运行。「能力声明」用于兼容判断、用户确认与审计,不构成安全沙箱——不要把它当权限边界。 本插件不导入其他插件或宿主的内部路径(组合优先),也不覆盖别人的内部实现。
dsh-plugin.json + src/fabric.ts(host entrypoint)。这是前瞻声明——Fabric 目前只有 RFC Draft,
没有正式 schema / SDK / conformance 套件,官方 docs/plugin-development.md 明示其尚不能作为依赖或发布目标;
$schema 是自证 draft 的 .invalid 占位(RFC §14-1 未定 canonical identifier),不是 schema 校验通过,也不是认证。src/index.ts + cordis.patch.yml——本插件现在真正可运行的形态。
tools 不在 Fabric v0.1 的 capability 表内(v0.1 只有 host.info / log / 生命周期取消 + storage.local / commands / messages.observe),
故这属标准之外的扩展路径:不得当作可移植 API,也不得成为 Fabric entrypoint 的依赖。pnpm build
# 挂载到 web profile(dsh plugin-manager 或 plugin_mount)
1) 装依赖:
"dsh-goal-ops": "link:E:/alice/self-plugins/dsh-goal-ops"
2) 挂组合(⚠ 需 agent 作用域——要拿当前会话的 goal):
- id: agent-goal-ops
name: dsh-goal-ops
config: {}
3) 30 秒验证:在有 active goal 的会话里调 goal_abandon {reason: "试一下"} → 应返回 phase: blocked 且 blockedReason.code: abandoned;随后自动续跑应停止(driver 对 phase !== 'active' 直接 return)。
| 项 | 默认 | 说明 |
|---|---|---|
(见源码 Config) | — | 本插件无必填项 |
本插件无独立落盘产物——「放弃」这个动作的痕迹落在宿主的目标状态里(phase 与 blockedReason),可用 get_goal 现读。
判据:get_goal 一条命令答「phase 是什么 / 为什么(blockedReason.code 是 abandoned 还是 model-reported / round-limit)」。
判据:行为级——goal_abandon 后 get_goal 报 phase: blocked 且 code: abandoned,且后续不再自动续跑。
回退:① git revert + 重建 + 预检重启;② patch 行 disabled: true;③ 已放弃的目标可用核心的 update_goal action=resume 接回(放弃可反悔)。
cd self-plugins/dsh-goal-ops && npm test
25 条用例(跑一次得到):覆盖 abandoned 与 model-reported / round-limit 的可区分性 · 无 goal 时的退化路径 · resume 接受 blocked(可反悔)· 不改核心包(只走 goals.block)。无需网络。
block 语义承载「放弃」——核心升级不需要跟着迁移。blockedReason.code = 'abandoned' 与核心自己的 model-reported / round-limit 分得开——否则「我不想做了」与「等条件」在状态里长得一样。phase !== 'active' 直接 return ⇒ 不需要本插件额外做任何事。update_goal action=resume 接受 blocked ⇒ 留了回头路。docs/semantic.md —— 权威契约(定位/反定位 · 验收表)goal-rearm(反向操作:把 disarmed 的目标接回)MIT © jonah791
本插件属于爱丽丝 DSH 自研插件生态(alice-digital-life · 73 个插件 · 8 个模块):单一职责、独立仓库、独立可用。