前言¶
在 DeepSeek Harness(DSH)里做多轮 agent 协作时,常见问题是:上一会话里的关键决定、理由和进度,下一回合未必能稳定接上;工具输出堆在上下文里,也不等于经过确认的长期记忆。社区插件 noname-dsh-plugin(维护者 yuchenlogin,GitHub 仓库 yuchenlogin/noname-dsh-plugin,分类为工作流)把 NoName Agent Harness 的记忆基座接到 DSH:证据追加写入、记忆分版本、品味单独审核、批准流程留本地账本。下面介绍它是什么、能做什么,以及如何安装与走通一条典型流程。
这是什么¶
一句话定位:NoName Agent Harness 的 DSH 插件——context as an asset:append-only 证据、版本化记忆、品味作为一等公民、经审核的批准(见仓库 package.json 描述与 README)。
实现上,TypeScript 插件连接本机 Python sidecar;Python 基座仅用标准库与 SQLite,不需要另配模型 API key。插件是记忆与证据适配层:DSH 仍负责模型、工具执行、权限和调度;NoName 独立 runtime 的执行审批门与沙箱不会自动接管 DSH。
当前插件版本 0.6.0,许可证 MIT(内核遵守原 NoName 仓库许可)。
核心功能¶
记忆分层与「什么该记」¶
README 用表格归纳了内容去向,要点如下:
| 内容 | 合适的去处 |
|---|---|
| 项目约束、关键决定及原因 | noname_remember 的 high 候选,确认后成为项目记忆 |
| 阶段成果、阻塞与下一步 | mid 候选,保留可继续工作的最小信息 |
| 用户明确表达的判断与例子 | 自述品味;必须来自用户明确要求 |
| 从模型表现中观察到的喜好 | 品味候选,用户明确采纳后生效 |
| 普通工具输出、暂时想法、每一轮聊天 | 需要时留作证据,不逐条变成长期规则 |
决定变更时复用同一逻辑键(例如 storage 从 SQLite 改为 PostgreSQL);新候选确认后取代当前版本,旧决定仍留在来路里。品味是软影响,不是事实或永久命令。
工具结果留证,不等于长期记忆。 自动留证(autoIngest)、提出候选、人工确认是三个阶段。
面向 agent 的工具集¶
| 工具 | 用途 |
|---|---|
noname_record |
留下决定、发现或约束作为证据;返回来源事件 ID(evt_…) |
noname_remember |
由证据提出项目决定或工作进度候选;不会自动批准 |
noname_package |
组装项目记忆、偏好与相关证据,供新会话接续 |
noname_search |
查找证据与记忆 |
noname_state |
查看已批准状态;可选 layer,不填则返回 high 与 mid |
noname_inbox |
查看候选及其来源 |
noname_taste_add / noname_taste_propose / noname_taste_review |
品味自述、提议与 adopt / edit / pause / resume / retire |
noname_card_queue |
需要复核的品味卡 |
noname_ledger |
本地可审核页面与离线 HTML 快照 |
noname_verify |
账本完整性及哈希覆盖范围 |
noname_extract |
默认预览抽取;create_candidates: true 才创建待审候选 |
noname_remember 必填:layer(high / mid)、稳定主题 key、可读 text、一个 source_event 事件 ID,以及 reason。可选 next_step。须先 noname_record 再引用真实 ID。
本地交互式账本¶
noname_ledger 返回本机 live ledger URL 与离线 HTML 路径。页面分区包括:此刻、等你判断、品味与偏好、来路与变化、活动档案。项目决定与工作进度支持接受、拒绝、暂缓、修改后接受;签署人和理由写入同一账本。
服务仅监听 127.0.0.1,URL 带访问令牌,不要公开分享。一小时无活动后自动退出;远程 DSH 需把返回 URL 的端口转发到本机相同端口(README 示例:ssh -L 45678:127.0.0.1:45678 your-host)。当前 DSH host 插件不能注册 client 的 sidebarRightTabs,账本通过浏览器打开。
配置与数据位置¶
| 字段 | 默认 | 说明 |
|---|---|---|
pythonPath |
python3 |
本机 Python;建议绝对路径 |
dbDir |
空 | 默认 <项目>/.noname;指定后固定目录 |
autoIngest |
true |
将宿主工具结果写入证据流;跳过 NoName 自身工具避免回声 |
timeoutMs |
30000 |
Python sidecar 调用超时(毫秒) |
一个工作区一本账,多会话共享;无法解析工作区时回落到 $DSH_HOME/noname。建议将 .noname/ 加入 .gitignore。不同 profile 若指向同一工作区,可能共用账本;需隔离时显式配置不同 dbDir。
安装与启用¶
环境要求:DeepSeek Harness、Node.js 18+、Python 3.10+(见 package.json 的 engines)。
从源码安装时 README 给出的步骤如下。注意必须执行 npm run build,使 dist/ 与当前 TypeScript 一致;DSH 安装与 profile 细节见 DSH 官方指南。
git clone --recursive https://github.com/yuchenlogin/noname-dsh-plugin.git
cd noname-dsh-plugin
npm install
npm run build
dsh plugin --profile web add /absolute/path/to/noname-dsh-plugin
插件目录页:SkillHub — yuchenlogin/noname-dsh-plugin(社区目录站点,与 DeepSeek / 幻方无官方从属关系)。
安装前请自行审阅仓库源码与 MIT 许可证。插件以当前 dsh 进程权限运行,能访问其配置的工作区与本机 Python sidecar;不要在未信任的环境盲目启用。
典型用法:从空账本到下一回合接续¶
启用插件后,在 DSH 项目工作区内可按 README「快速开始」走通一遍:
- 让 agent 调用
noname_package查看当前项目。初次会创建空账本,空记忆不会伪装成已记住内容。 - 正常讨论一个决定(例如「首版用 SQLite,因为只在本地运行」),用
noname_record留下决定和理由,取得evt_…来源 ID。 - 用
noname_remember提出候选:稳定键storage、人能读懂的决定、来源 ID 和保留理由。 - 调用
noname_ledger,打开 live ledger URL,查看来源并签署。 - 在新会话让 agent 再调
noname_package,确认已批准内容与来源出现在上下文包中。
README 也明确:记忆审核在本地网页由人签署;插件没有后台 LLM 自动提炼,也不保证宿主每次会话开始都会自动调用 noname_package。
适用场景与边界¶
适合谁: 需要在 DSH 工作流里保留「决定 + 理由 + 来源」、并希望人工批准后再进入长期上下文的团队或个人;重视品味与偏好但要求与用户明示、审核生命周期分开处理的场景。
边界(README「信任与现有边界」):
autoIngest捕获工具结果,不是全量聊天归档;长输出保留受限摘要,有价值内容仍应主动noname_record。- 完整性校验:
noname_verify的hash_coverage会报告 v1 / v2 哈希覆盖差异;数据在本机,不表示自动加密或脱敏。 - 开发侧:
npm run build、npm test、npm run check:kernel用于构建与内核快照一致性;运行时依赖vendor/noname_harness_pkg/快照。
结尾¶
noname-dsh-plugin 把 NoName 的「可追溯项目记忆」接到 DSH:证据追加、候选提议、本地账本签署、下一回合用 noname_package 接续。目录页见 SkillHub 插件页,源码与完整工具说明见 GitHub 仓库 README。