概览
dsh-carrot-on-a-stick
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
0.2.0 Roadmap 的兼容性问题已在 0.3.0 处理;**0.3.1 完成真机 E2E 验证**(全绿,见 [docs/e2e-0.1.5-rc.2.zh.md](./docs/e2e-0.1.5-rc.2.zh.md)),并修复 E2E 发现的问题:`{{model}}` 提示词变量(模型选择现经 `agentDefaultModel` 补全)、turn 失败透出、池会话 flush、存量捞回默认关闭、安装流程文档修正。 **0.5.0 补齐模型选择面**:`model_list`(官方目录 / `llm` 回退)、`agent_run`+`task_inbox` 的按调用覆盖、`select_model`(会话内换模型)、`reasoningEffort`、`allowModelOverride` 门禁、结果自报 `model`、会话池按 `cwd + 模型` 分组。 **本批次(未发布)覆盖六个方向**,逐批细节见 CHANGELOG: - **协议一致性**:工具错误结果带 `isError: true`、DNS rebinding 防护补上 Origin 头校验、401 带 `WWW-Authenticate` 挑战、工具暴露 `title` + `annotations`、空闲传输会话自动回收(`sessionTtlMs`)、10MB 请求体上限; - **取消**:`agent_run` 支持 MCP `notifications/cancelled` 与客户端超时(都接到宿主官方 `agent.cancel`); - **可观测**:`notifications/progress` 进度心跳(规范 `_meta.progressToken`)、`task_list`、只读 `session_list`(含当前模型)与 `session_history`(可翻页); - **异步队列**:`task_cancel`、可选持久化(`queuePersistPath`,原子写)、`running`/`interrupted` 状态如实上报; - **韧性**:锁表清理、LRU 淘汰跳过活跃会话、损坏持久化文件启动存活; - 协议审查报告见 [docs/protocol-audit-2026-09-24.zh.md](./docs/protocol-audit-2026-09-24.zh.md)。 仍然存在的限制: - [x] ~~任务队列在进程内存中,进程重启丢失~~——可选持久化(`queuePersistPath`)已加;不配置时仍是内存队列。 - [x] ~~无服务端自动超时~~——可选的 `taskTimeoutMs`(默认关闭)已加;调用方仍可主动取消(`agent_run` 用 MCP `notifications/cancelled`,队列任务用 `task_cancel`)。 - [x] ~~队列不能列举/取消~~——已补(`task_list` / `task_cancel`)。 - [x] ~~只读查询面不完整:没有 `session_list`~~——已补(列会话元数据 + `session_history` 纪要;仅持久化的会话读整日志仍需宿主侧 API)。 - [ ] `preset` 仍是部署级配置(一个 MCP server 实例一种 persona),不能按调用指定。 - [ ] spawn 出的会话里工具调用走宿主 approval 策略(`ask` 下敏感操作可能弹窗或 fail-closed;本次 E2E 的只读操作未受影响)。 - [ ] `dsh_list_tools` 只列宿主全局注册表;按 agent 作用域列出实际可用工具需要宿主侧 API(ScopeKey 私有符号,零副本原则下拿不到)。 - [ ] `select_model` 依赖 web profile 的 `sessionController`;该服务缺席时(如 headless)只有目录回退与按调用覆盖可用,工具会明确报不可用。 - [ ] 协议原生 task augmentation(2025-11-25 草案,SDK 接口标注 experimental):把 `agent_run` 暴露为规范原生任务,走 `tasks/get` / `tasks/result` 轮询。有意缓做——`task_inbox` / `task_result` / `task_cancel` 已对所有客户端覆盖同一工作流,等规范离开草案再评估。 - [ ] dsh 未来版本升级时,devDeps 里的 `@deepseek-ai/*` 类型版本需同步(仅影响编译期,运行时零依赖不受影响)。
