--- description: "把 DeepSeek Harness 中已经完成的工作转化为有证据治理、可检查、可批准、可执行、可验证、可修订和可遗忘的复用经验。" kind: "package-bundle" --- # DeepSeek Harness 经验地图 [English](README.md) | 中文 > 当前状态:`0.1.0-beta.1` 公开测试版。安装包通过 GitHub Release 提供预构建 tarball,尚未发布到 npm。 ## 概要 经验地图帮助 DeepSeek Harness Agent 直接复用已经成功的解决方案,避免每次遇到相似任务都重新探索不同路线。它把经过选择的 Session 证据转化为结构化、带版本的 Experience,在复用前检查当前环境是否仍然满足适用条件,并在影响任务之前让用户审阅和批准精确方案。Bundle 直接工作在 Harness 已有的“经验”标签页中,同时支持没有 Browser 服务的 Host 运行和可选的管理 CLI。SQLite 是经验记录的持久化权威来源;Markdown、学习视图和关系地图只是便于阅读或可重建的投影,不会形成相互竞争的记忆库。 ## 目录 - [使用这个包](#使用这个包) - [五分钟上手](docs/QUICKSTART.zh.md) - [理解实现方式](#理解实现方式) - [进一步了解](#进一步了解) - [模型体验](#模型体验) - [已知限制与延期能力](#已知限制与延期能力) - [开发备注](#开发备注) - [许可证](#许可证) ----- ## 使用这个包 第一次使用请从[五分钟上手](docs/QUICKSTART.zh.md)开始:安装后不需要先开启自动收集或自动召回;完成一个带真实结果的任务,打开当前会话的“经验”标签页,只对达到保存门的建议作出保存决定即可。终端用户的安装、查询、保存和 Plan 批准边界也在同一文档中给出了可复制命令。 界面预览来自隔离的演示 Profile,使用去标识样本数据: ![Experience Map 管理模式中的按会话经验建议](docs/media/experience-map-overview.png) ### 它解决的问题 普通对话历史可以提醒模型“以前说过什么”,但无法可靠表达哪些步骤真正成功、成功依赖哪些条件、由谁批准,以及旧结果在当前环境中是否仍然有效。向量检索可以找到相似文本,但相似并不等于适用,更不等于获得了执行许可。 | 反复出现的问题 | 经验地图的处理方式 | | --- | --- | | 相似任务每次走不同路线 | 把成功路线保存为类型化、带版本的组件。 | | 过去的回答缺少证据 | 把每个主张和步骤绑定到精确来源与证据等级。 | | 旧方案可能已经失效 | 在建议复用前执行当前状态 Preflight。 | | 自动提炼可能把错误写入长期记忆 | 先生成 Candidate,由用户逐字段审阅后才能发布。 | | 多条经验重叠或冲突 | 确定性组合贡献,并披露丢弃项、冲突项和覆盖项。 | | 看似成功的结果不一定真实成功 | 读取当前外部权威状态,并生成不可变 Settlement。 | | 知识会随时间变化 | 发布新 Version,保留旧记录,或通过 Forget 停止未来召回。 | 因此它是一张经验地图,而不只是一张知识图谱。它既记录事实和关系,也记录适用性、决定、执行进度、验证、结果、修订和治理。 ### 一条 Experience 包含什么 Experience 是一种可复用的决策或执行资产,包含意图、作用域、有效条件、类型化组件、来源证据、风险与影响、允许的使用方式和不可变版本。 第一产品阶段支持六类 Experience: | 类型 | 记录内容 | | --- | --- | | Procedure(流程) | 可重复步骤、检查点、副作用规则、失败分支和验证器。 | | Diagnostic(诊断) | 症状、观察、假设、判别条件、误导信号、解决方案和恢复检查。 | | Strategy(策略) | 决策点、候选方案、约束、标准、权衡、停止规则和结果指标。 | | Preference Policy(偏好策略) | 用户或组织偏好、权威来源、作用域、覆盖规则和示例。 | | Fact(事实) | 有来源的事实、限定条件、有效期和冲突处理策略。 | | Causal(因果) | 因果候选、机制、竞争解释、证据链接、反证方式和明确的因果等级。 | Causal Experience 不会自动被当作已经成立的因果关系。产品会区分 `causal_candidate` 和更强的证据等级,也不会让置信分数替代证据。 ### 自动建议与保存门 Bundle 默认在本地扫描最近已完成的 Session 区间,并按会话列出零到多条有界建议;同一稳定内核跨会话重复出现时只显示一个组和一个保存入口。这个短期投影受最近会话数和 TTL 限制,不是第二个长期经验库,过期且未处理的建议可以直接丢弃。 - 有最终验证证据的 Procedure/Diagnostic、包含明确作用域与例外的用户 Preference 原话,以及来源声明与实际工具调用一致且仍在有效期内的结构化 Fact,才可能显示“保存为经验”。 - Strategy 保持“需增强/需审阅”;Causal 始终先是 `causal_candidate`,两者都不会由本地规则或模型直接晋升为可一键保存。 - 自动检测、分组和默认召回不调用外部模型。可选模型增强必须由配置和披露控制,且不能绕过相同的确定性发布门。 - 新任务只接受一个通过类型专属硬门、阈值和 margin 的主匹配;证据不足或语义字段不一致时直接不匹配。Fact 过期后在 Preflight 中停止贡献。 ### 环境要求 - DeepSeek Harness `0.1.5-rc.2`。 - Node.js `^22.19.0` 或 `>=24.0.0`。 - 只有在让模型生成 Candidate 时才需要配置 Harness LLM Provider。 - 只有明确启用本地稠密检索适配器时,才需要 `@huggingface/transformers`。它不会被自动安装,启用前请先阅读 [SECURITY.md](SECURITY.md)。 ### 安装公开测试版 下载预构建的 Release 安装包,添加到 Web Profile,然后启动该 Profile: ```sh curl -fLO https://github.com/alcheme-labs/dsh-experience-map/releases/download/v0.1.0-beta.1/alcheme-dsh-experience-map-0.1.0-beta.1.tgz dsh plugin --profile web add ./alcheme-dsh-experience-map-0.1.0-beta.1.tgz dsh web ``` 如果从 DSH 源码运行命令,把 `dsh` 换成 `pnpm dsh`。如果希望自行从源码生成同样的包: ```sh git clone https://github.com/alcheme-labs/dsh-experience-map.git cd dsh-experience-map pnpm install pnpm run build pnpm pack ``` 安装完成后先刷新已经打开的 Harness 浏览器标签页,再打开一个会话并选择“经验”标签页。重启 Host 不会替换标签页里已经加载的 JavaScript。这个 Bundle 不会另起一个独立网站。 ### 配置 Experience Map 打开“设置 → 插件 → 插件配置”,然后展开“Experience Map”。卡片提供 28 个可以安全作用于下一次操作、无需重启 Host 的设置。修改先保留在本地草稿中,保存时作为一次带版本条件的原子变更提交;如果发生校验失败或版本冲突,草稿会保留以便修正。每次操作只在入口冻结一份不可变设置快照,因此保存新设置不会改变已经开始的提炼、Plan、验证或学习批次。Candidate 披露会显示本次使用的设置版本和摘要;设置变化后,旧披露确认会自动失效。 卡片优先展示默认行为和模型生成,把来源与证据预算、匹配与验证、学习批次放在高级分组中。恢复某个字段会删除用户覆盖值,重新继承 Bundle 组合配置。设置文档不会成为第二个 Experience 领域写入者:Candidate、Version、Plan、Settlement、修订、关系和治理状态仍由 SQLite 独占。 数据库所有权与 SQLite 参数、可选历史来源和已验证结果夹具、`taskFingerprintProposalMode`、`learningPollIntervalMs` 仍然属于启动期 Cordis 配置。它们需要重新注册资源、重新验证夹具或重启 Worker,因此不会伪装成实时设置。 ### 从自动建议保存 Experience 1. 在 Harness 会话中完成或诊断一个真实任务。 2. 打开“经验”,按最近 Session、跨会话重复或需完善状态检查自动建议;无需先理解或选择经验类型。 3. 对达到保存门的建议选择“保存为经验”,或忽略/丢弃不需要的建议。完全重复的建议只会面向一个 Experience Series。 4. 需要补充判断的内容继续走 Candidate:审阅精确披露和模型路由,确认后逐字段接受、编辑或拒绝,再发布为不可变 Experience Version。Bundle 不会自动重试付费模型请求。 ### 复用 Experience 1. 提交一个相似任务。 2. 在任务模式工作台中审阅匹配结果和当前 Preflight。 3. 检查精确 Plan,包括被选择和被丢弃的贡献。 4. 批准、调整或拒绝这个 Plan。 5. 让下一次完全相同的任务消费一次性绑定,并交付最小 Experience Context。 6. 推进引导步骤,运行当前验证,并结算结果。 7. 当证据表明只有部分 Experience 需要变化时,创建 Revision。 ### 在 headless 和管理模式中使用 Host 插件可以在没有 Browser 服务的环境中加载,因此 CLI/headless Profile 可以正常运行: ```sh pnpm dsh plugin --profile headless add /absolute/path/to/alcheme-dsh-experience-map-0.1.0-beta.1.tgz pnpm dsh --profile headless "你的任务" ``` 会话建议自动检测和 Experience 自动召回默认开启。保存建议仍然必须由 Owner 明确决定;`defaultMustUseExperience` 默认为 `false`,因此匹配可以生成 Plan,但不会强迫任务使用它。Experience Context 只会在当前 Plan 获批后注入,自动工具执行仍然关闭。 普通 Web 和 headless Profile 不包含管理命令。专用管理 Profile 可以挂载 `@alcheme/dsh-experience-map/cli/startup` 和 `@alcheme/dsh-experience-map/cli/runner`,然后查询同一个 Host 权威状态: ```sh pnpm dsh --profile experience-management experience status pnpm dsh --profile experience-management experience suggestions-show pnpm dsh --profile experience-management experience suggestion-save --input /absolute/path/to/save-suggestion.json pnpm dsh --profile experience-management experience suggestion-dismiss --input /absolute/path/to/dismiss-suggestion.json pnpm dsh --profile experience-management experience candidate-list pnpm dsh --profile experience-management experience plan-list pnpm dsh --profile experience-management experience learning-governance-show ``` ### 收益证据与发布状态 在一个真实的 DSH 配对任务中,同一条匹配经验经批准并注入后,观测到 **provider token volume 降低 65.9%**、**工具调用减少 45.5%**、**模型步骤减少 46.2%**。这只是一个短任务族的观测值,不是平均值或承诺。精确任务、控制条件、公式、去标识事件与不作出的主张见[收益证据](docs/release/BENEFIT_EVIDENCE.md)。 私有开发 Git 历史包含原始历史验收材料,不能直接公开。维护者必须生成一份经过白名单筛选的干净源码快照。具体边界见[开源准备状态](docs/release/OPEN_SOURCE_READINESS.md)、[安全策略](SECURITY.md)和[贡献指南](CONTRIBUTING.md)。 ----- ## 理解实现方式
展开实现细节 ### 生命周期 ```mermaid flowchart LR A[Harness Session] --> B[本地检测与按会话分组] B --> C[保存就绪度与用户决定] C --> D[直接保存或审阅 Candidate] D --> E[唯一不可变 Experience Version] E --> F[新任务匹配与当前 Preflight] F --> G[精确 Plan 与用户决定] G --> H[最小 Context 与 Harness 工具] H --> I[权威验证] I --> J[Settlement] J --> K[修订、学习、审计或 Forget] ``` LLM 只负责提出 Experience 内容,不负责决定什么可以成为可信记忆。Host 负责推导提炼资格与证据上限、验证结构化结果,并持久化 Candidate。用户可以逐字段接受、编辑、拒绝、撤回或发布 Candidate。 当新任务出现时,Host 会生成任务指纹,应用严格的作用域和隐私过滤,执行有界检索,并检查当前观察结果。随后它会组合出一个精确 Plan,解释被选择、被丢弃、发生冲突和被人工覆盖的贡献。只有有权用户的明确决定才能为相同任务创建一次性绑定。 在引导复用期间,经验地图跟踪已批准步骤,并把它们与真实 Harness 工具事件关联。模型调用、工具、后台任务、Shell、文件系统、Web、审批和 Session Log 仍由 Harness 负责。成功必须经过当前权威状态读回,工具输出本身不会被当作外部真相。 ### 所有权 | 责任方 | 责任 | | --- | --- | | DeepSeek Harness | Session 历史、模型路由、工具、后台任务、Shell、文件系统、Web、审批和认证传输。 | | Experience Map Host | Candidate 与 Version 生命周期、匹配、Preflight、组合、Plan、一次性绑定、引导进度、验证分类、Settlement、Revision、Forget 和治理。 | | Experience SQLite | Experience 领域记录的唯一持久化写入者。 | | Browser Client | 嵌入 `conversation.view` 的工作台,只读取并命令 Host 状态,不独立持有业务状态。 | | 可重建投影 | 学习视图、Markdown 导出、关系地图和受控评测报告。 | 这个包是一个可安装 Bundle,包含 Host、Browser `./client` 和可选的管理 CLI。Bundle Patch 插入一个 Host 行,Package Manifest 则暴露 Browser Face。Session Log 和 Experience 数据库分别维护各自领域的权威事实。 ### 重要默认配置 | 配置 | 默认值 | 作用 | | --- | --- | --- | | `automaticSuggestionDetection` | `true` | 在本地检查已完成的 Session 区间并生成有界、可丢弃的建议。 | | `automaticRecall` | `true` | 新任务自动生成保守 MatchSet;证据不足时允许不匹配。 | | `automaticContextInjection` | `after_current_plan_approval` | 仅在当前精确 Plan 获批后注入 Context。 | | `automaticToolExecution` | `disabled` | 设置不能授予执行权;当前没有 ExecutionBinding,不能自动运行工具。 | | `reasoningEffort` | `low` | 除非在 Experience Map 设置卡片中修改,否则 Candidate 提议使用有界推理。 | | `maxTokens` | `8192` | 每次提议可以使用该默认值、模型路由默认值或已披露的自定义限制。 | | `defaultTargetExposure` | `local` | 除非授权请求另有声明,否则 Plan 假定只在本地暴露。 | | `observationFreshnessMs` | `300000` | Preflight 观察默认在五分钟后过期。 | | `planApprovalTtlMs` | `1800000` | 待决定 Plan 默认在 30 分钟后过期。 | ### 源码索引 | 文件 | 作用 | | --- | --- | | [`cordis.patch.yml`](cordis.patch.yml) | Bundle 插入方式和部署默认值。 | | [`src/index.ts`](src/index.ts) | Host 服务组合和配置。 | | [`src/runtime-settings.ts`](src/runtime-settings.ts) | 可选 Settings 适配器与逐操作不可变快照。 | | [`src/client/settings-card.tsx`](src/client/settings-card.tsx) | 嵌入“设置 → 插件”的配置卡片。 | | [`src/client/workspace.tsx`](src/client/workspace.tsx) | 嵌入式任务与管理工作台。 | | [`src/persistence/schema.ts`](src/persistence/schema.ts) | 权威 SQLite Schema。 |
----- ## 进一步了解 - [类型、关系与组合决定](docs/decisions/m7-types-relations-composition.md)——六种 Experience 如何为 Plan 提供贡献。 - [学习治理决定](docs/decisions/m7-learning-governance.md)——预测、标签、结果和自动化等级如何保持分离。 - [三组评测决定](docs/decisions/m7-three-arm-evaluation.md)——当前评测能够证明和不能证明什么。 - [收益证据](docs/release/BENEFIT_EVIDENCE.md)——真实配对任务、收益信号、控制条件与明确边界。 - [开源准备状态](docs/release/OPEN_SOURCE_READINESS.md)——干净历史、依赖、Package 与发布门槛。 ----- ## 模型体验 生成 Candidate 时直接影响模型:用户确认精确披露后,经验地图通过 Harness LLM 服务发送一次结构化请求,并且只从已经披露的结果工具中接受 Candidate 内容。本地检查、审阅、发布、审计、导出和普通管理查询不会调用模型。 复用已批准 Experience 时间接影响模型:Bundle 会在完全匹配的用户任务之前记录一条最小化、带来源身份的 `user/message` Context。Session Log 可以重建这份模型可见输入。没有当前匹配 Plan 及其已授权一次性绑定,普通任务不会收到这份 Context。 #### KV Cache 影响 Bundle 不修改静态系统提示词。Candidate 提议 Session 和 Plan 专用 Context 会随操作变化,因此稳定前缀之后的缓存效果取决于所选 Provider 和请求历史。 ----- ## 已知限制与延期能力 - 当前包尚未发布到 npm,通过 GitHub Releases 中的预构建 tarball 安装。 - 自动准入默认关闭。六项学习和自动化能力的发布等级都是 `shadow`;评测结果不会自动把它们晋级。 - SQLite 仍是权威存储,不需要图数据库。召回可以选择固定版本的本地 Transformers.js 向量模型制品;未配置或不可用时继续使用词法回退路径。在当前上游原生依赖安全公告关闭前,Transformers.js 是需要显式安装的可选 peer runtime。 - 因果记录仍是分等级的候选关系;这个 Bundle 不是通用因果推断引擎。 - Markdown 是导出和修订输入,不能直接覆盖 Version。 - pre-release schema v8 会拒绝旧本地数据库;启动当前版本前需要丢弃旧的预发布数据。 - Forget 会停止权威召回并退役仍然活跃的 Experience Context,但不会擦除不可变 Session 历史、Provider 副本或外部副本。 - 三组受控评测每组只有一个确定性任务样本。它证明评测链路可用,但不能证明统计可靠的产品提升或外部模型泛化。 - Governed Content/Vault、自动发布、自动修订或合并、因果晋级和自动执行均未启用。 ### 隐私与安全 - 完整 Session 保留在本地。只有用户审阅并确认披露后,Candidate 生成才会发送有界、类型化证据包。 - Assistant reasoning、中间过程说明、非执行工具噪声、凭据和疑似秘密的内联内容不会成为 Experience 证据。 - 每次写入都由可信 Host Adapter 解析身份和权限。Browser 请求和命令 JSON 不能自行声明权限。 - Candidate 发布、Plan 批准、工具批准、自动化晋级和因果晋级是相互独立的决定。 - 明确的 `unknown` 结果会被保留,也永远不会被计为成功。 ----- ### 开发备注
展开维护者工作上下文 无。
----- ## 许可证 [MIT](LICENSE) 维护:杭州星原驱动科技有限公司 · OPC(超级个体)实践。本项目是独立、非官方的 DeepSeek Harness 社区插件。