在本地窗口管理文献、写作与 FITS 数据分析
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/wing-tn/astro-ph-researcher.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 80 处,展示前 80 条)
- 读取密钥环境变量lib/index.js:176
adsToken: process.env.ADS_API_TOKEN ?? '', - 读取密钥环境变量lib/index.js:177
openAlexKey: process.env.OPENALEX_API_KEY ?? '', - 读取本地文件lib/index.js:1310
const data = await readFile(file); - 读取密钥环境变量lib/index.js:1469
adsConfigured: Boolean(process.env.ADS_API_TOKEN), - 读取密钥环境变量lib/index.js:1470
openAlexKeyConfigured: Boolean(process.env.OPENALEX_API_KEY), - 读取本地文件lib/index.js:1476
katex: existsSync(join(KATEX_DIR, 'katex.min.js')) && existsSync(join(KATEX_DIR, 'katex.min.css')), - 发起网络请求lib/client.js:303
response = await fetch(`${API}${path}`, init); - 写入剪贴板lib/client.js:490
navigator.clipboard.writeText(text).catch(() => {}); - 发起网络请求lib/client.js:644
const response = await fetch(`${API}/references/export?format=bibtex`); - 发起网络请求lib/client.js:916
const response = await fetch(`${API}/writing/formats/export`); - 发起网络请求lib/client.js:1075
const response = await fetch(`${API}/export?format=${encodeURIComponent(format)}`); - 读取剪贴板lib/client.js:3127
else if (navigator.clipboard?.readText) navigator.clipboard.readText().then((text) => text && setNote(String(text).slice(0, 8000))).catch(() => {}); - 发起网络请求lib/client.js:3141
h('button', { className: 'aw-btn', type: 'button', onClick: () => fetch(`${API}/plan/export?format=md`).then((r) => r.text()).then((text) => { const b - 读取本地文件lib/skill-files.js:35
entries = readdirSync(rootDir); - 读取本地文件lib/skill-files.js:43
stat = statSync(dir); - 读取本地文件lib/skill-files.js:49
const text = readFileSync(join(dir, 'SKILL.md'), 'utf8'); - 读取密钥环境变量lib/literature.js:561
const adsToken = String(params.adsToken ?? process.env.ADS_API_TOKEN ?? '').trim(); - 读取密钥环境变量lib/literature.js:562
const openAlexKey = String(params.openAlexKey ?? process.env.OPENALEX_API_KEY ?? '').trim(); - 读取本地文件lib/dictionary.js:84
const raw = await readFile(DICTIONARY_PATH, 'utf8'); - 写入本地文件lib/dictionary.js:279
await mkdir(dirname(DICTIONARY_PATH), { recursive: true }); - 写入本地文件lib/dictionary.js:281
await writeFile(tmp, JSON.stringify(payload), 'utf8'); - 写入本地文件lib/dictionary.js:282
await rename(tmp, DICTIONARY_PATH); - 写入本地文件lib/references.js:91
await mkdir(dirname(REFERENCES_PATH), { recursive: true }); - 写入本地文件lib/references.js:93
await writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, 'utf8'); - 写入本地文件lib/references.js:94
await rename(tmp, REFERENCES_PATH); - 读取本地文件lib/references.js:119
const raw = await readFile(REFERENCES_PATH, 'utf8'); - 读取本地文件lib/writing.js:47
const text = readFileSync(urlOrPath, 'utf8'); - 读取本地文件lib/writing.js:88
const raw = await readFile(PROJECTS_PATH, 'utf8'); - 读取本地文件lib/writing.js:96
const raw = await readFile(CUSTOM_FORMATS_PATH, 'utf8'); - 写入本地文件lib/writing.js:108
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/writing.js:110
await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, 'utf8'); - 写入本地文件lib/writing.js:111
await rename(tmp, path); - 删除本地文件递归lib/writing.js:183
rmSync(join(PROJECTS_DIR, id), { recursive: true, force: true }); - 写入本地文件lib/writing.js:202
await mkdir(dir, { recursive: true }); - 写入本地文件lib/writing.js:210
await writeFile(target, buffer); - 写入本地文件lib/thesis-fetcher.js:234
await writeFile(targetPath, buffer); - 读取本地文件lib/thesis-fetcher.js:256
return JSON.parse(await readFile(join(FORMATS_DIR, safeId(formatId), 'manifest.json'), 'utf8')); - 写入本地文件lib/thesis-fetcher.js:264
await mkdir(dir, { recursive: true }); - 写入本地文件lib/thesis-fetcher.js:265
await writeFile(join(dir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, 'utf8'); - 写入本地文件lib/thesis-fetcher.js:282
await mkdir(join(dir, 'downloads'), { recursive: true }); - 写入本地文件lib/thesis-fetcher.js:352
await mkdir(dir, { recursive: true }); - 写入本地文件lib/thesis-fetcher.js:360
await writeFile(targetPath, buffer); - 读取本地文件lib/writing-goals.js:8
const data = JSON.parse(readFileSync(SEED, 'utf8')); - 读取本地文件lib/v2-library.js:5
try { return JSON.parse(readFileSync(new URL(name, ROOT), 'utf8')); } catch { return {}; } - 读取本地文件lib/data-library.js:75
return JSON.parse(readFileSync(urlOrPath, 'utf8')); - 写入本地文件lib/data-library.js:144
await mkdir(dirname(WORKFLOWS_PATH), { recursive: true }); - 写入本地文件lib/data-library.js:146
await writeFile(tmp, `${JSON.stringify({ version: 1, workflows }, null, 2)}\n`, 'utf8'); - 写入本地文件lib/data-library.js:147
await rename(tmp, WORKFLOWS_PATH); - 读取本地文件lib/data-library.js:170
const raw = await readFile(WORKFLOWS_PATH, 'utf8'); - 读取本地文件lib/store.js:73
const raw = await readFile(path, 'utf8'); - 读取本地文件lib/store.js:83
if (!existsSync(DATA_DIR) && existsSync(LEGACY_DATA_DIR)) { - 写入本地文件lib/store.js:91
await mkdir(DATA_DIR, { recursive: true }); - 写入本地文件lib/store.js:104
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/store.js:106
await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, 'utf8'); - 写入本地文件lib/store.js:107
await rename(tmp, path); - 发起网络请求lib/util.js:234
const response = await fetch(url, { - 读取本地文件lib/plans.js:21
if (!existsSync(PLAN_PATH)) return structuredClone(DEFAULT_PLAN); - 读取本地文件lib/plans.js:22
const parsed = JSON.parse(await readFile(PLAN_PATH, 'utf8')); - 写入本地文件lib/plans.js:35
await mkdir(DATA_DIR, { recursive: true }); - 写入本地文件lib/plans.js:37
await writeFile(tmp, JSON.stringify(plan, null, 2) + '\n', 'utf8'); - 写入本地文件lib/plans.js:38
await rename(tmp, PLAN_PATH); - 读取本地文件lib/deep-library.js:5
const DATA = JSON.parse(readFileSync(fileURLToPath(new URL('../data/deep-prompts.seed.json', import.meta.url)), 'utf8')); - 读取本地文件lib/novice.js:11
const PATH = JSON.parse(readFileSync(PATH_FILE, 'utf8')); - 读取本地文件lib/novice.js:24
if (!existsSync(PROGRESS_FILE)) return structuredClone(EMPTY_PROGRESS); - 读取本地文件lib/novice.js:25
const parsed = JSON.parse(await readFile(PROGRESS_FILE, 'utf8')); - 写入本地文件lib/novice.js:38
await mkdir(DATA_DIR, { recursive: true }); - 写入本地文件lib/novice.js:41
await writeFile(tmp, JSON.stringify(next, null, 2) + '\n', 'utf8'); - 写入本地文件lib/novice.js:42
await rename(tmp, PROGRESS_FILE); - 读取本地文件lib/seed.js:14
const raw = readFileSync(SEED_PATH, 'utf8'); - 发起网络请求codex/ui/core.mjs:126
const raw = await this.request(url, src === 'arxiv'); - 发起网络请求codex/ui/core.mjs:147
const rawResult = await this.request(url, !isDoi); - 读取本地文件codex/ui/core.mjs:165
const state = JSON.parse(await readFile(this.path, 'utf8')); - 写入本地文件codex/ui/core.mjs:173
await mkdir(dirname(this.path), {recursive: true}); - 写入本地文件codex/ui/core.mjs:175
await writeFile(temp, JSON.stringify(next, null, 2) + '\n', 'utf8'); await rename(temp, this.path); - 写入本地文件codex/ui/core.mjs:175
await writeFile(temp, JSON.stringify(next, null, 2) + '\n', 'utf8'); await rename(temp, this.path); - 读取本地文件codex/ui/server.mjs:56
if (path === '/api/statements' && req.method === 'GET') return reply(200, await readFile(join(ROOT, '../DISCLAIMER.md'),'utf8'), 'text/markdown; chars - 读取本地文件codex/ui/server.mjs:90
const seed = JSON.parse(await readFile(join(ROOT, '../data/terms.seed.json'), 'utf8')); - 读取本地文件codex/ui/server.mjs:95
if (req.method === 'GET' && files[path]) { const [file, type] = files[path]; return reply(200, await readFile(join(ROOT, 'public', file)), type); } - 读取本地文件codex/ui/workspace.mjs:8
const seed = async name => JSON.parse(await readFile(new URL(`../data/${name}.json`, import.meta.url), 'utf8')); - 读取本地文件codex/ui/workspace.mjs:18
try { const state = JSON.parse(await readFile(this.path, 'utf8')); if (state.version !== 1 || !Array.isArray(state.projects) || !state.novice || !stat
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
面向 DSH 和 Codex 的天文研究工作台:NADC 术语、参考文献、写作、评分、作者确认、物理与推荐书目、FITS/XML 格式及分析指南。
README
由 DeepSeek 最新模型翻译生成astro-ph-researcher 3.4.0
本地双语天文研究工作台 · Local bilingual astronomy research workbench
中文使用说明 · English guide · 3.4.0 发布说明 · GitHub 发布步骤
把文献、写作、新手路径、研究计划和研究资料放进 Codex 能打开的本地窗口,同时保留原插件的 DSH 宿主/客户端、9 个 skills、离线数据与 CLI。数据存在你自己的机器上;Codex 窗口不要求 DSH,不会自动调用模型,也不会上传个人笔记。
English learning workspace
快速使用 / Quick start
需要 Node.js 22+。无需 npm install。
npm run ui
打开终端打印的本地 URL。Windows 可双击 codex/start-ui.cmd;英文入口为 codex/start-ui-en.cmd。
展开完整文档(README 剩余 1 节)
astro-ph-researcher 3.4.0 本地双语天文研究工作台 · Local bilingual astronomy research workbench 中文使用说明 · English guide · 3.4.0 发布说明 · GitHub 发布步骤 把文献、写作、新手路径、研究计划和研究资料放进 Codex 能打开的本地窗口,同时保留原插件的 DSH 宿主/客户端、9 个 skills、离线数据与 CLI。数据存在你自己的机器上;Codex 窗口不要求 DSH,不会自动调用模型,也不会上传个人笔记。 English learning workspace 快速使用 / Quick start 需要 Node.js 22+。无需 npm install。 npm run ui 打开终端打印的本地 URL。Windows 可双击 codex/start-ui.cmd;英文入口为 codex/start-ui-en.cmd。 For an English interface, run node codex/scripts/open-ui.mjs --lang en, or double-click codex/start-ui-en.cmd on Windows. The language can also be changed in the UI without rewriting your scientific content. 在 Codex 主界面提供可点击入口 本版本采用官方支持的 项目顶栏操作按钮。它随包分发,你为自己的项目安装后,就能点击启动服务并打开工作台: node codex/scripts/install-action.mjs --project "你的 Codex 项目目录" --lang zh English: use --lang en to install the Open Astro Workbench action. Windows users may run codex/install-button-en.cmd or codex/install-button-zh.cmd. Reopen the target project in the Codex desktop app after installation. 配置会保留现有操作,并在修改前备份。源码目录里已有相对路径模板 .codex/environments/environment.toml,可直接当 Codex 项目使用。插件/skill 安装本身不保证创建全局侧栏按钮,不能把 ChatGPT 的侧栏扩展当成 Codex 保证支持的接口。官方操作文档 功能 / Features | 模块 | 本地窗口能力 | | 文献 / Literature | Crossref/arXiv 检索、筛选、DOI/arXiv 核验、来源快照、去重、阅读清单及 BibTeX/Markdown/JSON 导出 | | 写作 / Writing | 期刊/学位项目、10 种写作目标、真实材料、文本导入、10 章节编辑器、启发式检查、作者确认、Markdown 和 Codex 交接 | | 新手 / Learning | 九步研究路径、检查项、交付物、笔记、进度;英文配套路径 | | 计划 / Planning | 节点、上级依赖、状态、来源和交付标准;循环依赖检查 | | 资料 / Resources | 34 方法、9 统计、30 设施、分析工具、公开源表、8 条推荐书目 | | 研究检查 / Research checks | 9 个领域的盲点问题及笔记 | | 汇报 / Briefing | 从阅读清单和计划生成 Markdown 大纲及演示文稿交接提示词 | | 设置 / Settings | 中英文界面、完整工作区备份 | 英文界面、按钮和主要工作流已翻译;原始方法/设备等详细资料保留原语言并明确标注。切换语言永远不会自动翻译你的正文、笔记和原始题录。 科研边界:题录存在,不证明科学论断成立、不证明经过同行评议、也不证明未被撤稿;启发式评分不验证科学正确性;作者本人须核对并确认各节。网页为模型写作准备交接提示词;不声称已自动生成论文。汇报导出是 Markdown,不是 PPTX。投稿前核对当年官方指南。 插件与原功能 在 v3.4.0 下载页 选择 -dsh.zip(完整 DSH bundle,同时保留 Codex 目录)或 -codex-zh.zip / -codex-en.zip(独立 Codex 插件,中/英文默认入口)。-source.zip 是同版完整源码;DSH 包与源码包内容相同,另有独立说明和 SHA256 校验文件。 DSH 用户解压后,在包含 package.json 的目录运行: dsh plugin --profile desktop add . 完全退出并重启 DSH。使用 web profile 的用户将 desktop 替换为 web。详见 DSH 3.4.0 安装与升级;完整原功能说明保留在 历史说明。 Codex 插件清单位于 codex/.codex-plugin/plugin.json。在完整源码目录可按本机 CLI 支持的命令配置本地 marketplace: codex plugin marketplace add . codex plugin add astro-ph-researcher@astro-ph-researcher-local 安装/更新缓存的行为依赖本机 CLI;先备份个人数据并查阅 codex plugin --help。本次发布不自动替换你已安装的缓存。9 个原 skills 的内容保持一致;离线 CLI 仍可单独运行: node codex/scripts/astro-cli.mjs stats node codex/scripts/astro-cli.mjs beginnertext node codex/scripts/astro-cli.mjs goal refutation 开发与数据 text codex/ui/public/ 双语窗口 codex/ui/workspace.mjs 写作/新手/计划的本地服务 codex/ui/core.mjs 文献适配、核验、存储与导出 codex/ui/sections.mjs 复用原插件的章节、评分和作者确认逻辑 codex/scripts/ 启动器、项目按钮安装器、原离线 CLI lib/ 原 DSH 功能(保留) sh npm test npm run test:ui 阅读清单为 codex/ui/local-data/library.json,其余工作区为同目录 workbench.json;与原 DSH 库独立。升级前在设置页下载备份。发布脚本排除个人数据和临时文件。验收范围及限制见 VALIDATION.md。 声明、致谢与用户反馈 Copyright © 2026 天外奇航(@hyperskysail,GXU-CN)。代码与文档等采用 AIGC 辅助,科学内容仍需人工核验。作者以非盈利方式维护,现有功能免费;这一立场不缩减 MIT 许可权利。第三方资料与商标归各自权利人,致谢不表示官方背书。 用户反馈 QQ 交流群:1126615665 · 1253932197@qq.com · GitHub Issues 完整内容见 版权/AIGC/免责/非盈利声明、作者与贡献、致谢、反馈与支持 和 隐私说明。软件仍按原 MIT License 提供。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wing-tn/astro-ph-researcher
在本地窗口管理文献、写作与 FITS 数据分析
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目