Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 16 additions & 31 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Code and publication checks
name: Index and publication checks

on:
push:
Expand All @@ -7,39 +7,24 @@ on:
permissions:
contents: read

jobs:
publication:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.12'
- run: python tools/check_publication.py
- run: python -m unittest discover -s tests -v
env:
PYTHONDONTWRITEBYTECODE: '1'

classification:
runs-on: ubuntu-latest
defaults:
run:
working-directory: projects/job-text-classification
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.12'
- run: python -m pip install -e '.[dev]'
- run: python -m pytest -q

memory:
jobs:
index:
runs-on: ubuntu-latest
defaults:
run:
working-directory: projects/memlab
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.12'
- run: python -m pip install -e '.[dev]'
- run: python -m pytest -q
- name: Index inventory and canonical links
run: python tools/check_index.py --remote
env:
GH_TOKEN: ${{ github.token }}
- name: Scan clean documentation and maintenance source
run: python tools/check_publication.py
- name: Scan actual Git index blobs
run: python tools/check_publication.py --staged
- name: Publication boundary regressions
run: python -m unittest discover -s tests -v
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,6 @@ temp/
*.rar
*.7z

# Downloaded benchmark content must stay local, including older CLI paths
projects/memlab/benchmarks/public_main/longmemeval/*.json
projects/memlab/benchmarks/public_main/longmemeval/*.jsonl

# Operating system
Thumbs.db
.DS_Store
24 changes: 11 additions & 13 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
# 贡献与维护

每次修改针对一个项目和一个明确的问题。先阅读该项目 README,再运行它提供的合成示例和离线测试。
本仓库维护项目导航、跨项目设计笔记、来源和公开检查工具。实现、依赖、样例和项目测试的修改应提交到 README 对应的独立仓库;本索引不接受第二份项目源码。

## 提交前

逐个选择本次修改的文件并加入 Git 暂存区,再检查将要提交的内容:
1. 核对链接指向项目当前维护入口;历史链接须明确标注为追溯用途。
2. 明确选择本次改动的文件并暂存,检查 `git diff --cached` 和文件清单。
3. 执行以下检查。报告写到仓库外;默认全目录检查适用于无缓存、无本地环境的干净快照。

```bash
python tools/check_publication.py --staged
python -m unittest discover -s tests -v
git diff --check
git diff --cached --stat
git diff --cached
python -B tools/check_index.py
python -B -m unittest discover -s tests -v
python -B tools/check_publication.py
python -B tools/check_publication.py --staged
git diff --cached --check
```

`--staged` 检查暂存区的实际文件内容,本地未暂存的环境、缓存和运行输出不影响结果。无参数模式严格检查整个工作目录,适合首次发布或检查干净的代码快照;若目录中有本地虚拟环境或缓存,它们会按规则报错。

使用子项目 README 中的命令运行相关测试。需要数据、GPU、在线模型或外部服务的检查应单独记录,不能用离线单元测试通过代替真实实验成功。
`python -B tools/check_index.py --remote` 另用已安装的 GitHub CLI 只读核对独立仓库的默认分支和链接文件。CI 以只读 token 执行此检查,不需要扩大账号权限。

## 变更说明

Pull Request 应写清触发问题、修改后的行为、实际运行的检查和未验证的依赖。模型效果数字需要对应数据划分、运行配置和可审查的结果来源;没有这些依据时,只描述代码实现与已运行的验证。

外部依赖保留原项目名称与来源。新增第三方代码前检查其许可证和署名要求。本仓库未统一授予开源许可证,不能把依赖项目的许可证推定为本仓库全部代码的许可证。
Pull Request 写清链接或说明的问题、改后的阅读入口及实际检查结果。模型效果需要对应实验依据,不能把单元测试数量或合成例子的指标写成研究结论。保留外部框架、模型与参考实现来源,不将上游许可证推定为本仓库的统一许可证。
62 changes: 16 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,28 @@
# Research Code Collection
# Research Project Index

**Agent 多层记忆与中文文本分类实验工程。** 两个独立 Python 子项目,覆盖上下文组装、异步会话、实验有效性检查、分类基线与服务批处理。
公开研究工程的导航与设计笔记。每个项目在各自独立仓库维护源码、安装说明、测试和来源;本仓库只维护索引与跨项目工程说明。

[![Code and publication checks](https://github.com/Darssal/Research-Code-Collection/actions/workflows/checks.yml/badge.svg)](https://github.com/Darssal/Research-Code-Collection/actions/workflows/checks.yml)
[![Index and publication checks](https://github.com/Darssal/Research-Code-Collection/actions/workflows/checks.yml/badge.svg)](https://github.com/Darssal/Research-Code-Collection/actions/workflows/checks.yml)

[MemLab](#memlab--agent-多层记忆) · [文本分类](#招聘文本三分类) · [工程笔记](docs/ENGINEERING_NOTES.md) · [验证与来源](#验证与来源)
## Canonical Repositories

## MemLab / Agent 多层记忆

面向并行会话,分离近期上下文、热缓存、持久化元数据与向量检索,提供统一记忆接口和实验控制组件。

| 技术问题 | 实现机制 | 入口 |
| Project | 实现与当前范围 | 入口 |
| --- | --- | --- |
| 记忆如何放置与取回 | L0–L3 分层、重要度准入、大对象指针、异步批量写入 | [记忆管理器](projects/memlab/memlab/memory_manager/manager.py) |
| 检索内容如何进入上下文 | 相关性筛选、版本与文本去重、注入预算、直接证据绕过 | [上下文策略](projects/memlab/memlab/memory_manager/l0.py) |
| 并发会话如何保留归属 | ContextVar 隔离日志上下文,记录缓存与降级路径 | [会话日志](projects/memlab/memlab/session_logging.py) |
| 哪些运行可进入汇总 | 有效性条件、失效阶段回滚和重跑计划 | [实验控制](projects/memlab/memlab/pipeline/control_plane.py) |

`Python 3.12` · `asyncio` · `Redis` · `PostgreSQL` · `Qdrant`

[项目与安装](projects/memlab/) · [架构](projects/memlab/docs/ARCHITECTURE.md) · [53 项离线测试的覆盖范围](projects/memlab/docs/TESTING.md)

## 招聘文本三分类

识别环保、人工智能与其它招聘文本(其它在接口中使用标签 `否`),提供本地基线、可选 BERT 和外部聊天服务适配器。

- **数据与评测**:CSV / JSONL 接口、固定种子分层划分、重复文本检查;先划分再拟合 TF-IDF,按实际类别顺序对齐概率与指标。
- **服务批处理**:超时、有界重试、非临时错误快速结束、并发保序;默认预测产物只保留 ID、标签与错误状态。
- **可运行示例**:24 条新编写的合成文本,CPU 执行本地随机森林流程,16 项回归测试覆盖核心行为。

```bash
cd projects/job-text-classification
python -m pip install -e .
python -m job_text_classification demo
```

`Python` · `scikit-learn` · `TF-IDF` · `Random Forest` · `ThreadPoolExecutor`

[数据接口与运行](projects/job-text-classification/) · [分类实现](projects/job-text-classification/src/job_text_classification/baseline.py) · [服务适配](projects/job-text-classification/src/job_text_classification/http_adapter.py) · [回归测试](projects/job-text-classification/tests/test_regressions.py)

## 相关项目 / FracLogGPT-Lite

[FracLogGPT-Lite](https://github.com/Darssal/FracLogGPT-Lite) 在独立仓库维护成像测井裂缝解释的多模态实验流程:LoRA-SFT、DPO / SimPO、可恢复推理与视觉对比解码。
| **FracLogGPT-Lite** | 成像测井裂缝解释的多模态实验流程:LoRA-SFT、DPO / SimPO、可恢复推理和视觉对比解码。公开 4B 实验工程与论文 Qwen2.5-VL 7B 设置分别说明。 | [Repository](https://github.com/Darssal/FracLogGPT-Lite) · [Quickstart](https://github.com/Darssal/FracLogGPT-Lite/blob/main/docs/QUICKSTART.md) |
| **MemLab** | Agent L0–L3 多层记忆、上下文注入、异步会话归属与运行有效性检查。离线测试与真实基础设施 / 模型实验分开验证。 | [Repository](https://github.com/Darssal/MemLab) · [Architecture](https://github.com/Darssal/MemLab/blob/main/docs/ARCHITECTURE.md) · [Testing](https://github.com/Darssal/MemLab/blob/main/docs/TESTING.md) |
| **Recruitment Text Classification** | 中文招聘文本三分类:TF-IDF / 随机森林、可选 BERT 与有界 HTTP 适配。24 条虚构样例用于流程验证;未实现论文完整 RAG 链路。 | [Repository](https://github.com/Darssal/Recruitment-Text-Classification) · [Engineering Notes](https://github.com/Darssal/Recruitment-Text-Classification/blob/main/docs/ENGINEERING_NOTES.md) |
| **JSP UI Prototype** | 早期 JSP 界面和参考登录动画的独立存档。保留 13 个页面与 CodePen 来源;业务页多为占位,没有认证、数据库或 Java 业务后端。 | [Repository](https://github.com/Darssal/JSP-UI-Prototype) · [Scope and Provenance](https://github.com/Darssal/JSP-UI-Prototype/blob/main/docs/LEGACY_JSP.md) |

[项目介绍](https://github.com/Darssal/FracLogGPT-Lite) · [无 GPU 验证](https://github.com/Darssal/FracLogGPT-Lite/blob/main/docs/QUICKSTART.md) · [双分支解码](https://github.com/Darssal/FracLogGPT-Lite/blob/main/src/fraclog/vcd.py)
## Engineering Notes

## 设计与验证
[工程实现与设计取舍](docs/ENGINEERING_NOTES.md)连接问题、机制、小例子和验证入口,覆盖阶段恢复、同步解码、上下文预算、会话隔离、分类划分与批处理失败。所有源码链接指向对应独立仓库。

[工程笔记](docs/ENGINEERING_NOTES.md)连接问题、机制、小例子和测试,涵盖推理恢复、上下文与会话隔离、分类评测与失败处理。
安装、运行和贡献代码请进入项目仓库。各工程的单元测试检查代码行为;合成样例、离线检查或原型完整性检查均不能替代论文效果复现、真实服务集成或后端功能验证。

每个子项目独立安装。分类 demo 与 MemLab 单元测试可离线运行;MemLab stub / E2E 需要另行配置基础设施。持续集成检查分类、记忆组件及公开文件边界,详见 [Actions](https://github.com/Darssal/Research-Code-Collection/actions/workflows/checks.yml)。
## Migration and Maintenance

## 验证与来源
2026-10-19,MemLab 与分类工程从已经公开去敏的 Collection 提交 `8f143f67598f88fbb8a16d599a7f3d17c623d281` 建立独立维护入口。本仓库当前分支移除两份项目源码;原有文件仍可在 [Git 历史](https://github.com/Darssal/Research-Code-Collection/tree/8f143f67598f88fbb8a16d599a7f3d17c623d281/projects) 中追溯。后续改动只提交到独立仓库,历史快照不作为第二份维护入口。

2026-10-18 验证记录:分类 16 项、MemLab 53 项离线测试通过。合成示例用于检查流程;BERT 训练、真实 HTTP 服务、数据库与 DeerFlow 集成、论文性能实验尚未在公开版整理中运行。
JSP 原型从个人主页已公开的 Git blobs 迁移,来源记录保留在其独立仓库。FracLogGPT-Lite 已单独维护,本次未复制或重命名。

源码、配置、测试与合成示例可以公开;真实语料、论文材料、权重、运行输出和凭据保留在本地。第三方框架与模型的来源见 [THIRD_PARTY.md](THIRD_PARTY.md),提交规则见 [CONTRIBUTING.md](CONTRIBUTING.md) 与[公开范围](docs/PUBLICATION_SCOPE.md)。
本仓库 CI 检查索引结构、文档链接、公开文件边界及实际 Git index,不安装或执行其他项目。源码和真实数据不迁回本索引。[贡献规则](CONTRIBUTING.md)、[公开范围](docs/PUBLICATION_SCOPE.md)与[来源说明](THIRD_PARTY.md)约束后续维护。
19 changes: 10 additions & 9 deletions THIRD_PARTY.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# 第三方来源与依赖
# 来源与第三方依赖

本仓库整理已有实验脚本与工程代码。它没有复制原项目中的数据、论文附件或第三方仓库历史。
当前仓库是索引与工程说明。历史 Collection 整理过 MemLab 与招聘分类工程;它们的当前源码和依赖说明已迁入独立仓库,未复制原实验数据、论文附件或第三方 Git 历史。

| 项目 | 依赖或上游 | 使用范围 |
| --- | --- | --- |
| FracLogGPT-Lite | [ms-swift](https://github.com/modelscope/ms-swift)、[Transformers](https://github.com/huggingface/transformers)、[PEFT](https://github.com/huggingface/peft) | 详细说明保留在该独立仓库 |
| 招聘文本分类 | [scikit-learn](https://github.com/scikit-learn/scikit-learn)、[PyTorch](https://github.com/pytorch/pytorch)、[Transformers](https://github.com/huggingface/transformers) | 文本特征、分类器与可选 BERT 模型加载;未复制其源码或模型权重 |
| memlab | [DeerFlow](https://github.com/bytedance/deer-flow)、Redis、PostgreSQL、Qdrant | 外部实验运行依赖;未包含服务数据与 DeerFlow 源码 |
| 项目 | 当前来源与依赖说明 |
| --- | --- |
| FracLogGPT-Lite | [项目说明与依赖来源](https://github.com/Darssal/FracLogGPT-Lite/blob/main/README.md):ms-swift、Transformers、PEFT 等外部能力 |
| MemLab | [THIRD_PARTY](https://github.com/Darssal/MemLab/blob/main/THIRD_PARTY.md):DeerFlow、Redis、PostgreSQL、Qdrant 与 LongMemEval 数据来源边界 |
| Recruitment Text Classification | [THIRD_PARTY](https://github.com/Darssal/Recruitment-Text-Classification/blob/main/THIRD_PARTY.md):scikit-learn、NumPy、joblib、可选 PyTorch / Transformers;无上游模型文件 |
| JSP UI Prototype | [原有来源说明](https://github.com/Darssal/JSP-UI-Prototype/blob/main/docs/LEGACY_JSP.md):保留 [CodePen — danielkvist / LYNVyPL](https://codepen.io/danielkvist/pen/LYNVyPL) 的登录动画参考地址 |

memlab 原实验工程的 DeerFlow checkout 基线为 `7de94394d4295182701ffb47e938e7c39b963091`。该版本的 [MIT 许可证](https://github.com/bytedance/deer-flow/blob/7de94394d4295182701ffb47e938e7c39b963091/LICENSE) 保留 ByteDance 与 DeerFlow Authors 署名;使用外部 checkout 时应保留并遵守其许可。本仓库不会将上游许可证套用于独立整理的实验代码。
MemLab 原实验使用的 DeerFlow 基线为 `7de94394d4295182701ffb47e938e7c39b963091`。其 [MIT 许可证](https://github.com/bytedance/deer-flow/blob/7de94394d4295182701ffb47e938e7c39b963091/LICENSE) 保留 ByteDance Ltd. 与 DeerFlow Authors 署名;外部 checkout 应继续遵守该许可。LongMemEval 的下载内容和数据许可证需另行核验,当前索引不携带数据。

模型标识仅用于配置示例,使用者需自行核对对应模型条款、版本和运行条件。本仓库不对提供方当前资费或服务可用性作保证。
各工程未因迁移而获得新的统一许可证;本索引不将上游许可证套用于整理代码,也不把参考动画或框架能力宣称为个人原创。模型和服务的版本、许可及运行条件应在使用时核对。
Loading
Loading