diff --git a/agents/AGENTS.md b/agents/AGENTS.md index ac63bba..4052f71 100644 --- a/agents/AGENTS.md +++ b/agents/AGENTS.md @@ -8,25 +8,24 @@ ## aimemo -@aimemo/ 目录是你自己的记忆与工作空间,由你**自主掌控、自行管理**。你可以在这里,按你自己的想法,新建、修改一切文件,记录一切你认为有价值的信息。 - +@aimemo/ 目录是你自己的记忆与工作空间,由你**自主掌控、自行管理**。你可以新建、删除、合并、拆分、修改 @aimemo/ 里面的一切子目录和文件,记录一切对长期持续工作有价值的信息,使得工作进度能够跨 sessions、跨 ai models、跨 ai agents 进行下去。 ### 基础框架(推荐默认结构) 建议以四个文件作为基础框架,从四个基本视角覆盖项目: -| 记录类型(参考文件名) | 定位 | 用法建议 | -|------------------------|------|----------| -| productGoal.md | 产品角度:目标、愿景、架构、规范等等 | 内容比较稳定,随对产品的理解而更新 | -| projectPlan.md | 项目角度:开发计划、任务、进度等等 | 沿时间顺序划分阶段,并设置阶段目标/验收标准/任务列表/等等。每次执行任务前后,及时在任务列表里原地更新状态标记(`[ ]`待办 / `[→]`进行中 / `[x]`已完成) | -| worklog.md | 事的角度:按时间线记录的工作日志,方便复盘 | 只追加,每次有变化就记录 | -| userProfile.md | 人的角度:对老板的背景、习惯、偏好的观察总结 | 按需补充,帮助更高效的长期协作 | +| 记录类型(参考文件名) | 定位 | 用法建议 | +| ---------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| productGoal.md | 产品角度:目标、愿景、架构、规范等等 | 内容比较稳定,随对产品的理解而更新 | +| projectPlan.md | 项目角度:开发计划、任务、进度等等 | 沿时间顺序划分阶段,并设置阶段目标/验收标准/任务列表/等等。每次执行任务前后,及时在任务列表里原地更新状态标记(`[ ]`待办 / `[>]`进行中 / `[x]`已完成) | +| worklog.md | 事的角度:按时间线记录的工作日志,方便复盘 | 只追加,每次有变化就记录 | +| userProfile.md | 人的角度:对老板的背景、习惯、偏好的观察总结 | 按需补充,帮助更高效的长期协作 | 对新项目,如果 @aimemo/ 是空的,建议先按上表初始化。 ### 自主扩展 -基础框架只是起点,不是束缚。**你可以随时自主添加任何对你有用的新文件**——例如经验教训、技术决策、专项文档、跨项目知识等,文件名和内容组织方式由你自己决定,你甚至可以拆分、合并基础框架文件,一切以有利于更高效更完美的工作结果为准。 +基础框架只是起点,不是束缚。**你可以随时自主添加任何对你有用的新文件**——例如经验教训、技术决策、专项文档、跨项目知识等,文件名和内容组织方式由你自己决定。 几条注意事项: @@ -48,4 +47,3 @@ - 最后,当与流行的规范或惯例有强烈冲突时,遵循该流行惯例。例如,`AGENTS.md`, `.gitignore`。 - 注意,目录、文件名仅大小写不同的(如 `userCenter` 与 `usercenter`)禁止在同一层级同时出现,以避免跨平台冲突,。 - 存量代码保持既有命名,不强制迁移;新增代码遵循本规范。 - diff --git a/claude-config.js b/claude-config.js index a9a5dca..507c790 100644 --- a/claude-config.js +++ b/claude-config.js @@ -106,7 +106,13 @@ async function main () { let model = existingModel if (filePath) { - const secret = readJsonIfExists(filePath) + const expandedFilePath = filePath.replace( + /^~(?=$|[\\/])/, + os.homedir() + ) + // Resolve relative paths from the directory where the command is run. + const absoluteFilePath = path.resolve(process.cwd(), expandedFilePath) + const secret = readJsonIfExists(absoluteFilePath) if (!secret || typeof secret !== 'object' || Array.isArray(secret)) { rl.close() console.error( diff --git a/dcloud-renew/package-lock.json b/dcloud-renew/package-lock.json new file mode 100644 index 0000000..6a7db7b --- /dev/null +++ b/dcloud-renew/package-lock.json @@ -0,0 +1,73 @@ +{ + "name": "dcloud-renew", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dcloud-renew", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.4.2", + "playwright": "^1.62.0" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright": { + "version": "1.62.0", + "resolved": "https://registry.npmmirror.com/playwright/-/playwright-1.62.0.tgz", + "integrity": "sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.0", + "resolved": "https://registry.npmmirror.com/playwright-core/-/playwright-core-1.62.0.tgz", + "integrity": "sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + } + } +} diff --git a/nixhome/.bashrc b/nixhome/.bashrc index be49c91..d9e7704 100644 --- a/nixhome/.bashrc +++ b/nixhome/.bashrc @@ -143,10 +143,11 @@ elif [ -f /etc/debian_version ]; then elif [ -f /etc/ubuntu_version ]; then MYOSVERSION=Ubt`cat /etc/ubuntu_version 2>/dev/null` fi +# \w shows absolute path, \W shows current folder. if [ "$color_prompt" = yes ]; then - PS1='¶ \[\033[$PSTYLE;${PTYPE}2m\]\t\[\033[00m\] \[\033[$PSTYLE;${PTYPE}5m\]\u\[\033[00m\] @\[\033[$PSTYLE;${PTYPE}1m\]\h\[\033[00m\] =\[\033[$PSTYLE;${PTYPE}3m\]$MYIPPUB\[\033[00m\] #\[\033[$PSTYLE;${PTYPE}5m\]$(uname -m),$(uname),$MYOSVERSION\[\033[00m\] \[\033[$PSTYLE;${PTYPE}4m\]\w/\[\033[00m\] \n§ \[\033[$PSTYLE;${PTYPE}4m\]\W/\[\033[00m\] ' + PS1='¶ \[\033[$PSTYLE;${PTYPE}2m\]\t\[\033[00m\] \[\033[$PSTYLE;${PTYPE}5m\]\u\[\033[00m\] @\[\033[$PSTYLE;${PTYPE}1m\]\h\[\033[00m\] =\[\033[$PSTYLE;${PTYPE}3m\]$MYIPPUB\[\033[00m\] #\[\033[$PSTYLE;${PTYPE}5m\]$(uname -m),$(uname),$MYOSVERSION\[\033[00m\] \[\033[$PSTYLE;${PTYPE}7m\]$(realpath \w)/\[\033[00m\] \n§ \[\033[00;47m\]\W/\[\033[00m\] ' else - PS1='¶ \t \u @\h =$MYIPPUB #$(uname -m),$(uname),$MYOSVERSION \w/ \n§ \W/ ' # \w shows absolute path, \W shows current folder. + PS1='¶ \t \u @\h =$MYIPPUB #$(uname -m),$(uname),$MYOSVERSION $(realpath \w)/ \n§ \W/ ' fi unset color_prompt force_color_prompt