dsh-goal-ops
目标生命周期扩展(不改 DSH 核心包):goal_abandon 放弃原语 —— 以 block + blockedReason.code='abandoned' 承载「主动放弃」,停止自动续跑且原因可辨识 适合需要让Agent能够主动停止续跑并记录放弃原因的开发任务。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗dsh-goal-ops
目标生命周期扩展(不改 DSH 核心包):goal_abandon 放弃原语 —— 以 block + blockedReason.code='abandoned' 承载「主动放弃」,停止自动续跑且原因可辨识
工具
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 插件生态倡议书》三条原则:组合优先 / 声明清晰 / 兼容优先。
- 依赖 service(
inject):goals·agents·tools—— 组合行装载时等待这些 service - 贡献面:工具
goal_abandon;slot 无;service 无 - 组合行 id:
agent-goal-ops - Fabric manifest:
dsh-plugin.json(RFC 0001 v0.1 Draft 形状)——id=com.jonah791.goal-ops,required = (无),optional = (无) - Fabric 入口:
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: {}
能力边界(诚实声明)
本插件与宿主同进程、全权限运行。「能力声明」用于兼容判断、用户确认与审计,不构成安全沙箱——不要把它当权限边界。 本插件不导入其他插件或宿主的内部路径(组合优先),也不覆盖别人的内部实现。
两个面,别混淆
- Fabric 契约面:
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 校验通过,也不是认证。 - DSH/Cordis 面(非标准扩展路径):
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)