@wilshi/dsh-agentos-context 0.0.0-stage → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/LICENSE.opencontext +17 -0
- package/README.i18n.yaml +67 -0
- package/README.md +145 -2
- package/README.zh.md +144 -0
- package/THIRD_PARTY_NOTICES.md +13 -0
- package/cordis.patch.yml +5 -0
- package/docs/CONTRACT.md +51 -0
- package/docs/IMPLEMENTATION-STATUS.md +56 -0
- package/lib/client.js +42545 -0
- package/lib/index.js +9319 -0
- package/package.json +99 -4
- package/prototype/PROTOTYPE.md +125 -0
- package/prototype/index.html +248 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeepSeek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2026 melandlabs / dsh-opencontext contributors
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
package/README.i18n.yaml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
|
+
# pnpm run verify-translation-pairing --write packages/context/agentos-context/README.md
|
|
5
|
+
/:
|
|
6
|
+
en: 4d9c0980eb7237d3
|
|
7
|
+
zh: 356009fc60447bbb
|
|
8
|
+
/deepseek-ai-dsh-agentos-context:
|
|
9
|
+
en: ef8a07d5cd44d427
|
|
10
|
+
zh: 7719f1c92fd0f9dd
|
|
11
|
+
/deepseek-ai-dsh-agentos-context/summary:
|
|
12
|
+
en: a20c08f84105aa19
|
|
13
|
+
zh: b7a9dca4cafb465f
|
|
14
|
+
/deepseek-ai-dsh-agentos-context/table-of-contents:
|
|
15
|
+
en: d152484eb41ac6b4
|
|
16
|
+
zh: 457575787e95f57c
|
|
17
|
+
/deepseek-ai-dsh-agentos-context/use-this-package:
|
|
18
|
+
en: 0e8cd600cd9c9eb0
|
|
19
|
+
zh: 7489f238ba627840
|
|
20
|
+
/deepseek-ai-dsh-agentos-context/use-this-package/automatic-memory-and-recall:
|
|
21
|
+
en: 56bb480b8d6c3002
|
|
22
|
+
zh: a3ace50a176d2197
|
|
23
|
+
/deepseek-ai-dsh-agentos-context/use-this-package/knowledge-and-document-parsing:
|
|
24
|
+
en: adce09e0e056a931
|
|
25
|
+
zh: f86500f499952405
|
|
26
|
+
/deepseek-ai-dsh-agentos-context/use-this-package/graph-ontology-and-compatibility:
|
|
27
|
+
en: 15802f94da51e5f3
|
|
28
|
+
zh: 74111b1b8eee4380
|
|
29
|
+
/deepseek-ai-dsh-agentos-context/understand-the-implementation:
|
|
30
|
+
en: 81edc502ac8be7ff
|
|
31
|
+
zh: 7627728d1b54cbdc
|
|
32
|
+
/deepseek-ai-dsh-agentos-context/further-exploration:
|
|
33
|
+
en: 966eeb68e370959b
|
|
34
|
+
zh: 41135c0109ce82d5
|
|
35
|
+
/deepseek-ai-dsh-agentos-context/model-experience:
|
|
36
|
+
en: 215e7ba838619b7b
|
|
37
|
+
zh: a311da3843709f90
|
|
38
|
+
/deepseek-ai-dsh-agentos-context/model-experience/automatic-recall:
|
|
39
|
+
en: 6439b4312a56aaf5
|
|
40
|
+
zh: f1e75985adc44ea5
|
|
41
|
+
/deepseek-ai-dsh-agentos-context/model-experience/automatic-recall/what-the-model-sees:
|
|
42
|
+
en: 7660942dea6dde50
|
|
43
|
+
zh: f433b6a5bd30955f
|
|
44
|
+
/deepseek-ai-dsh-agentos-context/model-experience/automatic-recall/token-effect:
|
|
45
|
+
en: a758dc69c65205d3
|
|
46
|
+
zh: a814d794f3b33f97
|
|
47
|
+
/deepseek-ai-dsh-agentos-context/model-experience/automatic-recall/kv-cache-effect:
|
|
48
|
+
en: 8e074116b4503e83
|
|
49
|
+
zh: 73ac152726580144
|
|
50
|
+
/deepseek-ai-dsh-agentos-context/model-experience/memory-and-knowledge-tools:
|
|
51
|
+
en: b5d99a9b14b251fd
|
|
52
|
+
zh: 364634a84d29d64e
|
|
53
|
+
/deepseek-ai-dsh-agentos-context/model-experience/memory-and-knowledge-tools/what-the-model-sees:
|
|
54
|
+
en: 7ded0722b6e36feb
|
|
55
|
+
zh: 88bef99e998973f2
|
|
56
|
+
/deepseek-ai-dsh-agentos-context/model-experience/memory-and-knowledge-tools/token-effect:
|
|
57
|
+
en: e74adb3d24bed53b
|
|
58
|
+
zh: 696ee630448c08c2
|
|
59
|
+
/deepseek-ai-dsh-agentos-context/model-experience/memory-and-knowledge-tools/kv-cache-effect:
|
|
60
|
+
en: 59eef4b0d5043933
|
|
61
|
+
zh: 4aaf55d077c33d46
|
|
62
|
+
/deepseek-ai-dsh-agentos-context/known-limitations-and-deferred-work:
|
|
63
|
+
en: f597852d4914f4d4
|
|
64
|
+
zh: 6cf1a70885c050dd
|
|
65
|
+
/deepseek-ai-dsh-agentos-context/known-limitations-and-deferred-work/dev-note:
|
|
66
|
+
en: e67f633dc6fe7773
|
|
67
|
+
zh: e88aeb617ffb74ea
|
package/README.md
CHANGED
|
@@ -1,3 +1,146 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **Fork notice**: this package is a community fork of the internal `@deepseek-ai/dsh-agentos-context` 0.2.1-rc.5 source, published as `@wilshi/dsh-agentos-context` (MIT). It inlines the DSH 0.2.1 client primitives so the web half loads on the public build, removes deployment-specific gateway defaults and wording, and redesigns the memory graph. Data format, tools and RPC namespaces are unchanged.
|
|
4
|
+
description: "Automatic memory, scoped recall, ontology graph, and local document knowledge for DSH Web and Desktop profiles."
|
|
5
|
+
kind: "package-bundle"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# @deepseek/dsh-agentos-context
|
|
9
|
+
|
|
10
|
+
English | [中文](README.zh.md)
|
|
11
|
+
|
|
12
|
+
## Summary
|
|
13
|
+
|
|
14
|
+
agentOS Context adds automatic long-term memory, scoped recall, a source-backed ontology graph, and a local document knowledge base to a DSH profile. The Web application and DSH Desktop include it by default. Existing OpenContext data remains readable without a destructive migration, while new records use an additive sidecar. Profile maintainers can add or remove the bundle with `dsh plugin`; its ontology is intentionally finite rather than a general OWL reasoner.
|
|
15
|
+
|
|
16
|
+
## Table of Contents
|
|
17
|
+
|
|
18
|
+
- [Use this package](#use-this-package)
|
|
19
|
+
- [Understand the implementation](#understand-the-implementation)
|
|
20
|
+
- [Further Exploration](#further-exploration)
|
|
21
|
+
- [Model Experience](#model-experience)
|
|
22
|
+
- [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
|
|
23
|
+
- [Dev Note](#dev-note)
|
|
24
|
+
|
|
25
|
+
-----
|
|
26
|
+
|
|
27
|
+
<a id="use-this-package"></a>
|
|
28
|
+
## Use this package
|
|
29
|
+
|
|
30
|
+
DSH Web and Desktop already mount this package through `dsh-web-app`. Open **Settings → Memory** to configure capture, recall, embeddings, distillation and retention, or use the Memory workspace for the list, graph, review and knowledge views. The Settings row and Conversation tab follow the active DSH language. A profile that does not include `dsh-web-app` can activate or remove the installed bundle explicitly:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
dsh plugin --profile <name> add @deepseek/dsh-agentos-context
|
|
34
|
+
dsh plugin --profile <name> remove @deepseek/dsh-agentos-context
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Adding the bundle mounts the current implementation on the compatibility `dsh-opencontext` Loader row. Official Settings therefore imports the old section into the same namespace, preserves its values, and applies editable capture, recall, embedding, distillation, retention and scope fields live without remounting the plugin. The command fails if the installed package does not expose its `dsh.bundle.patch` declaration.
|
|
38
|
+
|
|
39
|
+
### Automatic memory and recall
|
|
40
|
+
|
|
41
|
+
Automatic human-prompt capture is enabled by default and can be disabled. Accepted prompts are distilled when a configured model is available; a temporary distillation failure retains a low-importance working memory for 24 hours instead of dropping the prompt. Recall searches authorized scopes in `run → agent → workspace → user → app → global` order, keeps run memory inside one Session, and injects only bounded evidence for the accepted user query.
|
|
42
|
+
|
|
43
|
+
The 3+1 hierarchy stores working, episodic, semantic and procedural layers independently from memory type. Repeated evidence can reinforce and promote a record; approximate conflicts become review candidates rather than overwriting an established fact. Explicitly saved local content remains lossless, including credential-like text; this package does not apply DLP scanning or automatic masking.
|
|
44
|
+
|
|
45
|
+
Searching the compact conversation Memory view is executed by every underlying scope instead of filtering only the recent records already loaded in the browser. The results are merged and ranked back into the aggregate view, so older matching memories remain discoverable without changing the active workspace.
|
|
46
|
+
|
|
47
|
+
### Knowledge and document parsing
|
|
48
|
+
|
|
49
|
+
Knowledge uploads are explicit. With All scopes selected, the Knowledge view aggregates current and legacy documents while new uploads continue to enter the shared global scope. It can upload, list, search, inspect, reindex and delete text files up to 4 MiB and DOCX, XLSX, PPTX, PDF, ODT, ODS, ODP, ODG, RTF or EPUB files up to 25 MiB. Binary extraction runs locally with OCR, attachment extraction and external parser services disabled; only bounded extracted text and source metadata enter the index. Indexing and search use separate default deadlines of 10 minutes and 30 seconds.
|
|
50
|
+
|
|
51
|
+
Lexical retrieval remains available without embedding credentials. When embeddings are configured, the package loads the local SQLite vector extension and combines lexical and semantic results. Model-backed distillation and embedding send selected text and the configured credential only to endpoints in the startup allowlist; remote endpoints must use HTTPS, while plain HTTP is allowed only for loopback addresses or endpoints explicitly listed in OPENCONTEXT_DSH_TRUSTED_GATEWAY_BASES.
|
|
52
|
+
|
|
53
|
+
### Graph, ontology and compatibility
|
|
54
|
+
|
|
55
|
+
The workbench offers a 2D relationship view and an optional remembered WebGL 3D point-cloud view with orbit, zoom, picking, community folding, active light or dark application colors and a source-backed detail drawer; an unsupported WebGL environment falls back to 2D. Model extraction can propose typed objects and relations, but each relation must quote its source exactly and stays pending until a person confirms it. The aggregate view folds a large graph into one community per memory scope before a person opens a scope, while a single scope uses deterministic relationship communities and retains cross-community edges.
|
|
56
|
+
|
|
57
|
+
In Desktop, leaving native fullscreen also closes graph fullscreen when the DOM fullscreen event is absent. DOM fullscreen entry restores the graph after a rapid reentry, and a delayed earlier native exit does not close the active DOM graph. An explicit toggle or Escape exit remains in force when an earlier pending DOM fullscreen entry arrives; that entry is exited rather than restoring graph fullscreen. The CSS-only fullscreen fallback remains dismissible with Escape.
|
|
58
|
+
|
|
59
|
+
Legacy OpenContext memories and document references remain read-only inputs and are never rewritten at startup. The package preserves the `dsh-opencontext` settings namespace, reads compatibility identifiers, and keeps callable `oc_*` aliases while presenting `memory_*`, `knowledge_*` and `context_*` names. New revisions, retirements, usage traces and ontology state live in the agentOS Context sidecar; schema-v1 sidecars migrate additively to schema v2.
|
|
60
|
+
|
|
61
|
+
-----
|
|
62
|
+
|
|
63
|
+
<a id="understand-the-implementation"></a>
|
|
64
|
+
## Understand the implementation
|
|
65
|
+
|
|
66
|
+
<details>
|
|
67
|
+
<summary>Implementation internals — click to expand</summary>
|
|
68
|
+
|
|
69
|
+
The bundle patch inserts one dual-face Cordis package. Its Host face opens the compatibility backend and sidecar, registers authenticated `agentos-context/v1/*` RPC routes, model tools, the runtime skill and agent lifecycle listeners. Its Client face installs the first-level Memory settings section and workbench views. Browser operations use authenticated Connection RPC instead of legacy raw browser routes. Modal views use the shared Client UI primitive for focus containment, Escape handling and focus restoration, while this package owns only their content and layout.
|
|
70
|
+
|
|
71
|
+
Legacy OpenContext storage loads on its first operation, not while importing the plugin for CLI help or schema inspection. Disposing an unused compatibility backend closes any owned document store without loading legacy storage.
|
|
72
|
+
|
|
73
|
+
The sidecar keeps immutable source and memory revisions, typed entities, reviewed relations, temporal validity, idempotency and usage policy in SQLite. The vector index uses the same scope and revision checks, so a stale or unauthorized embedding cannot become a recall result. Existing OpenContext records are projected conservatively and stay in their original database.
|
|
74
|
+
|
|
75
|
+
| File | Role |
|
|
76
|
+
|---|---|
|
|
77
|
+
| [`cordis.patch.yml`](cordis.patch.yml) | Bundle activation and legacy-row suppression |
|
|
78
|
+
| [`src/index.ts`](src/index.ts) | Host entry, configuration and plugin assembly |
|
|
79
|
+
| [`src/context/store.js`](src/context/store.js) | Sidecar persistence, ontology and revision rules |
|
|
80
|
+
| [`src/recall.js`](src/recall.js) | Accepted-query scoped recall and prompt injection |
|
|
81
|
+
| [`src/document-parser.js`](src/document-parser.js) | Bounded local text and binary-document extraction |
|
|
82
|
+
| [`src-client/index.tsx`](src-client/index.tsx) | Settings and Memory workbench registration |
|
|
83
|
+
|
|
84
|
+
</details>
|
|
85
|
+
|
|
86
|
+
-----
|
|
87
|
+
|
|
88
|
+
<a id="further-exploration"></a>
|
|
89
|
+
## Further Exploration
|
|
90
|
+
|
|
91
|
+
- [Compatibility and operation contract](docs/CONTRACT.md)
|
|
92
|
+
- [Interaction prototype](prototype/PROTOTYPE.md)
|
|
93
|
+
- [DSH profile and bundle composition](../../../docs/architecture.md)
|
|
94
|
+
|
|
95
|
+
-----
|
|
96
|
+
|
|
97
|
+
<a id="model-experience"></a>
|
|
98
|
+
## Model Experience
|
|
99
|
+
|
|
100
|
+
### Automatic recall
|
|
101
|
+
|
|
102
|
+
#### What the model sees
|
|
103
|
+
|
|
104
|
+
For an accepted human query, the package appends one `agentos-context`-origin user message containing a bounded `<opencontext_evidence>` block. The producer-owned source remains valid in the current Session format. The block labels recalled records as untrusted evidence, escapes record content and ids, and includes only records from scopes authorized for the current Session.
|
|
105
|
+
|
|
106
|
+
#### Token effect
|
|
107
|
+
|
|
108
|
+
Recall adds at most the configured `maxBytes` evidence budget plus its fixed wrapper. No matching record adds no message. The usage tracker records which exact revisions reached a committed request.
|
|
109
|
+
|
|
110
|
+
#### KV Cache effect
|
|
111
|
+
|
|
112
|
+
The evidence message follows the current human message, so a different query or memory result changes the request suffix without rewriting earlier durable conversation history.
|
|
113
|
+
|
|
114
|
+
### Memory and knowledge tools
|
|
115
|
+
|
|
116
|
+
#### What the model sees
|
|
117
|
+
|
|
118
|
+
The package registers descriptive tools including `memory_search`, `memory_save`, `knowledge_search` and `knowledge_document_upload`; older `oc_*` names remain callable aliases. Tool results return bounded structured records or document chunks and never grant authority to recalled text.
|
|
119
|
+
|
|
120
|
+
#### Token effect
|
|
121
|
+
|
|
122
|
+
Tool schemas contribute their fixed definitions to presets that mount this package. Tool calls add only the bounded result selected by the model and the configured per-operation limits.
|
|
123
|
+
|
|
124
|
+
#### KV Cache effect
|
|
125
|
+
|
|
126
|
+
Stable tool definitions can retain the request prefix cache. A tool result appends new history in the ordinary tool-call position and does not mutate previous messages.
|
|
127
|
+
|
|
128
|
+
## Known Limitations and Deferred Work
|
|
129
|
+
|
|
130
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
131
|
+
|
|
132
|
+
- The ontology uses approved finite entity and relationship types; it does not implement arbitrary OWL reasoning, organization-wide authorization, automatic conflict adjudication, review undo, irreversible purge or cross-project sharing.
|
|
133
|
+
- Legacy `.doc`, `.xls`, `.ppt` and proprietary `.wps`, `.et`, `.dps` files are not parsed. Save them as OOXML or ODF first. Image-only PDFs require OCR and are rejected when they contain no extractable text.
|
|
134
|
+
- Automatic capture writes to the current workspace by default. User, Agent and application scopes require trusted runtime identity or explicit local configuration; an untrusted message cannot manufacture those identities.
|
|
135
|
+
- Rolling back to the legacy plugin leaves original records intact but hides sidecar-only writes. A legacy record retired only in the sidecar can therefore reappear after rollback; preserve both databases during evaluation.
|
|
136
|
+
- Knowledge uploads are local explicit actions. This package does not crawl folders, synchronize external repositories or perform OCR.
|
|
137
|
+
|
|
138
|
+
<a id="dev-note"></a>
|
|
139
|
+
### Dev Note
|
|
140
|
+
|
|
141
|
+
<details>
|
|
142
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
143
|
+
|
|
144
|
+
None.
|
|
145
|
+
|
|
146
|
+
</details>
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
> **Fork 说明**:本包是内部 `@deepseek-ai/dsh-agentos-context` 0.2.1-rc.5 源码的社区分叉,以 `@wilshi/dsh-agentos-context` 发布(MIT)。它内联了 DSH 0.2.1 的客户端 UI 基础组件,使 Web 端能在公开版加载;同时移除了部署专用的网关默认值与措辞,并重做了记忆图谱。数据格式、工具与 RPC 命名空间保持不变。
|
|
4
|
+
description: "为 DSH Web 与 Desktop 配置提供自动记忆、分域召回、本体图谱和本地文档知识库。"
|
|
5
|
+
kind: "package-bundle"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# @deepseek/dsh-agentos-context
|
|
9
|
+
|
|
10
|
+
[English](README.md) | 中文
|
|
11
|
+
|
|
12
|
+
## 概述
|
|
13
|
+
|
|
14
|
+
agentOS Context 为 DSH 配置增加自动长期记忆、分域召回、基于来源的本体图谱和本地文档知识库。Web 应用和 DSH Desktop 默认包含该能力。现有 OpenContext 数据无需破坏性迁移即可继续读取,新记录写入增量 sidecar。配置维护者可以通过 `dsh plugin` 添加或移除该 bundle;它有意采用有限本体,而不是通用 OWL 推理器。
|
|
15
|
+
|
|
16
|
+
## 目录
|
|
17
|
+
|
|
18
|
+
- [使用此包](#use-this-package)
|
|
19
|
+
- [了解实现](#understand-the-implementation)
|
|
20
|
+
- [进一步了解](#further-exploration)
|
|
21
|
+
- [模型体验](#model-experience)
|
|
22
|
+
- [已知限制与待办事项](#known-limitations-and-deferred-work)
|
|
23
|
+
- [开发备注](#dev-note)
|
|
24
|
+
|
|
25
|
+
-----
|
|
26
|
+
|
|
27
|
+
<a id="use-this-package"></a>
|
|
28
|
+
## 使用此包
|
|
29
|
+
|
|
30
|
+
DSH Web 和 Desktop 已通过 `dsh-web-app` 挂载此包。打开**设置 → 记忆**可以配置捕获、召回、嵌入、提炼和保留策略,也可以在记忆工作台中使用列表、图谱、审核和知识库视图。设置入口和对话页标签会跟随 DSH 当前语言。不包含 `dsh-web-app` 的配置可以显式启用或移除已安装的 bundle:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
dsh plugin --profile <name> add @deepseek/dsh-agentos-context
|
|
34
|
+
dsh plugin --profile <name> remove @deepseek/dsh-agentos-context
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
添加 bundle 会把当前实现挂到兼容的 `dsh-opencontext` Loader 行上。因此,官方设置服务会把旧设置区直接导入同一命名空间并保留原值;捕获、召回、嵌入、提炼、保留策略和范围等可编辑字段可以即时生效,无需重启插件。如果已安装包没有公开 `dsh.bundle.patch` 声明,命令会失败。
|
|
38
|
+
|
|
39
|
+
### 自动记忆与召回
|
|
40
|
+
|
|
41
|
+
自动捕获人工提示默认开启,也可以关闭。配置模型可用时会提炼已接受的提示;提炼暂时失败时会保留一条低重要度工作记忆 24 小时,而不是丢弃提示。召回按 `run → agent → workspace → user → app → global` 顺序搜索已授权范围,将 run 记忆限制在一个会话内,并且只为已接受的用户查询注入有界证据。
|
|
42
|
+
|
|
43
|
+
3+1 分层将工作、情景、语义和程序记忆与记忆类型分别存储。重复证据可以强化并晋升记录;近似冲突会成为审核候选,不会覆盖已确立事实。用户显式保存的本地内容会无损保留,包括类似凭据的文本;此包不做 DLP 扫描或自动脱敏。
|
|
44
|
+
|
|
45
|
+
### 知识库与文档解析
|
|
46
|
+
|
|
47
|
+
知识库上传需要显式操作。选择“全部范围”时,知识库视图会聚合当前文档与旧版文档,新上传的文档仍写入共享全局范围。知识库视图可以上传、列出、搜索、检查、重新索引和删除不超过 4 MiB 的文本文件,以及不超过 25 MiB 的 DOCX、XLSX、PPTX、PDF、ODT、ODS、ODP、ODG、RTF 或 EPUB 文件。二进制提取在本地运行,关闭 OCR、附件提取和外部解析服务;索引只接收有界的提取文本与来源信息。索引和搜索分别使用默认 10 分钟和 30 秒的独立时限。
|
|
48
|
+
|
|
49
|
+
没有嵌入凭据时仍可使用词法检索。配置嵌入后,此包加载本地 SQLite 向量扩展并组合词法与语义结果。基于模型的提炼和嵌入只会把选定文本与配置凭据发送到启动时精确白名单中的端点;远程端点必须使用 HTTPS,明文 HTTP 仅允许回环地址或显式写入 OPENCONTEXT_DSH_TRUSTED_GATEWAY_BASES 的端点。
|
|
50
|
+
|
|
51
|
+
### 图谱、本体与兼容性
|
|
52
|
+
|
|
53
|
+
工作台提供 2D 关系视图,以及可记住选择的 WebGL 3D 点云视图,支持轨道控制、缩放、点选、社区折叠、跟随应用当前明暗主题和基于来源的详情抽屉;不支持 WebGL 时回退到 2D。模型提取可以建议带类型的对象和关系,但每条关系必须精确引用来源,并在人工确认前保持待审核状态。汇总视图会先按记忆范围把大图谱折叠成社区,用户进入某个范围后再查看细节;单一范围继续使用确定性关系社区并保留跨社区边。
|
|
54
|
+
|
|
55
|
+
Desktop 中退出原生全屏会同步退出图谱全屏,即使没有 DOM 全屏事件。快速重新进入时,DOM 全屏事件会恢复图谱状态,上一轮延迟到达的原生退出不会关闭当前 DOM 全屏图谱。通过按钮或 Escape 主动退出后,上一轮延迟到达的 DOM 全屏进入会被退出,不会重新激活图谱全屏。仅 CSS 的全屏回退仍支持 Escape 退出。
|
|
56
|
+
|
|
57
|
+
旧 OpenContext 记忆和文档引用保持只读输入,启动时不会重写。此包保留 `dsh-opencontext` 设置命名空间,读取兼容标识,并在展示 `memory_*`、`knowledge_*` 和 `context_*` 名称的同时保留可调用的 `oc_*` 别名。新修订、退役、使用轨迹和本体状态写入 agentOS Context sidecar;schema v1 sidecar 会增量迁移到 schema v2。
|
|
58
|
+
|
|
59
|
+
-----
|
|
60
|
+
|
|
61
|
+
<a id="understand-the-implementation"></a>
|
|
62
|
+
## 了解实现
|
|
63
|
+
|
|
64
|
+
<details>
|
|
65
|
+
<summary>实现内部信息——点击展开</summary>
|
|
66
|
+
|
|
67
|
+
bundle patch 插入一个双端 Cordis 包。Host 端打开兼容后端和 sidecar,注册通过认证的 `agentos-context/v1/*` RPC 路由、模型工具、运行时 skill 和 Agent 生命周期监听器。Client 端安装一级记忆设置入口和工作台视图。浏览器操作使用通过认证的 Connection RPC,不再使用旧的原始浏览器路由。弹窗视图统一使用共享 Client UI 组件处理焦点约束、Esc 关闭和关闭后的焦点恢复,此包只负责内容和布局。
|
|
68
|
+
|
|
69
|
+
旧 OpenContext 存储在首次执行相关操作时才加载,不会因为 CLI 帮助或配置结构检查而提前加载。销毁未使用的兼容后端会关闭其自有文档存储,但不会初始化旧存储。
|
|
70
|
+
|
|
71
|
+
sidecar 在 SQLite 中保存不可变的来源和记忆修订、带类型实体、已审核关系、时间有效性、幂等性和使用策略。向量索引使用相同的范围与修订检查,因此过期或未授权的嵌入不会成为召回结果。现有 OpenContext 记录以保守方式投影,并保留在原数据库中。
|
|
72
|
+
|
|
73
|
+
| 文件 | 作用 |
|
|
74
|
+
|---|---|
|
|
75
|
+
| [`cordis.patch.yml`](cordis.patch.yml) | bundle 激活与旧行抑制 |
|
|
76
|
+
| [`src/index.ts`](src/index.ts) | Host 入口、配置与插件组装 |
|
|
77
|
+
| [`src/context/store.js`](src/context/store.js) | sidecar 持久化、本体与修订规则 |
|
|
78
|
+
| [`src/recall.js`](src/recall.js) | 已接受查询的分域召回与提示注入 |
|
|
79
|
+
| [`src/document-parser.js`](src/document-parser.js) | 有界的本地文本与二进制文档提取 |
|
|
80
|
+
| [`src-client/index.tsx`](src-client/index.tsx) | 设置与记忆工作台注册 |
|
|
81
|
+
|
|
82
|
+
</details>
|
|
83
|
+
|
|
84
|
+
-----
|
|
85
|
+
|
|
86
|
+
<a id="further-exploration"></a>
|
|
87
|
+
## 进一步了解
|
|
88
|
+
|
|
89
|
+
- [兼容性与操作约定](docs/CONTRACT.md)
|
|
90
|
+
- [交互原型](prototype/PROTOTYPE.md)
|
|
91
|
+
- [DSH profile 与组合包](../../../docs/architecture.zh.md)
|
|
92
|
+
|
|
93
|
+
-----
|
|
94
|
+
|
|
95
|
+
<a id="model-experience"></a>
|
|
96
|
+
## 模型体验
|
|
97
|
+
|
|
98
|
+
### 自动召回
|
|
99
|
+
|
|
100
|
+
#### 模型看到的内容
|
|
101
|
+
|
|
102
|
+
对于已接受的人工查询,此包会追加一条来源为 `agentos-context` 的用户消息,其中包含有界的 `<opencontext_evidence>` 块;该生产者自有来源兼容当前会话格式。该块将召回记录标记为不可信证据,对记录内容和 id 转义,并且只包含当前会话已授权范围内的记录。
|
|
103
|
+
|
|
104
|
+
#### Token 影响
|
|
105
|
+
|
|
106
|
+
召回最多增加配置的 `maxBytes` 证据预算及其固定包装。没有匹配记录时不增加消息。使用跟踪器会记录进入已提交请求的精确修订。
|
|
107
|
+
|
|
108
|
+
#### KV Cache 影响
|
|
109
|
+
|
|
110
|
+
证据消息位于当前人工消息之后,因此不同查询或记忆结果会改变请求后缀,但不会重写更早的持久会话历史。
|
|
111
|
+
|
|
112
|
+
### 记忆与知识库工具
|
|
113
|
+
|
|
114
|
+
#### 模型看到的内容
|
|
115
|
+
|
|
116
|
+
此包注册描述性工具,包括 `memory_search`、`memory_save`、`knowledge_search` 和 `knowledge_document_upload`;旧的 `oc_*` 名称保留为可调用别名。工具结果返回有界结构化记录或文档分块,并且不会把召回文本提升为指令。
|
|
117
|
+
|
|
118
|
+
#### Token 影响
|
|
119
|
+
|
|
120
|
+
工具 schema 会为挂载此包的预设增加固定定义。工具调用只增加模型选中的有界结果和各操作配置限制内的内容。
|
|
121
|
+
|
|
122
|
+
#### KV Cache 影响
|
|
123
|
+
|
|
124
|
+
稳定的工具定义可以保留请求前缀缓存。工具结果按普通工具调用位置追加新历史,不会修改以前的消息。
|
|
125
|
+
|
|
126
|
+
## 已知限制与待办事项
|
|
127
|
+
|
|
128
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
129
|
+
|
|
130
|
+
- 本体只使用已批准的有限实体与关系类型;它不实现任意 OWL 推理、组织级授权、自动冲突裁决、审核撤销、不可逆清除或跨项目共享。
|
|
131
|
+
- 不解析旧版 `.doc`、`.xls`、`.ppt` 和专有 `.wps`、`.et`、`.dps` 文件。请先另存为 OOXML 或 ODF。纯图片 PDF 需要 OCR,没有可提取文本时会被拒绝。
|
|
132
|
+
- 自动捕获默认写入当前工作区。用户、Agent 和应用范围需要可信运行时身份或显式本地配置;不可信消息无法伪造这些身份。
|
|
133
|
+
- 回滚到旧插件不会破坏原始记录,但会隐藏仅存在于 sidecar 的写入。因此只在 sidecar 中退役的旧记录可能在回滚后重新出现;评估期间应保留两个数据库。
|
|
134
|
+
- 知识库上传是本地显式操作。此包不会抓取目录、同步外部仓库或执行 OCR。
|
|
135
|
+
|
|
136
|
+
<a id="dev-note"></a>
|
|
137
|
+
### 开发备注
|
|
138
|
+
|
|
139
|
+
<details>
|
|
140
|
+
<summary>维护者工作上下文——点击展开</summary>
|
|
141
|
+
|
|
142
|
+
无。
|
|
143
|
+
|
|
144
|
+
</details>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Third-Party Notices
|
|
2
|
+
|
|
3
|
+
agentOS context preserves and extends the Apache-2.0-licensed dsh-opencontext package. Its original license notice is distributed as `LICENSE.opencontext`; the package's own license is in `LICENSE`.
|
|
4
|
+
|
|
5
|
+
Runtime interfaces and dependencies used by this package include:
|
|
6
|
+
- DeepSeek Harness packages 0.1.5-rc.2 and Cordis 4.0.2 (see each installed package for its license).
|
|
7
|
+
- @melandlabs/opencontext 0.5.1 and @melandlabs/env-config 0.4.0.
|
|
8
|
+
- better-sqlite3 12.x and sqlite-vec 0.1.x for the existing OpenContext compatibility path.
|
|
9
|
+
- officeparser 8.0.0 (MIT) for local DOCX/XLSX/PPTX/PDF/ODF/RTF/EPUB text extraction. Its runtime dependencies include @xmldom/xmldom, fflate, file-type, pdfjs-dist and tesseract.js under their respective licenses. OCR is disabled by this plugin.
|
|
10
|
+
- React 18.3.1 and the DSH native UI primitives for client presentation.
|
|
11
|
+
- Three.js 0.186.1 (MIT) for the optional WebGL 3D knowledge-graph view; it is bundled into the client artifact.
|
|
12
|
+
|
|
13
|
+
This notice does not replace the license files distributed by those projects.
|
package/cordis.patch.yml
ADDED
package/docs/CONTRACT.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Shared context service/store contract v2
|
|
2
|
+
|
|
3
|
+
All methods return lossless JSON; store methods are synchronous except close may be awaited. An error has code and a safe user-facing message. Desktop identity belongs to the authenticated DSH Connection carrier and service, never caller metadata; no raw browser HTTP mutation or credential route is registered. Client methods use the versioned `agentos-context/v1/*` namespace. Every entity/memory/relation operation is explicitly scoped.
|
|
4
|
+
|
|
5
|
+
## Records
|
|
6
|
+
Memory = {id, revision, scopeId, content, kind, layer, importance, expiresAt, promotedFrom, lifecycle, epistemic, sourceId, source, recordedAt, validFrom, validTo, metadata, legacy}; kind fact|decision|preference|constraint|outcome|plan|note; layer working|episodic|semantic|procedural; lifecycle active|candidate|retired; epistemic unverified|supported|contested|refuted. Source = {id,scopeId,content,kind,actorRole,complete,recordedAt,lineageId}; role human|assistant|agent|tool|unknown. Layer and kind are independent dimensions. Saving does not imply supported. Revision history keeps source and content immutable.
|
|
7
|
+
Entity = {id,revision,scopeId,name,type,aliases,recordedAt}. Types Project,Person,Requirement,API,Service,Constraint,Decision,Document.
|
|
8
|
+
Relation = {id,revision,scopeId,subjectId,predicate,objectId,sourceId,quote,status,validFrom,validTo,recordedAt}; status pending|confirmed|rejected. Confirmed relations require an existing same-scope source and an exact quote from it.
|
|
9
|
+
Graph = {nodes:[{id,type,subtype?,layer?,importance?,label,timestamp?,status?,scopeId,communityId?}],edges:[{id,source,target,type,status?,relationId?,sourceId?,quote?}],communities:[{id,label,summary,nodeIds,size,edgeCount,externalEdgeCount,topNodeIds,typeCounts,scopeId}],communityEdges:[{id,source,target,count,types}],stats:{nodeCount,edgeCount,communityCount,truncated}}. type is entity/memory/source for nodes; type is predicate or source/mentions for edges. Communities are a deterministic, read-only projection; original nodes and edges are retained. Truncation is explicit and never emits dangling edges.
|
|
10
|
+
|
|
11
|
+
## Scope identity and recall
|
|
12
|
+
Without a fixed `scopeId`, trusted runtime/config identities resolve in this order: `run → agent → workspace → user → app → global`. The run scope is derived from the current session id and is never authorized for another session. Agent, user and app scopes are omitted when no trusted identity exists. Caller message metadata is not an identity source. A configured fixed `scopeId` preserves legacy single-scope isolation. Automatic capture defaults to workspace; explicit tools may write only to scopes authorized for the current session.
|
|
13
|
+
|
|
14
|
+
## Module API: src/context/store.js
|
|
15
|
+
export createContextStore({dbPath, now?}) -> ContextStore. Tests use :memory: or explicit workspace temp files; never default to a user DB.
|
|
16
|
+
- listScopes() -> [{id,label,count}]
|
|
17
|
+
- saveMemory({scopeId,content,kind?,layer?,importance?,expiresAt?,source?,metadata?,idempotencyKey?,validFrom?,validTo?,entityIds?}) -> Memory
|
|
18
|
+
- importLegacy({id,scopeId,content,timestamp?,metadata?}) -> Memory; explicit mutation only, retain ID, unknown origin, do not modify external DB
|
|
19
|
+
- getMemory(scopeId,id,{knownAt?,validAt?}?) -> Memory|undefined
|
|
20
|
+
- listMemories({scopeId,query?,lifecycle?,epistemic?,layer?,limit?,knownAt?,validAt?}) -> Memory[]
|
|
21
|
+
- reviseMemory({scopeId,id,expectedRevision,content,reason,kind?,layer?,importance?,expiresAt?,validFrom?,validTo?,actorRole?}) -> Memory
|
|
22
|
+
- transitionMemory({scopeId,id,expectedRevision,layer,importance?,expiresAt?,reason}) -> Memory
|
|
23
|
+
- reinforceMemory({scopeId,id,expectedRevision,layer?,importance?,expiresAt?,source,reason?}) -> Memory
|
|
24
|
+
- expireMemories({scopeId,at?,limit?}) -> Memory[]; creates retired revisions, never deletes history
|
|
25
|
+
- retireMemory({scopeId,id,expectedRevision,reason}) -> Memory
|
|
26
|
+
- versions(scopeId,id) -> Memory[]
|
|
27
|
+
- createEntity({scopeId,name,type,aliases?}) -> Entity
|
|
28
|
+
- listEntities({scopeId,query?,limit?}) -> Entity[]
|
|
29
|
+
- getEntity(scopeId,id) -> Entity|undefined
|
|
30
|
+
- mergeEntities({scopeId,keepId,mergeId,keepRevision,mergeRevision,reason}) -> Entity; identical type, same scope, preserve aliases/source IDs and reject destructive self-relations
|
|
31
|
+
- createRelation({scopeId,subjectId,predicate,objectId,sourceId?,quote?,validFrom?,validTo?}) -> Relation (pending)
|
|
32
|
+
- reviewRelation({scopeId,id,expectedRevision,decision:'confirm'|'reject',reason}) -> Relation
|
|
33
|
+
- listRelations({scopeId,status?,knownAt?,validAt?}) -> Relation[]
|
|
34
|
+
- listReviews({scopeId}) -> pending Relation[]; conflict status may be attached, never silently auto-resolve
|
|
35
|
+
- validateRelation(input) -> {ok,errors:[{field,code,message}]}; pure validation, no writes
|
|
36
|
+
- getSchema() -> {version,memoryLayers:[{id,label}],types:[{id,label}],relations:[{id,label,domain:string[],range:string[]}]}
|
|
37
|
+
- graph({scopeId,rootId?,depth?,includePending?,limit?,knownAt?,validAt?}) -> Graph
|
|
38
|
+
- changes({scopeId,limit?}) -> [{id,action,targetId,reason,at,revision}]
|
|
39
|
+
- recordUsage({id,sessionId,scopeId,messageId?,turn?,step?,phase:'planned',items:[{id,revision,content,sourceId?,kind?,truncated?,legacy?}],reason?,at?}, {trustedLegacy?}) -> usage record; reject duplicate IDs with different payloads. `trustedLegacy` is private to the service-owned recall bridge: an absent sidecar id is accepted only when both the option and item.legacy are true.
|
|
40
|
+
- findUsageByMessageId({sessionId,messageId}) -> exact immutable usage snapshot or undefined; messageId is generated before recall insertion and persisted for restart-safe correlation.
|
|
41
|
+
- updateUsage({id,phase:'committed'|'requested'|'failed',eventSeq?,at?}) -> usage record; never mutate items
|
|
42
|
+
- listUsage({sessionId,scopeId?,limit?}) -> usage[]
|
|
43
|
+
- setUsagePolicy({sessionId,scopeId,memoryId?,mode?:'exclude'|'prefer'|'normal',paused?,expectedRevision?}) -> policy
|
|
44
|
+
- getUsagePolicy(sessionId) -> {revision,scopeId?,paused,excludedIds,preferredIds}
|
|
45
|
+
- close()
|
|
46
|
+
|
|
47
|
+
## Integration boundaries
|
|
48
|
+
The parent owns src/context/service.js, backend-bridge.js, routes.js, usage.js and all existing src files. The store implementer owns only src/context/{store,sqlite,schema,validation,errors,projections}.js and tests/context-store*.test.js, and may add a clearly named domain-only helper under src/context if needed. Notify before contract changes.
|
|
49
|
+
New store reads are not an implicit migration. Parent handles legacy backend lazy reads and calls importLegacy only before explicit legacy mutation/linking. Node SQLite adapter must not rebuild or overwrite shared better-sqlite3 binaries.
|
|
50
|
+
|
|
51
|
+
Schema v1 → v2 is an additive sidecar migration: three indexed columns are added while existing immutable `record_json` snapshots remain untouched. The projection boundary supplies semantic/0.5/non-expiring defaults for v1 and OpenContext records. Automatic ontology extraction is internal-only; extracted relations require exact source quotes and enter `pending`, never `confirmed`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# agentOS context Implementation Status
|
|
2
|
+
|
|
3
|
+
## Implemented in the isolated package
|
|
4
|
+
- Visible rename to agentOS context while retaining OpenContext storage/tool compatibility.
|
|
5
|
+
- Persistent sidecar store with immutable source, memory, entity, relation, change and usage records.
|
|
6
|
+
- Scoped reads, explicit legacy import only on mutation, optimistic revisions and safe retirement.
|
|
7
|
+
- Finite ontology schema, domain/range validation, evidence quotes, pending review and historical graph projection.
|
|
8
|
+
- 3+1 memory hierarchy (working, episodic, semantic, procedural), configurable retention, same-session working-memory recall, automatic expiry, evidence reinforcement, safe promotion and candidate-only handling of approximate conflicts.
|
|
9
|
+
- Structured model extraction can propose typed ontology objects and relationships from new captured messages. Every proposed relationship must carry an exact quote from the preserved source and stays `pending` until manual confirmation; invalid or invented evidence is discarded.
|
|
10
|
+
- Legacy and sidecar memories through one compatibility service; descriptive memory/knowledge/context tool names are primary while existing `oc_*` names remain callable aliases. Legacy scope/list discovery pages beyond the former 500-row ceiling (bounded at 100,000) and reports backends that ignore pagination.
|
|
11
|
+
- Legacy memory/document nodes and revision, document-reference and session edges are merged into the bounded graph without writing to the legacy database.
|
|
12
|
+
- Large graphs are projected into deterministic Louvain-style communities without a new runtime dependency. The graph starts collapsed when useful, preserves node view, expands/collapses community members, aggregates cross-community edges and provides community composition and neighboring-community details.
|
|
13
|
+
- Entity-scoped recall follows `run → agent → workspace → user → app → global`. Identity scopes come only from trusted runtime metadata or explicit local settings; absent identities are omitted, cross-session run access is rejected, and fixed legacy scopes remain isolated. Automatic capture continues to default to workspace.
|
|
14
|
+
- Bounded untrusted evidence formatting, downstream-admitted human capture/recall, restart-safe message correlation, and separately labelled planned/committed/requested/failed usage stages.
|
|
15
|
+
- Authenticated, versioned DSH Connection RPC (`agentos-context/v1/*`) and real RPC-backed Memory/Knowledge/Graph/Review/Settings surfaces; raw loopback browser mutation/credential routes are not registered.
|
|
16
|
+
- The Knowledge surface uploads, lists, semantically searches and deletes scope-bound documents. Text uploads are bounded to 4 MB; DOCX/XLSX/PPTX/PDF/ODF/RTF/EPUB sources are bounded to 25 MB and extracted locally through `officeparser` with ZIP, table-cell, timeout and extracted-text limits. Original binary bytes are not persisted. Large indexing and semantic-search operations use dedicated bounded deadlines (`knowledgeUploadTimeoutMs`, default 10 minutes; `knowledgeSearchTimeoutMs`, default 30 seconds) instead of the 4-second interactive-memory deadline.
|
|
17
|
+
- Official 0.2.1 Loader configuration forms on the compatibility `dsh-opencontext` entry, one-time import of the previous settings document, live volatile updates without a plugin remount, staged revision-fenced saves, a standalone first-level “记忆” settings section, and the native conversation “记忆” tab without hiding the composer.
|
|
18
|
+
- First checkpoint deliberately uses the verified conversation.view contract. The prototype’s simultaneous right-side drawer remains a target-runtime follow-up because no supported non-replacing overlay contract has yet been verified.
|
|
19
|
+
- Persistent semantic cache for new sidecar revisions with lexical/graph fallback when embedding is unavailable. Model-backed distillation/embedding requires an exact process-approved gateway. Remote gateway entries must use HTTPS; plain HTTP is accepted only for loopback addresses or for explicitly trusted bases behind a TLS-terminating proxy, configured through `OPENCONTEXT_DSH_TRUSTED_GATEWAY_BASES`. Selected memory/prompt text and the configured Bearer credential may be sent to that endpoint. Automatic prompt capture is enabled by default; a transient distillation failure keeps the accepted human prompt only as a low-importance local working memory with bounded expiry, while a successful empty distillation still drops non-memory chatter.
|
|
20
|
+
- User-authorized memory and knowledge content is stored losslessly without credential-pattern rejection or masking. This applies to manual saves, automatic capture, local document indexing, recall and ontology candidates; structural, size, scope and source-attribution validation remains enforced.
|
|
21
|
+
- The graph surface includes a deterministic 2D mode and a bundled Three.js WebGL 3D exploration mode. The preference is remembered locally, reduced-motion preferences disable auto-rotation, and renderer failures return to 2D without losing graph data.
|
|
22
|
+
|
|
23
|
+
## Explicitly deferred
|
|
24
|
+
- Arbitrary OWL or recursive reasoning.
|
|
25
|
+
- Organization-wide multi-tenant authorization and cross-project sharing.
|
|
26
|
+
- Automatic contradiction resolution, conflict review queue, alias-candidate review queue, and review undo. Approximate memory conflicts remain candidates, and the current “待确认” tab reviews source-backed pending relations; direct same-type alias merge is available from the object view with optimistic revision checks.
|
|
27
|
+
- Permanent purge, external-system writeback and unattended migration.
|
|
28
|
+
- Bulk auto-extraction of entities/relations from historical records. Automatic extraction applies only to newly captured, successfully distilled messages.
|
|
29
|
+
- Legacy `.doc/.xls/.ppt`, proprietary `.wps/.et/.dps`, document macros, embedded attachments and OCR for scanned PDFs. WPS documents saved as OOXML/ODF are supported through those standard containers.
|
|
30
|
+
- Session-relevance ranking for the conversation pane’s “已存记忆” list; this checkpoint truthfully shows other active scope memories rather than calling them related candidates.
|
|
31
|
+
|
|
32
|
+
## Verified release gates
|
|
33
|
+
- `npm run verify:release`: Node and Vitest suites, TypeScript, Host/Client build, built registrations, working-tree package checks, exact tarball inspection, and Desktop patch application.
|
|
34
|
+
- Release 0.1.22 distribution: the exact `.tgz` installed into a disposable DSH Desktop 2.2.35 Profile as one package in under two seconds, without downloading or rebuilding native dependencies. The installed archive loaded under Electron ABI 148, opened `better-sqlite3`, loaded sqlite-vec v0.1.9, and composed one disabled legacy row plus one active agentOS context row without warnings.
|
|
35
|
+
- Disposable Profile: final tarball installed/imported with complete local rc2 dependencies; patch composition contains one disabled `dsh-opencontext` row and one active `agentos-context → dsh-agentos-context` row.
|
|
36
|
+
- Release 0.1.4: the exact archive passed package/version/content inspection, and Desktop profile preparation produced one disabled legacy `dsh-opencontext` row plus one active `agentos-context → dsh-agentos-context` row without patch warnings.
|
|
37
|
+
- Release 0.1.5: the full release gate passed with the dedicated memory settings section and bounded local binary document extraction; the exact archive passed identity/content inspection and disposable Desktop patch composition completed without warnings.
|
|
38
|
+
- Release 0.1.6: schema-v1 → schema-v2 migration was exercised against a real SQLite file and preserved the byte-identical historical `record_json`; layer, retention, promotion and pending ontology-candidate tests pass.
|
|
39
|
+
- Release 0.1.6 isolated Web UI: the exact `dsh-agentos-context-0.1.6.tgz` was unpacked into a disposable Desktop Profile, then started through the packaged Desktop CLI. A real Chromium session loaded the page, verified the first-level Memory settings entry and plugin card, created/revised/retired a memory, traversed all five workbench tabs, captured wide/narrow screenshots, and reported zero failed browser requests or console errors. The 760px view had no document or workbench horizontal overflow.
|
|
40
|
+
- Installed Electron ABI 148: the native knowledge-store upload/search/scope-isolation/delete tests passed, including vector-index cleanup after deletion.
|
|
41
|
+
- Installed DSH Desktop Electron runtime: DOCX/XLSX/PPTX/PDF/RTF extraction and corrupt/mismatched/oversized/cancelled input checks all passed.
|
|
42
|
+
- Real legacy database: `%USERPROFILE%\.opencontext\memory\store.db` passed SQLite `quick_check`; 5 populated scopes exposed 540 memories and 240 graph nodes through the prepared Electron runtime. The source database SHA-256 was unchanged before and after verification.
|
|
43
|
+
- The isolated Web-runtime UI validation loaded the plugin tree, served `__DSH_BOOT__` plus the agentOS client module, and rendered the settings card/workbench without browser console errors.
|
|
44
|
+
- Independent final host and client delta reviews reported no remaining blocker/high findings in the remediated areas.
|
|
45
|
+
|
|
46
|
+
## Still requires authorized runtime verification
|
|
47
|
+
- Actual active Electron Desktop layout, the current user theme/font-scale combination, and native-window restart behavior (isolated Web runtime UI was verified).
|
|
48
|
+
- Conversation view/composer and settings modal behavior inside the active shell.
|
|
49
|
+
- Active Profile add, application restart, real-shell interaction, uninstall and rollback (disposable Profile install/patch verification is complete).
|
|
50
|
+
|
|
51
|
+
No production Profile, credentials or memory data were modified during implementation.
|
|
52
|
+
|
|
53
|
+
## Rollback boundary
|
|
54
|
+
- Upgrade does not rewrite or bulk-copy the legacy OpenContext database.
|
|
55
|
+
- New memories, revisions, retirements, ontology data and usage traces live in the sidecar. A rollback to a legacy-only plugin cannot display those new records, and a legacy record retired only through the sidecar may become visible again.
|
|
56
|
+
- Preserve both the legacy OpenContext database and the agentOS sidecar for any downgrade or recovery exercise.
|